@vectorx/agent-simulator 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/lib/app.d.ts +1 -1
  2. package/lib/app.js +4 -4
  3. package/lib/config/api.config.d.ts +0 -1
  4. package/lib/config/api.config.js +3 -2
  5. package/lib/config/app.config.d.ts +2 -1
  6. package/lib/config/app.config.js +0 -1
  7. package/lib/config/upload.config.d.ts +0 -1
  8. package/lib/config/upload.config.js +0 -1
  9. package/lib/container/container.d.ts +0 -1
  10. package/lib/container/container.js +4 -2
  11. package/lib/container/identifiers.d.ts +0 -1
  12. package/lib/container/identifiers.js +0 -1
  13. package/lib/container/index.d.ts +0 -1
  14. package/lib/container/index.js +0 -1
  15. package/lib/container/types.d.ts +9 -1
  16. package/lib/container/types.js +0 -1
  17. package/lib/controllers/agent.controller.d.ts +6 -3
  18. package/lib/controllers/agent.controller.js +17 -3
  19. package/lib/controllers/auth.controller.d.ts +4 -5
  20. package/lib/controllers/auth.controller.js +3 -4
  21. package/lib/controllers/simulator.controller.d.ts +2 -3
  22. package/lib/controllers/simulator.controller.js +1 -2
  23. package/lib/controllers/upload.controller.d.ts +1 -2
  24. package/lib/controllers/upload.controller.js +5 -2
  25. package/lib/index.d.ts +1 -2
  26. package/lib/index.js +0 -1
  27. package/lib/middleware/cors.middleware.d.ts +0 -1
  28. package/lib/middleware/cors.middleware.js +0 -1
  29. package/lib/middleware/error.middleware.d.ts +3 -4
  30. package/lib/middleware/error.middleware.js +2 -3
  31. package/lib/middleware/proxy.middleware.d.ts +1 -2
  32. package/lib/middleware/proxy.middleware.js +0 -1
  33. package/lib/middleware/upload.middleware.d.ts +0 -1
  34. package/lib/middleware/upload.middleware.js +0 -1
  35. package/lib/routes/agent.d.ts +0 -1
  36. package/lib/routes/agent.js +2 -1
  37. package/lib/routes/auth.d.ts +0 -1
  38. package/lib/routes/auth.js +0 -1
  39. package/lib/routes/index.d.ts +0 -1
  40. package/lib/routes/index.js +0 -1
  41. package/lib/routes/simulator.d.ts +0 -1
  42. package/lib/routes/simulator.js +0 -1
  43. package/lib/routes/upload.d.ts +0 -1
  44. package/lib/routes/upload.js +0 -1
  45. package/lib/services/agent.service.d.ts +15 -2
  46. package/lib/services/agent.service.js +34 -8
  47. package/lib/services/auth.service.d.ts +1 -2
  48. package/lib/services/auth.service.js +5 -6
  49. package/lib/services/simulator.service.d.ts +0 -1
  50. package/lib/services/simulator.service.js +0 -1
  51. package/lib/services/upload.service.d.ts +0 -1
  52. package/lib/services/upload.service.js +0 -1
  53. package/lib/simulator.d.ts +11 -1
  54. package/lib/simulator.js +90 -6
  55. package/lib/utils/env-helper.d.ts +0 -1
  56. package/lib/utils/env-helper.js +0 -1
  57. package/lib/utils/logger.d.ts +0 -1
  58. package/lib/utils/logger.js +0 -1
  59. package/lib/utils/request.d.ts +0 -1
  60. package/lib/utils/request.js +6 -2
  61. package/lib/utils/url-parser.d.ts +0 -1
  62. package/lib/utils/url-parser.js +1 -2
  63. package/lib/utils.d.ts +0 -1
  64. package/lib/utils.js +0 -1
  65. package/lib/webview-ui/Agent.d.ts +0 -1
  66. package/lib/webview-ui/Agent.js +0 -1
  67. package/lib/webview-ui/App.d.ts +0 -1
  68. package/lib/webview-ui/App.js +176 -34
  69. package/lib/webview-ui/ErrorBoundary.d.ts +0 -1
  70. package/lib/webview-ui/ErrorBoundary.js +0 -1
  71. package/lib/webview-ui/components/AsyncTaskBlock.d.ts +1 -2
  72. package/lib/webview-ui/components/AsyncTaskBlock.js +16 -5
  73. package/lib/webview-ui/components/AuthIndicator.d.ts +1 -2
  74. package/lib/webview-ui/components/AuthIndicator.js +0 -1
  75. package/lib/webview-ui/components/ErrorCard.d.ts +1 -2
  76. package/lib/webview-ui/components/ErrorCard.js +7 -5
  77. package/lib/webview-ui/components/KnowledgeBaseSearchBlock.d.ts +1 -2
  78. package/lib/webview-ui/components/KnowledgeBaseSearchBlock.js +4 -3
  79. package/lib/webview-ui/components/KnowledgeBaseSearchResult.d.ts +1 -2
  80. package/lib/webview-ui/components/KnowledgeBaseSearchResult.js +1 -2
  81. package/lib/webview-ui/components/MarkdownRenderer.d.ts +1 -2
  82. package/lib/webview-ui/components/MarkdownRenderer.js +3 -8
  83. package/lib/webview-ui/components/MessageRenderer.d.ts +1 -2
  84. package/lib/webview-ui/components/MessageRenderer.js +48 -5
  85. package/lib/webview-ui/components/MultimodalFileRenderer.d.ts +2 -2
  86. package/lib/webview-ui/components/MultimodalFileRenderer.js +97 -40
  87. package/lib/webview-ui/components/ThinkingBlock.d.ts +2 -3
  88. package/lib/webview-ui/components/ThinkingBlock.js +0 -1
  89. package/lib/webview-ui/components/ToolUseBlock.d.ts +1 -2
  90. package/lib/webview-ui/components/ToolUseBlock.js +1 -2
  91. package/lib/webview-ui/components/ToolUseBlockHeader.d.ts +1 -2
  92. package/lib/webview-ui/components/ToolUseBlockHeader.js +1 -2
  93. package/lib/webview-ui/components/UploadPreview.d.ts +1 -2
  94. package/lib/webview-ui/components/UploadPreview.js +0 -1
  95. package/lib/webview-ui/components/WelcomeModule.d.ts +0 -1
  96. package/lib/webview-ui/components/WelcomeModule.js +46 -16
  97. package/lib/webview-ui/components/index.d.ts +0 -1
  98. package/lib/webview-ui/components/index.js +0 -1
  99. package/lib/webview-ui/config/cos-config.d.ts +0 -1
  100. package/lib/webview-ui/config/cos-config.js +0 -1
  101. package/lib/webview-ui/config/http-config.d.ts +0 -1
  102. package/lib/webview-ui/config/http-config.js +0 -1
  103. package/lib/webview-ui/constants.d.ts +0 -1
  104. package/lib/webview-ui/constants.js +0 -1
  105. package/lib/webview-ui/contexts/AgentContext.d.ts +1 -2
  106. package/lib/webview-ui/contexts/AgentContext.js +0 -1
  107. package/lib/webview-ui/contexts/AuthContext.d.ts +2 -2
  108. package/lib/webview-ui/contexts/AuthContext.js +0 -1
  109. package/lib/webview-ui/contexts/ThemeContext.d.ts +2 -2
  110. package/lib/webview-ui/contexts/ThemeContext.js +0 -1
  111. package/lib/webview-ui/hooks/useAgentStatus.d.ts +4 -2
  112. package/lib/webview-ui/hooks/useAgentStatus.js +31 -5
  113. package/lib/webview-ui/hooks/useUploader.d.ts +0 -1
  114. package/lib/webview-ui/hooks/useUploader.js +5 -2
  115. package/lib/webview-ui/hooks/useUserAvatar.d.ts +0 -1
  116. package/lib/webview-ui/hooks/useUserAvatar.js +0 -1
  117. package/lib/webview-ui/index.d.ts +1 -1
  118. package/lib/webview-ui/index.js +1 -1
  119. package/lib/webview-ui/services/agent-service.d.ts +14 -1
  120. package/lib/webview-ui/services/agent-service.js +7 -1
  121. package/lib/webview-ui/services/index.d.ts +0 -1
  122. package/lib/webview-ui/services/index.js +0 -1
  123. package/lib/webview-ui/services/logger-service.d.ts +0 -1
  124. package/lib/webview-ui/services/logger-service.js +0 -1
  125. package/lib/webview-ui/styles/copilot.d.ts +0 -1
  126. package/lib/webview-ui/styles/copilot.js +80 -22
  127. package/lib/webview-ui/styles/workarea.d.ts +0 -1
  128. package/lib/webview-ui/styles/workarea.js +7 -2
  129. package/lib/webview-ui/types.d.ts +11 -2
  130. package/lib/webview-ui/types.js +0 -1
  131. package/lib/webview-ui/utils/cos.d.ts +0 -1
  132. package/lib/webview-ui/utils/cos.js +4 -3
  133. package/lib/webview-ui/utils/env-helper.d.ts +6 -1
  134. package/lib/webview-ui/utils/env-helper.js +16 -2
  135. package/lib/webview-ui/utils/http-client.d.ts +1 -2
  136. package/lib/webview-ui/utils/http-client.js +0 -1
  137. package/lib/webview-ui/utils/markdownHighlight.d.ts +3 -0
  138. package/lib/webview-ui/utils/markdownHighlight.js +75 -0
  139. package/lib/webview-ui/utils/stream-text-handler.d.ts +0 -1
  140. package/lib/webview-ui/utils/stream-text-handler.js +6 -3
  141. package/lib/webview-ui/utils/upload.d.ts +0 -1
  142. package/lib/webview-ui/utils/upload.js +5 -2
  143. package/lib/webview-ui/widgets/BubbleComponents.d.ts +1 -2
  144. package/lib/webview-ui/widgets/BubbleComponents.js +1 -2
  145. package/lib/webview-ui/widgets/ChatInput.d.ts +1 -2
  146. package/lib/webview-ui/widgets/ChatInput.js +63 -90
  147. package/lib/webview-ui/widgets/LogPanel.d.ts +2 -3
  148. package/lib/webview-ui/widgets/LogPanel.js +5 -2
  149. package/lib/webview-ui/widgets/SystemLogs.d.ts +1 -2
  150. package/lib/webview-ui/widgets/SystemLogs.js +26 -9
  151. package/lib/webview-ui/widgets/ToolBar.d.ts +4 -3
  152. package/lib/webview-ui/widgets/ToolBar.js +6 -4
  153. package/lib/webview-ui/widgets/WebSocketDebugger.d.ts +6 -0
  154. package/lib/webview-ui/widgets/WebSocketDebugger.js +226 -0
  155. package/lib/webview-ui/widgets/index.d.ts +0 -1
  156. package/lib/webview-ui/widgets/index.js +0 -1
  157. package/package.json +9 -7
  158. package/public/assets/main.js +193 -166
  159. package/public/assets/style.css +1 -1
  160. package/lib/app.d.ts.map +0 -1
  161. package/lib/app.js.map +0 -1
  162. package/lib/config/api.config.d.ts.map +0 -1
  163. package/lib/config/api.config.js.map +0 -1
  164. package/lib/config/app.config.d.ts.map +0 -1
  165. package/lib/config/app.config.js.map +0 -1
  166. package/lib/config/upload.config.d.ts.map +0 -1
  167. package/lib/config/upload.config.js.map +0 -1
  168. package/lib/container/container.d.ts.map +0 -1
  169. package/lib/container/container.js.map +0 -1
  170. package/lib/container/identifiers.d.ts.map +0 -1
  171. package/lib/container/identifiers.js.map +0 -1
  172. package/lib/container/index.d.ts.map +0 -1
  173. package/lib/container/index.js.map +0 -1
  174. package/lib/container/types.d.ts.map +0 -1
  175. package/lib/container/types.js.map +0 -1
  176. package/lib/controllers/agent.controller.d.ts.map +0 -1
  177. package/lib/controllers/agent.controller.js.map +0 -1
  178. package/lib/controllers/auth.controller.d.ts.map +0 -1
  179. package/lib/controllers/auth.controller.js.map +0 -1
  180. package/lib/controllers/simulator.controller.d.ts.map +0 -1
  181. package/lib/controllers/simulator.controller.js.map +0 -1
  182. package/lib/controllers/upload.controller.d.ts.map +0 -1
  183. package/lib/controllers/upload.controller.js.map +0 -1
  184. package/lib/index.d.ts.map +0 -1
  185. package/lib/index.js.map +0 -1
  186. package/lib/middleware/cors.middleware.d.ts.map +0 -1
  187. package/lib/middleware/cors.middleware.js.map +0 -1
  188. package/lib/middleware/error.middleware.d.ts.map +0 -1
  189. package/lib/middleware/error.middleware.js.map +0 -1
  190. package/lib/middleware/proxy.middleware.d.ts.map +0 -1
  191. package/lib/middleware/proxy.middleware.js.map +0 -1
  192. package/lib/middleware/upload.middleware.d.ts.map +0 -1
  193. package/lib/middleware/upload.middleware.js.map +0 -1
  194. package/lib/routes/agent.d.ts.map +0 -1
  195. package/lib/routes/agent.js.map +0 -1
  196. package/lib/routes/auth.d.ts.map +0 -1
  197. package/lib/routes/auth.js.map +0 -1
  198. package/lib/routes/index.d.ts.map +0 -1
  199. package/lib/routes/index.js.map +0 -1
  200. package/lib/routes/simulator.d.ts.map +0 -1
  201. package/lib/routes/simulator.js.map +0 -1
  202. package/lib/routes/upload.d.ts.map +0 -1
  203. package/lib/routes/upload.js.map +0 -1
  204. package/lib/services/agent.service.d.ts.map +0 -1
  205. package/lib/services/agent.service.js.map +0 -1
  206. package/lib/services/auth.service.d.ts.map +0 -1
  207. package/lib/services/auth.service.js.map +0 -1
  208. package/lib/services/simulator.service.d.ts.map +0 -1
  209. package/lib/services/simulator.service.js.map +0 -1
  210. package/lib/services/upload.service.d.ts.map +0 -1
  211. package/lib/services/upload.service.js.map +0 -1
  212. package/lib/simulator.d.ts.map +0 -1
  213. package/lib/simulator.js.map +0 -1
  214. package/lib/utils/env-helper.d.ts.map +0 -1
  215. package/lib/utils/env-helper.js.map +0 -1
  216. package/lib/utils/logger.d.ts.map +0 -1
  217. package/lib/utils/logger.js.map +0 -1
  218. package/lib/utils/request.d.ts.map +0 -1
  219. package/lib/utils/request.js.map +0 -1
  220. package/lib/utils/url-parser.d.ts.map +0 -1
  221. package/lib/utils/url-parser.js.map +0 -1
  222. package/lib/utils.d.ts.map +0 -1
  223. package/lib/utils.js.map +0 -1
  224. package/lib/webview-ui/Agent.d.ts.map +0 -1
  225. package/lib/webview-ui/Agent.js.map +0 -1
  226. package/lib/webview-ui/App.d.ts.map +0 -1
  227. package/lib/webview-ui/App.js.map +0 -1
  228. package/lib/webview-ui/ErrorBoundary.d.ts.map +0 -1
  229. package/lib/webview-ui/ErrorBoundary.js.map +0 -1
  230. package/lib/webview-ui/components/AsyncTaskBlock.d.ts.map +0 -1
  231. package/lib/webview-ui/components/AsyncTaskBlock.js.map +0 -1
  232. package/lib/webview-ui/components/AuthIndicator.d.ts.map +0 -1
  233. package/lib/webview-ui/components/AuthIndicator.js.map +0 -1
  234. package/lib/webview-ui/components/ErrorCard.d.ts.map +0 -1
  235. package/lib/webview-ui/components/ErrorCard.js.map +0 -1
  236. package/lib/webview-ui/components/KnowledgeBaseSearchBlock.d.ts.map +0 -1
  237. package/lib/webview-ui/components/KnowledgeBaseSearchBlock.js.map +0 -1
  238. package/lib/webview-ui/components/KnowledgeBaseSearchResult.d.ts.map +0 -1
  239. package/lib/webview-ui/components/KnowledgeBaseSearchResult.js.map +0 -1
  240. package/lib/webview-ui/components/MarkdownRenderer.d.ts.map +0 -1
  241. package/lib/webview-ui/components/MarkdownRenderer.js.map +0 -1
  242. package/lib/webview-ui/components/MessageRenderer.d.ts.map +0 -1
  243. package/lib/webview-ui/components/MessageRenderer.js.map +0 -1
  244. package/lib/webview-ui/components/MultimodalFileRenderer.d.ts.map +0 -1
  245. package/lib/webview-ui/components/MultimodalFileRenderer.js.map +0 -1
  246. package/lib/webview-ui/components/ThinkingBlock.d.ts.map +0 -1
  247. package/lib/webview-ui/components/ThinkingBlock.js.map +0 -1
  248. package/lib/webview-ui/components/ToolUseBlock.d.ts.map +0 -1
  249. package/lib/webview-ui/components/ToolUseBlock.js.map +0 -1
  250. package/lib/webview-ui/components/ToolUseBlockHeader.d.ts.map +0 -1
  251. package/lib/webview-ui/components/ToolUseBlockHeader.js.map +0 -1
  252. package/lib/webview-ui/components/UploadPreview.d.ts.map +0 -1
  253. package/lib/webview-ui/components/UploadPreview.js.map +0 -1
  254. package/lib/webview-ui/components/WelcomeModule.d.ts.map +0 -1
  255. package/lib/webview-ui/components/WelcomeModule.js.map +0 -1
  256. package/lib/webview-ui/components/index.d.ts.map +0 -1
  257. package/lib/webview-ui/components/index.js.map +0 -1
  258. package/lib/webview-ui/config/cos-config.d.ts.map +0 -1
  259. package/lib/webview-ui/config/cos-config.js.map +0 -1
  260. package/lib/webview-ui/config/http-config.d.ts.map +0 -1
  261. package/lib/webview-ui/config/http-config.js.map +0 -1
  262. package/lib/webview-ui/constants.d.ts.map +0 -1
  263. package/lib/webview-ui/constants.js.map +0 -1
  264. package/lib/webview-ui/contexts/AgentContext.d.ts.map +0 -1
  265. package/lib/webview-ui/contexts/AgentContext.js.map +0 -1
  266. package/lib/webview-ui/contexts/AuthContext.d.ts.map +0 -1
  267. package/lib/webview-ui/contexts/AuthContext.js.map +0 -1
  268. package/lib/webview-ui/contexts/ThemeContext.d.ts.map +0 -1
  269. package/lib/webview-ui/contexts/ThemeContext.js.map +0 -1
  270. package/lib/webview-ui/hooks/useAgentStatus.d.ts.map +0 -1
  271. package/lib/webview-ui/hooks/useAgentStatus.js.map +0 -1
  272. package/lib/webview-ui/hooks/useUploader.d.ts.map +0 -1
  273. package/lib/webview-ui/hooks/useUploader.js.map +0 -1
  274. package/lib/webview-ui/hooks/useUserAvatar.d.ts.map +0 -1
  275. package/lib/webview-ui/hooks/useUserAvatar.js.map +0 -1
  276. package/lib/webview-ui/index.d.ts.map +0 -1
  277. package/lib/webview-ui/index.js.map +0 -1
  278. package/lib/webview-ui/services/agent-service.d.ts.map +0 -1
  279. package/lib/webview-ui/services/agent-service.js.map +0 -1
  280. package/lib/webview-ui/services/index.d.ts.map +0 -1
  281. package/lib/webview-ui/services/index.js.map +0 -1
  282. package/lib/webview-ui/services/logger-service.d.ts.map +0 -1
  283. package/lib/webview-ui/services/logger-service.js.map +0 -1
  284. package/lib/webview-ui/styles/copilot.d.ts.map +0 -1
  285. package/lib/webview-ui/styles/copilot.js.map +0 -1
  286. package/lib/webview-ui/styles/workarea.d.ts.map +0 -1
  287. package/lib/webview-ui/styles/workarea.js.map +0 -1
  288. package/lib/webview-ui/types.d.ts.map +0 -1
  289. package/lib/webview-ui/types.js.map +0 -1
  290. package/lib/webview-ui/utils/cos.d.ts.map +0 -1
  291. package/lib/webview-ui/utils/cos.js.map +0 -1
  292. package/lib/webview-ui/utils/env-helper.d.ts.map +0 -1
  293. package/lib/webview-ui/utils/env-helper.js.map +0 -1
  294. package/lib/webview-ui/utils/http-client.d.ts.map +0 -1
  295. package/lib/webview-ui/utils/http-client.js.map +0 -1
  296. package/lib/webview-ui/utils/stream-text-handler.d.ts.map +0 -1
  297. package/lib/webview-ui/utils/stream-text-handler.js.map +0 -1
  298. package/lib/webview-ui/utils/upload.d.ts.map +0 -1
  299. package/lib/webview-ui/utils/upload.js.map +0 -1
  300. package/lib/webview-ui/widgets/BubbleComponents.d.ts.map +0 -1
  301. package/lib/webview-ui/widgets/BubbleComponents.js.map +0 -1
  302. package/lib/webview-ui/widgets/ChatInput.d.ts.map +0 -1
  303. package/lib/webview-ui/widgets/ChatInput.js.map +0 -1
  304. package/lib/webview-ui/widgets/LogPanel.d.ts.map +0 -1
  305. package/lib/webview-ui/widgets/LogPanel.js.map +0 -1
  306. package/lib/webview-ui/widgets/SystemLogs.d.ts.map +0 -1
  307. package/lib/webview-ui/widgets/SystemLogs.js.map +0 -1
  308. package/lib/webview-ui/widgets/ToolBar.d.ts.map +0 -1
  309. package/lib/webview-ui/widgets/ToolBar.js.map +0 -1
  310. package/lib/webview-ui/widgets/index.d.ts.map +0 -1
  311. package/lib/webview-ui/widgets/index.js.map +0 -1
