Aias00 opened a new issue, #5590:
URL: https://github.com/apache/rocketmq-dashboard/issues/5590
## Problem
`useAgentCapabilities` documents a conservative contract: only an explicit
`{ rmqctlAvailable: false }` response proves that the hosted agent tool channel
is unavailable. A failed probe should be treated as unknown and must not show
the unavailable notice.
The implementation honors that contract only on the first mount because
state defaults to `true`. It does not restore the optimistic/unknown state
before a later probe:
1. A successful probe returns `{ rmqctlAvailable: false }`; the hook stores
`false` and the AI page displays the rmqctl unavailable banner.
2. The hook is disabled, for example when entering mock mode.
3. It is enabled again and starts a fresh capability probe.
4. The new probe fails due to a transient HTTP/network error.
5. The catch handler does nothing, so the old `false` remains and the UI
still claims rmqctl is unavailable.
Current code: `web/src/pages/ai/hooks/useAgentCapabilities.ts` around lines
24-46; the notice is rendered by `RuntimeNotices.tsx` around lines 58-64.
## Root cause
The state value represents the latest explicit capability result, but
starting a new probe does not reset that result to the documented unknown
fallback. Swallowing the error is therefore insufficient after an earlier
negative response.
## Proposed design
1. Whenever capability probing becomes enabled, restore `rmqctlAvailable` to
`true` before starting the request.
2. Apply `false` only when the current request explicitly returns
`rmqctlAvailable: false`.
3. Keep the existing cancellation guard so a response from a disabled or
superseded probe cannot overwrite later state.
4. Keep mock mode free of capability requests.
5. Do not add a new user-visible error: an unreachable endpoint still means
unknown, not unavailable.
## Test plan
- Render the hook enabled and resolve the first probe with `false`; assert
the unavailable state.
- Disable the hook and re-enable it.
- Reject the second probe; assert the state is restored to `true` and
remains true after rejection.
- Keep coverage for explicit true/false results, disabled mode and stale
responses.
- Run focused hook tests, the full frontend suite, lint, TypeScript/build
checks and `git diff --check`.
## Acceptance criteria
- A failed current probe never leaves a stale unavailable result visible.
- Only an explicit current `false` renders the unavailable notice.
- Disabling the probe performs no request and stale responses remain ignored.
Target branch: `rocketmq-studio` at
`6a68042fa73a513f40436ca721944b4de48181ec`.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]