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]

Reply via email to