@@ -16,6 +16,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
16
16
  };
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.AgentService = void 0;
19
+ const endpoints_1 = require("@vectorx/endpoints");
19
20
  const form_data_1 = __importDefault(require("form-data"));
20
21
  const inversify_1 = require("inversify");
21
22
  const node_fetch_1 = __importDefault(require("node-fetch"));
@@ -24,23 +25,30 @@ const url_parser_1 = require("../utils/url-parser");
24
25
  let AgentService = class AgentService {
25
26
  constructor(context) {
26
27
  this.parsedServerUrl = (0, url_parser_1.parseAgentServerUrl)(context.agentServerUrl);
28
+ this.agentId = context.agentId;
27
29
  }
28
30
  /**
29
- * 获取Agent信息
31
+ * 获取 Agent 信息。
32
+ * 直接请求 agentbase `/agent/info`,不经过开发者 Agent Server(rcb-ff),
33
+ * 避免开发者代码异常导致获取失败。
30
34
  */
31
35
  async getAgentInfo() {
32
- const healthUrl = `${this.parsedServerUrl.fullUrl}/info`;
33
- const response = await (0, node_fetch_1.default)(healthUrl);
36
+ const agentInfoUrl = `${(0, endpoints_1.getAgentbaseBaseUrl)()}/agent/info`;
37
+ const response = await (0, node_fetch_1.default)(agentInfoUrl, {
38
+ headers: {
39
+ ...(this.agentId ? { "agent-id": this.agentId } : {}),
40
+ },
41
+ });
34
42
  if (!response.ok) {
35
- throw new Error(`无法连接到后端服务: ${response.status} ${response.statusText}`);
43
+ throw new Error(`agentbase 响应异常: ${response.status} ${response.statusText}`);
36
44
  }
37
45
  const resData = await response.json();
38
46
  if (resData.code !== 0) {
39
- throw new Error(`后端服务返回错误: ${resData.message || "未知错误"}`);
47
+ throw new Error(`agentbase 返回错误: ${resData.message || "未知错误"}`);
40
48
  }
41
49
  const { agent_info } = resData.data;
42
50
  if (!agent_info) {
43
- throw new Error("后端服务返回的数据中缺少 agent_info 字段");
51
+ throw new Error("agentbase 返回数据异常:缺少 agent_info 字段");
44
52
  }
45
53
  return this.transformToAgentSimulatorInfo(agent_info);
46
54
  }
@@ -53,7 +61,10 @@ let AgentService = class AgentService {
53
61
  const healthUrl = `${this.parsedServerUrl.fullUrl}/health`;
54
62
  const response = await (0, node_fetch_1.default)(healthUrl);
55
63
  if (response.ok) {
56
- const healthData = await response.json();
64
+ const contentType = response.headers.get("content-type");
65
+ const healthData = contentType?.includes("application/json") && response.status !== 204
66
+ ? await response.json()
67
+ : null;
57
68
  return {
58
69
  status: "normal",
59
70
  health: healthData,
@@ -94,6 +105,22 @@ let AgentService = class AgentService {
94
105
  };
95
106
  }
96
107
  }
108
+ /**
109
+ * 获取函数能力元数据(用于检测函数是否支持 WebSocket 等特性)
110
+ */
111
+ async getFunctionMeta() {
112
+ try {
113
+ const metaUrl = `${this.parsedServerUrl.baseUrl}/@meta`;
114
+ const response = await (0, node_fetch_1.default)(metaUrl);
115
+ if (!response.ok) {
116
+ return { functions: [] };
117
+ }
118
+ return (await response.json());
119
+ }
120
+ catch {
121
+ return { functions: [] };
122
+ }
123
+ }
97
124
  /**
98
125
  * 上传文件到云函数
99
126
  * 使用 multipart/form-data 格式传输,对齐 OpenAI 文件上传标准
@@ -144,4 +171,3 @@ exports.AgentService = AgentService = __decorate([
144
171
  __param(0, (0, inversify_1.inject)(container_1.APP_CONTEXT)),
145
172
  __metadata("design:paramtypes", [Object])
146
173
  ], AgentService);
147
- //# sourceMappingURL=agent.service.js.map
@@ -46,10 +46,9 @@ export declare class AuthService implements IAuthService {
46
46
  /**
47
47
  * 检查登录状态(调用下游服务)
48
48
  */
49
- check(params: {
49
+ check(_params: {
50
50
  secret_id: string;
51
51
  nonce: string;
52
52
  cli_token: string;
53
53
  }): Promise<any>;
54
54
  }
55
- //# sourceMappingURL=auth.service.d.ts.map
@@ -43,9 +43,9 @@ var __metadata = (this && this.__metadata) || function (k, v) {
43
43
  };
44
44
  Object.defineProperty(exports, "__esModule", { value: true });
45
45
  exports.AuthService = void 0;
46
- const fs = __importStar(require("fs"));
47
- const os = __importStar(require("os"));
48
- const path = __importStar(require("path"));
46
+ const fs = __importStar(require("node:fs"));
47
+ const os = __importStar(require("node:os"));
48
+ const path = __importStar(require("node:path"));
49
49
  const inversify_1 = require("inversify");
50
50
  const env_helper_1 = require("../utils/env-helper");
51
51
  /**
@@ -88,7 +88,7 @@ let AuthService = class AuthService {
88
88
  }
89
89
  return loginInfo;
90
90
  }
91
- catch (error) {
91
+ catch (_error) {
92
92
  return null;
93
93
  }
94
94
  }
@@ -124,7 +124,7 @@ let AuthService = class AuthService {
124
124
  /**
125
125
  * 检查登录状态(调用下游服务)
126
126
  */
127
- async check(params) {
127
+ async check(_params) {
128
128
  // 这里可以调用下游服务进行验证
129
129
  // 暂时返回模拟数据
130
130
  return {
@@ -138,4 +138,3 @@ exports.AuthService = AuthService = __decorate([
138
138
  (0, inversify_1.injectable)(),
139
139
  __metadata("design:paramtypes", [])
140
140
  ], AuthService);
141
- //# sourceMappingURL=auth.service.js.map
@@ -20,4 +20,3 @@ export declare class SimulatorService implements ISimulatorService {
20
20
  */
21
21
  updateAgentStatus(status: "normal" | "stopped" | "error"): void;
22
22
  }
23
- //# sourceMappingURL=simulator.service.d.ts.map
@@ -46,4 +46,3 @@ exports.SimulatorService = SimulatorService = __decorate([
46
46
  __param(0, (0, inversify_1.inject)(container_1.APP_CONTEXT)),
47
47
  __metadata("design:paramtypes", [Object])
48
48
  ], SimulatorService);
49
- //# sourceMappingURL=simulator.service.js.map
@@ -50,4 +50,3 @@ export declare class UploadService implements IUploadService {
50
50
  scene: string;
51
51
  }): Promise<TokenResponse>;
52
52
  }
53
- //# sourceMappingURL=upload.service.d.ts.map
@@ -122,4 +122,3 @@ exports.UploadService = UploadService = __decorate([
122
122
  __param(0, (0, inversify_1.inject)(identifiers_1.SERVICE_IDENTIFIERS.AuthService)),
123
123
  __metadata("design:paramtypes", [Object])
124
124
  ], UploadService);
125
- //# sourceMappingURL=upload.service.js.map
@@ -2,6 +2,10 @@ export interface SimulatorOptions {
2
2
  port: number;
3
3
  agentServerUrl: string;
4
4
  open?: boolean;
5
+ /** 静默模式:不输出启动日志(用于 useIde 等场景由调用方统一输出) */
6
+ quiet?: boolean;
7
+ /** Agent ID(来自 project.config.json),用于直接向 agentbase 查询 Agent 信息 */
8
+ agentId?: string;
5
9
  }
6
10
  /**
7
11
  * Agent模拟器实现
@@ -19,9 +23,15 @@ export declare class AgentSimulator {
19
23
  * 配置并启动模拟器
20
24
  */
21
25
  start(): Promise<void>;
26
+ /**
27
+ * 设置 WebSocket 代理:将 /ws-proxy/* 请求透传到 rcb-ff
28
+ *
29
+ * 实现策略:先完成浏览器侧握手,再连接上游 rcb-ff。
30
+ * 上游连接成功前,客户端消息暂存在队列中,连接就绪后逐条发出。
31
+ */
32
+ private setupWebSocketProxy;
22
33
  /**
23
34
  * 停止模拟器
24
35
  */
25
36
  stop(): Promise<void>;
26
37
  }
27
- //# sourceMappingURL=simulator.d.ts.map
package/lib/simulator.js CHANGED
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AgentSimulator = void 0;
4
+ const ws_1 = require("ws");
4
5
  const app_1 = require("./app");
5
6
  const logger_1 = require("./utils/logger");
7
+ const url_parser_1 = require("./utils/url-parser");
6
8
  /**
7
9
  * Agent模拟器实现
8
10
  */
@@ -21,6 +23,7 @@ class AgentSimulator {
21
23
  port: options.port,
22
24
  agentServerUrl: options.agentServerUrl,
23
25
  open: options.open,
26
+ agentId: options.agentId,
24
27
  });
25
28
  }
26
29
  /**
@@ -32,7 +35,9 @@ class AgentSimulator {
32
35
  // 启动服务器
33
36
  return new Promise((resolve) => {
34
37
  this.server = expressApp.listen(config.port, () => {
35
- logger_1.Logger.success(`
38
+ this.setupWebSocketProxy();
39
+ if (!this.options.quiet) {
40
+ logger_1.Logger.success(`
36
41
  ┌────────────────────────────────────────────────────┐
37
42
  │ │
38
43
  │ 🚀 Agent模拟器已启动! │
@@ -41,15 +46,95 @@ class AgentSimulator {
41
46
  │ 🔄 Agent服务: ${config.agentServerUrl} │
42
47
  │ │
43
48
  └────────────────────────────────────────────────────┘
44
- `);
45
- // 自动打开浏览器提示
46
- if (config.open) {
47
- logger_1.Logger.warning(`请手动在浏览器中打开: ${logger_1.Logger.info(`http://localhost:${config.port}`)}`);
49
+ `);
50
+ // 自动打开浏览器提示
51
+ if (config.open) {
52
+ logger_1.Logger.warning(`请手动在浏览器中打开: ${logger_1.Logger.info(`http://localhost:${config.port}`)}`);
53
+ }
48
54
  }
49
55
  resolve();
50
56
  });
51
57
  });
52
58
  }
59
+ /**
60
+ * 设置 WebSocket 代理:将 /ws-proxy/* 请求透传到 rcb-ff
61
+ *
62
+ * 实现策略:先完成浏览器侧握手,再连接上游 rcb-ff。
63
+ * 上游连接成功前,客户端消息暂存在队列中,连接就绪后逐条发出。
64
+ */
65
+ setupWebSocketProxy() {
66
+ if (!this.server)
67
+ return;
68
+ const parsed = (0, url_parser_1.parseAgentServerUrl)(this.options.agentServerUrl);
69
+ const rcbWsBase = `ws://${parsed.hostname}:${parsed.port}`;
70
+ const proxyWss = new ws_1.WebSocketServer({ noServer: true });
71
+ this.server.on("upgrade", (req, socket, head) => {
72
+ if (!req.url?.startsWith("/ws-proxy/"))
73
+ return;
74
+ const targetPath = req.url.replace("/ws-proxy", "");
75
+ const targetUrl = `${rcbWsBase}${targetPath}`;
76
+ proxyWss.handleUpgrade(req, socket, head, (clientWs) => {
77
+ const pendingMessages = [];
78
+ let upstreamReady = false;
79
+ const upstream = new ws_1.WebSocket(targetUrl, {
80
+ headers: { origin: req.headers.origin || "" },
81
+ });
82
+ upstream.on("open", () => {
83
+ upstreamReady = true;
84
+ console.log(`[ws-proxy] upstream connected to ${targetUrl}`);
85
+ for (const msg of pendingMessages) {
86
+ upstream.send(msg.data, { binary: msg.isBinary });
87
+ }
88
+ pendingMessages.length = 0;
89
+ });
90
+ upstream.on("message", (data, isBinary) => {
91
+ console.log(`[ws-proxy] upstream->client: ${String(Buffer.isBuffer(data) ? data.toString() : data).slice(0, 100)}`);
92
+ if (clientWs.readyState === ws_1.WebSocket.OPEN) {
93
+ clientWs.send(data, { binary: isBinary });
94
+ }
95
+ });
96
+ clientWs.on("message", (data, isBinary) => {
97
+ console.log(`[ws-proxy] client->upstream: ready=${upstreamReady} state=${upstream.readyState} data=${String(Buffer.isBuffer(data) ? data.toString() : data).slice(0, 100)}`);
98
+ if (upstreamReady && upstream.readyState === ws_1.WebSocket.OPEN) {
99
+ upstream.send(data, { binary: isBinary });
100
+ }
101
+ else {
102
+ pendingMessages.push({ data, isBinary });
103
+ }
104
+ });
105
+ const safeClose = (ws, code, reason) => {
106
+ try {
107
+ if (ws.readyState === ws_1.WebSocket.OPEN) {
108
+ const safeCode = code && code >= 1000 && code <= 4999 ? code : 1000;
109
+ ws.close(safeCode, reason || "");
110
+ }
111
+ }
112
+ catch {
113
+ try {
114
+ ws.terminate();
115
+ }
116
+ catch {
117
+ /* ignore */
118
+ }
119
+ }
120
+ };
121
+ upstream.on("close", (code, reason) => {
122
+ safeClose(clientWs, code, reason?.toString());
123
+ });
124
+ clientWs.on("close", (code, reason) => {
125
+ safeClose(upstream, code, reason?.toString());
126
+ });
127
+ upstream.on("error", (err) => {
128
+ console.error(`[ws-proxy] upstream error:`, err?.message || err);
129
+ safeClose(clientWs, 1011, "upstream error");
130
+ });
131
+ clientWs.on("error", (err) => {
132
+ console.error(`[ws-proxy] client error:`, err?.message || err);
133
+ safeClose(upstream, 1011, "client error");
134
+ });
135
+ });
136
+ });
137
+ }
53
138
  /**
54
139
  * 停止模拟器
55
140
  */
@@ -76,4 +161,3 @@ class AgentSimulator {
76
161
  }
77
162
  }
