You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by "lizhimins (via GitHub)" <gi...@apache.org> on 2026/09/22 04:17:19 UTC
[PR] fix(ai): ungate platform proxy tools and make conversation streaming smooth [rocketmq-dashboard]
lizhimins opened a new pull request, #4855:
URL: https://github.com/apache/rocketmq-dashboard/pull/4855
## What this PR does
Two related fixes for the AI conversation surface, plus test-suite stabilization.
### 1. `fix(ai): ungate platform proxy tools and make conversation streaming smooth`
**MCP tool layer (server)**
- `rmq.proxy.list` / `rmq.proxy.config` no longer require `PROXY_DISCOVERY` on the bound instance. Both are platform-level tools (no `instanceId` argument) whose handlers aggregate every manageable instance through the heartbeat-syncer group, so their data scope never depended on the bound instance — but the capability gate did. Since `PROXY_DISCOVERY` is only granted to `PROXY_LOCAL`/`PROXY_CLUSTER` instance types, deployments whose instances are direct-attached got a permanent `TOOL_CAPABILITY_UNSUPPORTED` even with proxies running. They now join `rmq.audit.list` / `rmq.alert.rule.list` as ungated deployment-wide tools.
- `rmq.instance.metrics` accepts the sole shared data source whose bindings include the target instance, still preferring a dedicated one; ambiguous or missing bindings keep answering 409.
**Streaming render path (web)**
- Transcript bubbles and their blocks are memoised. A streaming tick re-renders the page at display rate; before this change every frame re-ran ReactMarkdown over every persisted answer and reconciled every finished tool card (up to 32 KiB of `<pre>` each). The reducers only replace the block that changed, so unchanged blocks keep their identity and now skip the work.
- The follow-scroll uses instant jumps while streaming: the effect re-runs once per animation frame, and starting a fresh `smooth` scroll on every frame stacks concurrent scroll animations. Idle arrivals keep the smooth behaviour.
- The composer context-token estimate memoises its persisted half on the timeline rows instead of regex-scanning every persisted answer per frame.
- The operator's question shows immediately while its run streams. The live stream carries no `user` frame and the persisted transcript only refetches when the run finishes, so the question stayed invisible for the whole run — minutes on long tool-heavy answers. `useAgentRun` now keeps the admitted prompt as an optimistic user bubble, dropped in the same commit as the end-of-run refetch swaps in the persisted row (kept when the refetch fails, like the live blocks; a re-attach finds the row already persisted).
### 2. `test(web): stabilize table-page tests against spin-overlay and instance-load races`
- antd Spin keys `.ant-spin-blur` on an internal state that follows the Table `loading` prop one commit behind, and that class sets `pointer-events: none` over the whole body — a click right after a `findByText` on row text intermittently lands in that window under parallel load. Table-driving page tests now use `userEvent.setup({ pointerEventsCheck: 0 })`, the convention four existing test files already follow.
- The consumer/topic CSV import tests waited on the pagination summary text, which the page-header subtitle carries from the very first render (total starts at 0): the upload raced the instance list and `handleImportFile` bailed on its `selectedInstanceId` guard. They now wait for the instance-scoped page fetch.
- The static `message`/`notification` holders are body-level and survive RTL cleanup; the global test setup now destroys both after each test.
## Verification
- server: `mvn test` 3149/3149 green (rebased tree)
- web: `vitest` 1283/1283 green, 4 consecutive full-suite runs after the stabilization commit; `tsc -b` and eslint clean
- deployed and exercised end-to-end: proxy tools return live proxy endpoints, metrics queries resolve through the shared data source, second questions render instantly while streaming with zero long tasks during the stream window
--
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: commits-unsubscribe@rocketmq.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(studio): repair MCP tool gating, smooth AI streaming, and polish console surfaces [rocketmq-dashboard]
Posted by "lizhimins (via GitHub)" <gi...@apache.org>.
lizhimins merged PR #4855:
URL: https://github.com/apache/rocketmq-dashboard/pull/4855
--
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: commits-unsubscribe@rocketmq.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org