@mybricks/plugin-ai 0.0.1 → 0.0.3

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 (203) hide show
  1. package/dist/_virtual/_rollupPluginBabelHelpers.js +164 -0
  2. package/dist/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
  3. package/dist/agents/app.js +335 -0
  4. package/dist/agents/app.js.map +1 -0
  5. package/dist/agents/common.js +483 -0
  6. package/dist/agents/common.js.map +1 -0
  7. package/dist/agents/custom.js +16 -0
  8. package/dist/agents/custom.js.map +1 -0
  9. package/dist/agents/index.js +38 -0
  10. package/dist/agents/index.js.map +1 -0
  11. package/dist/agents/knowledges/knowledge-base.js +579 -0
  12. package/dist/agents/knowledges/knowledge-base.js.map +1 -0
  13. package/dist/agents/knowledges/knowledge-node.js +228 -0
  14. package/dist/agents/knowledges/knowledge-node.js.map +1 -0
  15. package/dist/agents/knowledges/types.js +105 -0
  16. package/dist/agents/knowledges/types.js.map +1 -0
  17. package/dist/agents/utils/config.js +229 -0
  18. package/dist/agents/utils/config.js.map +1 -0
  19. package/dist/agents/workspace/coding-manager.js +20 -0
  20. package/dist/agents/workspace/coding-manager.js.map +1 -0
  21. package/dist/agents/workspace/components-manager.js +113 -0
  22. package/dist/agents/workspace/components-manager.js.map +1 -0
  23. package/dist/agents/workspace/outline-focus.js +167 -0
  24. package/dist/agents/workspace/outline-focus.js.map +1 -0
  25. package/dist/agents/workspace/outline-info.js +430 -0
  26. package/dist/agents/workspace/outline-info.js.map +1 -0
  27. package/dist/agents/workspace/page-tree-generator.js +70 -0
  28. package/dist/agents/workspace/page-tree-generator.js.map +1 -0
  29. package/dist/agents/workspace/workspace.js +251 -0
  30. package/dist/agents/workspace/workspace.js.map +1 -0
  31. package/dist/agents/workspace-by-knowledges/providers/component-docs-provider.js +100 -0
  32. package/dist/agents/workspace-by-knowledges/providers/component-docs-provider.js.map +1 -0
  33. package/dist/agents/workspace-by-knowledges/providers/focus-info-provider.js +120 -0
  34. package/dist/agents/workspace-by-knowledges/providers/focus-info-provider.js.map +1 -0
  35. package/dist/agents/workspace-by-knowledges/providers/project-info-provider.js +146 -0
  36. package/dist/agents/workspace-by-knowledges/providers/project-info-provider.js.map +1 -0
  37. package/dist/agents/workspace-by-knowledges/test.js +242 -0
  38. package/dist/agents/workspace-by-knowledges/test.js.map +1 -0
  39. package/dist/agents/workspace-by-knowledges/utils/components-manager.js +132 -0
  40. package/dist/agents/workspace-by-knowledges/utils/components-manager.js.map +1 -0
  41. package/dist/agents/workspace-by-knowledges/utils/outline-focus.js +167 -0
  42. package/dist/agents/workspace-by-knowledges/utils/outline-focus.js.map +1 -0
  43. package/dist/agents/workspace-by-knowledges/utils/outline-info.js +430 -0
  44. package/dist/agents/workspace-by-knowledges/utils/outline-info.js.map +1 -0
  45. package/dist/agents/workspace-by-knowledges/workspace.js +169 -0
  46. package/dist/agents/workspace-by-knowledges/workspace.js.map +1 -0
  47. package/dist/api/cloud-components.js +85 -0
  48. package/dist/api/cloud-components.js.map +1 -0
  49. package/dist/api-record-replay/manager.js +168 -0
  50. package/dist/api-record-replay/manager.js.map +1 -0
  51. package/dist/api-record-replay/recorder.js +107 -0
  52. package/dist/api-record-replay/recorder.js.map +1 -0
  53. package/dist/api-record-replay/replayer.js +136 -0
  54. package/dist/api-record-replay/replayer.js.map +1 -0
  55. package/dist/components/attachments/index.js +124 -0
  56. package/dist/components/attachments/index.js.map +1 -0
  57. package/dist/components/attachments/index.less.js +8 -0
  58. package/dist/components/attachments/index.less.js.map +1 -0
  59. package/dist/components/icons/index.js +112 -0
  60. package/dist/components/icons/index.js.map +1 -0
  61. package/dist/components/icons/index.less.js +8 -0
  62. package/dist/components/icons/index.less.js.map +1 -0
  63. package/dist/components/mention/index.js +19 -0
  64. package/dist/components/mention/index.js.map +1 -0
  65. package/dist/components/mention/index.less.js +8 -0
  66. package/dist/components/mention/index.less.js.map +1 -0
  67. package/dist/components/messages/index.js +429 -0
  68. package/dist/components/messages/index.js.map +1 -0
  69. package/dist/components/messages/index.less.js +8 -0
  70. package/dist/components/messages/index.less.js.map +1 -0
  71. package/dist/components/sender/index.js +244 -0
  72. package/dist/components/sender/index.js.map +1 -0
  73. package/dist/components/sender/index.less.js +8 -0
  74. package/dist/components/sender/index.less.js.map +1 -0
  75. package/dist/context/RequestStatusTracker.js +44 -0
  76. package/dist/context/RequestStatusTracker.js.map +1 -0
  77. package/dist/context/index.js +45 -0
  78. package/dist/context/index.js.map +1 -0
  79. package/dist/data.js +4 -0
  80. package/dist/data.js.map +1 -0
  81. package/dist/index.js +306 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/plugin-ai/node_modules/style-inject/dist/style-inject.es.js +27 -0
  84. package/dist/plugin-ai/node_modules/style-inject/dist/style-inject.es.js.map +1 -0
  85. package/dist/plugin-ai/package.json.js +8 -0
  86. package/dist/plugin-ai/package.json.js.map +1 -0
  87. package/dist/plugin-ai/test/index.js +206 -0
  88. package/dist/plugin-ai/test/index.js.map +1 -0
  89. package/dist/preset/createTemplates.js +29 -0
  90. package/dist/preset/createTemplates.js.map +1 -0
  91. package/dist/preset/index.js +13 -0
  92. package/dist/preset/index.js.map +1 -0
  93. package/dist/preset/prompts.js +34 -0
  94. package/dist/preset/prompts.js.map +1 -0
  95. package/dist/preset/user.js +7 -0
  96. package/dist/preset/user.js.map +1 -0
  97. package/dist/requestAsStream.js +269 -0
  98. package/dist/requestAsStream.js.map +1 -0
  99. package/dist/rxai/node_modules/idb/build/index.js +277 -0
  100. package/dist/rxai/node_modules/idb/build/index.js.map +1 -0
  101. package/dist/rxai/src/agent/base.js +16 -0
  102. package/dist/rxai/src/agent/base.js.map +1 -0
  103. package/dist/rxai/src/agent/planning.js +1076 -0
  104. package/dist/rxai/src/agent/planning.js.map +1 -0
  105. package/dist/rxai/src/agent/rxai.js +254 -0
  106. package/dist/rxai/src/agent/rxai.js.map +1 -0
  107. package/dist/rxai/src/error/base.js +39 -0
  108. package/dist/rxai/src/error/base.js.map +1 -0
  109. package/dist/rxai/src/prompt/base.js +11 -0
  110. package/dist/rxai/src/prompt/base.js.map +1 -0
  111. package/dist/rxai/src/prompt/planning.js +23 -0
  112. package/dist/rxai/src/prompt/planning.js.map +1 -0
  113. package/dist/rxai/src/prompt/tool.js +14 -0
  114. package/dist/rxai/src/prompt/tool.js.map +1 -0
  115. package/dist/rxai/src/request/request.js +123 -0
  116. package/dist/rxai/src/request/request.js.map +1 -0
  117. package/dist/rxai/src/tool/getHistoryRecords.js +65 -0
  118. package/dist/rxai/src/tool/getHistoryRecords.js.map +1 -0
  119. package/dist/rxai/src/tool/util.js +424 -0
  120. package/dist/rxai/src/tool/util.js.map +1 -0
  121. package/dist/rxai/src/utils/events.js +43 -0
  122. package/dist/rxai/src/utils/events.js.map +1 -0
  123. package/dist/rxai/src/utils/idb.js +240 -0
  124. package/dist/rxai/src/utils/idb.js.map +1 -0
  125. package/dist/rxai/src/utils/retry.js +32 -0
  126. package/dist/rxai/src/utils/retry.js.map +1 -0
  127. package/dist/rxai/src/utils/uuid.js +7 -0
  128. package/dist/rxai/src/utils/uuid.js.map +1 -0
  129. package/dist/startView/components/header/header.js +12 -0
  130. package/dist/startView/components/header/header.js.map +1 -0
  131. package/dist/startView/components/header/header.less.js +8 -0
  132. package/dist/startView/components/header/header.less.js.map +1 -0
  133. package/dist/startView/index.js +62 -0
  134. package/dist/startView/index.js.map +1 -0
  135. package/dist/startView/index.less.js +8 -0
  136. package/dist/startView/index.less.js.map +1 -0
  137. package/dist/tools/analyze-and-expand-prd.js +116 -0
  138. package/dist/tools/analyze-and-expand-prd.js.map +1 -0
  139. package/dist/tools/analyze-requirement-and-components.js +208 -0
  140. package/dist/tools/analyze-requirement-and-components.js.map +1 -0
  141. package/dist/tools/answer.js +33 -0
  142. package/dist/tools/answer.js.map +1 -0
  143. package/dist/tools/build-process.js +550 -0
  144. package/dist/tools/build-process.js.map +1 -0
  145. package/dist/tools/coding-subagent-as-tool.js +101 -0
  146. package/dist/tools/coding-subagent-as-tool.js.map +1 -0
  147. package/dist/tools/generate-ui-content.js +528 -0
  148. package/dist/tools/generate-ui-content.js.map +1 -0
  149. package/dist/tools/index.js +31 -0
  150. package/dist/tools/index.js.map +1 -0
  151. package/dist/tools/open-dsl.js +49 -0
  152. package/dist/tools/open-dsl.js.map +1 -0
  153. package/dist/tools/refactor-ui-content.js +292 -0
  154. package/dist/tools/refactor-ui-content.js.map +1 -0
  155. package/dist/tools/utils.js +832 -0
  156. package/dist/tools/utils.js.map +1 -0
  157. package/dist/types/index.js +8 -0
  158. package/dist/types/index.js.map +1 -0
  159. package/dist/view/components/header/header.js +59 -0
  160. package/dist/view/components/header/header.js.map +1 -0
  161. package/dist/view/components/header/header.less.js +8 -0
  162. package/dist/view/components/header/header.less.js.map +1 -0
  163. package/dist/view/index.js +184 -0
  164. package/dist/view/index.js.map +1 -0
  165. package/dist/view/index.less.js +8 -0
  166. package/dist/view/index.less.js.map +1 -0
  167. package/package.json +33 -6
  168. package/src/agents/app.ts +0 -173
  169. package/src/agents/common.ts +0 -111
  170. package/src/agents/index.ts +0 -7
  171. package/src/components/icons/index.less +0 -8
  172. package/src/components/icons/index.tsx +0 -24
  173. package/src/components/messages/index.less +0 -806
  174. package/src/components/messages/index.tsx +0 -236
  175. package/src/context/index.ts +0 -21
  176. package/src/data.ts +0 -5
  177. package/src/index.tsx +0 -84
  178. package/src/mock.ts +0 -1267
  179. package/src/startView/index.less +0 -216
  180. package/src/startView/index.tsx +0 -229
  181. package/src/tools/analyze-and-expand-prd.ts +0 -166
  182. package/src/tools/answer-user.ts +0 -35
  183. package/src/tools/focus-element.ts +0 -47
  184. package/src/tools/generate-page.ts +0 -750
  185. package/src/tools/get-component-info-by-ids.ts +0 -166
  186. package/src/tools/get-component-info.ts +0 -53
  187. package/src/tools/get-components-doc-and-prd.ts +0 -137
  188. package/src/tools/get-focus-mybricks-dsl.ts +0 -26
  189. package/src/tools/get-mybricks-dsl.ts +0 -73
  190. package/src/tools/index.ts +0 -25
  191. package/src/tools/modify-component.ts +0 -385
  192. package/src/tools/type.d.ts +0 -12
  193. package/src/tools/utils.ts +0 -62
  194. package/src/types.d.ts +0 -65
  195. package/src/view/components/header/header.less +0 -17
  196. package/src/view/components/header/header.tsx +0 -15
  197. package/src/view/components/index.ts +0 -3
  198. package/src/view/components/messages/messages.less +0 -228
  199. package/src/view/components/messages/messages.tsx +0 -172
  200. package/src/view/components/sender/sender.less +0 -44
  201. package/src/view/components/sender/sender.tsx +0 -62
  202. package/src/view/index.less +0 -5
  203. package/src/view/index.tsx +0 -18
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planning.js","sources":["../../../../../rxai/src/agent/planning.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport { getSystemPrompt } from \"../prompt/planning\";\nimport { BaseAgent, BaseAgentOptions } from \"./base\";\nimport { parseFileBlocks } from \"../tool/util\";\nimport { getToolPrompt } from \"../prompt/tool\";\nimport { Events } from \"../utils/events\";\nimport { Request } from \"../request/request\";\nimport { IDB } from \"../utils/idb\";\nimport { uuid } from \"../utils/uuid\";\nimport { RxaiError } from \"../error/base\";\nimport { retry } from \"../utils/retry\";\n\n// 是否将 guidePrompt 注入到系统提示词中\nconst guidePromptInSystemPrompt = true;\n\ninterface PlanningAgentOptions extends BaseAgentOptions {\n emits: Emits;\n tools: Tool[];\n message: string;\n blockId?: string;\n attachments?: Attachment[];\n historyMessages: (history: any) => ChatMessages;\n presetMessages:\n | ChatMessages\n | (() => ChatMessages)\n | (() => Promise<ChatMessages>);\n presetHistoryMessages: ChatMessages;\n formatUserMessage?: (msg: any) => any;\n guidePrompt?: string;\n planList?: string[];\n extension?: unknown;\n idb?: IDB;\n uuid?: string;\n planningCheck?: (\n bashCommands: [\n string,\n string,\n {\n [key: string]: string;\n },\n ][],\n ) =>\n | [\n string,\n string,\n {\n [key: string]: string;\n },\n ][]\n | null;\n}\n\ntype PlanStatus = \"pending\" | \"success\" | \"error\" | \"aborted\";\n\n/** 没有response */\nconst CATCH_EMPTY = Symbol(\"CATCH_EMPTY\");\n\ntype PlanError = RxaiError | null;\n\ntype CommandStatus = \"pending\" | \"success\" | \"error\" | null;\n\ntype EventsKV = {\n loading: boolean;\n userFriendlyMessages: any[];\n streamMessage: string;\n userMessage: ReturnType<PlanningAgent[\"getUserMessage\"]>;\n startTime: number;\n summary: string;\n commands: PlanningAgent[\"commands\"];\n error: string;\n status: PlanStatus;\n planningMessage: string;\n};\n\n/**\n * 分析计划\n * 执行计划\n */\nclass PlanningAgent extends BaseAgent {\n private startTime: number = 0;\n private endTime: number = 0;\n private llmContent: string = \"\";\n private loading: boolean = false;\n private commands: {\n startTime: number;\n endTime: number;\n argv: [\n string,\n string,\n {\n [key: string]: string;\n },\n ];\n status: CommandStatus;\n tool: {\n name: string;\n displayName: string;\n };\n content: {\n llm: string;\n display: string;\n response: string;\n };\n events?: Events<{ streamMessage: { message: string; status: string } }>;\n }[] = [];\n private filenames: string[] = [];\n\n private defaultPlanList = false;\n\n constructor(private options: PlanningAgentOptions) {\n super(options);\n // 设置UUID\n this.uuid = options.uuid || uuid();\n if (options.planList) {\n // 配置默认的规划列表\n const time = new Date().getTime();\n const llmContent =\n \"```bash\" +\n `\\n${options.planList.reduce((pre, cur) => {\n return (pre ? pre + \" && \" : pre) + `node ${cur}`;\n }, \"\")}` +\n \"\\n```\";\n\n this.setStartTime(time);\n this.setEndTime(time);\n this.setLlmContent(llmContent);\n this.setLoading(false);\n this.setCommands(\n parseBashCommands(llmContent).map((argv) => {\n return {\n startTime: 0,\n endTime: 0,\n argv,\n status: null,\n tool: {\n name: argv[1],\n displayName: argv[1],\n },\n content: {\n llm: \"\",\n display: \"\",\n response: \"\",\n },\n };\n }),\n false,\n );\n\n this.defaultPlanList = true;\n }\n // 设置userMessage\n this.events.emit(\"userMessage\", this.getUserMessage());\n }\n\n /** 随机ID,保证唯一性 */\n private uuid: string;\n\n /** 事件 */\n events = new Events<EventsKV>();\n\n /** 整体运行状态 */\n private status: PlanStatus = \"pending\";\n\n /** error信息 */\n private error: PlanError = null;\n\n enableRetry: boolean = true;\n\n private summaryMessage: string = \"\";\n /** 当前请求的cancel */\n private currentRequestCancel = () => {};\n\n get id() {\n return this.uuid;\n }\n\n /** 开始执行 */\n async run() {\n // 记录开始时间\n this.setStartTime(new Date().getTime());\n\n await this.start();\n }\n\n private async start() {\n this.setStatus(\"pending\");\n\n if (!this.commands.length) {\n // 没有commands,需要规划\n this.setLoading(true);\n\n await this.tryCatch(\n () =>\n retry(\n () => {\n return this.planning();\n },\n this.options.requestInstance.maxRetries,\n (error) => {\n return error instanceof RxaiError && error.type === \"request\";\n },\n ),\n true,\n );\n\n this.setLoading(false);\n }\n\n await this.executeCommands();\n\n // 执行结束,调用emits回调通知调用方\n if (this.status === \"success\") {\n this.options.emits.complete(\"\");\n } else if (this.status === \"error\") {\n this.options.emits.error(\"\");\n }\n\n this.summary();\n }\n\n /** 设置需缓存的值 */\n private setStartTime(startTime: PlanningAgent[\"startTime\"]) {\n this.startTime = startTime;\n this.idbPubContent(\"startTime\", startTime);\n }\n private setEndTime(endTime: PlanningAgent[\"endTime\"]) {\n this.endTime = endTime;\n this.idbPubContent(\"endTime\", endTime);\n }\n private setLlmContent(llmContent: PlanningAgent[\"llmContent\"]) {\n this.llmContent = llmContent;\n this.idbPubContent(\"llmContent\", llmContent);\n }\n private setLoading(loading: PlanningAgent[\"loading\"]) {\n this.loading = loading;\n this.events.emit(\"loading\", loading);\n }\n\n /** 构建用户偏好信息提示词 */\n private buildGuidePromptSection(): string {\n return this.options.guidePrompt\n ? `<用户偏好信息>\n关于当前项目,用户提供了他的偏好信息,请注意参考偏好信息来完成任务。\n${this.options.guidePrompt}\n</用户偏好信息>\n`\n : \"\";\n }\n private setCommands(commands: PlanningAgent[\"commands\"], sync: boolean) {\n this.commands = commands.map((command) => {\n if (!command.events) {\n command.events = new Events();\n }\n return {\n ...command,\n };\n });\n this.events.emit(\"commands\", commands);\n if (sync) {\n this.idbPubContent(\n \"commands\",\n commands.map((command) => {\n const { events, ...other } = command;\n return other;\n }),\n );\n }\n }\n private idbPubContent(type: string, content: any) {\n // TODO error类型扩展\n if (this.error?.message === \"已销毁\") {\n return;\n }\n this.options.idb?.putContent({\n id: this.uuid,\n type,\n content,\n });\n }\n\n /** 规划 */\n private async planning() {\n const { options } = this;\n\n const planningStream = getPlanningStream((message) => {\n this.events.emit(\"planningMessage\", message);\n });\n\n const planningResponse = await this.request({\n messages: await this.getLLMMessages({\n start: [\n {\n role: \"system\",\n content: getSystemPrompt({\n title: \"MyBricks.ai\",\n tools: options.tools,\n prompt: this.system.prompt,\n guidePromptSection: guidePromptInSystemPrompt\n ? this.buildGuidePromptSection()\n : \"\",\n }),\n },\n ...this.getHistoryMessages(),\n ],\n }),\n emits: this.getEmits({\n write: (chunk) => {\n planningStream(chunk);\n },\n }),\n });\n\n if (planningResponse instanceof RxaiError) {\n // 规划出错\n return;\n }\n\n this.setLlmContent(planningResponse);\n\n let bashCommands = parseBashCommands(planningResponse);\n\n if (!bashCommands.length) {\n // 说明没有规划\n // this.events.emit(\"summary\", planningResponse);\n this.setStatus(\"success\");\n } else {\n const { planningCheck } = this.options;\n\n if (planningCheck) {\n const check = planningCheck(bashCommands);\n if (!check) {\n throw new RxaiError(\"规划结果不符合预期\", \"request\");\n }\n bashCommands = check;\n }\n\n if (\n bashCommands.length === 1 &&\n bashCommands[0][1] === \"get-history-records\"\n ) {\n bashCommands.push([\"node\", \"analyse-and-answer\", {}]);\n }\n\n this.setCommands(\n bashCommands.map((argv) => {\n return {\n startTime: 0,\n endTime: 0,\n argv,\n status: null,\n tool: {\n name: argv[1],\n displayName: argv[1],\n },\n content: {\n llm: \"\",\n display: \"\",\n response: \"\",\n },\n };\n }),\n true,\n );\n }\n\n this.setEndTime(new Date().getTime());\n }\n\n /** 执行规划的脚本 */\n private async executeCommands() {\n // 命令\n const commands = this.commands;\n if (!commands.length) {\n // 没有命令\n return;\n }\n\n // 当前执行到第几个\n let index = commands.findIndex((command) => command.status !== \"success\");\n if (index === -1) {\n // 命令全部执行完成\n return;\n }\n\n while (commands.length !== index && this.status === \"pending\") {\n const command = commands[index];\n\n // 变更状态,开始执行\n command.status = \"pending\";\n command.startTime = new Date().getTime();\n\n this.setCommands(commands, false);\n\n const [error, response] = await this.tryCatch(\n async () =>\n await retry(\n () => {\n return this.executeCommand(command);\n },\n this.requestInstance.maxRetries, // 暂时都用request配置的maxRetries\n (error) => {\n return error instanceof RxaiError && error.type === \"request\";\n },\n ),\n true,\n );\n\n if (response === CATCH_EMPTY) {\n command.status = \"error\";\n if (error instanceof RxaiError && error.type === \"tool\") {\n Object.assign(command.content, {\n llm: error.message,\n display: error.display,\n });\n } else if (\n (error instanceof RxaiError && error.type === \"request\") ||\n error instanceof Error\n ) {\n const message = error.message;\n Object.assign(command.content, {\n llm: message,\n display: message,\n });\n } else {\n const message = \"工具调用错误\";\n Object.assign(command.content, {\n llm: message,\n display: message,\n });\n }\n this.setError(error);\n } else {\n command.status = \"success\";\n Object.assign(command.content, response);\n this.setCommands(commands, true);\n }\n\n command.endTime = new Date().getTime();\n\n if (this.status === \"pending\") {\n index++;\n // TODO: idb记录状态\n if (commands.length === index) {\n // 所有工具都执行完成,设置完成状态\n this.setStatus(\"success\");\n\n // this.events.emit(\n // \"summary\",\n // command.content.display,\n // );\n }\n }\n }\n }\n\n /**\n * 执行命令\n * 目前均为node命令,后续可能扩展\n */\n private async executeCommand(command: PlanningAgent[\"commands\"][number]) {\n const { argv } = command;\n const [, name, params = {}] = argv;\n\n // 已经前置校验过工具合法性,所以tool一定是有的\n const tool = this.options.tools.find((tool) => {\n return tool.name === name;\n })!;\n\n command.tool.displayName = tool.displayName;\n\n /** 工具提示词 */\n const toolPrompt = getToolPrompt(tool, {\n attachments: this.options.attachments,\n params,\n guidePromptSection: guidePromptInSystemPrompt\n ? this.buildGuidePromptSection()\n : \"\",\n });\n\n const content = {\n llm: \"\",\n display: \"\",\n response: \"\",\n };\n\n const toolExecute = async (\n tool: Tool,\n params: Parameters<Tool[\"execute\"]>[0],\n ) => {\n const [error, response] = await this.tryCatch(() => {\n if (tool.name === \"get-history-records\") {\n // @ts-ignore\n this.filenames = tool.execute(params);\n return \"已读取历史对话记录\";\n }\n return tool.execute(params);\n });\n\n if (response === CATCH_EMPTY) {\n throw error;\n }\n\n if (typeof response === \"string\") {\n return {\n llm: response,\n display: response,\n };\n } else {\n return {\n llm: response.llmContent,\n display: response.displayContent,\n };\n }\n };\n\n if (!toolPrompt) {\n // 没有提示词,走本地调用,执行execute\n Object.assign(\n content,\n await toolExecute(tool, {\n params,\n files: [],\n content: \"\",\n replaceContent: \"\",\n getUserMessage: () => this.getUserMessage(),\n }),\n );\n } else {\n let streamMessage = \"\";\n let streamError: any = null;\n\n const stream = tool.stream\n ? (content: string, status: \"start\" | \"ing\" | \"complete\") => {\n if (streamError) {\n return;\n }\n if (this.status === \"error\") {\n this.currentRequestCancel?.();\n streamError = this.error;\n return;\n }\n try {\n const { content: replaceContent, files } =\n parseFileBlocks(content);\n const res = tool.stream!({\n files,\n status,\n replaceContent,\n });\n if (typeof res === \"string\") {\n command.events?.emit(\"streamMessage\", {\n message: res,\n status,\n });\n }\n } catch (e) {\n streamError = e;\n this.currentRequestCancel?.();\n }\n }\n : (content: string, status: \"start\" | \"ing\" | \"complete\") => {\n command.events?.emit(\"streamMessage\", {\n message: content,\n status,\n });\n };\n\n stream?.(\"\", \"start\");\n\n // 执行 before 钩子\n if (tool.hooks?.before && typeof tool.hooks.before === \"function\") {\n await tool.hooks.before({\n params,\n });\n }\n\n const historyMessages = this.getHistoryMessages(this.filenames);\n const llmMessages = await this.getLLMMessages({\n start: [\n {\n role: \"system\",\n content: getToolPrompt(tool, {\n attachments: this.options.attachments,\n params,\n guidePromptSection: guidePromptInSystemPrompt\n ? this.buildGuidePromptSection()\n : \"\",\n }),\n },\n ...historyMessages,\n ],\n });\n\n // 检查是否有附件:当前请求的附件 + 历史记录中带进来的附件\n // 只要 content 是数组结构就说明包含了附件\n const hasHistoryAttachments = historyMessages.some((msg) => {\n return Array.isArray(msg.content);\n });\n\n const hasAttachments = !!(\n this.options.attachments?.length || hasHistoryAttachments\n );\n\n const response = await this.request({\n messages: llmMessages,\n emits: this.getEmits({\n write: (chunk) => {\n // if (tool.streamThoughts) {\n // this.events.emit(\"streamMessage\", chunk);\n // }\n\n streamMessage += chunk;\n command.content.response = streamMessage;\n stream?.(streamMessage, \"ing\");\n // if (!stream) {\n // command.events?.emit(\"streamMessage\", {\n // message: streamMessage,\n // status: \"ing\",\n // });\n // this.events.emit(\"streamMessage\", chunk);\n // }\n },\n complete: (content) => {\n stream?.(content, \"complete\");\n },\n }),\n aiRole:\n typeof tool.aiRole === \"function\"\n ? (tool.aiRole as any)?.({ params, hasAttachments })\n : tool.aiRole,\n });\n\n if (streamError) {\n throw streamError;\n }\n\n if (response instanceof RxaiError) {\n throw response;\n }\n\n // 解析文件\n const { files, content: replaceContent } = parseFileBlocks(response);\n\n Object.assign(\n content,\n await toolExecute(tool, {\n params,\n files,\n content: response,\n replaceContent,\n getUserMessage: () => this.getUserMessage(),\n }),\n { response },\n );\n }\n\n return content;\n }\n\n /** emits代理 */\n private getEmits(emits?: Partial<Emits>): Emits {\n const { options } = this;\n return {\n write: (chunk) => {\n options.emits.write(chunk);\n emits?.write?.(chunk);\n },\n complete: (content) => {\n emits?.complete?.(content);\n },\n error: (error) => {\n options.emits.error(error);\n // this.setStatus(\"error\");\n console.error(error);\n emits?.error?.(error);\n },\n cancel: (fn) => {\n options.emits.cancel(fn);\n emits?.cancel?.(fn);\n this.currentRequestCancel = fn;\n },\n };\n }\n\n /** 获取用户需求 */\n private getUserMessage() {\n const { options } = this;\n return {\n role: \"user\",\n content: options.attachments?.length\n ? [\n {\n type: \"text\",\n text: options.message,\n },\n ...options.attachments\n .filter((attachement) => {\n return attachement.type === \"image\";\n })\n .map((attachement) => {\n return {\n type: \"image_url\",\n image_url: {\n url: attachement.content,\n },\n };\n }),\n ]\n : options.message,\n };\n }\n\n private formatUserMessage(\n userMessage: any,\n formatFunction: (msg: string) => string,\n ) {\n let userTextMessage;\n let newUserMessage;\n\n // 提取用户消息内容并创建新的消息对象\n if (typeof userMessage?.content === \"string\") {\n newUserMessage = { ...userMessage };\n userTextMessage = userMessage.content;\n } else if (Array.isArray(userMessage?.content)) {\n newUserMessage = {\n ...userMessage,\n content: [...userMessage.content],\n };\n const idx = userMessage.content.findIndex(\n (item: any) => item.type === \"text\",\n );\n userTextMessage = userMessage.content[idx]?.text;\n }\n\n // 通过format函数处理文本内容\n const formattedText = formatFunction(userTextMessage);\n\n // 将格式化后的内容塞回新消息对象\n if (typeof userMessage?.content === \"string\") {\n newUserMessage.content = formattedText;\n } else if (Array.isArray(userMessage?.content)) {\n const idx = userMessage.content.findIndex(\n (item: any) => item.type === \"text\",\n );\n if (idx !== -1) {\n newUserMessage.content[idx].text = formattedText;\n }\n }\n\n return newUserMessage;\n }\n\n /** 获取对话消息列表 */\n private async getLLMMessages(params: {\n start?: ChatMessages;\n end?: ChatMessages;\n }) {\n const { options } = this;\n const { start, end } = params;\n // 辅助函数,用于从 argv 构建命令字符串\n const buildCommandString = (\n argv: [string, string, Record<string, any>],\n ) => {\n const [bash, name, params = {}] = argv;\n return `${name} ${Object.entries(params).reduce(\n (acc, [key, value]) => acc + `-${key} ${value} `,\n \"\",\n )}`.trim();\n };\n\n // 获取用户原始需求\n let userMessage =\n typeof options.formatUserMessage === \"function\"\n ? this.formatUserMessage(\n this.getUserMessage(),\n options.formatUserMessage,\n )\n : this.getUserMessage();\n\n // 如果存在命令,则构建“工具规划”和“执行进度”\n if (this.commands.length > 0) {\n // 预先找到当前正在执行的命令\n const currentCommand = this.commands.find((c) => c.status === \"pending\");\n const currentCommandString = currentCommand\n ? buildCommandString(currentCommand.argv)\n : \"无\";\n\n // --- 构建“工具规划”部分 ---\n let planningContent = `\\n\\n---\\n## 工具规划`;\n planningContent += `\\n为了帮助用户达成上述目的,系统规划了以下工具来处理,当前正在执行 ${currentCommandString}。`;\n for (const command of this.commands) {\n if (command.status === null) continue;\n const statusMap = { success: \"[已完成]\", pending: \"[正在执行]\" };\n const status = statusMap[command.status] || \"[待执行]\";\n planningContent += `\\n${status} ${buildCommandString(command.argv)}`;\n }\n\n // --- 构建“执行进度”部分 ---\n let progressContent = `\\n\\n## 执行进度`;\n for (const command of this.commands) {\n if (command.status === null) continue;\n const commandStr = buildCommandString(command.argv);\n switch (command.status) {\n case \"success\": {\n progressContent += `\\n\\n[已完成] ${commandStr}`;\n const output = command.content.llm || command.content.display;\n progressContent += `\\n----- 输出内容 -----\\n${output}\\n----- 输出内容 -----`;\n break;\n }\n case \"pending\":\n progressContent += `\\n\\n[正在执行] ${commandStr}`;\n if (this.error instanceof RxaiError && this.error.type === \"tool\") {\n progressContent += `\\n执行时出错: ${this.error.message}\\n请分析错误原因,修正上述命令或重新规划。`;\n } else {\n progressContent +=\n \"\\n请根据工具描述、用户消息、以及前置工具的执行结果,为当前步骤提供输出。\";\n }\n break;\n default:\n progressContent += `\\n\\n[待执行] ${commandStr}`;\n break;\n }\n }\n // 组合所有内容\n userMessage = this.formatUserMessage(\n userMessage,\n (msg) => msg + planningContent + progressContent,\n );\n }\n\n // 附加重试错误信息\n const retryMessage: ChatMessages = [];\n if (this.error instanceof RxaiError && this.error.type === \"retry\") {\n retryMessage.push({\n role: \"user\",\n // @ts-ignore\n content: `[系统提示] 上次规划出错,错误信息: ${this.error.message}。请基于用户需求重新规划。`,\n });\n }\n\n const guideMessage: ChatMessages = [];\n // 只有当配置为通过用户消息添加时,才添加 guidePrompt\n if (\n !guidePromptInSystemPrompt &&\n this.options?.guidePrompt?.trim &&\n this.options.guidePrompt.trim().length\n ) {\n guideMessage.push({\n role: \"user\",\n content: this.buildGuidePromptSection(),\n });\n }\n\n // 组装最终消息列表\n const presetMsgs =\n typeof options.presetMessages === \"function\"\n ? await options.presetMessages()\n : options.presetMessages;\n const messages = [\n ...presetMsgs,\n ...guideMessage,\n userMessage,\n ...retryMessage,\n ];\n if (start) {\n messages.unshift(...start);\n }\n if (end) {\n messages.push(...end);\n }\n this.setError(null);\n return messages;\n }\n\n /** 请求统一封装 */\n private async request(params: Parameters<Request[\"requestAsStream\"]>[0]) {\n const response = await this.requestInstance.requestAsStream({\n ...params,\n enableLog: this.enableLog,\n });\n if (response.type === \"error\") {\n this.setError(response.content);\n return response.content;\n } else if (response.type === \"cancel\") {\n const error = new RxaiError(\"已取消执行\", \"request\");\n this.setError(error);\n return error;\n }\n return response.content;\n }\n\n /** 统一错误处理 */\n private setError(error: unknown) {\n if (!error) {\n // error清理\n this.error = null;\n this.events.emit(\"error\", \"\");\n this.idbPubContent(\"error\", null);\n return;\n }\n this.setStatus(\"error\");\n if (error instanceof RxaiError) {\n this.error = error;\n } else {\n // 默认为ToolError\n this.error = new RxaiError(\n (error as Error)?.message || \"工具调用错误\",\n \"tool\",\n );\n }\n\n this.idbPubContent(\"error\", this.error.toJSON());\n\n this.events.emit(\"error\", this.error.display);\n }\n\n /** 设置状态 */\n private setStatus(status: PlanningAgent[\"status\"]) {\n this.status = status;\n this.idbPubContent(\"status\", status);\n this.events.emit(\"status\", status);\n }\n\n /** TODO: 获取DB存储的plan静态数据 */\n async getDBContent() {\n const { options } = this;\n const presetMsgs =\n typeof options.presetMessages === \"function\"\n ? await options.presetMessages()\n : options.presetMessages;\n return {\n uuid: this.uuid,\n extension: options.extension,\n enableLog: options.enableLog,\n attachments: options.attachments,\n message: options.message,\n presetHistoryMessages: options.presetHistoryMessages,\n presetMessages: presetMsgs,\n planList: options.planList,\n blockId: options.blockId,\n };\n }\n\n /** TODO: 从DB恢复 */\n recover(params: any) {\n this.enableRetry = false;\n params.forEach(({ type, content }: any) => {\n if (type === \"error\") {\n if (content) {\n this.error = new RxaiError(\n content.message,\n content.type,\n content.display,\n ).recover(content);\n }\n } else {\n // @ts-ignore\n this[type] = content;\n }\n });\n\n if (this.status === \"pending\") {\n // 未正常完成,设置为取消状态\n this.setStatus(\"aborted\");\n }\n\n this.setLoading(false);\n\n const commands = this.commands;\n commands.forEach((command) => {\n if (command.status === \"pending\") {\n command.status = null;\n }\n });\n\n this.setCommands(commands, false);\n\n if (this.error) {\n this.events.emit(\"error\", this.error.display);\n } else {\n if (this.status === \"aborted\") {\n this.events.emit(\"summary\", \"已取消\");\n } else if (!commands.length) {\n this.events.emit(\"summary\", this.llmContent);\n }\n }\n\n if (commands.length) {\n const bashIndex = this.llmContent.indexOf(\"```bash\");\n this.events.emit(\"planningMessage\", this.llmContent.slice(0, bashIndex));\n }\n }\n\n /** 获取扩展参数 */\n get extension() {\n return this.options.extension;\n }\n\n get blockId() {\n return this.options.blockId;\n }\n\n /** TODO: 获取当前plan的总结信息 */\n getMessages() {\n if (this.loading || this.status === \"pending\" || this.messages.length) {\n return null;\n }\n\n // if (!this.summaryMessage) {\n // this.summary();\n // }\n let message = \"\";\n const presetHistoryMessages = this.options.presetHistoryMessages;\n if (presetHistoryMessages?.length) {\n message +=\n \"### 系统信息\" +\n `${presetHistoryMessages.reduce((pre, cur) => {\n return pre + `\\n${cur.content}`;\n }, \"\")}`;\n }\n message += \"\\n\\n### 用户消息\" + `\\n${this.options.message}`;\n\n if (this.commands.length) {\n message +=\n \"\\n\\n### 工具调用记录\" +\n `${this.commands.reduce((pre, command, index) => {\n if (!command.status) {\n return pre;\n }\n\n // const isLast = this.commands.length - 1 === index;\n\n const [bash, name, params = {}] = command.argv;\n\n if (command.status === \"success\") {\n return (\n pre +\n `\\n- [x] ${bash} ${name} ${Object.entries(params).reduce(\n (pre, [key, value]) => {\n return pre + `-${key} ${value} `;\n },\n \"\",\n )}` +\n // (isLast\n // ? `\\n${command.content.llm || command.content.display}`\n // : \"\")\n `\\nstdout:${command.content.llm || command.content.display}`\n );\n } else if (command.status === \"error\") {\n return (\n pre +\n `\\n- [] ${bash} ${name} ${Object.entries(params).reduce(\n (pre, [key, value]) => {\n return pre + `-${key} ${value} `;\n },\n \"\",\n )}` +\n `\\nzsh:${command.content.llm || command.content.display}`\n );\n }\n return pre;\n }, \"\")}`;\n }\n\n message +=\n \"\\n\\n### 状态\" +\n (this.status === \"success\"\n ? `\\nsuccess${!this.commands.length ? `:${this.llmContent}` : \"\"}`\n : \"\") +\n (this.status === \"aborted\" ? \"\\naborted:执行中断\" : \"\") +\n (this.status === \"error\" ? `\\nerror:${this.error?.message}` : \"\");\n\n return {\n message,\n summaryMessage: this.summaryMessage\n ? `${\n presetHistoryMessages?.length\n ? presetHistoryMessages.reduce((pre, cur) => {\n return pre + `\\n${cur.content}`;\n }, \"\") + \"\\n\"\n : \"\"\n }` + this.summaryMessage\n : \"\",\n attachments: this.options.attachments,\n };\n }\n\n /** 安全执行 */\n private async tryCatch<T>(\n task: () => T | Promise<T>,\n log: boolean = false,\n ): Promise<[undefined, T] | [unknown, typeof CATCH_EMPTY]> {\n try {\n const result = task();\n if (result instanceof Promise) {\n return [undefined, await result];\n }\n return [undefined, result];\n } catch (e) {\n // TODO error类型扩展\n if (log && this.error?.message !== \"已销毁\") {\n console.error(\"[Rxai - planning - error]\", e);\n }\n return [e, CATCH_EMPTY];\n }\n }\n\n async retry() {\n if (this.error instanceof RxaiError && this.error.type === \"retry\") {\n // 从意图识别开始\n if (this.defaultPlanList) {\n // 有默认配置,重制commands\n this.setCommands(\n parseBashCommands(this.llmContent).map((argv) => {\n return {\n startTime: 0,\n endTime: 0,\n argv,\n status: null,\n tool: {\n name: argv[1],\n displayName: argv[1],\n },\n content: {\n llm: \"\",\n display: \"\",\n response: \"\",\n },\n };\n }),\n true,\n );\n } else {\n // 清空规划\n this.setLlmContent(\"\");\n this.setCommands([], true);\n }\n\n // this.setError(null);\n }\n\n await this.start();\n }\n\n async export() {\n const { options } = this;\n const presetMsgs =\n typeof options.presetMessages === \"function\"\n ? await options.presetMessages()\n : options.presetMessages;\n return {\n uuid: this.uuid,\n options: {\n attachments: options.attachments,\n extension: options.extension,\n message: options.message,\n presetHistoryMessages: options.presetHistoryMessages,\n presetMessages: presetMsgs,\n },\n commands: this.commands,\n defaultPlanList: this.defaultPlanList,\n enableLog: this.enableLog,\n enableRetry: this.enableRetry,\n endTime: this.endTime,\n error: this.error ? this.error.toJSON() : undefined,\n llmContent: this.llmContent,\n startTime: this.startTime,\n status: this.status,\n summaryMessage: this.summaryMessage,\n };\n }\n\n private summaryLoading = false;\n\n summary() {\n if (this.summaryLoading) {\n return;\n }\n if (this.summaryMessage) {\n return;\n }\n this.summaryLoading = true;\n const historyMessage = this.getMessages();\n\n if (!historyMessage) {\n return;\n }\n\n const { message } = historyMessage;\n\n this.requestInstance\n .requestAsStream({\n messages: [\n {\n role: \"system\",\n content: `请对以下对话历史记录进行**专业摘要**,提取核心操作与结果,语言精炼,适合存档和快速查阅。\n\n---\n\n**摘要要求:**\n1. **用户意图**:用一句话总结用户的原始指令或请求。\n2. **关键操作**:列出执行的主要动作(工具调用和重要修改)。\n3. **执行结果**:概括任务执行的关键产出或变化。\n4. **最终状态**:说明任务完成情况。\n\n---\n\n**输出格式示例:**\n\\`\\`\\`\n【用户意图】用户希望实现某个具体目标。\n【关键操作】调用了工具A和B。\n【执行结果】产生了Z变化或达成了W效果。\n【最终状态】成功完成/部分完成/失败。\n\\`\\`\\`\n\n---\n\n**注意:**\n1. 摘要结果必须精简,总字数不超过50字。\n\n---\n\n请根据以上要求,直接给出清晰、简明的摘要结果。`,\n },\n {\n role: \"user\",\n content: `<对话历史记录>\n${message}\n</对话历史记录>`,\n },\n ],\n emits: {\n write() {},\n cancel() {},\n error() {},\n complete() {},\n },\n })\n .then((res) => {\n if (res.type === \"complete\") {\n this.summaryMessage = res.content;\n this.idbPubContent(\"summaryMessage\", res.content);\n }\n })\n .catch((e) => {\n console.error(e);\n })\n .finally(() => {\n this.summaryLoading = false;\n });\n\n return {\n message,\n attachments: this.options.attachments,\n };\n }\n\n getHistoryMessages = (filenames?: string[]) => {\n return this.options.historyMessages(filenames);\n };\n destroy() {\n this.status = \"error\";\n this.error = new RxaiError(\"已销毁\", \"tool\");\n this.currentRequestCancel?.();\n }\n}\n\nexport { PlanningAgent };\n\nfunction parseBashCommands(string: string) {\n const bashCodeRegex = /```\\s*bash([\\s\\S]*?)```/;\n const matchResult = string.match(bashCodeRegex);\n\n if (!matchResult) return [];\n\n const bashContent = matchResult[1].trim();\n const subCommands = bashContent.split(\"&&\").map((cmd) => cmd.trim());\n const commandArray = subCommands.map((cmd) =>\n cmd.split(/\\s+/).filter(Boolean),\n );\n\n const result: [string, string, { [key: string]: string }][] = [];\n\n commandArray.forEach((command) => {\n const [node, filename, ...args] = command;\n const params: { [key: string]: string } = {};\n let key = \"\";\n args.forEach((arg) => {\n if (arg.startsWith(\"-\")) {\n // 支持 -v 或 --option 格式,移除前面的 - 或 --\n key = arg.replace(/^--?/, \"\");\n } else if (key) {\n // 当前面有key时,当前值作为参数值\n params[key] = arg;\n key = \"\"; // 重置key,准备接收下一个参数\n }\n });\n\n result.push([node, filename, params]);\n });\n\n return result;\n}\n\nfunction getPlanningStream(write: (chunk: string) => void) {\n let stopWrite = false;\n let planningMessage = \"\";\n let temp = \"\";\n\n return (chunk: string) => {\n if (stopWrite) {\n return;\n }\n const tempChunk = temp + chunk;\n const backticksIndex = tempChunk.indexOf(\"`\");\n if (temp && tempChunk.length >= 7) {\n if (new RegExp(`^${tempChunk.slice(0, 7)}`).test(\"```bash\")) {\n stopWrite = true;\n } else {\n temp = \"\";\n planningMessage += tempChunk;\n }\n } else {\n if (backticksIndex !== -1) {\n if (tempChunk.slice(backticksIndex, backticksIndex + 7) === \"```bash\") {\n stopWrite = true;\n planningMessage += tempChunk.slice(0, backticksIndex);\n } else {\n planningMessage += tempChunk.slice(0, backticksIndex);\n temp = tempChunk.slice(backticksIndex);\n }\n } else {\n planningMessage += chunk;\n }\n }\n\n const bashIndex = planningMessage.indexOf(\"```bash\");\n if (bashIndex !== -1) {\n stopWrite = true;\n planningMessage = planningMessage.slice(0, bashIndex);\n }\n\n write(planningMessage);\n };\n}\n"],"names":["CATCH_EMPTY","Symbol","PlanningAgent","BaseAgent","constructor","options","_defineProperty","Events","filenames","historyMessages","uuid","planList","time","Date","getTime","llmContent","concat","reduce","pre","cur","setStartTime","setEndTime","setLlmContent","setLoading","setCommands","parseBashCommands","map","argv","startTime","endTime","status","tool","name","displayName","content","llm","display","response","defaultPlanList","events","emit","getUserMessage","id","run","_this","_asyncToGenerator","start","_this2","setStatus","commands","length","tryCatch","retry","planning","requestInstance","maxRetries","error","RxaiError","type","executeCommands","emits","complete","summary","idbPubContent","loading","buildGuidePromptSection","guidePrompt","sync","command","_objectSpread","other","_objectWithoutProperties","_excluded","_this$error","_this$options$idb","message","idb","putContent","_this3","planningStream","getPlanningStream","planningResponse","request","messages","getLLMMessages","role","getSystemPrompt","title","tools","prompt","system","guidePromptSection","getHistoryMessages","getEmits","write","chunk","bashCommands","planningCheck","check","push","_this4","index","findIndex","_loop","executeCommand","Object","assign","Error","setError","_this5","params","find","toolPrompt","getToolPrompt","attachments","toolExecute","_ref2","execute","displayContent","_x","_x2","apply","arguments","files","replaceContent","_tool$hooks","_this5$options$attach","_tool$aiRole","streamMessage","streamError","stream","_this5$currentRequest","currentRequestCancel","call","parseFileBlocks","res","_command$events","e","_this5$currentRequest2","_command$events2","hooks","before","llmMessages","hasHistoryAttachments","some","msg","Array","isArray","hasAttachments","aiRole","_emits$write","_emits$complete","_emits$error","console","cancel","fn","_emits$cancel","_options$attachments","text","filter","attachement","image_url","url","formatUserMessage","userMessage","formatFunction","userTextMessage","newUserMessage","_userMessage$content$","idx","item","formattedText","_this6","end","buildCommandString","bash","entries","acc","_ref3","key","value","trim","currentCommand","c","currentCommandString","planningContent","statusMap","success","pending","progressContent","commandStr","output","retryMessage","guideMessage","presetMsgs","presetMessages","unshift","_this7","requestAsStream","enableLog","toJSON","getDBContent","_this8","extension","presetHistoryMessages","blockId","recover","enableRetry","forEach","_ref4","bashIndex","indexOf","slice","getMessages","_this$error2","_ref5","_ref6","summaryMessage","task","_arguments","_this9","log","undefined","result","Promise","_this9$error","_this0","export","_this1","summaryLoading","historyMessage","then","catch","finally","destroy","_this$currentRequestC","string","bashCodeRegex","matchResult","match","bashContent","subCommands","split","cmd","commandArray","Boolean","node","filename","args","arg","startsWith","replace","stopWrite","planningMessage","temp","tempChunk","backticksIndex","RegExp","test"],"mappings":"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"}
@@ -0,0 +1,254 @@
1
+ import { objectSpread2 as _objectSpread2, defineProperty as _defineProperty, asyncToGenerator as _asyncToGenerator } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import { BaseAgent } from './base.js';
3
+ import { PlanningAgent } from './planning.js';
4
+ import { Request } from '../request/request.js';
5
+ import { Events } from '../utils/events.js';
6
+ import { getHistoryRecords } from '../tool/getHistoryRecords.js';
7
+ import { uuid } from '../utils/uuid.js';
8
+
9
+ class Rxai extends BaseAgent {
10
+ constructor(options) {
11
+ var _options$idb;
12
+ super(_objectSpread2(_objectSpread2({}, options), {}, {
13
+ requestInstance: new Request(options.request)
14
+ }));
15
+ _defineProperty(this, "key", uuid());
16
+ _defineProperty(this, "cacheMessages", []);
17
+ _defineProperty(this, "events", new Events());
18
+ // 场景
19
+ _defineProperty(this, "scenes", {});
20
+ this.idb = options.idb;
21
+ (_options$idb = options.idb) === null || _options$idb === void 0 || _options$idb.getPlans().then(plans => {
22
+ plans.forEach(_ref => {
23
+ var {
24
+ plan,
25
+ content
26
+ } = _ref;
27
+ var startMessages = [...this.cacheMessages];
28
+ // TODO: idb类型定义补充
29
+ var planAgent = new PlanningAgent({
30
+ requestInstance: this.requestInstance,
31
+ tools: [],
32
+ // TODO:需要传入工具
33
+ system: this.system,
34
+ emits: {
35
+ write: () => {},
36
+ complete: () => {},
37
+ error: () => {},
38
+ cancel: () => {}
39
+ },
40
+ message: plan.content.message,
41
+ // historyMessages: this.cacheMessages.reduce((pre, cur) => {
42
+ // pre.push(...cur.getMessages());
43
+ // return pre;
44
+ // }, [] as ChatMessages),
45
+ historyMessages: h => {
46
+ return this.getHistoryMessages({
47
+ historyMessages: startMessages,
48
+ filenames: h
49
+ });
50
+ },
51
+ attachments: plan.content.attachments,
52
+ presetMessages: plan.content.presetMessages,
53
+ presetHistoryMessages: plan.content.presetHistoryMessages,
54
+ // planList: plan.plan.content.planList,
55
+ // enableLog: true,
56
+ extension: plan.content.extension,
57
+ // idb: this.idb,
58
+ blockId: plan.content.blockId,
59
+ uuid: plan.content.uuid
60
+ });
61
+ planAgent.recover(content);
62
+ this.cacheMessages.push(planAgent);
63
+ });
64
+ if (this.cacheMessages.length) {
65
+ this.events.emit("plan", this.cacheMessages);
66
+ }
67
+ });
68
+ }
69
+ register(params) {
70
+ this.scenes[params.name] = params;
71
+ }
72
+ requestAI(params) {
73
+ var _this = this;
74
+ return _asyncToGenerator(function* () {
75
+ var _this$idb2, _this$idb3;
76
+ var {
77
+ system,
78
+ message,
79
+ emits,
80
+ blockId,
81
+ attachments = [],
82
+ presetMessages,
83
+ presetHistoryMessages,
84
+ guidePrompt,
85
+ formatUserMessage,
86
+ tools,
87
+ planList,
88
+ enableLog,
89
+ extension,
90
+ planningCheck,
91
+ insertAfter
92
+ } = params;
93
+ var startMessages = _this.cacheMessages;
94
+ var endMessages = [];
95
+ if (insertAfter) {
96
+ var insertIndex = _this.cacheMessages.findIndex(planAgent => {
97
+ return planAgent.id === insertAfter.id;
98
+ });
99
+ if (insertIndex !== -1) {
100
+ var _this$idb;
101
+ var targetBlockId = _this.cacheMessages[insertIndex].blockId;
102
+ var endIndex = insertIndex + 1;
103
+ while (endIndex < _this.cacheMessages.length && _this.cacheMessages[endIndex].blockId === targetBlockId) {
104
+ endIndex++;
105
+ }
106
+ startMessages = _this.cacheMessages.slice(0, insertIndex + 1);
107
+ var abandonedMessages = _this.cacheMessages.slice(insertIndex + 1, endIndex);
108
+ abandonedMessages.forEach(planningAgent => {
109
+ planningAgent.destroy();
110
+ });
111
+ (_this$idb = _this.idb) === null || _this$idb === void 0 || _this$idb.clear(abandonedMessages);
112
+ endMessages = _this.cacheMessages.slice(endIndex);
113
+ }
114
+ }
115
+ var planningAgent = new PlanningAgent({
116
+ requestInstance: _this.requestInstance,
117
+ tools: [getHistoryRecords()].concat(tools || Object.entries(_this.scenes).reduce((pre, _ref2) => {
118
+ var [, value] = _ref2;
119
+ pre.push(...value.tools);
120
+ return pre;
121
+ }, [])),
122
+ system: system !== null && system !== void 0 ? system : _this.system,
123
+ emits,
124
+ message,
125
+ historyMessages: h => {
126
+ return _this.getHistoryMessages({
127
+ historyMessages: startMessages,
128
+ filenames: h
129
+ });
130
+ },
131
+ formatUserMessage,
132
+ attachments,
133
+ presetMessages: presetMessages || [],
134
+ presetHistoryMessages: presetHistoryMessages || [],
135
+ guidePrompt,
136
+ planList,
137
+ enableLog: typeof enableLog === "boolean" ? enableLog : _this.enableLog,
138
+ extension,
139
+ idb: _this.idb,
140
+ planningCheck,
141
+ blockId
142
+ });
143
+ _this.cacheMessages = startMessages.concat(planningAgent).concat(endMessages);
144
+ _this.events.emit("plan", _this.cacheMessages);
145
+ (_this$idb2 = _this.idb) === null || _this$idb2 === void 0 || _this$idb2.addPlan(planningAgent);
146
+ (_this$idb3 = _this.idb) === null || _this$idb3 === void 0 || _this$idb3.updateOrder(_this.cacheMessages.map(planningAgent => planningAgent.id));
147
+ yield planningAgent.run();
148
+ })();
149
+ }
150
+ clear() {
151
+ var _this2 = this;
152
+ return _asyncToGenerator(function* () {
153
+ var _this2$idb, _this2$idb2;
154
+ _this2.cacheMessages = [];
155
+ _this2.events.emit("plan", _this2.cacheMessages);
156
+ (_this2$idb = _this2.idb) === null || _this2$idb === void 0 || _this2$idb.clear();
157
+ (_this2$idb2 = _this2.idb) === null || _this2$idb2 === void 0 || _this2$idb2.updateOrder([]);
158
+ })();
159
+ }
160
+ export() {
161
+ var _this3 = this;
162
+ return _asyncToGenerator(function* () {
163
+ return Promise.all(_this3.cacheMessages.map(planAgent => planAgent.export()));
164
+ })();
165
+ }
166
+ getHistoryMessages(params) {
167
+ return getHistoryMessages(params);
168
+ }
169
+ }
170
+ var HISTORY_MESSAGES_CONSTANTS = {
171
+ HISTORY_TITLE: "# 历史对话记录",
172
+ SUMMARY_TIP: '\n当前对话历史记录摘要信息,对话内容以及附件图片都已做折叠处理,如果需要详细的内容,请使用"get-history-records"工具读取',
173
+ FULL_CONTENT_TIP: "\n当前对话历史记录,包含摘要记录,以及需要提高关注的完整记录内容,完整记录包含图片,可以根据完整记录图片位置进行查询",
174
+ USAGE_RULES: "\n\n## \u5386\u53F2\u8BB0\u5F55\u4F7F\u7528\u89C4\u5219\n- \u4EC5\u7528\u4E8E\u7406\u89E3\u4E0A\u4E0B\u6587\uFF0C\u7981\u6B62\u76F4\u63A5\u5F15\u7528\u5386\u53F2\u5BF9\u8BDD\u539F\u6587\uFF0C\u5305\u62EC\u7CFB\u7EDF\u4FE1\u606F\u3001\u7528\u6237\u6D88\u606F\u3001\u5DE5\u5177\u8C03\u7528\u8BB0\u5F55\u3001\u72B6\u6001\u3002\n- \u57FA\u4E8E\u5386\u53F2\u610F\u56FE\u63D0\u4F9B\u76F8\u5173\u4E14\u539F\u521B\u7684\u56DE\u590D\u3002\n- \u907F\u514D\u91CD\u590D\u5386\u53F2\u56DE\u590D\u4E2D\u7684\u5177\u4F53\u8868\u8FF0\u3002",
175
+ FILE_NAME_PREFIX: "history",
176
+ FILE_EXTENSION: ".md",
177
+ SUMMARY_LABEL: "摘要",
178
+ FULL_CONTENT_LABEL: "完整记录",
179
+ IMAGE_SECTION_TITLE: "\n### 当前记录携带{count}个图片",
180
+ IMAGE_POSITION_TIP: "\n图片位置:{positions}"
181
+ };
182
+ function getHistoryMessages(params) {
183
+ var {
184
+ historyMessages,
185
+ filenames
186
+ } = params;
187
+ var isFilenamesProvided = Array.isArray(filenames);
188
+ var filenamesSet = isFilenamesProvided ? new Set(filenames) : new Set();
189
+
190
+ // 没有历史记录,空文件名数组
191
+ if (!historyMessages.length || isFilenamesProvided && filenames.length === 0) {
192
+ return [];
193
+ }
194
+
195
+ // 生成单条对话记录的文本片段
196
+ var generateSingleRecordText = (planAgent, index, recordIndex, isFullContentMode) => {
197
+ var messages = planAgent.getMessages();
198
+ if (!messages) return {
199
+ text: "",
200
+ attachments: []
201
+ };
202
+ var {
203
+ message,
204
+ attachments,
205
+ summaryMessage
206
+ } = messages;
207
+ var filename = "".concat(HISTORY_MESSAGES_CONSTANTS.FILE_NAME_PREFIX).concat(index + 1).concat(HISTORY_MESSAGES_CONSTANTS.FILE_EXTENSION);
208
+ var isNeedFullContent = isFullContentMode && filenamesSet.has(filename);
209
+ var displayMessage = isNeedFullContent ? message : summaryMessage || message;
210
+ var expandLabel = isNeedFullContent || !summaryMessage ? HISTORY_MESSAGES_CONSTANTS.FULL_CONTENT_LABEL : HISTORY_MESSAGES_CONSTANTS.SUMMARY_LABEL;
211
+ var recordText = "\n\n## \u7B2C".concat(recordIndex, "\u6761\u5BF9\u8BDD\u8BB0\u5F55") + "\n".concat(expandLabel, " \u6587\u4EF6\u540D\uFF1A").concat(filename) + "\n".concat(displayMessage);
212
+ var imageAttachments = [];
213
+ if (attachments !== null && attachments !== void 0 && attachments.length) {
214
+ recordText += HISTORY_MESSAGES_CONSTANTS.IMAGE_SECTION_TITLE.replace("{count}", attachments.length.toString());
215
+ if (isNeedFullContent) {
216
+ imageAttachments.push(...attachments.map(attachment => ({
217
+ type: "image_url",
218
+ image_url: {
219
+ url: attachment.content
220
+ }
221
+ })));
222
+ recordText += HISTORY_MESSAGES_CONSTANTS.IMAGE_POSITION_TIP.replace("{positions}", imageAttachments.map((_, idx) => "\u7B2C".concat(idx + 1, "\u4E2A")).join(","));
223
+ }
224
+ }
225
+ return {
226
+ text: recordText,
227
+ attachments: imageAttachments
228
+ };
229
+ };
230
+ var isFullContentMode = isFilenamesProvided;
231
+ var mainText = HISTORY_MESSAGES_CONSTANTS.HISTORY_TITLE + (isFullContentMode ? HISTORY_MESSAGES_CONSTANTS.FULL_CONTENT_TIP : HISTORY_MESSAGES_CONSTANTS.SUMMARY_TIP);
232
+ var allAttachments = [];
233
+ historyMessages.forEach((planAgent, index) => {
234
+ var recordIndex = index + 1; // 对话记录的序号(从1开始)
235
+ var {
236
+ text,
237
+ attachments
238
+ } = generateSingleRecordText(planAgent, index, recordIndex, isFullContentMode);
239
+ mainText += text;
240
+ allAttachments.push(...attachments);
241
+ });
242
+ mainText += HISTORY_MESSAGES_CONSTANTS.USAGE_RULES;
243
+ var content = allAttachments.length > 0 ? [{
244
+ type: "text",
245
+ text: mainText
246
+ }, ...allAttachments] : mainText;
247
+ return [{
248
+ role: "user",
249
+ content
250
+ }];
251
+ }
252
+
253
+ export { Rxai };
254
+ //# sourceMappingURL=rxai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rxai.js","sources":["../../../../../rxai/src/agent/rxai.ts"],"sourcesContent":["import { BaseAgent, BaseAgentOptions } from \"../agent/base\";\nimport { PlanningAgent } from \"../agent/planning\";\nimport { Request, RequestOptions } from \"../request/request\";\nimport { Events } from \"../utils/events\";\nimport { IDB } from \"../utils/idb\";\nimport { getHistoryRecords } from \"../tool/getHistoryRecords\";\nimport { uuid } from \"../utils/uuid\";\n\ninterface RegisterParams {\n name: string;\n tools: Tool[];\n}\n\ninterface RequestParams {\n system?: BaseAgentOptions[\"system\"];\n message: string;\n emits: Emits;\n blockId?: string;\n attachments?: Attachment[];\n presetMessages?:\n | ChatMessages\n | (() => ChatMessages)\n | (() => Promise<ChatMessages>);\n presetHistoryMessages?: ChatMessages;\n guidePrompt?: string;\n tools: Tool[];\n planList?: string[];\n enableLog?: boolean;\n extension?: unknown;\n planningCheck?: (\n bashCommands: [\n string,\n string,\n {\n [key: string]: string;\n },\n ][],\n ) =>\n | [\n string,\n string,\n {\n [key: string]: string;\n },\n ][]\n | null;\n formatUserMessage?: (userMessage: string) => string;\n insertAfter?: PlanningAgent;\n}\n\ninterface RxaiOptions {\n system?: BaseAgentOptions[\"system\"];\n request: RequestOptions;\n enableLog?: boolean;\n idb?: IDB;\n}\n\nclass Rxai extends BaseAgent {\n key = uuid();\n private cacheMessages: PlanningAgent[] = [];\n private idb?: IDB;\n\n events = new Events<{\n plan: PlanningAgent[];\n }>();\n\n // 场景\n scenes: Record<string, RegisterParams> = {};\n\n constructor(options: RxaiOptions) {\n super({\n ...options,\n requestInstance: new Request(options.request),\n });\n this.idb = options.idb;\n\n options.idb?.getPlans().then((plans) => {\n plans.forEach(({ plan, content }: any) => {\n const startMessages = [...this.cacheMessages];\n // TODO: idb类型定义补充\n const planAgent = new PlanningAgent({\n requestInstance: this.requestInstance,\n tools: [], // TODO:需要传入工具\n system: this.system,\n emits: {\n write: () => {},\n complete: () => {},\n error: () => {},\n cancel: () => {},\n },\n message: plan.content.message,\n // historyMessages: this.cacheMessages.reduce((pre, cur) => {\n // pre.push(...cur.getMessages());\n // return pre;\n // }, [] as ChatMessages),\n historyMessages: (h) => {\n return this.getHistoryMessages({\n historyMessages: startMessages,\n filenames: h,\n });\n },\n attachments: plan.content.attachments,\n presetMessages: plan.content.presetMessages,\n presetHistoryMessages: plan.content.presetHistoryMessages,\n // planList: plan.plan.content.planList,\n // enableLog: true,\n extension: plan.content.extension,\n // idb: this.idb,\n blockId: plan.content.blockId,\n uuid: plan.content.uuid,\n });\n\n planAgent.recover(content);\n\n this.cacheMessages.push(planAgent);\n });\n\n if (this.cacheMessages.length) {\n this.events.emit(\"plan\", this.cacheMessages);\n }\n });\n }\n\n register(params: RegisterParams) {\n this.scenes[params.name] = params;\n }\n\n async requestAI(params: RequestParams) {\n const {\n system,\n message,\n emits,\n blockId,\n attachments = [],\n presetMessages,\n presetHistoryMessages,\n guidePrompt,\n formatUserMessage,\n tools,\n planList,\n enableLog,\n extension,\n planningCheck,\n insertAfter,\n } = params;\n\n let startMessages = this.cacheMessages;\n let endMessages: PlanningAgent[] = [];\n\n if (insertAfter) {\n const insertIndex = this.cacheMessages.findIndex((planAgent) => {\n return planAgent.id === insertAfter.id;\n });\n\n if (insertIndex !== -1) {\n const targetBlockId = this.cacheMessages[insertIndex].blockId;\n let endIndex = insertIndex + 1;\n\n while (\n endIndex < this.cacheMessages.length &&\n this.cacheMessages[endIndex].blockId === targetBlockId\n ) {\n endIndex++;\n }\n\n startMessages = this.cacheMessages.slice(0, insertIndex + 1);\n const abandonedMessages = this.cacheMessages.slice(\n insertIndex + 1,\n endIndex,\n );\n abandonedMessages.forEach((planningAgent) => {\n planningAgent.destroy();\n });\n this.idb?.clear(abandonedMessages);\n endMessages = this.cacheMessages.slice(endIndex);\n }\n }\n\n const planningAgent = new PlanningAgent({\n requestInstance: this.requestInstance,\n tools: [getHistoryRecords()].concat(\n tools ||\n Object.entries(this.scenes).reduce((pre, [, value]) => {\n pre.push(...value.tools);\n return pre;\n }, [] as Tool[]),\n ),\n system: system ?? this.system,\n emits,\n message,\n historyMessages: (h) => {\n return this.getHistoryMessages({\n historyMessages: startMessages,\n filenames: h,\n });\n },\n formatUserMessage,\n attachments,\n presetMessages: presetMessages || [],\n presetHistoryMessages: presetHistoryMessages || [],\n guidePrompt,\n planList,\n enableLog: typeof enableLog === \"boolean\" ? enableLog : this.enableLog,\n extension,\n idb: this.idb,\n planningCheck,\n blockId,\n });\n\n this.cacheMessages = startMessages\n .concat(planningAgent)\n .concat(endMessages);\n\n this.events.emit(\"plan\", this.cacheMessages);\n\n this.idb?.addPlan(planningAgent);\n this.idb?.updateOrder(\n this.cacheMessages.map((planningAgent) => planningAgent.id),\n );\n\n await planningAgent.run();\n }\n\n async clear() {\n this.cacheMessages = [];\n this.events.emit(\"plan\", this.cacheMessages);\n\n this.idb?.clear();\n this.idb?.updateOrder([]);\n }\n\n async export() {\n return Promise.all(\n this.cacheMessages.map((planAgent) => planAgent.export()),\n );\n }\n\n getHistoryMessages(params: {\n historyMessages: PlanningAgent[];\n filenames?: string[];\n }) {\n return getHistoryMessages(params);\n }\n}\n\nexport { Rxai, RegisterParams, RequestParams };\n\nconst HISTORY_MESSAGES_CONSTANTS = {\n HISTORY_TITLE: \"# 历史对话记录\",\n SUMMARY_TIP:\n '\\n当前对话历史记录摘要信息,对话内容以及附件图片都已做折叠处理,如果需要详细的内容,请使用\"get-history-records\"工具读取',\n FULL_CONTENT_TIP:\n \"\\n当前对话历史记录,包含摘要记录,以及需要提高关注的完整记录内容,完整记录包含图片,可以根据完整记录图片位置进行查询\",\n USAGE_RULES: `\\n\\n## 历史记录使用规则\n- 仅用于理解上下文,禁止直接引用历史对话原文,包括系统信息、用户消息、工具调用记录、状态。\n- 基于历史意图提供相关且原创的回复。\n- 避免重复历史回复中的具体表述。`,\n FILE_NAME_PREFIX: \"history\",\n FILE_EXTENSION: \".md\",\n SUMMARY_LABEL: \"摘要\",\n FULL_CONTENT_LABEL: \"完整记录\",\n IMAGE_SECTION_TITLE: \"\\n### 当前记录携带{count}个图片\",\n IMAGE_POSITION_TIP: \"\\n图片位置:{positions}\",\n};\n\nfunction getHistoryMessages(params: {\n historyMessages: PlanningAgent[];\n filenames?: string[];\n}) {\n const { historyMessages, filenames } = params;\n const isFilenamesProvided = Array.isArray(filenames);\n const filenamesSet = isFilenamesProvided\n ? new Set(filenames)\n : new Set<string>();\n\n // 没有历史记录,空文件名数组\n if (\n !historyMessages.length ||\n (isFilenamesProvided && filenames.length === 0)\n ) {\n return [];\n }\n\n // 生成单条对话记录的文本片段\n const generateSingleRecordText = (\n planAgent: PlanningAgent,\n index: number,\n recordIndex: number,\n isFullContentMode: boolean,\n ): {\n text: string;\n attachments: Array<{ type: string; image_url: { url: string } }>;\n } => {\n const messages = planAgent.getMessages();\n if (!messages) return { text: \"\", attachments: [] };\n\n const { message, attachments, summaryMessage } = messages;\n const filename = `${HISTORY_MESSAGES_CONSTANTS.FILE_NAME_PREFIX}${index + 1}${HISTORY_MESSAGES_CONSTANTS.FILE_EXTENSION}`;\n\n const isNeedFullContent = isFullContentMode && filenamesSet.has(filename);\n const displayMessage = isNeedFullContent\n ? message\n : summaryMessage || message;\n const expandLabel =\n isNeedFullContent || !summaryMessage\n ? HISTORY_MESSAGES_CONSTANTS.FULL_CONTENT_LABEL\n : HISTORY_MESSAGES_CONSTANTS.SUMMARY_LABEL;\n\n let recordText =\n `\\n\\n## 第${recordIndex}条对话记录` +\n `\\n${expandLabel} 文件名:${filename}` +\n `\\n${displayMessage}`;\n\n const imageAttachments: Array<{\n type: string;\n image_url: { url: string };\n }> = [];\n if (attachments?.length) {\n recordText += HISTORY_MESSAGES_CONSTANTS.IMAGE_SECTION_TITLE.replace(\n \"{count}\",\n attachments.length.toString(),\n );\n\n if (isNeedFullContent) {\n imageAttachments.push(\n ...attachments.map((attachment) => ({\n type: \"image_url\",\n image_url: { url: attachment.content },\n })),\n );\n\n recordText += HISTORY_MESSAGES_CONSTANTS.IMAGE_POSITION_TIP.replace(\n \"{positions}\",\n imageAttachments.map((_, idx) => `第${idx + 1}个`).join(\",\"),\n );\n }\n }\n\n return { text: recordText, attachments: imageAttachments };\n };\n\n const isFullContentMode = isFilenamesProvided;\n let mainText =\n HISTORY_MESSAGES_CONSTANTS.HISTORY_TITLE +\n (isFullContentMode\n ? HISTORY_MESSAGES_CONSTANTS.FULL_CONTENT_TIP\n : HISTORY_MESSAGES_CONSTANTS.SUMMARY_TIP);\n const allAttachments: Array<{ type: string; image_url: { url: string } }> =\n [];\n\n historyMessages.forEach((planAgent, index) => {\n const recordIndex = index + 1; // 对话记录的序号(从1开始)\n const { text, attachments } = generateSingleRecordText(\n planAgent,\n index,\n recordIndex,\n isFullContentMode,\n );\n mainText += text;\n allAttachments.push(...attachments);\n });\n\n mainText += HISTORY_MESSAGES_CONSTANTS.USAGE_RULES;\n\n const content =\n allAttachments.length > 0\n ? [{ type: \"text\", text: mainText }, ...allAttachments]\n : mainText;\n\n return [{ role: \"user\", content }];\n}\n"],"names":["Rxai","BaseAgent","constructor","options","_options$idb","_objectSpread","requestInstance","Request","request","_defineProperty","uuid","Events","idb","getPlans","then","plans","forEach","_ref","plan","content","startMessages","cacheMessages","planAgent","PlanningAgent","tools","system","emits","write","complete","error","cancel","message","historyMessages","h","getHistoryMessages","filenames","attachments","presetMessages","presetHistoryMessages","extension","blockId","recover","push","length","events","emit","register","params","scenes","name","requestAI","_this","_asyncToGenerator","_this$idb2","_this$idb3","guidePrompt","formatUserMessage","planList","enableLog","planningCheck","insertAfter","endMessages","insertIndex","findIndex","id","_this$idb","targetBlockId","endIndex","slice","abandonedMessages","planningAgent","destroy","clear","getHistoryRecords","concat","Object","entries","reduce","pre","_ref2","value","addPlan","updateOrder","map","run","_this2","_this2$idb","_this2$idb2","export","_this3","Promise","all","HISTORY_MESSAGES_CONSTANTS","HISTORY_TITLE","SUMMARY_TIP","FULL_CONTENT_TIP","USAGE_RULES","FILE_NAME_PREFIX","FILE_EXTENSION","SUMMARY_LABEL","FULL_CONTENT_LABEL","IMAGE_SECTION_TITLE","IMAGE_POSITION_TIP","isFilenamesProvided","Array","isArray","filenamesSet","Set","generateSingleRecordText","index","recordIndex","isFullContentMode","messages","getMessages","text","summaryMessage","filename","isNeedFullContent","has","displayMessage","expandLabel","recordText","imageAttachments","replace","toString","attachment","type","image_url","url","_","idx","join","mainText","allAttachments","role"],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ class RxaiError extends Error {
2
+ constructor(message,
3
+ /**
4
+ * 错误类型
5
+ * request - 请求错误
6
+ * retry - 该错误类型支持一键从0开始重试
7
+ * tool - 工具执行错误
8
+ */
9
+ _type, _display) {
10
+ super(typeof message === "string" ? message : message instanceof Error ? message.message : "未知错误");
11
+ this._type = _type;
12
+ this._display = _display;
13
+ Object.setPrototypeOf(this, RxaiError.prototype);
14
+ this.name = this.constructor.name;
15
+ }
16
+ get type() {
17
+ return this._type;
18
+ }
19
+ get display() {
20
+ return this._display || this.message;
21
+ }
22
+ toJSON() {
23
+ return {
24
+ message: this.message,
25
+ stack: this.stack,
26
+ type: this._type,
27
+ display: this._display
28
+ };
29
+ }
30
+ recover(params) {
31
+ if (params !== null && params !== void 0 && params.stack) {
32
+ this.stack = params.stack;
33
+ }
34
+ return this;
35
+ }
36
+ }
37
+
38
+ export { RxaiError };
39
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sources":["../../../../../rxai/src/error/base.ts"],"sourcesContent":["class RxaiError extends Error {\n constructor(\n message: unknown,\n /**\n * 错误类型\n * request - 请求错误\n * retry - 该错误类型支持一键从0开始重试\n * tool - 工具执行错误\n */\n private _type: \"request\" | \"retry\" | \"tool\",\n private _display?: string,\n ) {\n super(\n typeof message === \"string\"\n ? message\n : message instanceof Error\n ? message.message\n : \"未知错误\",\n );\n Object.setPrototypeOf(this, RxaiError.prototype);\n this.name = this.constructor.name;\n }\n\n get type() {\n return this._type;\n }\n\n get display() {\n return this._display || this.message;\n }\n\n toJSON() {\n return {\n message: this.message,\n stack: this.stack,\n type: this._type,\n display: this._display,\n };\n }\n\n recover(params: any) {\n if (params?.stack) {\n this.stack = params.stack;\n }\n return this;\n }\n}\n\nexport { RxaiError };\n"],"names":["RxaiError","Error","constructor","message","_type","_display","Object","setPrototypeOf","prototype","name","type","display","toJSON","stack","recover","params"],"mappings":"AAAA,MAAMA,SAAS,SAASC,KAAK,CAAC;AAC5BC,EAAAA,WAAWA,CACTC,OAAgB;AAChB;AACJ;AACA;AACA;AACA;AACA;EACYC,KAAmC,EACnCC,QAAiB,EACzB;AACA,IAAA,KAAK,CACH,OAAOF,OAAO,KAAK,QAAQ,GACvBA,OAAO,GACPA,OAAO,YAAYF,KAAK,GACtBE,OAAO,CAACA,OAAO,GACf,MACR,CAAC;IAAC,IAAA,CATMC,KAAmC,GAAnCA,KAAmC;IAAA,IAAA,CACnCC,QAAiB,GAAjBA,QAAiB;IASzBC,MAAM,CAACC,cAAc,CAAC,IAAI,EAAEP,SAAS,CAACQ,SAAS,CAAC;AAChD,IAAA,IAAI,CAACC,IAAI,GAAG,IAAI,CAACP,WAAW,CAACO,IAAI;AACnC,EAAA;EAEA,IAAIC,IAAIA,GAAG;IACT,OAAO,IAAI,CAACN,KAAK;AACnB,EAAA;EAEA,IAAIO,OAAOA,GAAG;AACZ,IAAA,OAAO,IAAI,CAACN,QAAQ,IAAI,IAAI,CAACF,OAAO;AACtC,EAAA;AAEAS,EAAAA,MAAMA,GAAG;IACP,OAAO;MACLT,OAAO,EAAE,IAAI,CAACA,OAAO;MACrBU,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBH,IAAI,EAAE,IAAI,CAACN,KAAK;MAChBO,OAAO,EAAE,IAAI,CAACN;KACf;AACH,EAAA;EAEAS,OAAOA,CAACC,MAAW,EAAE;AACnB,IAAA,IAAIA,MAAM,KAAA,IAAA,IAANA,MAAM,eAANA,MAAM,CAAEF,KAAK,EAAE;AACjB,MAAA,IAAI,CAACA,KAAK,GAAGE,MAAM,CAACF,KAAK;AAC3B,IAAA;AACA,IAAA,OAAO,IAAI;AACb,EAAA;AACF;;;;"}
@@ -0,0 +1,11 @@
1
+ var fileFormat = params => {
2
+ var {
3
+ fileName,
4
+ content
5
+ } = params;
6
+ var suffix = fileName.split(".").pop();
7
+ return "\n ```".concat(suffix, " title=\"").concat(fileName, "\"\n ").concat(content, "\n ```\n ");
8
+ };
9
+
10
+ export { fileFormat };
11
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sources":["../../../../../rxai/src/prompt/base.ts"],"sourcesContent":["interface FileFormatParams {\n fileName: string;\n content: string;\n}\n\nconst fileFormat = (params: FileFormatParams) => {\n const { fileName, content } = params;\n const suffix = fileName.split(\".\").pop();\n return `\n \\`\\`\\`${suffix} title=\"${fileName}\"\n ${content}\n \\`\\`\\`\n `;\n};\n\nexport { fileFormat };\n"],"names":["fileFormat","params","fileName","content","suffix","split","pop","concat"],"mappings":"AAKA,IAAMA,UAAU,GAAIC,MAAwB,IAAK;EAC/C,IAAM;IAAEC,QAAQ;AAAEC,IAAAA;AAAQ,GAAC,GAAGF,MAAM;EACpC,IAAMG,MAAM,GAAGF,QAAQ,CAACG,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,EAAE;EACxC,OAAA,SAAA,CAAAC,MAAA,CACQH,MAAM,EAAA,WAAA,CAAA,CAAAG,MAAA,CAAWL,QAAQ,EAAA,QAAA,CAAA,CAAAK,MAAA,CAC/BJ,OAAO,EAAA,aAAA,CAAA;AAGX;;;;"}