78
163
  exports.AgentSimulator = AgentSimulator;
79
- //# sourceMappingURL=simulator.js.map
@@ -3,4 +3,3 @@
3
3
  * 判断当前是否运行在 IDE 环境中
4
4
  */
5
5
  export declare const isIDE: boolean;
6
- //# sourceMappingURL=env-helper.d.ts.map
@@ -6,4 +6,3 @@ exports.isIDE = void 0;
6
6
  * 判断当前是否运行在 IDE 环境中
7
7
  */
8
8
  exports.isIDE = process.env.FROM_SOURCE === "IDE";
9
- //# sourceMappingURL=env-helper.js.map
@@ -5,4 +5,3 @@ export declare class Logger {
5
5
  static error(message: string, error?: any): void;
6
6
  static debug(message: string, data?: any): void;
7
7
  }
8
- //# sourceMappingURL=logger.d.ts.map
@@ -25,4 +25,3 @@ class Logger {
25
25
  }
26
26
  }
27
27
  exports.Logger = Logger;
28
- //# sourceMappingURL=logger.js.map
@@ -8,4 +8,3 @@ export declare const request: {
8
8
  url: string;
9
9
  } & FetchOptions): Promise<any>;
10
10
  };
11
- //# sourceMappingURL=request.d.ts.map
@@ -28,9 +28,13 @@ exports.request = {
28
28
  body = JSON.stringify(data);
29
29
  }
