This is an automated email from the ASF dual-hosted git repository.

lizhimins pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/rocketmq-dashboard.git


    from d50ffecc9 docs: update development trunk branch to rocketmq-studio
     add 5b761df83 feat(ai): hosted conversation platform with persisted 
timeline and history management (#4606)
     add 40a8f6ae7 feat(cluster): clarify supported NameServer address formats 
(#4383)
     add a24826048 fix(acl): clear a Tencent role's permissions instead of 
deleting the role (#4469)
     add 1172d8597 fix(studio): clear hidden resource selections (#4473)
     add 8457a929d fix(dlq): isolate detail resend state across instance 
switches (#4487)
     add 2945fba5e fix(topic): scope topic page state to the selected instance 
(#4490)
     add c230fc989 fix(message): preserve replacement queue pull locks (#4501)
     add aaaa957c9 fix(alert): match padded instance ids and render alert 
windows and placeholders (#4464)
     add f75951052 fix(studio): persist cleared optional instance and registry 
fields (#4466)
     add e63c8e56f fix(message): abbreviate message properties on code point 
boundaries (#4467)
     add 7ce9a6821 feat(topic): support cloud test-message sending (#4496)
     add cb2ca635b fix(metrics): preserve unknown Apache queue lag (#4517)
     add eda9884d6 fix(metrics): preserve unavailable broker runtime fields 
(#4521)
     add 85f839b6c fix(message): surface message-id lookup failures (#4525)
     add d24f58b82 fix(tencent): reject incomplete catalog pages (#4529)
     add a913ce7ae fix(group): preserve unknown lag in reset preview (#4540)
     add 1c8542efa fix(group): preflight settings across brokers (#4542)
     add df369b63a fix(studio): ignore stale consumer progress responses (#4546)
     add f531fb8e6 fix(studio): preserve cluster filter in paginated metadata 
queries (#4551)
     add 27fc97dd3 fix(studio): isolate MCP tool results from audit failures 
(#4553)
     add c9795c1b7 fix(studio): ignore stale topic sync results (#4548)
     add cd448e17f fix(group): preserve unavailable consumer connections (#4544)
     add e55409633 fix(auth): bound the login username and correct the 
wrong-password status (#4684)
     add e3dee797e fix(instance): bound instance text to the column width and 
read a legacy null vendor (#4713)
     add 958a75990 fix(dlq): keep the redelivery count in exports and reject a 
zero-length window (#4718)
     add 15167dc5d fix(studio): normalize the audit search term and require an 
alert metric (#4682)
     add ce8acd080 fix(web): promote the byte unit at the rounding boundary and 
localize MiniBar labels (#4680)
     add 42b68d1d5 fix(web): surface failed requests instead of stale or blank 
panels (#4615)
     add 29a7d4abe fix(alert): audit exhausted deliveries with the shared 
FAILED vocabulary (#4657)
     add b88582b12 [ISSUE #4143][ISSUE #4147] feat(ai): bound message queries 
and support custom traces (#4388)
     add ed6613bd1 [ISSUE #4463] fix(producer): surface incomplete connection 
scans (#4468)
     add beae721a9 fix(ai): validate message properties before confirming a 
send preview (#4470)
     add 7c8ec156f fix(ai): keep the provider token out of 
LlmProperties.toString (#4472)
     add 61d1b178d fix(nameserver): preserve named IPv6 zone identifiers (#4522)
     add 34b033208 fix(tencent): reject incomplete resource pages (#4531)
     add cea345e69 fix(tencent): reject incomplete ACL role pages (#4533)
     add dff6876d6 fix(client): constrain diagnostics to registered nameservers 
(#4534)
     add aae11ff0d fix(lite): surface session metric read failures (#4536)
     add 74c9ea91c fix(topic): reject updates for missing topics (#4538)
     add 59aaadfd7 fix(k8s): redact certificate private keys (#4555)
     add 25d8645c8 fix(ai): repair corrupt prompt-template storage instead of 
locking it out (#4575)
     add e7bacd22e fix(studio): render session timestamps in the viewer 
timezone (#4576)
     add 5479af6f4 fix(lite): fail the TTL extension instead of partially 
updating the cluster (#4578)
     add f597fecc2 fix(audit): let the timeline target be activated from the 
keyboard (#4580)
     add eca042d3c fix(cluster): keep the selected instance when the display 
language changes (#4590)
     add af47c9697 fix(consumer): refresh the subscription verdict on the 2s 
modal auto-refresh (#4593)
     add d8157bf68 fix(clients): reset the text search and type filter when the 
nameserver changes (#4595)
     add fd3776615 fix(topic): reload the paginated inventory after importing 
topics (#4602)
     add 971a4d17d fix(consumer): keep a failed progress read out of the empty 
and healthy states (#4604)
     add 042b50d98 fix(message): record direct-consume audit failures as FAILED 
(#4607)
     add aec407743 fix(ai): seed the run id on attach so stop works after a 
reconnect (#4613)
     add 91bebfe44 fix(studio): localize the user management page (#4621)
     add 480f4bca7 fix(rmqctl): fetch the confirm token after interactive 
confirmation (#4623)
     add 84174f0c1 fix(rmqctl): align install.sh with the actual release 
artifacts (#4625)
     add 7a1b8eeb4 fix(rmqctl): ignore non-positive --timeout instead of 
failing every request (#4627)
     add da43b1ea0 fix(studio): localize the remaining hardcoded strings on 
Ops, BrokerCluster and AlertRuleAssets (#4629)
     add 114656085 fix(ai): drop superseded LLM runtime responses instead of 
letting them repopulate the state (#4631)
     add b0b0e176f fix(web): localize the remaining hardcoded strings on the 
message page (#4633)
     add d388bc43d fix(metrics): keep the current data source when cancelling 
the auth dialog (#4643)
     add 1b9374b7f fix(rmqctl): escape control characters in table cell output 
(#4661)
     add 02d81ec28 fix(ai): retry a turn whose remembered agent session is gone 
(#4693)
     add 930e27df5 fix(ai): attach only the run of the conversation on screen 
(#4696)
     add c55a45244 fix(studio): keep a failed Ops load out of the 
unsupported-cluster state (#4698)
     add 71ffb696a fix(deliveries): offer a retry when the instance filter 
cannot load (#4700)
     add 96c484637 docs: correct the audit result values in the API spec (#4709)
     add ef9b98269 fix: prevent unread badge from inflating when streaming 
fails (#4715)
     add ef5b203c3 fix(deploy): use gmt_create in the nameserver unique-key 
migration (#4721)
     add 3945f6d44 docs: align the ACL section of the API spec with the 
controller (#4723)
     add 4cbc45120 docs: align the instance section of the API spec with 
InstanceType (#4725)
     add cd6bec037 docs: list the enum values the API actually defines (#4727)
     add 148cb694d docs: sync the Chinese README login description with the 
code (#4729)
     add 552409185 fix(web): key the protocol tag map by the values the API 
returns (#4741)
     add 4c697f07a fix(web): prefix CSV downloads with a UTF-8 BOM (#4743)
     add 1ef5d8607 fix(studio): repair MCP tool gating, smooth AI streaming, 
and polish console surfaces (#4855)
     add b42a6ed1b feat(studio): enforce resource ownership isolation for open 
source instances (#5006)
     add 0228dad5b chore(studio): 3.0.0 release readiness (#5007)

No new revisions were added by this update.

Summary of changes:
 .claude/skills/deploy-rocketmq/SKILL.md            |   22 +
 .dockerignore                                      |   60 +
 .github/workflows/ci.yml                           |   66 +-
 .gitignore                                         |    4 +
 CONTRIBUTING.md                                    |   47 +-
 LICENSE                                            |   15 +-
 NOTICE                                             |   11 +-
 README.md                                          |   96 +-
 README_zh.md                                       |   95 +-
 deploy/.env.example                                |   77 +
 deploy/deploy.sh                                   |   10 +-
 deploy/docker-compose.yml                          |   41 +-
 deploy/mysql/upgrade-nameserver-name-uk.sql        |    8 +-
 deploy/rocketmq/README.md                          |    3 +-
 deploy/rocketmq/conf/broker-0.conf                 |    2 +-
 deploy/rocketmq/conf/broker-1.conf                 |    2 +-
 deploy/rocketmq/conf/rmq-proxy.json                |    2 +-
 deploy/rocketmq/docker-compose.yml                 |    8 +-
 docs/ai-agent-architecture.md                      |  254 +++
 docs/api-spec.md                                   |  587 ++++++-
 rmqctl/Makefile                                    |   25 +-
 rmqctl/cmd/app.go                                  |    2 +-
 rmqctl/cmd/app_test.go                             |   62 +-
 rmqctl/cmd/catalog.go                              |   14 +-
 rmqctl/cmd/mcp_config_golden_test.go               |  147 ++
 rmqctl/install.sh                                  |    8 +-
 rmqctl/internal/catalog/catalog_gen.go             |   17 +-
 rmqctl/internal/output/output.go                   |    5 +-
 rmqctl/internal/output/output_test.go              |   24 +
 rmqctl/internal/studio/auth.go                     |   18 +-
 rmqctl/internal/studio/client.go                   |   14 +-
 rmqctl/internal/studio/client_test.go              |   78 +
 rmqctl/internal/studio/mcp_http_test.go            |    2 +-
 .../studio/testdata/auth-hmac-vectors.json         |   12 +-
 rmqctl/internal/studio/tools_test.go               |   26 +-
 rmqctl/scripts/build-windows.ps1                   |   94 ++
 rmqctl/scripts/license-binary.go                   |  281 ++++
 rmqctl/scripts/license-binary_test.go              |  129 ++
 rmqctl/scripts/package-release.sh                  |   47 +-
 server/Dockerfile                                  |  149 +-
 server/LICENSE                                     |    2 +-
 server/NOTICE                                      |    6 +-
 server/pom.xml                                     |   83 +-
 server/scripts/legal.py                            |  310 ++++
 server/scripts/legal_test.py                       |  114 ++
 .../rocketmq/studio/auth/AuthInterceptor.java      |   32 +-
 .../apache/rocketmq/studio/auth/AuthService.java   |   19 +-
 .../studio/cluster/client/ClientProvider.java      |    6 +
 .../studio/cluster/client/ClientService.java       |    5 +-
 .../cluster/client/ProducerConnectionResultVO.java |   19 +-
 .../client/ProducerConnectionScanResult.java       |   41 +
 .../cluster/client/ProducerConnectionService.java  |    9 +-
 .../client/ProducerConnectionSummaryVO.java        |   26 +-
 .../studio/cluster/client/ProducerController.java  |    3 +-
 .../rocketmq/studio/cluster/k8s/CreateCertDTO.java |    2 +
 .../rocketmq/studio/cluster/k8s/K8sCertVO.java     |    2 +
 .../studio/cluster/metrics/MetricsService.java     |   26 +-
 .../ApacheRocketMqBusinessMetricsCollector.java    |   56 +-
 .../ApacheRocketMqClusterMetricsCollector.java     |   24 +-
 .../nameserver/NameserverRegistryService.java      |   39 +
 .../cluster/nameserver/NamesrvAddrParser.java      |    6 +-
 .../rocketmq/studio/common/config/CorsConfig.java  |    6 +-
 .../studio/common/util/MessagePropertyDisplay.java |   31 +-
 .../rocketmq/studio/instance/InstanceService.java  |   47 +-
 .../instance/MybatisPlusInstanceRepository.java    |   18 +-
 .../studio/instance/ResourceOwnershipGuard.java    |  287 ++++
 .../instance/ResourceOwnershipSchemaMigration.java |  153 ++
 .../studio/instance/dlq/DLQMessageExcelRow.java    |    3 +
 .../rocketmq/studio/instance/dlq/DLQService.java   |    8 +
 .../studio/instance/group/ConsumerGroupVO.java     |    1 +
 .../instance/group/DeleteConsumerGroupDTO.java     |    1 +
 .../studio/instance/message/MessageService.java    |   63 +-
 .../studio/instance/topic/DeleteTopicDTO.java      |    1 +
 .../studio/instance/topic/LiteTopicController.java |    2 +-
 .../studio/instance/topic/LiteTopicService.java    |   18 +-
 .../instance/topic/LiteTopicTTLUpdateDTO.java      |    2 +
 .../studio/instance/topic/MetadataService.java     |  136 +-
 .../rocketmq/studio/ops/ai/AgentProvider.java      |   46 +-
 .../rocketmq/studio/ops/ai/AiController.java       |   44 -
 .../rocketmq/studio/ops/ai/AiExecuteResultVO.java  |   31 -
 .../rocketmq/studio/ops/ai/AiPayloadGuard.java     |   44 +-
 .../apache/rocketmq/studio/ops/ai/AiService.java   |   73 -
 .../org/apache/rocketmq/studio/ops/ai/ChatDTO.java |   35 -
 .../studio/ops/ai/ClaudeCodeAgentProvider.java     |  373 ++++-
 .../studio/ops/ai/ClaudeCodeStreamParser.java      |  712 ++++++++
 .../rocketmq/studio/ops/ai/CliAgentProvider.java   |   30 +-
 .../studio/ops/ai/CliProcessEnvironment.java       |   51 +-
 .../rocketmq/studio/ops/ai/LlmConfigService.java   |    5 +
 .../apache/rocketmq/studio/ops/ai/LlmGateway.java  |   26 -
 .../rocketmq/studio/ops/ai/LlmProperties.java      |    2 +
 .../rocketmq/studio/ops/ai/LlmSseSession.java      |  129 --
 .../rocketmq/studio/ops/ai/McpServerRegistry.java  |   36 -
 .../studio/ops/ai/OpenAiCompatibleLlmGateway.java  |  377 -----
 .../rocketmq/studio/ops/ai/ToolController.java     |    5 +-
 .../studio/ops/ai/auth/McpAuthenticator.java       |   54 +-
 .../studio/ops/ai/conversation/AbortReason.java    |   84 +
 .../studio/ops/ai/conversation/AgentRunHandle.java |  354 ++++
 .../ops/ai/conversation/AgentRunRegistry.java      |  215 +++
 .../ops/ai/conversation/AgentStreamSession.java    |  385 +++++
 .../ai/conversation/AiConversationController.java  |  415 +++++
 .../ai/conversation/AiConversationProperties.java  |   74 +
 .../ai/conversation/AiConversationRepository.java  |   60 +
 .../AiConversationSchemaMigration.java             |  209 +++
 .../ops/ai/conversation/AiConversationService.java |  549 +++++++
 .../ai/conversation/AiConversationVoAssembler.java |  253 +++
 .../studio/ops/ai/conversation/AiEventCodec.java   |   91 ++
 .../ops/ai/conversation/AiEventRepository.java     |   48 +
 .../studio/ops/ai/conversation/AiEventSink.java    |  487 ++++++
 .../studio/ops/ai/conversation/AiRunExecutor.java  |  749 +++++++++
 .../ops/ai/conversation/AiRunRepository.java       |   66 +
 .../studio/ops/ai/conversation/AiRunService.java   |  596 +++++++
 .../MybatisPlusAiConversationRepository.java       |  132 ++
 .../conversation/MybatisPlusAiEventRepository.java |   91 ++
 .../conversation/MybatisPlusAiRunRepository.java   |  184 +++
 .../conversation/agent/AgentCapabilityProbe.java   |  132 ++
 .../ai/conversation/agent/AgentStreamOptions.java  |  136 ++
 .../ops/ai/conversation/agent/CliBinaryProbe.java  |  111 ++
 .../agent/InstanceCredentialResolver.java          |  167 ++
 .../ops/ai/conversation/agent/PromptEnhancer.java  |  140 ++
 .../ops/ai/conversation/agent/ResumeRecovery.java  |  101 ++
 .../ops/ai/conversation/agent/RmqctlWorkspace.java |  683 ++++++++
 .../conversation/dto/AiConversationCreateDTO.java} |   29 +-
 .../conversation/dto/AiConversationUpdateDTO.java} |   18 +-
 .../ops/ai/conversation/dto/AiMessageDTO.java      |   65 +
 .../conversation/dto/ReportRunSpeedDTO.java}       |   19 +-
 .../ops/ai/conversation/event/AgentEvent.java      |  102 ++
 .../ai/conversation/event/AgentEventProjector.java |  515 ++++++
 .../ops/ai/conversation/event/LiveEvent.java       |  102 ++
 .../ops/ai/conversation/event/RunStatus.java       |   55 +
 .../ops/ai/conversation/event/StopReason.java      |   55 +
 .../ops/ai/conversation/event/ThinkingSource.java  |   65 +
 .../ops/ai/conversation/event/TimelineEvent.java   |  110 ++
 .../ai/conversation/vo/AiActiveRunRef.java}        |   28 +-
 .../ai/conversation/vo/AiAgentCapabilitiesVO.java} |   31 +-
 .../ai/conversation/vo/AiConversationDetailVO.java |   45 +
 .../vo/AiConversationListItemVO.java}              |   33 +-
 .../ops/ai/conversation/vo/AiConversationVO.java   |   66 +
 .../ai/conversation/vo/AiRmqctlConfigVO.java}      |   27 +-
 .../ai/conversation/vo/AiRunStatsVO.java}          |   24 +-
 .../studio/ops/ai/conversation/vo/AiRunVO.java     |   59 +
 .../ai/conversation/vo/AiTimelineItemVO.java}      |   31 +-
 .../ai/conversation/vo/AiTimelineVO.java}          |   23 +-
 .../ai/tool/contract/group/GroupDetailOutput.java  |    1 +
 .../ops/ai/tool/contract/group/GroupListItem.java  |    1 +
 .../contract/message/MessageQueryByTopicInput.java |   16 +-
 .../tool/contract/message/MessageQueryInput.java   |   16 +-
 .../tool/contract/message/MessageQueryOutput.java  |   81 +
 .../tool/contract/message/MessageTraceInput.java   |    7 +-
 .../studio/ops/ai/tool/core/ToolError.java         |    4 +-
 .../studio/ops/ai/tool/filter/ToolAuditFilter.java |   21 +-
 .../ops/ai/tool/filter/ToolCapabilityFilter.java   |   20 +
 .../tool/handler/group/GroupDetailToolHandler.java |    7 +-
 .../message/MessageQueryByTopicToolHandler.java    |   16 +-
 .../handler/message/MessageQueryToolHandler.java   |   28 +-
 .../handler/message/MessageSendToolHandler.java    |    2 +
 .../handler/message/MessageTraceToolHandler.java   |    8 +-
 .../ops/ai/tool/service/ToolExecutionService.java  |   51 +-
 .../ops/alert/MybatisPlusAlertStateRepository.java |    2 +-
 .../studio/ops/alert/NativeAlertProcessor.java     |    3 +-
 .../ops/alert/NativeAlertRuleTestService.java      |    6 +
 .../ops/alert/NotificationOutboxService.java       |    4 +-
 .../rocketmq/studio/ops/audit/AuditService.java    |   16 +-
 .../persistence/MybatisPlusSettingsRepository.java |    2 +-
 .../{RmqTopic.java => RmqAiConversation.java}      |   31 +-
 .../entity/{RmqInstance.java => RmqAiEvent.java}   |   32 +-
 .../{RmqOperationAudit.java => RmqAiRun.java}      |   43 +-
 .../persistence/entity/RmqK8sCertificate.java      |    2 +
 ...uleMapper.java => RmqAiConversationMapper.java} |    4 +-
 ...RmqAclRuleMapper.java => RmqAiEventMapper.java} |    4 +-
 .../{RmqGroupMapper.java => RmqAiRunMapper.java}   |    4 +-
 .../studio/provider/InstanceCapability.java        |    1 +
 .../rocketmq/studio/provider/InstanceProvider.java |   34 +
 .../studio/provider/LiteTopicProvider.java         |    6 +
 .../provider/alibaba/AliyunInstanceProvider.java   |   30 +
 .../studio/provider/apache/AdminClient.java        |    2 +
 .../provider/apache/ApacheInstanceProvider.java    |   43 +
 .../provider/apache/ApacheWriteTargetResolver.java |  109 ++
 .../provider/apache/ProxyConsumerResolver.java     |   94 +-
 .../provider/apache/RocketMQAdminClientImpl.java   |  444 +++--
 .../provider/apache/RocketMQClientProvider.java    |   53 +-
 .../provider/apache/RocketMQLiteTopicProvider.java |  105 +-
 .../provider/apache/RocketMQMessageProvider.java   |  139 +-
 .../provider/apache/RocketMQMetadataProvider.java  |  125 +-
 .../studio/provider/tencent/TencentAclService.java |   53 +-
 .../provider/tencent/TencentCatalogService.java    |   23 +-
 .../provider/tencent/TencentInstanceProvider.java  |   71 +-
 server/src/main/resources/application.yml          |   70 +-
 server/src/main/resources/db/schema.sql            |  106 +-
 .../main/resources/prompts/agent-system-prompt.txt |   29 +
 .../main/resources/tool-catalog/tools/group.yaml   |    7 +-
 .../main/resources/tool-catalog/tools/message.yaml |   41 +-
 .../main/resources/tool-catalog/tools/proxy.yaml   |    6 +-
 .../rocketmq/studio/auth/AuthInterceptorTest.java  |  118 ++
 .../AuthPasswordChangeStatusIntegrationTest.java   |  110 ++
 .../studio/auth/AuthServiceDatabaseTest.java       |   48 +
 .../AuthServiceSessionOverviewIntegrationTest.java |   10 +-
 .../rocketmq/studio/auth/AuthServiceTest.java      |    2 +-
 .../studio/cluster/client/ClientServiceTest.java   |   28 +-
 .../client/ProducerConnectionServiceTest.java      |   60 +-
 .../client/ProducerConnectionSummaryVOTest.java    |    9 +
 .../cluster/client/ProducerControllerTest.java     |   30 +-
 .../k8s/K8sCertificateSecretRedactionTest.java     |   62 +
 .../studio/cluster/metrics/MetricsServiceTest.java |   77 +
 ...ApacheRocketMqBusinessMetricsCollectorTest.java |   37 +
 .../ApacheRocketMqClusterMetricsCollectorTest.java |   33 +
 .../nameserver/NameserverRegistryServiceTest.java  |  122 +-
 .../cluster/nameserver/NamesrvAddrParserTest.java  |   12 +
 .../studio/common/config/CorsConfigTest.java       |   17 +
 .../common/util/MessagePropertyDisplayTest.java    |   54 +
 .../studio/instance/InstanceServiceTest.java       |  140 ++
 .../MybatisPlusInstanceRepositoryTest.java         |   56 +
 .../instance/ResourceOwnershipGuardTest.java       |  685 ++++++++
 .../instance/dlq/DLQMessageExcelRowTest.java       |   71 +
 .../studio/instance/dlq/DLQServiceTest.java        |   31 +
 .../group/ConsumerGroupControllerTest.java         |   26 +-
 .../instance/message/MessageServiceTest.java       |  121 +-
 .../instance/topic/LiteTopicControllerTest.java    |   25 +-
 .../instance/topic/LiteTopicServiceTest.java       |   36 +-
 .../studio/instance/topic/MetadataServiceTest.java |  271 ++--
 .../studio/instance/topic/TopicControllerTest.java |   25 +-
 .../rocketmq/studio/ops/ai/AiControllerTest.java   |   55 -
 .../rocketmq/studio/ops/ai/AiPayloadGuardTest.java |   25 +-
 .../rocketmq/studio/ops/ai/AiServiceTest.java      |  187 ---
 .../studio/ops/ai/ClaudeCodeAgentProviderTest.java |  304 ++++
 .../studio/ops/ai/ClaudeCodeStreamParserTest.java  |  653 ++++++++
 .../studio/ops/ai/CliAgentProviderTest.java        |   36 +
 .../studio/ops/ai/CliProcessEnvironmentTest.java   |   53 +
 ...LlmConfigVOTest.java => LlmPropertiesTest.java} |   24 +-
 .../rocketmq/studio/ops/ai/LlmSseSessionTest.java  |  130 --
 .../ops/ai/OpenAiCompatibleLlmGatewayTest.java     |  402 -----
 .../studio/ops/ai/QoderAgentProviderTest.java      |   23 +
 .../rocketmq/studio/ops/ai/ToolControllerTest.java |   28 +-
 .../ai/conversation/AgentRunHandleStopTest.java    |  369 +++++
 .../ops/ai/conversation/AgentRunRegistryTest.java  |  264 +++
 .../conversation/AiConversationControllerTest.java |  645 ++++++++
 .../AiConversationPersistenceIntegrationTest.java  |  521 ++++++
 .../AiConversationSchemaMigrationTest.java         |  231 +++
 .../ai/conversation/AiConversationServiceTest.java |  442 +++++
 .../AiConversationVoAssemblerTest.java             |  666 ++++++++
 .../ai/conversation/AiEventSeqAllocationTest.java  |  320 ++++
 .../ops/ai/conversation/AiRunExecutorTest.java     |  617 +++++++
 .../ops/ai/conversation/AiRunServiceTest.java      |  561 +++++++
 .../ops/ai/conversation/AiRunTestSupport.java      |  365 +++++
 .../ai/conversation/AiStreamControllerTest.java    |  403 +++++
 .../ai/conversation/AiTimelineRepositoryTest.java  |  807 +++++++++
 .../agent/InstanceCredentialResolverTest.java      |  268 +++
 .../ai/conversation/agent/RmqctlWorkspaceTest.java |  600 +++++++
 .../event/AgentEventProjectorTest.java             |  589 +++++++
 .../ops/ai/conversation/event/AiEventCodecs.java   |  109 ++
 .../ai/conversation/event/AiEventContractTest.java |  526 ++++++
 .../event/AiEventJsonSerializationTest.java        |  453 ++++++
 .../studio/ops/ai/mcp/McpToolRegistrarTest.java    |  108 ++
 .../ops/ai/tool/MessageTraceToolHandlerTest.java   |   32 +
 .../ops/ai/tool/catalog/ToolCatalogTest.java       |   62 +
 .../group/ConsumerGroupReadToolHandlersTest.java   |   17 +
 .../MessageQueryByTopicToolHandlerTest.java        |   98 +-
 .../message/MessageQueryToolHandlerTest.java       |  171 +-
 .../message/MessageSendToolHandlerTest.java        |   17 +
 .../ai/tool/service/ToolInstanceBindingTest.java   |  317 ++++
 .../ai/tool/service/ToolInstanceRoutingTest.java   |    3 +-
 .../tool/service/ToolOutputSchemaContractTest.java |   38 +-
 .../alert/MybatisPlusAlertStateRepositoryTest.java |   29 +
 .../studio/ops/alert/NativeAlertProcessorTest.java |   68 +
 .../ops/alert/NativeAlertRuleTestServiceTest.java  |   20 +
 .../ops/alert/NotificationOutboxServiceTest.java   |   38 +
 .../studio/ops/audit/AuditServiceTest.java         |   47 +
 .../alibaba/AliyunInstanceProviderTest.java        |   51 +
 .../apache/ApacheInstanceProviderTest.java         |   54 +
 .../provider/apache/ProxyConsumerResolverTest.java |   57 +-
 .../apache/RocketMQAdminClientImplTest.java        |  327 +++-
 .../apache/RocketMQClientProviderTest.java         |   78 +-
 .../apache/RocketMQLiteTopicProviderTest.java      |  141 +-
 .../apache/RocketMQMessageProviderTest.java        |  126 +-
 .../apache/RocketMQMetadataProviderTest.java       |   89 +-
 .../provider/tencent/TencentAclServiceTest.java    |   74 +
 .../tencent/TencentCatalogServiceTest.java         |   42 +
 .../tencent/TencentInstanceProviderTest.java       |   82 +
 .../src/test/resources/ai/agent-notices.txt        |   21 +-
 .../src/test/resources/ai/ai-event-contract.json   |  263 +++
 .../ai/claude-stream-capture-mcp-failed.jsonl      |  196 +++
 .../test/resources/ai/claude-stream-capture.jsonl  |  278 ++++
 web/Dockerfile                                     |   18 +
 web/LICENSE                                        |   15 +-
 web/NOTICE                                         |   11 +-
 web/licenses/toggle-selection-1.0.6/LICENSE        |   21 +
 web/nginx.conf                                     |   33 +-
 web/nginx_contract_test.sh                         |   23 +-
 web/package-lock.json                              |   18 +-
 web/package.json                                   |    7 +-
 .../TopicPerm.java => web/scripts/licenses.d.mts   |    8 +-
 web/scripts/licenses.mjs                           |  247 +++
 web/scripts/licenses.test.mjs                      |   98 ++
 web/src/App.test.tsx                               |   47 +-
 web/src/App.tsx                                    |    1 +
 web/src/api/ai.test.ts                             |  521 ++++--
 web/src/api/ai.ts                                  |  372 +++--
 web/src/api/aiConversations.test.ts                |  299 ++++
 web/src/api/aiConversations.ts                     |  263 +++
 web/src/api/aiEvents.contract.test.ts              |  706 ++++++++
 web/src/api/aiEvents.optionalFields.test.ts        |  640 ++++++++
 web/src/api/aiEvents.ts                            |  371 +++++
 web/src/api/client.ts                              |    2 -
 web/src/api/cluster.ts                             |    4 -
 web/src/api/instance.ts                            |    1 +
 web/src/api/metadata.ts                            |    1 +
 web/src/api/producer.test.ts                       |   17 +
 web/src/api/producer.ts                            |   38 +-
 web/src/assets/model-logos/LICENSE                 |   21 +
 web/src/assets/model-logos/baichuan-color.svg      |    1 +
 web/src/assets/model-logos/chatglm-color.svg       |    1 +
 web/src/assets/model-logos/claude-color.svg        |    1 +
 web/src/assets/model-logos/deepseek-color.svg      |    1 +
 web/src/assets/model-logos/doubao-color.svg        |    1 +
 web/src/assets/model-logos/gemini-color.svg        |    1 +
 web/src/assets/model-logos/grok.svg                |    1 +
 web/src/assets/model-logos/hunyuan-color.svg       |    1 +
 web/src/assets/model-logos/kimi-color.svg          |    1 +
 web/src/assets/model-logos/metaai-color.svg        |    1 +
 web/src/assets/model-logos/minimax-color.svg       |    1 +
 web/src/assets/model-logos/mistral-color.svg       |    1 +
 web/src/assets/model-logos/moonshot.svg            |    1 +
 web/src/assets/model-logos/ollama.svg              |    1 +
 web/src/assets/model-logos/openai.svg              |    1 +
 web/src/assets/model-logos/qwen-color.svg          |    1 +
 web/src/assets/model-logos/spark-color.svg         |    1 +
 web/src/components/AlertRuleAssetList.tsx          |   19 +
 web/src/components/GrafanaDashboardList.tsx        |   19 +
 web/src/components/MetricsExplorer.tsx             |   19 +-
 web/src/components/MiniBar.tsx                     |   14 +-
 web/src/components/QueueBrowser.tsx                |    6 +-
 .../__tests__/AlertRuleAssetList.test.tsx          |   22 +
 .../__tests__/GrafanaDashboardList.test.tsx        |   28 +
 .../components/__tests__/MetricsExplorer.test.tsx  |   75 +
 web/src/components/__tests__/MiniBar.test.tsx      |   51 +-
 web/src/components/__tests__/QueueBrowser.test.tsx |   31 +
 web/src/constants/__tests__/theme.test.ts          |    7 +
 web/src/constants/theme.ts                         |    4 +-
 web/src/i18n/translations.ts                       |  661 +++++++-
 web/src/index.css                                  |  108 +-
 web/src/layouts/MainLayout.test.tsx                |    7 +-
 web/src/layouts/MainLayout.tsx                     |  343 ++--
 web/src/mock/consumers.ts                          |   82 +-
 web/src/pages/ai/__tests__/AiMessage.test.tsx      |   68 -
 web/src/pages/ai/__tests__/AiPage.test.tsx         |  842 +++++-----
 web/src/pages/ai/chatDraft.test.ts                 |   85 +-
 web/src/pages/ai/chatDraft.ts                      |   70 +-
 web/src/pages/ai/components/AssistantBubble.tsx    |  310 ++++
 web/src/pages/ai/components/BubbleList.tsx         |  143 ++
 web/src/pages/ai/components/ChatThread.tsx         |  261 +++
 web/src/pages/ai/components/Composer.tsx           |  578 +++++++
 .../pages/ai/components/ConversationListModal.tsx  |  526 ++++++
 web/src/pages/ai/components/ModelBadge.tsx         |  132 ++
 .../pages/ai/components/PromptTemplateModal.tsx    |  382 +++++
 web/src/pages/ai/components/RuntimeNotices.tsx     |   79 +
 web/src/pages/ai/components/SendStopButton.tsx     |   94 ++
 .../pages/ai/components/ToolPlaygroundModal.tsx    |  348 ++++
 web/src/pages/ai/components/UserBubble.tsx         |  102 ++
 web/src/pages/ai/components/WelcomeStarters.tsx    |  170 ++
 .../components/__tests__/AssistantBubble.test.tsx  |  399 +++++
 .../ai/components/__tests__/ChatThread.test.tsx    |  330 ++++
 .../ai/components/__tests__/Composer.test.tsx      |  303 ++++
 .../__tests__/ConversationListModal.test.tsx       |  509 ++++++
 .../components/__tests__/SendStopButton.test.tsx   |  149 ++
 .../ai/components/__tests__/ToolBlock.test.tsx     |  146 ++
 web/src/pages/ai/components/blocks/ErrorBlock.tsx  |   66 +
 web/src/pages/ai/components/blocks/NoticeBlock.tsx |   51 +
 web/src/pages/ai/components/blocks/TextBlock.tsx   |   50 +
 .../pages/ai/components/blocks/ThinkingBlock.tsx   |  116 ++
 web/src/pages/ai/components/blocks/ToolBlock.tsx   |  265 +++
 web/src/pages/ai/hooks/useActiveRunAttach.test.ts  |   77 +
 web/src/pages/ai/hooks/useActiveRunAttach.ts       |   60 +
 web/src/pages/ai/hooks/useAgentCapabilities.ts     |   49 +
 web/src/pages/ai/hooks/useAgentRun.test.ts         |  497 ++++++
 web/src/pages/ai/hooks/useAgentRun.ts              |  470 ++++++
 web/src/pages/ai/hooks/useAiSend.ts                |  149 ++
 web/src/pages/ai/hooks/useComposerDraft.ts         |   75 +
 web/src/pages/ai/hooks/useConversationList.test.ts |  185 +++
 web/src/pages/ai/hooks/useConversationList.ts      |  139 ++
 .../pages/ai/hooks/useConversationTimeline.test.ts |  243 +++
 web/src/pages/ai/hooks/useConversationTimeline.ts  |  217 +++
 web/src/pages/ai/hooks/useDraftHandoff.ts          |  127 ++
 web/src/pages/ai/hooks/useLlmRuntime.test.ts       |  136 ++
 web/src/pages/ai/hooks/useLlmRuntime.ts            |  148 ++
 web/src/pages/ai/index.tsx                         | 1716 +++-----------------
 web/src/pages/ai/pageStyle.ts                      |   45 +
 web/src/pages/ai/promptTemplates.test.ts           |   17 +
 web/src/pages/ai/promptTemplates.ts                |   37 +-
 .../pages/ai/render/__tests__/streamSpeed.test.ts  |   70 +
 web/src/pages/ai/render/blocks.ts                  |  239 +++
 web/src/pages/ai/render/equivalence.test.ts        |  772 +++++++++
 web/src/pages/ai/render/foldTimeline.ts            |  343 ++++
 web/src/pages/ai/render/markdown.ts                |   35 +
 web/src/pages/ai/render/reduceLive.ts              |   76 +
 web/src/pages/ai/render/streamSpeed.ts             |   69 +
 .../pages/cluster/__tests__/ClientsPage.test.tsx   |   60 +-
 .../pages/cluster/__tests__/ClusterPage.test.tsx   |  211 ++-
 web/src/pages/cluster/clients.tsx                  |   56 +-
 web/src/pages/cluster/index.tsx                    |  258 ++-
 .../pages/home/__tests__/DashboardPage.test.tsx    |   10 +-
 web/src/pages/home/__tests__/HomePage.test.tsx     |   34 +-
 web/src/pages/home/index.tsx                       |  247 +--
 web/src/pages/instance/__tests__/AclPage.test.tsx  |   40 +-
 .../pages/instance/__tests__/ConsumerPage.test.tsx |  217 ++-
 .../__tests__/ConsumerPageDiagnosticsRace.test.tsx |  166 ++
 web/src/pages/instance/__tests__/DLQPage.test.tsx  |  128 +-
 .../pages/instance/__tests__/InstancePage.test.tsx |   46 +-
 .../pages/instance/__tests__/MessagePage.test.tsx  |   81 +-
 .../__tests__/MessagePageAsyncState.test.tsx       |   36 +-
 .../pages/instance/__tests__/TopicPage.test.tsx    |  225 ++-
 web/src/pages/instance/acl.tsx                     |    4 +-
 web/src/pages/instance/consumer.tsx                |   93 +-
 web/src/pages/instance/dlq.tsx                     |   60 +-
 web/src/pages/instance/index.tsx                   |    2 +-
 web/src/pages/instance/message.tsx                 |  258 +--
 web/src/pages/instance/topic.tsx                   |   80 +-
 web/src/pages/login/index.css                      |  299 ++--
 web/src/pages/login/index.tsx                      |  135 +-
 web/src/pages/ops/__tests__/AlertsPage.test.tsx    |  106 ++
 web/src/pages/ops/__tests__/AuditPage.test.tsx     |   21 +-
 .../__tests__/NotificationDeliveriesPage.test.tsx  |   30 +-
 .../pages/ops/__tests__/SystemAlertsPage.test.tsx  |   32 +
 web/src/pages/ops/alerts.tsx                       |   38 +-
 web/src/pages/ops/audit.tsx                        |   20 +-
 web/src/pages/ops/notificationDeliveries.tsx       |   32 +-
 web/src/pages/ops/systemAlerts.tsx                 |    8 +-
 web/src/pages/settings/AboutTab.tsx                |    4 +-
 web/src/pages/studio/AlertRuleAssets.tsx           |    2 +-
 web/src/pages/studio/BrokerCluster.tsx             |   10 +-
 web/src/pages/studio/Ops.tsx                       |   35 +-
 web/src/pages/studio/Producer.tsx                  |   21 +-
 web/src/pages/studio/UserManagement.tsx            |  289 ++--
 .../__tests__/BrokerClusterInstanceScope.test.tsx  |  185 +++
 web/src/pages/studio/__tests__/Ops.test.tsx        |   18 +
 web/src/pages/studio/__tests__/Producer.test.tsx   |   45 +
 .../pages/studio/__tests__/UserManagement.test.tsx |   59 +-
 web/src/services/consumerService.test.ts           |   40 +-
 web/src/services/consumerService.ts                |    6 +-
 web/src/stores/aiChatHistoryStore.test.ts          |  205 ---
 web/src/stores/aiChatHistoryStore.ts               |  308 ----
 web/src/test/setup.test.ts                         |  134 ++
 web/src/test/setup.ts                              |   54 +-
 web/src/utils/alertTemplatePreview.test.ts         |   24 +
 web/src/utils/alertTemplatePreview.ts              |    6 +-
 web/src/utils/apiError.ts                          |   15 +
 web/src/utils/consumerConnections.test.ts          |   51 +
 web/src/utils/consumerConnections.ts               |   35 +
 web/src/utils/consumerGroupDiagnostics.test.ts     |   12 +
 web/src/utils/consumerGroupDiagnostics.ts          |   18 +-
 web/src/utils/download.test.ts                     |   36 +-
 web/src/utils/download.ts                          |    6 +-
 web/src/utils/format.test.ts                       |    7 +
 web/src/utils/format.ts                            |   21 +-
 web/src/utils/messageTraceDiagnostics.test.ts      |   51 +-
 web/src/utils/messageTraceDiagnostics.ts           |  137 +-
 web/vite.config.ts                                 |   21 +-
 455 files changed, 47809 insertions(+), 7177 deletions(-)
 create mode 100644 .dockerignore
 create mode 100644 docs/ai-agent-architecture.md
 create mode 100644 rmqctl/cmd/mcp_config_golden_test.go
 create mode 100644 rmqctl/internal/studio/client_test.go
 create mode 100644 rmqctl/scripts/build-windows.ps1
 create mode 100644 rmqctl/scripts/license-binary.go
 create mode 100644 rmqctl/scripts/license-binary_test.go
 create mode 100644 server/scripts/legal.py
 create mode 100644 server/scripts/legal_test.py
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/cluster/client/ProducerConnectionScanResult.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/instance/ResourceOwnershipGuard.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/instance/ResourceOwnershipSchemaMigration.java
 delete mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/AiController.java
 delete mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/AiExecuteResultVO.java
 delete mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/AiService.java
 delete mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/ChatDTO.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/ClaudeCodeStreamParser.java
 delete mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/LlmGateway.java
 delete mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/LlmSseSession.java
 delete mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/McpServerRegistry.java
 delete mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/OpenAiCompatibleLlmGateway.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/AbortReason.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/AgentRunHandle.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/AgentRunRegistry.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/AgentStreamSession.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/AiConversationController.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/AiConversationProperties.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/AiConversationRepository.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/AiConversationSchemaMigration.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/AiConversationService.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/AiConversationVoAssembler.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/AiEventCodec.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/AiEventRepository.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/AiEventSink.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/AiRunExecutor.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/AiRunRepository.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/AiRunService.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/MybatisPlusAiConversationRepository.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/MybatisPlusAiEventRepository.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/MybatisPlusAiRunRepository.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/agent/AgentCapabilityProbe.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/agent/AgentStreamOptions.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/agent/CliBinaryProbe.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/agent/InstanceCredentialResolver.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/agent/PromptEnhancer.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/agent/ResumeRecovery.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/agent/RmqctlWorkspace.java
 copy 
server/src/main/java/org/apache/rocketmq/studio/{instance/dlq/DLQResendSelectedRequestDTO.java
 => ops/ai/conversation/dto/AiConversationCreateDTO.java} (56%)
 copy 
server/src/main/java/org/apache/rocketmq/studio/{instance/message/TraceNodeVO.java
 => ops/ai/conversation/dto/AiConversationUpdateDTO.java} (65%)
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/dto/AiMessageDTO.java
 copy 
server/src/main/java/org/apache/rocketmq/studio/ops/{alert/ToggleAlertRuleDTO.java
 => ai/conversation/dto/ReportRunSpeedDTO.java} (58%)
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/event/AgentEvent.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/event/AgentEventProjector.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/event/LiveEvent.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/event/RunStatus.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/event/StopReason.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/event/ThinkingSource.java
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/event/TimelineEvent.java
 copy 
server/src/main/java/org/apache/rocketmq/studio/{instance/acl/AclRuleVO.java => 
ops/ai/conversation/vo/AiActiveRunRef.java} (58%)
 copy 
server/src/main/java/org/apache/rocketmq/studio/{instance/dlq/DLQExportResultVO.java
 => ops/ai/conversation/vo/AiAgentCapabilitiesVO.java} (51%)
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/vo/AiConversationDetailVO.java
 rename 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/{AiCommandDTO.java => 
conversation/vo/AiConversationListItemVO.java} (55%)
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/vo/AiConversationVO.java
 copy 
server/src/main/java/org/apache/rocketmq/studio/{instance/group/ResetConsumerOffsetDTO.java
 => ops/ai/conversation/vo/AiRmqctlConfigVO.java} (61%)
 copy 
server/src/main/java/org/apache/rocketmq/studio/{cluster/k8s/UpdateCertDTO.java 
=> ops/ai/conversation/vo/AiRunStatsVO.java} (67%)
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/conversation/vo/AiRunVO.java
 copy 
server/src/main/java/org/apache/rocketmq/studio/{cluster/nameserver/NameserverRegistryVO.java
 => ops/ai/conversation/vo/AiTimelineItemVO.java} (52%)
 copy 
server/src/main/java/org/apache/rocketmq/studio/{instance/dlq/DLQExportResultVO.java
 => ops/ai/conversation/vo/AiTimelineVO.java} (59%)
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/ops/ai/tool/contract/message/MessageQueryOutput.java
 copy 
server/src/main/java/org/apache/rocketmq/studio/persistence/entity/{RmqTopic.java
 => RmqAiConversation.java} (70%)
 copy 
server/src/main/java/org/apache/rocketmq/studio/persistence/entity/{RmqInstance.java
 => RmqAiEvent.java} (67%)
 copy 
server/src/main/java/org/apache/rocketmq/studio/persistence/entity/{RmqOperationAudit.java
 => RmqAiRun.java} (61%)
 copy 
server/src/main/java/org/apache/rocketmq/studio/persistence/mapper/{RmqAclRuleMapper.java
 => RmqAiConversationMapper.java} (85%)
 copy 
server/src/main/java/org/apache/rocketmq/studio/persistence/mapper/{RmqAclRuleMapper.java
 => RmqAiEventMapper.java} (87%)
 copy 
server/src/main/java/org/apache/rocketmq/studio/persistence/mapper/{RmqGroupMapper.java
 => RmqAiRunMapper.java} (87%)
 create mode 100644 
server/src/main/java/org/apache/rocketmq/studio/provider/apache/ApacheWriteTargetResolver.java
 create mode 100644 server/src/main/resources/prompts/agent-system-prompt.txt
 create mode 100644 
server/src/test/java/org/apache/rocketmq/studio/auth/AuthPasswordChangeStatusIntegrationTest.java
 create mode 100644 
server/src/test/java/org/apache/rocketmq/studio/cluster/k8s/K8sCertificateSecretRedactionTest.java
 create mode 100644 
server/src/test/java/org/apache/rocketmq/studio/instance/ResourceOwnershipGuardTest.java
 create mode 100644 
server/src/test/java/org/apache/rocketmq/studio/instance/dlq/DLQMessageExcelRowTest.java
 delete mode 100644 
server/src/test/java/org/apache/rocketmq/studio/ops/ai/AiControllerTest.java
 delete mode 100644 
server/src/test/java/org/apache/rocketmq/studio/ops/ai/AiServiceTest.java
 create mode 100644 
server/src/test/java/org/apache/rocketmq/studio/ops/ai/ClaudeCodeStreamParserTest.java
 copy 
server/src/test/java/org/apache/rocketmq/studio/ops/ai/{LlmConfigVOTest.java => 
LlmPropertiesTest.java} (60%)
 delete mode 100644 
server/src/test/java/org/apache/rocketmq/studio/ops/ai/LlmSseSessionTest.java
 delete mode 100644 
server/src/test/java/org/apache/rocketmq/studio/ops/ai/OpenAiCompatibleLlmGatewayTest.java
 create mode 100644 
server/src/test/java/org/apache/rocketmq/studio/ops/ai/conversation/AgentRunHandleStopTest.java
 create mode 100644 
server/src/test/java/org/apache/rocketmq/studio/ops/ai/conversation/AgentRunRegistryTest.java
 create mode 100644 
server/src/test/java/org/apache/rocketmq/studio/ops/ai/conversation/AiConversationControllerTest.java
 create mode 100644 
server/src/test/java/org/apache/rocketmq/studio/ops/ai/conversation/AiConversationPersistenceIntegrationTest.java
 create mode 100644 
server/src/test/java/org/apache/rocketmq/studio/ops/ai/conversation/AiConversationSchemaMigrationTest.java
 create mode 100644 
server/src/test/java/org/apache/rocketmq/studio/ops/ai/conversation/AiConversationServiceTest.java
 create mode 100644 
server/src/test/java/org/apache/rocketmq/studio/ops/ai/conversation/AiConversationVoAssemblerTest.java
 create mode 100644 
server/src/test/java/org/apache/rocketmq/studio/ops/ai/conversation/AiEventSeqAllocationTest.java
 create mode 100644 
server/src/test/java/org/apache/rocketmq/studio/ops/ai/conversation/AiRunExecutorTest.java
 create mode 100644 
server/src/test/java/org/apache/rocketmq/studio/ops/ai/conversation/AiRunServiceTest.java
 create mode 100644 
server/src/test/java/org/apache/rocketmq/studio/ops/ai/conversation/AiRunTestSupport.java
 create mode 100644 
server/src/test/java/org/apache/rocketmq/studio/ops/ai/conversation/AiStreamControllerTest.java
 create mode 100644 
server/src/test/java/org/apache/rocketmq/studio/ops/ai/conversation/AiTimelineRepositoryTest.java
 create mode 100644 
server/src/test/java/org/apache/rocketmq/studio/ops/ai/conversation/agent/InstanceCredentialResolverTest.java
 create mode 100644 
server/src/test/java/org/apache/rocketmq/studio/ops/ai/conversation/agent/RmqctlWorkspaceTest.java
 create mode 100644 
server/src/test/java/org/apache/rocketmq/studio/ops/ai/conversation/event/AgentEventProjectorTest.java
 create mode 100644 
server/src/test/java/org/apache/rocketmq/studio/ops/ai/conversation/event/AiEventCodecs.java
 create mode 100644 
server/src/test/java/org/apache/rocketmq/studio/ops/ai/conversation/event/AiEventContractTest.java
 create mode 100644 
server/src/test/java/org/apache/rocketmq/studio/ops/ai/conversation/event/AiEventJsonSerializationTest.java
 create mode 100644 
server/src/test/java/org/apache/rocketmq/studio/ops/ai/tool/service/ToolInstanceBindingTest.java
 copy .github/ISSUE_TEMPLATE/config.yml => 
server/src/test/resources/ai/agent-notices.txt (51%)
 create mode 100644 server/src/test/resources/ai/ai-event-contract.json
 create mode 100644 
server/src/test/resources/ai/claude-stream-capture-mcp-failed.jsonl
 create mode 100644 server/src/test/resources/ai/claude-stream-capture.jsonl
 create mode 100644 web/licenses/toggle-selection-1.0.6/LICENSE
 copy 
server/src/main/java/org/apache/rocketmq/studio/common/domain/enums/TopicPerm.java
 => web/scripts/licenses.d.mts (89%)
 create mode 100644 web/scripts/licenses.mjs
 create mode 100644 web/scripts/licenses.test.mjs
 create mode 100644 web/src/api/aiConversations.test.ts
 create mode 100644 web/src/api/aiConversations.ts
 create mode 100644 web/src/api/aiEvents.contract.test.ts
 create mode 100644 web/src/api/aiEvents.optionalFields.test.ts
 create mode 100644 web/src/api/aiEvents.ts
 create mode 100644 web/src/assets/model-logos/LICENSE
 create mode 100644 web/src/assets/model-logos/baichuan-color.svg
 create mode 100644 web/src/assets/model-logos/chatglm-color.svg
 create mode 100644 web/src/assets/model-logos/claude-color.svg
 create mode 100644 web/src/assets/model-logos/deepseek-color.svg
 create mode 100644 web/src/assets/model-logos/doubao-color.svg
 create mode 100644 web/src/assets/model-logos/gemini-color.svg
 create mode 100644 web/src/assets/model-logos/grok.svg
 create mode 100644 web/src/assets/model-logos/hunyuan-color.svg
 create mode 100644 web/src/assets/model-logos/kimi-color.svg
 create mode 100644 web/src/assets/model-logos/metaai-color.svg
 create mode 100644 web/src/assets/model-logos/minimax-color.svg
 create mode 100644 web/src/assets/model-logos/mistral-color.svg
 create mode 100644 web/src/assets/model-logos/moonshot.svg
 create mode 100644 web/src/assets/model-logos/ollama.svg
 create mode 100644 web/src/assets/model-logos/openai.svg
 create mode 100644 web/src/assets/model-logos/qwen-color.svg
 create mode 100644 web/src/assets/model-logos/spark-color.svg
 delete mode 100644 web/src/pages/ai/__tests__/AiMessage.test.tsx
 create mode 100644 web/src/pages/ai/components/AssistantBubble.tsx
 create mode 100644 web/src/pages/ai/components/BubbleList.tsx
 create mode 100644 web/src/pages/ai/components/ChatThread.tsx
 create mode 100644 web/src/pages/ai/components/Composer.tsx
 create mode 100644 web/src/pages/ai/components/ConversationListModal.tsx
 create mode 100644 web/src/pages/ai/components/ModelBadge.tsx
 create mode 100644 web/src/pages/ai/components/PromptTemplateModal.tsx
 create mode 100644 web/src/pages/ai/components/RuntimeNotices.tsx
 create mode 100644 web/src/pages/ai/components/SendStopButton.tsx
 create mode 100644 web/src/pages/ai/components/ToolPlaygroundModal.tsx
 create mode 100644 web/src/pages/ai/components/UserBubble.tsx
 create mode 100644 web/src/pages/ai/components/WelcomeStarters.tsx
 create mode 100644 
web/src/pages/ai/components/__tests__/AssistantBubble.test.tsx
 create mode 100644 web/src/pages/ai/components/__tests__/ChatThread.test.tsx
 create mode 100644 web/src/pages/ai/components/__tests__/Composer.test.tsx
 create mode 100644 
web/src/pages/ai/components/__tests__/ConversationListModal.test.tsx
 create mode 100644 
web/src/pages/ai/components/__tests__/SendStopButton.test.tsx
 create mode 100644 web/src/pages/ai/components/__tests__/ToolBlock.test.tsx
 create mode 100644 web/src/pages/ai/components/blocks/ErrorBlock.tsx
 create mode 100644 web/src/pages/ai/components/blocks/NoticeBlock.tsx
 create mode 100644 web/src/pages/ai/components/blocks/TextBlock.tsx
 create mode 100644 web/src/pages/ai/components/blocks/ThinkingBlock.tsx
 create mode 100644 web/src/pages/ai/components/blocks/ToolBlock.tsx
 create mode 100644 web/src/pages/ai/hooks/useActiveRunAttach.test.ts
 create mode 100644 web/src/pages/ai/hooks/useActiveRunAttach.ts
 create mode 100644 web/src/pages/ai/hooks/useAgentCapabilities.ts
 create mode 100644 web/src/pages/ai/hooks/useAgentRun.test.ts
 create mode 100644 web/src/pages/ai/hooks/useAgentRun.ts
 create mode 100644 web/src/pages/ai/hooks/useAiSend.ts
 create mode 100644 web/src/pages/ai/hooks/useComposerDraft.ts
 create mode 100644 web/src/pages/ai/hooks/useConversationList.test.ts
 create mode 100644 web/src/pages/ai/hooks/useConversationList.ts
 create mode 100644 web/src/pages/ai/hooks/useConversationTimeline.test.ts
 create mode 100644 web/src/pages/ai/hooks/useConversationTimeline.ts
 create mode 100644 web/src/pages/ai/hooks/useDraftHandoff.ts
 create mode 100644 web/src/pages/ai/hooks/useLlmRuntime.test.ts
 create mode 100644 web/src/pages/ai/hooks/useLlmRuntime.ts
 create mode 100644 web/src/pages/ai/pageStyle.ts
 create mode 100644 web/src/pages/ai/render/__tests__/streamSpeed.test.ts
 create mode 100644 web/src/pages/ai/render/blocks.ts
 create mode 100644 web/src/pages/ai/render/equivalence.test.ts
 create mode 100644 web/src/pages/ai/render/foldTimeline.ts
 create mode 100644 web/src/pages/ai/render/markdown.ts
 create mode 100644 web/src/pages/ai/render/reduceLive.ts
 create mode 100644 web/src/pages/ai/render/streamSpeed.ts
 create mode 100644 
web/src/pages/instance/__tests__/ConsumerPageDiagnosticsRace.test.tsx
 create mode 100644 
web/src/pages/studio/__tests__/BrokerClusterInstanceScope.test.tsx
 delete mode 100644 web/src/stores/aiChatHistoryStore.test.ts
 delete mode 100644 web/src/stores/aiChatHistoryStore.ts
 create mode 100644 web/src/test/setup.test.ts
 create mode 100644 web/src/utils/consumerConnections.test.ts
 create mode 100644 web/src/utils/consumerConnections.ts

Reply via email to