30
30
  }
31
- const res = await (0, node_fetch_1.default)(finalUrl, { method, headers: finalHeaders, body: body, timeout: 1000 * 20 });
31
+ const res = await (0, node_fetch_1.default)(finalUrl, {
32
+ method,
33
+ headers: finalHeaders,
34
+ body: body,
35
+ timeout: 1000 * 20,
36
+ });
32
37
  const json = await res.json().catch(() => ({}));
33
38
  return { status: res.status, ok: res.ok, data: json };
34
39
  },
35
40
  };
36
- //# sourceMappingURL=request.js.map
@@ -11,4 +11,3 @@ export declare function parseAgentServerUrl(url: string): {
11
11
  baseUrl: string;
12
12
  fullUrl: string;
13
13
  };
14
- //# sourceMappingURL=url-parser.d.ts.map
@@ -18,8 +18,7 @@ function parseAgentServerUrl(url) {
18
18
  fullUrl: url,
19
19
  };
20
20
  }
21
- catch (error) {
21
+ catch (_error) {
22
22
  throw new Error(`无效的 Agent Server URL: ${url}`);
23
23
  }
24
24
  }
25
- //# sourceMappingURL=url-parser.js.map
package/lib/utils.d.ts CHANGED
@@ -3,4 +3,3 @@
3
3
  * @returns 唯一ID字符串
4
4
  */
5
5
  export declare const generateId: () => string;
6
- //# sourceMappingURL=utils.d.ts.map
package/lib/utils.js CHANGED
@@ -9,4 +9,3 @@ const generateId = () => {
9
9
  return Date.now() + "-" + Math.random().toString(36).substr(2, 9);
10
10
  };
11
11
  exports.generateId = generateId;
12
- //# sourceMappingURL=utils.js.map
@@ -2,4 +2,3 @@ import type { AgentSimulatorInfo } from "./services/agent-service";
2
2
  export declare function getSendMessageUri(agentSimulatorInfo: AgentSimulatorInfo): string;
3
3
  export declare function getHealthUri(agentSimulatorInfo: AgentSimulatorInfo): string;
4
4
  export declare function getQueryTasksUri(agentSimulatorInfo: AgentSimulatorInfo, taskId?: string): string;
5
- //# sourceMappingURL=Agent.d.ts.map
@@ -21,4 +21,3 @@ function getQueryTasksUri(agentSimulatorInfo, taskId) {
21
21
  }
22
22
  return `${agentSimulatorInfo.agentServerUrl}/query-tasks${taskId ? `/${taskId}` : ""}`;
23
23
  }
24
- //# sourceMappingURL=Agent.js.map
@@ -1,3 +1,2 @@
1
1
  declare const CopilotSimulator: () => import("react/jsx-runtime").JSX.Element;
2
2
  export default CopilotSimulator;
3
- //# sourceMappingURL=App.d.ts.map