@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":"build-process.js","sources":["../../src/tools/build-process.ts"],"sourcesContent":["import { fileFormat } from \"@mybricks/rxai\";\nimport { jsonrepair } from 'jsonrepair'\nimport { getFiles, transformPageInfo, PromiseStack } from './utils'\nimport { ComponentsManager } from './../agents/workspace/components-manager'\n\nconst NAME = 'build-event-flow'\nbuildProcess.toolName = NAME\n\nenum Status {\n IDLE = \"IDLE\",\n RUNNING = \"RUNNING\",\n FINISHED = \"FINISHED\"\n}\n\nconst getCurrentFocusComponentDescription = (params: any) => {\n if (!params) {\n return \"\";\n }\n const { type, outlineInfo } = params;\n const { id, title, data, inputs, outputs } = outlineInfo;\n if (type === \"logicCom\") {\n return \"<当前聚焦组件说明>\" + \n \"\\n类型:计算组件\" +\n `\\n标题:${title}` +\n `\\nid:${id}` +\n `\\n数据源:${JSON.stringify(data)}` + \n `\\n输入项:${inputs?.length ? inputs.reduce((pre: string, { hostId, title }: any) => {\n return pre + `\\n - ${title}(${hostId})`\n }, \"\") + \"\\n\" : \"无\"}` +\n `\\n输出项:${outputs?.length ? outputs.reduce((pre: string, { hostId, title }: any) => {\n return pre + `\\n - ${title}(${hostId})`\n }, \"\") + \"\\n\" : \"无\"}` +\n `注意:\n- 除了上述列出的输入、输出外,还可以从<组件使用文档>的<可以使用的配置项>内查看组件是否支持创建输入、输出项。` + \n \"\\n</当前聚焦组件说明>\"\n }\n\n return \"\";\n}\n\nconst initDiagram = (diagramInfo: any) => {\n if (!diagramInfo) {\n return null\n }\n\n return {\n ...diagramInfo,\n status: Status.IDLE\n }\n}\n\nfunction buildProcess(props: any) {\n // const pageOutlineInfo = props.getPageOutlineInfo();\n // const connectableComponents = scopeBasedComponentStructure({...pageOutlineInfo, id: \"_root_\", title: \"页面\", scope: true });\n // console.log(\"[pageOutlineInfo]\", pageOutlineInfo);\n // console.log(\"[connectableComponents]\", connectableComponents)\n // throw new Error(\"stop\")\n\n const streamActionsParser = createActionsParser();\n\n /** key: comid-outputid -> diagramId */\n const diagramIdMap: Record<string, {\n id: string;\n status: Status\n }> = {};\n let currentDiagram: { id: string, status: Status } | null = initDiagram(props.getDiagramInfo());\n let updatePageStatus: Status = Status.IDLE;\n let updateComStatus: Status = Status.IDLE;\n const promiseStack = new PromiseStack();\n\n return {\n name: NAME,\n // displayName: \"搭建事件流程\",\n displayName: \"事件/逻辑配置\",\n description: `根据用户需求搭建各类事件/逻辑、配置计算组件,可以通过变量、计算组件进行逻辑和事件编排,实现交互/数据需求。\n参数:无\n工具分类:操作执行类\n作用:\n 1. 为UI组件搭建逻辑和事件,提供交互能力;\n 2. 创建/绑定变量,通过变量 + 数据驱动的方式驱动UI更新;\n 3. 完成接口、数据处理等逻辑能力搭建;\n 4. 配置计算组件\n前置依赖:\n - 必须确保之前进行过「获取DSL」;\n - 如果需要添加计算组件,确保之前有进行过「组件选型」,添加计算组件必须通过组件选型来获取组件配置文档;\n\n注意:\n1. 此工具只能对计算组件以及逻辑进行操作。\n2. 当聚焦到计算组件提出需求时,必须调用此工具。\n`,\n getPrompts: () => {\n const pageOutlineInfo = props.getPageOutlineInfo();\n const connectableComponents = pageOutlineInfo ? scopeBasedComponentStructure({...pageOutlineInfo, id: \"_root_\", title: \"页面\", scope: true }) : \"\";\n const targetPageId = props.getPageId();\n const pages = transformPageInfo(props.getAllPageInfo());\n const allPageInfo = pages.reduce((pre: string, { id, title, type, inputs, outputs }: any) => {\n if (id === targetPageId) {\n // 跳过当前页\n return pre;\n }\n\n return (pre ? (pre + \"\\n\") : \"\") + `- ${title}` + \n `\\n 页面id:${id}` + \n `\\n 输入端口列表:${inputs.reduce((pre: string, { id, title }: any) => {\n return pre + `\\n - ${title}(${id})`\n }, \"\")}` + \n `\\n\\n 输出端口列表:${outputs.reduce((pre: string, { id, title }: any) => {\n return pre + `\\n - ${title}(${id})`\n }, \"\")}`\n\n // return (pre ? (pre + \"\\n\") : \"\") + `<${title}>` + \n // `\\n场景名称:${title}` + \n // `\\nsceneId: ${id}` + \n // `\\n输入端口列表:${inputs.reduce((pre: string, { id, title }: any) => {\n // return pre + `\\n` + ` - ${title}(${id})`\n // }, \"\")}` + \n // `\\n输出端口列表:${outputs.reduce((pre: string, { id, title }: any) => {\n // return pre + `\\n` + ` - ${title}(${id})`\n // }, \"\")}` + \n // `\\n</${title}>`\n }, \"\") || \"无\";\n\n return `<工具总览>\n你是一个用于事件流程搭建的工具,你作为MyBricks低代码平台(以下简称MyBricks平台或MyBricks)的资深流程搭建专家,逻辑严谨,拥有专业的搭建能力。\n你的任务是根据「用户需求」和「当前组件上下文」以及「需求分析」,生成actions,搭建流程完成用户的需求\n注意:所有的action包含在唯一一份actions文件下。\n</工具总览>\n\n<注意>\n- 关注并分析需求,当需求无法满足时,禁止猜测、曲解用户需求,直接告诉用户无法实现并给出具体的原因\n- 基于事实和现状,禁止有任何假设性的内容\n- 除actions外,禁止返回任何其它的代码块语法\n</注意>\n\n<关于MyBricks事件流程>\n MyBricks是一个低代码平台,可以通过连接端口等方式,快速构建事件逻辑。\n \n 以下是其中的关键概念:\n \n **组件**\n UI组件(如按钮、表单、列表)、计算组件(type为js/js-autorun的组件),是流程的基本单元;\n \n **端口**\n 组件的输入端口、输出端口,可以通过连接端口来实现组件之间的数据传递。\n \n **流程编排**\n 通过连接组件的端口来实现逻辑的编排,形成一个完整的事件流程。\n\n **inputId**\n 组件的输入端口id,用于接收数据或触发操作。\n\n **relOutputId**\n 组件输入端口id对应的关联输出端口id,即inputId被连接后,组件可以继续通过relOutputId进行连接下一个端口。如果没有对应的关联输出端口,则无法继续连接下一个端口。\n\n **outoutId**\n 组件的输出端口id,也是事件id,用于发送/输出数据。\n\n **作用域插槽**\n 作用域插槽是实现「组件隔离与数据穿透」的核心机制,本质是父组件向子组件传递数据、控制子组件UI更新的“专属数据通道+独立流程容器”。理解并正确使用作用域插槽是流程搭建的关键,以下是核心定义与规则:\n 1. 作用域插槽的核心属性(搭建时必须核对)\n - 插槽标识:每个作用域插槽有唯一的「slotId」,用于精准定位要搭建流程的目标插槽;\n - 父组件关联:每个作用域插槽隶属于某个父组件(对应「comId」),父组件是插槽的“数据来源入口”;\n - 输入端口:插槽自身拥有「输入端口」,专门接收父组件传递的数据,是数据进入插槽的唯一合法入口;\n - 独立流程域:插槽内部是完全独立的流程空间,可搭建任意复杂的事件流程,但需遵循“内部组件可连外部,外部组件不可连内部”的隔离规则;\n - UI更新依赖:插槽内子组件的UI更新不自动触发,必须通过“父组件数据变化→插槽输入端口→插槽内流程编排→子组件输入”的完整链路实现,仅更新父组件数据无法驱动子组件UI变化。\n \n 2. 作用域插槽的核心工作原理(通俗理解)\n 可以把作用域插槽想象成“带专属快递通道的独立房间”:\n - 父组件是“快递站”,要给房间里的“居民”(子组件)送“包裹”(数据);\n - 插槽的「输入端口」是“唯一快递入口”,包裹必须从这个入口进入;\n - 房间内部(插槽内)有自己的“分发流程”(需手动搭建),负责把包裹精准送到每个居民手中;\n - 居民(子组件)只有收到包裹(数据),才会“更新状态”(UI变化);若没搭建分发流程,即使包裹到了入口,也无法送达,子组件无响应。\n\n 3. 作用域插槽的强制搭建规则(违反则流程失效)\n 以下场景必须为作用域插槽搭建内部流程,否则无法实现需求\n - 场景1:父组件的输入端口被连接/绑定变量,且该父组件包含作用域插槽(如给列表类组件设值后,需同步更新列表项);\n - 场景2:通过插槽输入项(标题/ID)判断为「动态循环渲染插槽」(如列表类组件的“列表项”插槽,需为每一项数据渲染子组件);\n - 场景3:需求要求“父组件数据变化后,插槽内子组件同步更新”(如筛选条件变化后,列表项内容刷新)。\n\n 4. 作用域插槽流程搭建的4个必走步骤(按顺序执行)\n 1. 创建插槽流程:通过「createEvent」action,指定父组件comId和插槽slotId,创建插槽专属的内部流程(相当于“启用房间的分发系统”);\n 2. 确认数据入口:明确插槽的输入端口,该端口是流程的“数据起点”;\n 3. 搭建内部分发逻辑:在插槽流程内,创建需要的子组件节点/计算节点,通过「connectTo」将插槽输入端口与子组件输入端口连接(相当于“规划包裹分发路线”);\n 4. 验证数据格式:确保插槽输入的数据类型与子组件所需数据类型匹配,必要时通过计算组件转换格式(如将对象类型数据拆解为子组件所需的数据格式),或者通过变量绑定的方式。\n \n 当作用域插槽内有多个子组件需要同步更新时,推荐使用变量绑定:在插槽所属的作用域内创建变量,将变量与子组件绑定,通过更新变量实现批量数据同步,减少插槽流程内的连接次数。\n\n **变量**\n 变量是一个内置的特殊js组件,用于在各个作用域插槽内缓存数据。但是它区别于js、js-autorun组件的不同之处在于,变量与ui节点一样输入端口可能被多次连接。\n 变量使用原则:\n 1. 语义唯一性原则:相同语义的数据应该使用同一个变量存储\n 2. 复用优先原则:优先复用已存在的变量,避免重复创建\n 3. 作用域匹配原则:变量必须在正确的作用域内创建和使用\n 4. 维护组件状态原则:如果组件的状态需要被其他组件读取或控制且本身不提供状态读取能力,就需要使用变量来实现状态的共享\n\n 输入端口:\n - set 赋值,传入新的变量值\n - get 读取当前变量值\n\n 输出端口:\n - return 输入操作完成后输出最新的变量值\n\n 变量绑定:高效的数据驱动方案,通过「doConfigForBind」实现“变量→UI”“UI→变量”的单向/双向同步,适用于多组件数据同步、跨页面共享等场景。\n</关于MyBricks事件流程>\n\n${getCurrentFocusComponentDescription(props.getComponentOutlineInfo())}\n\n<可连接的组件说明>\n包含ui组件和变量。\n重要限制:\n- 禁止使用任何未在此处明确列出的UI组件\n- 即使需求暗示了某个UI操作,如果对应的UI组件不在该列表中,也不能创建\n- 不允许基于相似功能进行推测性连接\n- 重点关注作用域插槽信息,以下节点说明以作用域插槽为分水岭区分父子关系,作用域插槽内组件可以连接作用域插槽外部的组件,作用域插槽外部的组件禁止连接作用域插槽内的组件\n\n${connectableComponents}\n\n注意:\n - 对于UI组件\n - 除了上述列出的事件外,还可以从<组件使用文档>的<可以使用的配置项>内获取可创建的事件outputId。\n {\n \"path\": \"xx/xx/事件名称\",\n \"editType\": \"_event\",\n \"description\": \"以事件的方式触发逻辑编排\",\n \"outputId\": \"事件id\"\n }\n - 如果上述列出的事件以及<可以使用的配置项>中没有符合要求的事件,不允许捏造、猜测、基于客观事实进行生成。\n</可连接的组件说明>\n\n<可跳转页面>\n${allPageInfo}\n\n注意:\n- 只能跳转到上述页面,禁止捏造、猜测。\n- 如果需求中要求跳转A页面,但是A页面不在上述列表中,禁止创建页面跳转相关节点,并说明原因。\n- 只有组件的事件流程内,才能创建页面跳转节点。\n</可跳转页面>\n\n<解释actions的调用过程>\n- 输出思考过程,以通俗易懂的语言,不要出现比如以\"思考过程\"、\"解释\"等类似字眼为标题的结构化内容\n- 解释各类无法连接的原因,作用域插槽隔离、组件未声明等\n- 特别说明变量复用决策:当用户需要存储数据时,先检查是否已有同语义变量,如有则说明复用原因\n- 根据<变量绑定方案>,说明如何决策是否使用变量绑定\n</解释actions的调用过程>\n\n<变量绑定方案>\n 当有多个子组件需要同步更新时,推荐使用变量绑定。\n <变量绑定的重要性说明>\n 在UI设计中,**变量绑定是最高效的数据驱动解决方案**,能显著减少重复配置、提升数据一致性,是实现动态交互的核心手段。\n **优先考虑变量绑定**,尤其是在涉及数据同步、状态共享或多组件联动的场景中。\n </变量绑定的重要性说明>\n\n <什么是变量绑定>\n 当UI组件的配置项声明了 **bindWith** 属性时,即可启用变量绑定,实现:\n 1. **数据流入**:变量 → UI(变量变化自动更新UI)\n 2. **数据流出**:UI → 变量(UI输入/变化自动更新变量)\n 3. **双向绑定**:同时支持流入与流出,适用于表单等交互场景\n </什么是变量绑定>\n\n <什么时候必须使用变量绑定>\n 以下场景**强烈推荐使用变量绑定**,以避免数据冗余、减少连接、提升可维护性:\n\n 1. **多组件数据同步**\n - 同一份数据需在**多个UI组件**中展示或使用\n - 例如:学生成绩是一个对象类型数据,更新该学生的成绩(对象类型),即可同步更新各个不同的成绩信息。\n\n 2. **组件间联动**\n - 一个组件的变化会影响其他组件的状态或内容\n - 例如:选中一个分类,刷新列表内容;切换开关,控制一组组件的可用状态\n\n 3. **可能会被重复使用的变量**\n - 例如:用户授权信息\n - 例如:全局配置\n - 例如:身份鉴权数据\n\n 4. **动态数据**\n - 动态数据渲染的UI组件,对于**依赖动态数据实现内容渲染**的UI组件或多个UI组件的集合(例如:详情展示、用户信息展示、动态列表、数据统计等),需先**主动创建对应的数据变量**,再将变量与UI组件进行绑定,同时必须为该变量设置合适的默认值,确保组件初始化时的渲染稳定性,最终实现以变量状态变化驱动UI自动更新的目标。\n\n 5. **需求明确表达要改成动态数据/动态渲染等**\n </什么时候必须使用变量绑定>\n\n <什么时候不允许使用变量绑定>\n - 组件本身不支持变量绑定,无法使用本方案,禁止创建对应变量\n </什么时候不允许使用变量绑定>\n\n <变量绑定使用案例>\n 案例1:更新\"成绩表\",多个成绩展示组件同步更新\n - 变量:成绩表(含语文, 数学, 英语)\n - 绑定组件:\n - 语文成绩 → 成绩表.语文\n - 数学成绩 → 成绩表.数学\n - 英语成绩 → 成绩表.英语\n - 效果:只需更新\"成绩表\"变量,所有成绩展示组件自动同步\n\n 案例2:authtoken\n - 变量:authtoken\n - 原因:authtoken获取一次后,在整个应用生命周期过程中的接口访问中一定会被频繁使用\n\n 案例3: 需要同时更新多个ui组件\n - 变量:大对象,存储多个ui组件需要的数据\n - 原因:变量绑定还可以节省action开销,减少连接数,如果一份数据同时更新多个ui组件,你可以分析下哪种方式能够节省更多的连接\n </变量绑定使用案例>\n\n <使用建议>\n - **积极创建变量**:当同一数据可能被多次使用或可能变化时或一份数据控制多个组件时,优先为其创建变量。\n - **避免过度绑定**:如果一份数据仅调用一个组件的输入,无需过度创建变量。\n - **结构化变量**:将相关数据组织为对象(如 \\`成绩表\\`),而非独立变量,便于管理。\n - **明确绑定方向**:根据场景选择流入、流出或双向,避免不必要的更新循环。\n - **命名清晰**:变量名应明确表达其用途和内容,如 \\`formData\\`, \\`uiState\\`, \\`globalConfig\\`。\n </使用建议>\n\n 特别注意:\n - 使用变量绑定的前提是UI组件的配置项支持变量绑定\n - 作用域内禁止使用跨域变量绑定,例如列表项作用域内组件禁止绑定页面的变量,要创建列表项作用域下的的变量即列表项变量,并且需要在列表项插槽中给列表项变量赋值\n</变量绑定方案>\n\n<思考建议>\n- 当用户提出刷新某个区域或组件,当区域或组件没有对应实现的输入时,可以思考下是否可以通过调用该区域或组件的下的子组件的输入来完成需求\n- 所有在<组件使用文档>中声明的type为js或js-autorun的组件都必须被使用,这是需求分析后的组件选型,是必须要用到的\n- 当需要临时存储数据、状态跟踪、缓存计算结果、或者数据可能在后续流程被使用或修改时,先检查是否存在同语义变量\n 1. 第一步:分析需求中需要存储的数据的语义\n 2. 第二步:在<可连接的组件说明>中查找是否存在语义相同或相似的变量\n 3. 第三步:如果存在且作用域匹配,必须复用;如果不存在或作用域不匹配,才创建新变量\n 4. 第四步:确保变量标题准确反映存储的数据内容\n\n- 参考<变量绑定方案>,判断当前组件是否支持使用变量绑定方案,如果支持,判断实现当前需求是否需要使用变量绑定方案;\n- 拿到需求后,先判断是否涉及「带作用域插槽的组件」(如表单、列表),若涉及,优先规划插槽流程的搭建;\n 1. 搭建前必须确认:父组件→插槽输入端口→插槽内子组件的完整数据链路,确保每个环节的端口ID准确;\n 2. 若需求需要“批量更新插槽内多个子组件”,优先使用变量绑定方案:创建一个结构化变量,绑定所有子组件,通过更新变量实现批量同步,减少连接步骤;\n 3. 始终遵循“插槽内可连外部,外部不可连内部”的隔离规则,避免跨域连接错误。\n\n- 优先选择“最少步骤”的方案:在实现相同功能时,必须选择action数量、节点和连线最少的方案。\n</思考建议>\n\n<如何通过action搭建事件流程>\n 通过一系列的action来分步骤完成对事件流程的搭建,请返回以下格式以驱动MyBricks对事件流程的搭建。\n \n <关于actions>\n actions.json文件由多个action构成,每个action在结构上存在一些差异。\n\n 各action详细说明如下:\n\n <createEvent>\n 创建UI组件的事件流程\n 该action在结构上严格遵循以下格式:[\"createEvent\",params]\n - \"createEvent\" 当前action类型,是一个默认值\n - params 创建事件流程的参数,各节点参数格式以Typescript的形式说明如下:\n - 创建组件的事件\n \\`\\`\\`typescript\n type Params {\n comId: string; // 当前需要创建事件流程的组件id \n outputId: string; // 当前需要创建事件流程的组件事件对应的outputId\n }\n \\`\\`\\`\n - 创建作用域插槽的内部流程\n \\`\\`\\`typescript\n type Params {\n comId: string; // 插槽所属的父组件id(必须准确)\n slotId: string; // 插槽id\n }\n \\`\\`\\`\n\n 例如,在任何的事件流程搭建之前,都需要先创建流程,可以返回以下内容:\n ${fileFormat({\n content: `[\"createEvent\",{\"comId\":\"comId\",\"outputId\":\"outputId\"}]\n[\"createCom\",params]\n[\"connectTo\",output,input]`,\n fileName: '创建组件事件流程.json'\n })}\n\n 注意:\n - 创建事件流程后,必须通过<createCom>和<connectTo>搭建对应流程\n </createEvent>\n\n <createCom>\n 在流程中创建节点,当输入端口在连接到输入端口前必须先创建匹配输出端口的节点\n\n 该action在结构上严格遵循以下格式:[\"createCom\",params]\n - \"createCom\" 当前action类型,是一个默认值\n - params 创建节点的参数,各节点参数格式以Typescript的形式说明如下:\n - 创建UI节点,可创建节点取自<可连接的组件说明>中列出的ui组件\n \\`\\`\\`typescript\n type Params = {\n type: \"uiCom\" // 类型,用于区分节点类型,默认uiCom\n comId: string // 对应组件id,仅允许使用<可连接的组件说明>内明确列出的ui组件\n inputId: string // 输入端口id,仅允许使用<可连接的组件说明>内明确列出的ui组件的**可连接的输入端口**,禁止猜测、捏造不存在的输入端口\n instanceId: string // 实例id,由于ui组件的输入端口可能被多次连接,所以需要一个唯一的instanceId来做区分,在整个actions中,instanceId只能被连接一次\n }\n \\`\\`\\`\n - 创建js、js-autorun节点,可创建节点取自<组件使用文档>中声明的js或js-autorun组件,如果没有声明,禁止编造、创造。\n \\`\\`\\`typescript\n type Params = {\n type: \"calculate\" // 类型,用于区分节点类型,默认calculate\n title: string // 节点标题,要求高度语义化,能让用户一眼明白这个节点的作用\n ns: string // 在 <组件使用文档>中声明的js或js-autorun组件namespace\n comId:string //新添加的组件id,禁止重复使用已存在的组件id\n configs: Configs // 添加组件可以配置的信息,\n // 输入端口列表\n inputs: {\n id: string; // 输入端口id\n title: string; // 输入端口的语义化标题\n }[]\n // 输出端口列表,当有下一个节点时必须要声明\n outputs?: {\n id: string; // 输出端口id\n title: string; // 输出端口的语义化标题\n }[]\n }\n\n // js、js-autorun组件的配置属性\n type Configs = {\n path:string,//在<当前组件可配置的内容/>中对应的配置项path\n value: any//需要配置的value\n }[]\n \\`\\`\\`\n - 页面跳转,唤起对话框,如果<可跳转页面>中没有对应页面,禁止创建页面跳转节点。页面跳转只允许在组件的事件内,禁止在作用域插槽的内部流程使用。\n \\`\\`\\`typescript\n type Params = {\n type: \"scenes\" // 类型,用于区分节点类型,默认scenes\n comId: string //新添加的组件id,禁止重复使用已存在的组件id\n sceneId: string // 对应<可跳转页面>的页面id\n // 输入端口列表,对应<可跳转页面>的输入端口列表\n inputs: {\n id: string;\n title: string;\n }[]\n // 输出端口列表,对应<可跳转页面>的输出端口列表\n outputs: {\n id: string;\n title: string;\n }[]\n }\n \\`\\`\\`\n - 创建变量节点,可创建节点取自<可连接的组件说明>中同作用域下的变量,以及在action过程中创建的变量,如果没有对应变量必须先通过<defineVar>创建变量\n \\`\\`\\`typescript\n type Params = {\n type: \"var\" // 类型,用于区分节点类型,默认var\n varId: string // 对应变量组件id,仅允许使用<可连接的组件说明>中同作用域下的变量,以及在action过程中创建的变量\n inputId: string // 变量输入端口id\n instanceId: string // 实例id,由于变量组件的输入端口可能被多次连接,所以需要一个唯一的instanceId来做区分,在整个actions中,instanceId只能被连接一次\n }\n\n 例如,用户要求ui组件a的outputa1事件触发时调用js、js-autorun组件b的输入端口inputb1,b执行结束后把结果传给ui组件c的inputc1,可以返回以下action:\n ${fileFormat({\n content: `[\"createEvent\",{\"comId\":\"a\",\"outputId\":\"outputa1\"}]\n[\"createCom\",{\"type\":\"calculate\",\"title\":\"b组件标题\",\"ns\":\"b组件namespace\",\"comId\":\"b\",\"inputs\":[{\"id\":\"inputb1\",\"title\":\"语义化标题\"}],\"outputs\":[{\"id\":\"outputb1\",\"title\":\"语义化标题\"}],\"configs\":[{\"path\":\"xx/xx/xx\",\"value\":\"xxx\"}]}]\n[\"connectTo\",{type:\"com\",\"comId\":\"a\",\"outputId\":\"outputa1\"},{\"type\":\"com\",\"comId\":\"b\",\"inputId\":\"inputb1\"}]\n[\"createCom\",{\"type\":\"uiCom\",\"comId\":\"c\",\"inputId\":\"inputc1\",\"instanceId\": \"instanceIdc1\"}]\n[\"connectTo\",{\"type\":\"com\",\"comId\":\"b\",\"outputId\":\"\"outputb1\"},{\"type\":\"com\",\"inputId\":\"inputc1\",\"instanceId\":\"instanceIdc1\"}]`,\n fileName: '连接js组件.json'\n })}\n\n 注意:\n - 绝对限制:事件流程内只能只能使用<组件使用文档>中声明的js或js-autorun组件,以及<可连接的组件说明>内明确列出的组件以及action过程中创建的变量。\n - 即使需求中提到\"文本框\"、\"下拉框\"等UI元素,如果不在<可连接的组件说明>中,绝对不能创建。如果<可连接的组件说明>中只有\"按钮\"和\"账号\"组件,就不能创建\"密码\"组件(除非它在<可连接的组件说明>中)\n - 禁止基于组件功能相似性进行推测性创建\n - 禁止创建没有意义的节点,所有创建的节点都必须被连接,否则视为没有意义的节点\n - 所有创建的节点都必须被<connectTo>进行连接\n - 创建节点时comId和instanceId需要严格保证全局唯一性,禁止重复创建\n </createCom>\n\n <updateCom>\n 更新已存在的计算组件节点配置,使用<组件可配置的内容/>的配置项,对组件的属性进行配置;\n 如果配置项的type在 <常见editType的使用 /> 中有说明,务必遵守其中的说明及注意事项;\n 该action在结构上严格遵循以下格式:[\"updateCom\",params]\n - \"updateCom\" 当前action类型,是一个默认值\n - params 更新节点的参数,各节点参数格式以Typescript的形式说明如下:\n \\`\\`\\`typescript\n type Params = {\n comId: string; //当前需要更新配置的组件id\n configs: {\n path: string; //在<当前组件可配置的内容/>中对应的配置项path\n value: any; //需要配置的value\n }[]\n }\n \\`\\`\\`\n \n 例如,用户要求把计算组件b的配置项A设置为\"hello\"把配置项B设置为\"world\",可以返回以下action:\n ${fileFormat({\n content: `[\"updateCom\",{\"comId\":\"b\",\"configs\":[{\"path\":\"A\",\"value\":\"hello\"},{\"path\":\"B\",\"value\":\"world\"}]}]`,\n fileName: '配置计算组件.json'\n })}\n\n 注意:\n - 如果是新的计算组件,应该在<createCom>的configs中直接进行配置,减少不必要的action调用\n - 一次性调用<updateCom>进行批量更新,避免多次调用\n </updateCom>\n\n <defineVar>\n 在作用域插槽内创建变量\n 该action在结构上严格遵循以下格式:[\"defineVar\",params]\n - \"defineVar\" 当前action类型,是一个默认值\n - params 创建节点的参数,各节点参数格式以Typescript的形式说明如下:\n \\`\\`\\`typescript\n // 作用域插槽下可创建变量,需要提供comId、slotId用于区分添加目标,表达往哪个作用域插槽下添加\n type Params = {\n comId: string ; // 当前作用域插槽的父组件id\n slotId: string; // 当前作用域插槽的slotId\n id: string; // 新添加的组件id,禁止重复使用已存在的组件id\n title: string; // 变量标题,要求高度语义化,能让用户一眼明白这个变量的作用\n schema: Schema; // 标准JSON Schema协议,用于定义类型\n initValue: any; // 变量的默认值,类型需要与JSON Schema定义保持一致\n }\n \\`\\`\\`\n 例如,用户要求ui组件a的outputa1事件触发时存储输出内容,可以返回以下action:\n ${fileFormat({\n content: `[\"createEvent\",{\"comId\":\"a\",\"outputId\":\"outputa1\"}]\n[\"defineVar\",{\"comId\":\"目标作用域插槽父组件id\",\"slotId\":\"目标作用域插槽id\",\"id\":\"新添加的变量id\",\"title\":\"语义化的变量标题\",\"schema\":\"标准JSON Schema协议\",\"initValue\":\"变量初始值\"}]\n[\"createCom\",{\"type\":\"var\",\"varId\":\"新添加的变量id\",\"inputId\":\"set\",\"\"instanceId\": \"instanceIdvar1\"\"}]\n[\"connectTo\",{\"type\":\"com\",\"comId\":\"a\",\"outputId\":\"outputa1\"},{\"type\":\"com\",\"inputId\":\"set\",\"instanceId\":\"instanceIdvar1\"}]`,\n fileName: '连接js组件.json'\n })}\n\n 注意:\n - **强制检查**:在执行defineVar前必须检查<可连接的组件说明>内的变量定义\n - **语义匹配原则**:若存在语义相同或高度相似的变量,必须复用已有变量,不得新建\n - **单一语义来源原则**:同一含义的数据应在系统中由唯一的变量定义,并在所有需要的地方复用\n - **作用域合规**:基于<可连接的组件说明>,确保变量在正确的作用域插槽内创建和使用\n </defineVar>\n\n <connectTo>\n 从一个节点的输出端口连接到下一个节点的输入端口,连接的前提是已经通过<createCom>创建好了可连接的节点\n 该action在结构上严格遵循以下格式:[\"connectTo\",output,input]\n - \"connectTo\" 当前action类型,是一个默认值\n - output 当前连接的输出端口,格式以Typescript的形式说明如下:\n - 当输出端口是当前流程的输出\n \\`\\`\\`typescript\n type Output = {\n type: \"com\";\n comId: string; 当前需要创建事件流程的组件id\n outputId: string; 当前需要创建事件流程对应的outputId\n }\n \\`\\`\\`\n - 当输出端口是ui组件节点\n \\`\\`\\`typescript\n // 如果输出端口是ui组件节点\n type Output = {\n type: \"com\";\n outputId: string; // 当前节点的输出outputId\n instanceId: string; // 实例id,由于ui组件的输入端口可能被多次连接,所以需要一个唯一的instanceId来做区分,在整个actions中,instanceId只能被连接一次\n }\n \\`\\`\\`\n - 当输出端口是js、js-autorun组件节点\n \\`\\`\\`typescript\n type Output = {\n type: \"com\";\n comId: string; //新添加的组件id,禁止重复使用已存在的组件id\n outputId: string; // 当前节点的输出outputId\n }\n \\`\\`\\`\n - 当输出端口是变量组件节点\n \\`\\`\\`typescript\n type Output = {\n type: \"com\";\n outputId: string; // 当前节点的输出outputId\n instanceId: string; // 实例id,由于变量组件的输入端口可能被多次连接,所以需要一个唯一的instanceId来做区分,在整个actions中,instanceId只能被连接一次\n }\n \\`\\`\\`\n - 当输出端口是作用域插槽的输入\n \\`\\`\\`typescript\n type Output = {\n type: \"frame\";\n comId: string; // 作用域插槽的父组件id\n frameId: string; // 作用域插槽的id\n outputId: string; // 对应作用域插槽的输入id\n }\n \\`\\`\\`\n - input 连接的参数,格式以Typescript的形式说明如下:\n - 当输入端口是ui组件节点\n \\`\\`\\`typescript\n type Input = {\n /** 类型,目前默认为\"com\" */\n type: \"com\";\n /** 输入id */\n inputId: string;\n /** 实例id,由于ui组件的输入端口可能被多次连接,所以需要一个唯一的instanceId来做区分,在整个actions中,instanceId只能被连接一次 */\n instanceId: string;\n }\n \\`\\`\\`\n - 当输入端口是js、js-autorun组件节点\n \\`\\`\\`typescript\n type Input = {\n /** 类型,目前默认为\"com\" */\n type: \"com\";\n /** 组件id */ */\n comId: string; // 新添加的组件id,对应<createCom>创建时的comId;\n /** 输入id */\n inputId: string;\n }\n \\`\\`\\`\n - 当输入端口是变量组件节点\n \\`\\`\\`typescript\n type Input = {\n /** 类型,目前默认为\"com\" */\n type: \"com\";\n /** 输入id */\n inputId: string;\n /** 实例id,由于变量组件的输入端口可能被多次连接,所以需要一个唯一的instanceId来做区分,在整个actions中,instanceId只能被连接一次 */\n instanceId: string;\n }\n \\`\\`\\`\n\n 例如,当用户要求组件a的outputa1事件触发时调用组件b的输入端口inputb1,可以返回以下action:\n ${fileFormat({\n content: `[\"createEvent\",{\"comId\":\"a\",\"outputId\":\"outputa1\"}]\n[\"createCom\",{\"type\":\"uiCom\",\"comId\":\"b\",\"inputId\":\"inputb1\",\"instanceId\":\"instanceIdb1\"}]\n[\"connectTo\",{\"type\":\"com\",\"comId\":\"a\",\"outputId\":\"outputa1\"},{\"type\":\"com\",\"inputId\":\"inputb1\",\"instanceId\":\"instanceIdb1\"}]`,\n fileName: '连接到组件的输入端口.json'\n })}\n\n <examples>\n <example>\n <user_query>点击后隐藏xx</user_query>\n <assistant_response>\n 好的,我将为当前组件的点击事件搭建事件流程,点击后隐藏xx\n \n ${fileFormat({\n content: `[\"createEvent\",{\"comId\":\"comId\",\"outputId\":\"outputId\"}]\n[\"createCom\",{\"type\":\"uiCom\",\"comId\":\"targetComId\",\"inputId\":\"targetComInputId\",\"instanceId\":\"instanceIdb1\"}]\n[\"connectTo\",{\"type\":\"com\",\"comId\":comId,\"outputId\":outputId},{\"type\":\"com\",\"inputId\":\"targetComInputId\",\"instanceId\": \"instanceIdb1\"}]`,\n fileName: '当前组件的点击事件流程搭建.json'\n })}\n </assistant_response>\n </example>\n <example>\n <user_query>点击后给a赋值,赋值完成后隐藏b</user_query>\n <assistant_response>\n 好的,我将为当前组件的点击事件搭建事件流程,点击后给a赋值,赋值完成后隐藏b\n \n ${fileFormat({\n content: `[\"createEvent\",{\"comId\":\"comId\",\"outputId\":\"outputId\"}]\n[\"createCom\",{\"type\":\"uiCom\",\"comId\":\"a\",\"inputId\":\"input\",\"instanceId\":\"instanceIda1\"}]\n[\"connectTo\",{\"type\":\"com\",\"comId\":comId,\"outputId\":outputId},{\"type\":\"com\",\"inputId\":\"input\",\"instanceId\":\"instanceIda1\"}]\n[\"createCom\",{\"type\":\"uiCom\",\"comId\":\"b\",\"inputId\":\"input\",\"instanceId\":\"instanceIdb1\"}]\n[\"connectTo\",{\"type\":\"com\",\"instanceId\":\"instanceIda1\",\"outputId\":\"inputDone\"},{\"type\":\"com\",\"inputId\":\"input\",\"instanceId\":\"instanceIdb1\"}]`,\n fileName: '当前组件的点击事件流程搭建.json'\n })}\n </assistant_response>\n </example>\n <example>\n <user_query>点击后获取两次a的值</user_query>\n <assistant_response>\n 好的,我将为当前组件的点击事件搭建事件流程,点击后获取a的值两次\n\n 由于每个输入端口只能被一个输出端口连接,所以即使是相同的输入端口,需要创建两个不同的节点\n\n ${fileFormat({\n content: `[\"createEvent\",{\"comId\":\"comId\",\"outputId\":\"outputId\"}]\n[\"createCom\",{\"type\":\"uiCom\",\"comId\":\"a\",\"inputId\":\"input\",\"instanceId\":\"instanceIda1\"}]\n[\"connectTo\",{\"type\":\"com\",\"comId\":comId,\"outputId\":outputId},{\"type\":\"com\",\"inputId\":\"input\",\"instanceId\":\"instanceIda1\"}]\n[\"createCom\",{\"type\":\"uiCom\",\"comId\":\"a\",\"inputId\":\"input\",\"instanceId\":\"instanceIda2\"}]\n[\"connectTo\",{\"type\":\"com\",\"comId\":comId,\"outputId\":outputId},{\"type\":\"com\",\"inputId\":\"input\",\"instanceId\":\"instanceIda2\"}]`,\n fileName: 'ui节点的相同输入端口连接.json'\n })}\n </assistant_response>\n </example>\n <example>\n <user_query>点击后设置a</user_query>\n <assistant_response>\n 由于组件a与当前组件的作用域隔离限制,无法设置\n ${fileFormat({\n content: `[\"createEvent\",{\"comId\":\"comId\",\"outputId\":\"outputId\"}]`,\n fileName: '组件间的作用域隔离.json'\n })}\n </assistant_response>\n </example>\n </examples>\n\n 注意:\n - 每个输出端口可以连接多个输入端口,但每个输入端口只能被一个输出端口连接。\n - 在<connectTo>连接节点前必须先通过<createCom>创建好节点。\n - 节点的同一个输入端口只能被连接一次,如果需要多次连接相同的输入端口,通过<createCom>创建对应数量的节点。\n - 各参数字段都有释义,禁止随意编造、遗漏。\n </connectTo>\n\n <doConfigForBind>\n 变量绑定,当ui组件的<可以使用的配置项>中的配置项目有声明**bindWith**属性,那么这个配置项支持变量绑定功能,绑定后能实现数据同步,驱动ui更新等能力。\n bindWith的格式如下:\n \\`\\`\\`typescript\n type BindWith = {\n with: string; // \"data.xx.x\",表示绑定的数据源属性路径以\"data\"开头,例如:要绑定到\"abc\"字段,则with为\"data.abc\"\n schema: Schema; // 标准JSON Schema协议,表示绑定的数据类型\n }\n \\`\\`\\`\n 支持三种绑定形式:\n 1. 数据流入:当变量值发生变更,ui会自动同步\n 2. 数据流出:当ui组件对应绑定的值发生变化,变量值会自动同步\n 3. 双向绑定:「数据流入」和「数据流出」同时生效\n\n 该action在结构上严格遵循以下格式:[\"doConfigForBind\",params]\n - \"doConfigForBind\" 当前action类型,是一个默认值\n - params 创建节点的参数,各节点参数格式以Typescript的形式说明如下:\n \\`\\`\\`typescript\n type Params = {\n comId: string; // 当前需要绑定变量的组件id\n target: string; // 指的是组件的整体或某个部分,以选择器的形式表示,对应<可以使用的配置项>的选中区域\n path: string; // 在<当前组件可配置的内容/>中对应的配置项path\n varId: string; // 对应需要绑定的变量组件id,仅允许使用<可连接的组件说明>中同作用域下的变量,以及在action过程中创建的变量\n xpath: string; // 对应绑定变量的属性路径,如果就是绑定变量的值,返回空字符串即可,例如:绑定变量a,则值为\"\"。绑定变量a的b属性,则值为\"/b\"。绑定变量a的b属性的c属性,则值为\"/b/c\"。以/开头,以/分割。\n }\n \\`\\`\\`\n\n 例如,当用户要求组件a的内容与变量b进行绑定:\n ${fileFormat({\n content: `[\"doConfigForBind\",{\"comId\":\"a组件id\",\"target\":\"选中区域\",\"path\":\"配置项/内容\",\"varId\":\"变量bid\",\"xpath\":\"属性路径\"}]`,\n fileName: '将a的内容与变量b绑定.json'\n })}\n\n <examples>\n <example>\n <user_query>点击后将展示各字段内容到组件a、b、c</user_query>\n <assistant_response>\n 好的,我将为当前组件的点击事件搭建事件流程。由于需要同时设置多个组件的值,我会检查这些组件是否支持变量绑定。\n\n 由于a、b、c三个组件支持变量绑定,我将使用变量绑定方案:\n\n ${fileFormat({\n content: `[\"createEvent\",{\"comId\":\"comId\",\"outputId\":\"outputId\"}]\n[\"defineVar\",{\"comId\":\"root\",\"slotId\":\"_root_\",\"id\":\"object\",\"title\":\"对象值\",\"schema\":{\"type\":\"object\",\"properties\":{\"x\":{\"type\":\"string\"},\"y\":{\"type\":\"string\"},\"z\":{\"type\":\"string\"}}},\"initValue\":{}}]\n[\"doConfigForBind\",{\"comId\":\"a\",\"target\":\"target\",\"path\":\"path\",\"varId\":\"object\",\"xpath\":\"/x\"}]\n[\"doConfigForBind\",{\"comId\":\"b\",\"target\":\"target\",\"path\":\"path\",\"varId\":\"object\",\"xpath\":\"/y\"}]\n[\"doConfigForBind\",{\"comId\":\"c\",\"target\":\"target\",\"path\":\"path\",\"varId\":\"object\",\"xpath\":\"/z\"}]\n[\"createCom\",{\"type\":\"var\",\"varId\":\"object\",\"inputId\":\"set\",\"instanceId\":\"instanceIdVar1\"}]\n[\"connectTo\",{\"type\":\"com\",\"comId\":\"comId\",\"outputId\":\"outputId\"},{\"type\":\"com\",\"inputId\":\"set\",\"instanceId\":\"instanceIdVar1\"}]`,\n fileName: '变量绑定方案.json'\n })}\n\n 这样通过一次变量修改就能同时驱动三个UI组件更新,这是推荐的面向变量的搭建方式。\n </assistant_response>\n </example>\n </examples>\n\n 注意:\n - 如果没有对应的绑定配置项,不允许捏造、猜测;\n - 作用域内禁止使用跨域变量绑定,例如列表项作用域内组件禁止绑定页面的变量,要创建列表项作用域下的的变量即列表项变量,并且需要在列表项插槽中给列表项变量赋值\n </doConfigForBind>\n\n <examples>\n <example>\n <user_query>点击后获取a内容和b内容</user_query>\n <assistant_response>\n 好的,我将为当前组件的点击事件搭建事件流程,点击后获取a内容和b内容\n ${fileFormat({\n content: `[\"createEvent\",{\"comId\":\"comId\",\"outputId\":\"outputId\"}]\n[\"createCom\",{\"type\":\"uiCom\",\"comId\":\"a\",\"inputId\":\"getValue\",\"instanceId\":\"instanceIda1\"}]\n[\"connectTo\",{\"type\":\"com\",\"comId\":comId,\"outputId\":outputId},{\"type\":\"com\",\"inputId\":\"getValue\",\"instanceId\":\"instanceIda1\"}]\n[\"createCom\",{\"type\":\"uiCom\",\"comId\":\"b\",\"inputId\":\"getValue\",\"instanceId\":\"instanceIdb1\"}]\n[\"connectTo\",{\"type\":\"com\",\"comId\":comId,\"outputId\":outputId},{\"type\":\"com\",\"inputId\":\"getValue\",\"instanceId\":\"instanceIdb1\"}]`,\n fileName: '当前组件的点击事件流程搭建.json'\n })}\n </assistant_response>\n </example>\n <example>\n <user_query>点击后设置a</user_query>\n <assistant_response>\n 由于组件a与当前组件的作用域隔离限制,无法设置\n ${fileFormat({\n content: `[\"createEvent\",{\"comId\":\"comId\",\"outputId\":\"outputId\"}]`,\n fileName: '组件间的作用域隔离.json'\n })}\n </assistant_response>\n </example>\n <example>\n <user_query>点击后同时设置a、b、c三个组件的值</user_query>\n <assistant_response>\n 好的,我将为当前组件的点击事件搭建事件流程。由于需要同时设置多个组件的值,我会检查这些组件是否支持变量绑定。\n\n 由于a、b、c三个组件支持变量绑定,我将使用变量绑定方案:\n\n ${fileFormat({\n content: `[\"createEvent\",{\"comId\":\"comId\",\"outputId\":\"outputId\"}]\n[\"defineVar\",{\"comId\":\"root\",\"slotId\":\"_root_\",\"id\":\"sharedValue\",\"title\":\"共享值\",\"schema\":{\"type\":\"string\"},\"initValue\":\"\"}]\n[\"createCom\",{\"type\":\"var\",\"varId\":\"sharedValue\",\"inputId\":\"set\",\"instanceId\":\"instanceIdVar1\"}]\n[\"connectTo\",{\"type\":\"com\",\"comId\":\"comId\",\"outputId\":\"outputId\"},{\"type\":\"com\",\"inputId\":\"set\",\"instanceId\":\"instanceIdVar1\"}]\n[\"doConfigForBind\",{\"comId\":\"a\",\"target\":\"target\",\"path\":\"path\",\"varId\":\"sharedValue\",\"xpath\":\"\"}]\n[\"doConfigForBind\",{\"comId\":\"b\",\"target\":\"target\",\"path\":\"path\",\"varId\":\"sharedValue\",\"xpath\":\"\"}]\n[\"doConfigForBind\",{\"comId\":\"c\",\"target\":\"target\",\"path\":\"path\",\"varId\":\"sharedValue\",\"xpath\":\"\"}]`,\n fileName: '变量绑定方案.json'\n })}\n\n 这样通过一次变量修改就能同时驱动三个UI组件更新,这是推荐的面向变量的搭建方式。\n </assistant_response>\n </example>\n <example>\n <user_query>点击后刷新列表</user_query>\n <assistant_response>\n 好的,我将为当前组件的点击事件搭建事件流程,点击后刷新列表,同时更新每一项内的子组件\n\n 流程说明:列表组件更新数据,通过作用域插槽流程刷新插槽内子组件数据\n\n ${fileFormat({\n content: `[\"createEvent\",{\"comId\":\"comId\",\"outputId\":\"outputId\"}]\n[\"createCom\",{\"type\":\"uiCom\",\"comId\":\"list\",\"inputId\":\"setValue\",\"instanceId\":\"instanceIda1\"}]\n[\"connectTo\",{\"type\":\"com\",\"comId\":comId,\"outputId\":outputId},{\"type\":\"com\",\"inputId\":\"setValue\",\"instanceId\":\"instanceIda1\"}]\n[\"createEvent\",{\"comId\":\"list\",\"slotId\":\"slotId\"}]\n[\"createCom\",{\"type\":\"uiCom\",\"comId\":\"listchild\",\"inputId\":\"setValue\",\"instanceId\":\"instanceIdListchild1\"}]\n[\"connectTo\",{\"type\":\"frame\",\"comId\":\"list\",\"frameId\":\"frameId\",\"outputId\":\"outputId\"},{\"type\":\"com\",\"inputId\":\"setValue\",\"instanceId\":\"instanceIdListchild1\"}]\n`,\n fileName: '点击后刷新列表同时将每一项数据传入子组件.json'\n })}\n </assistant_response>\n </example>\n </examples>\n \n 注意:actions文件每一行遵循 JSON 语法,禁止非法代码,禁止出现内容省略提示、单行注释、省略字符。\n - actions返回的内容格式需要一行一个action,每一个action需要压缩,不要包含缩进等多余的空白字符;\n - 禁止包含任何注释(包括单行//和多行/* */)\n - 禁止出现省略号(...)或任何占位符\n - 确保所有代码都是完整可执行的,不包含示例片段\n - 禁止使用{}、{{}}这类变量绑定语法,并不支持此语法\n - 禁止使用非法字符或特殊符号\n - 所有内容均为静态数据,禁止解构,禁止使用变量\n \n 注意:\n - 返回actions文件内容时,务必注意操作步骤的先后顺序;\n - 有些操作需要在前面操作完成后才能进行;\n - 搭建流程前,必须先创建流程\n - 禁止重复使用相同的action;\n - 当一个输出连接多个输入时,确保生成的 actions 按顺序列出所有连接,并判断它们是并行(同时触发,无依赖)还是串行(有先后依赖,需接力执行),避免将独立操作错误地编排为串行。\n - 所有创建的节点都必须被连接,禁止创建没有意义的节点。\n - 优先使用变量绑定方案,这是推荐的面向变量的搭建方式,通过<变量绑定方案>进行判断是否需要使用。\n - 带有作用域插槽的组件,组件数据的更新不代表组件视觉的更新,需要考虑创建作用域插槽的事件流程。\n - 只有组件事件才允许连接页面跳转节点。\n </关于actions>\n\n 注意:\n - 当需求无法通过actions实现时,实事求是告诉用户即可,禁止使用其他方式实现。\n - 作用域内禁止使用跨域变量绑定,例如列表项作用域内组件禁止绑定页面的变量,要创建列表项作用域下的的变量即列表项变量,并且需要在列表项插槽中给列表项变量赋值\n</如何通过action搭建事件流程>\n`\n },\n stream: (params: any) => {\n const { files, status, replaceContent } = params;\n let actions: {\n comId: string;\n outputId: string;\n slotId: string;\n type: string;\n params: any;\n }[] = [];\n const actionsFile = getFiles(files, { extName: 'json' })\n\n if (actionsFile) {\n actions = streamActionsParser(actionsFile.content ?? \"\", actionsFile?.isComplete);\n }\n\n if (actions.length > 0 || status === \"complete\") {\n try {\n let updateDiagramActions = [];\n\n while (actions.length) {\n const action = actions.shift()!;\n\n if (action.type === \"defineVar\") {\n // 变量的创建没有顺序,遍历到直接调用即可\n const { comId, ...other } = action;\n if (updatePageStatus === Status.IDLE) {\n // 默认先执行一次start\n promiseStack.add(() => props.updatePage([], \"start\"))\n updatePageStatus = Status.RUNNING;\n }\n promiseStack.add(() => props.updatePage([other], \"ing\"))\n continue\n } else if (action.type === \"doConfig\") {\n if (updatePageStatus === Status.IDLE) {\n // 默认先执行一次start\n promiseStack.add(() => props.updatePage([], \"start\"))\n updatePageStatus = Status.RUNNING;\n }\n promiseStack.add(() => props.updatePage([action], \"ing\"))\n continue\n } else if (action.type === \"updateCom\") {\n const { comId, params } = action;\n if (updateComStatus === Status.IDLE) {\n // 默认先执行一次start\n promiseStack.add(() => props.updateCom(comId, [], \"start\"))\n updateComStatus = Status.RUNNING;\n }\n promiseStack.add(() => props.updateCom(comId, params.configs, \"ing\"))\n continue\n }\n \n if (![\"connectTo\", \"createCom\", \"defineVar\"].includes(action.type)) {\n if (updateDiagramActions.length) {\n if (!currentDiagram) {\n console.error(\"currentDiagram is null\", params);\n } else {\n const diagram = {...currentDiagram}\n const actions = [...updateDiagramActions]\n promiseStack.add(() => props.updateDiagram(diagram.id, actions, diagram.status === Status.IDLE ? \"start\" : \"ing\"))\n currentDiagram.status = Status.RUNNING;\n updateDiagramActions = [];\n }\n }\n if (action.type === \"createEvent\") {\n const { comId, slotId, outputId } = action;\n\n if (!diagramIdMap[`${comId}-${slotId || outputId}`]) {\n currentDiagram = {\n status: Status.IDLE,\n ...(slotId ? props.getDiagramInfo(comId, slotId) : props.createDiagram(\"comEvent\", { comId, outputId })),\n }\n diagramIdMap[`${comId}-${slotId || outputId}`] = {...currentDiagram!};\n }\n }\n } else {\n const { comId, ...other } = action;\n updateDiagramActions.push(other);\n }\n }\n\n if (updateDiagramActions.length) {\n if (!currentDiagram) {\n console.error(\"currentDiagram is null\", params);\n } else {\n const diagram = {...currentDiagram}\n const actions = [...updateDiagramActions]\n promiseStack.add(() => props.updateDiagram(diagram.id, actions, diagram.status === Status.IDLE ? \"start\" : \"ing\"))\n currentDiagram.status = Status.RUNNING;\n updateDiagramActions = [];\n }\n }\n\n if (updatePageStatus !== Status.IDLE && status === \"complete\") {\n // 如果执行过,最终要调一次complete结束\n props.updatePage([], \"complete\")\n }\n if (updateComStatus !== Status.IDLE && status === \"complete\") {\n // 如果执行过,最终要调一次complete结束\n props.updateCom([], \"complete\")\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n if (status === \"complete\") {\n promiseStack.add(() => {\n Object.entries(diagramIdMap).forEach(([_, { id }]) => {\n props.updateDiagram(id, [], \"complete\");\n })\n })\n }\n\n const file = files[0];\n if (file) {\n return replaceContent.replace(file.fileName, \"\");\n }\n return replaceContent;\n },\n execute: (params: any) => {\n const { files, content, replaceContent } = params;\n const actionsFile = getFiles(files, { extName: 'json' })\n\n if (!actionsFile) {\n return {\n llmContent: content,\n displayContent: content\n }\n }\n\n console.log(\"actionsFile\", actionsFile)\n\n return replaceContent.replace(actionsFile.fileName, \"\");\n },\n // aiRole: \"architect\",\n aiRole: 'expert',\n }\n}\n\nexport default buildProcess;\n\nfunction createActionsParser() {\n const processedLines = new Set();\n\n return function parseActions(text: string, isEnd?: boolean) {\n const newActions: any[] = [];\n const lines = text.split(\"\\n\").filter(line => line.trim() !== '');\n\n const linesToProcess = lines.slice(0, -1);\n const lastLine = lines[lines.length - 1];\n const lastLineComplete = lines.length === 0 || text.endsWith(\"\\n\") || isEnd === true;\n\n for (const line of linesToProcess) {\n const trimmedLine = line.trim();\n if (!trimmedLine || processedLines.has(trimmedLine)) continue;\n try {\n const parsedAction = formatAction(trimmedLine);\n if (parsedAction.comId) {\n newActions.push(parsedAction);\n processedLines.add(trimmedLine);\n }\n } catch {\n processedLines.add(trimmedLine);\n }\n }\n\n if (lastLine && lastLine.trim() && lastLineComplete && !processedLines.has(lastLine.trim())) {\n const trimmedLastLine = lastLine.trim();\n try {\n const parsedAction = formatAction(trimmedLastLine);\n if (parsedAction.comId) {\n newActions.push(parsedAction);\n processedLines.add(trimmedLastLine);\n }\n } catch {\n processedLines.add(trimmedLastLine);\n }\n }\n\n return newActions;\n };\n}\n\nconst formatAction = (_action: string) => {\n let action;\n try {\n action = JSON.parse(_action);\n } catch (error) {\n try {\n const repairedAction = jsonrepair(_action)\n action = JSON.parse(repairedAction)\n } catch (error) {\n console.error(\"repair action error\", error);\n }\n }\n\n if (!Array.isArray(action)) {\n return action;\n }\n\n if (action[0] === \"createCom\") {\n const { ns, ...params } = action[1]\n if (ns) {\n params.namespace = ComponentsManager.getFullNamespace(ns);\n }\n return {\n // 变量是varId,其余都是comId\n comId: action[1].comId || action[1].varId,\n type: action[0],\n params\n }\n } else if (action[0] === \"createEvent\") {\n return {\n type: action[0],\n ...action[1]\n }\n } else if (action[0] === \"defineVar\") {\n const params = action[1]\n if (params.slotId === \"_root_\") {\n // 人工干预,如果是_root_,不需要comId\n Reflect.deleteProperty(params, \"comId\")\n }\n return {\n comId: action[1].id,\n type: action[0],\n params\n }\n } else if (action[0] === \"doConfigForBind\") {\n const { comId, target, path, varId, xpath } = action[1];\n return {\n type: \"doConfig\",\n comId,\n target,\n params: {\n path,\n bindWith: {\n type: \"var\",\n varId,\n xpath\n }\n }\n }\n } else if (action[0] === \"connectTo\") {\n return {\n comId: action[1].comId || action[1].instanceId,\n type: action[0],\n params: {\n from: action[1],\n to: action[2]\n }\n }\n } else if (action[0] === \"updateCom\") {\n const params = action[1]\n params.configs = params.configs.map((config: any) => {\n return {\n comId: params.comId,\n target: \":root\",\n type: \"doConfig\",\n params: {\n path: config.path,\n value: config.value\n }\n }\n })\n return {\n comId: params.comId,\n type: action[0],\n params\n }\n }\n\n return {};\n};\n\nconst indent = (depth: number) => {\n return depth ? \" \".repeat(depth) : \"\";\n}\n\nfunction scopeBasedComponentStructure(slot: any, depth = 0) {\n let result = \"\";\n const prefix = indent(depth);\n const prefix2 = indent((depth + 1));\n const prefix3 = indent((depth + 2));\n const prefix4 = indent((depth + 3));\n if (slot.scope) {\n const { id, title, vars, inputs } = slot;\n\n const root = depth === 0 ? \"组件id:root\\n\" : \"\";\n \n result += `${root}${prefix}作用域插槽(${title})` + \n `\\n${prefix}插槽id:${id}` + \n `\\n${prefix}插槽输入:${inputs?.length ? inputs.reduce((pre: string, { id, title, schema }: any, index: number) => {\n let desc = \"\";\n // if (title === \"当前项\") {\n // desc = `\\n${prefix3}循环迭代中的当前数据项,可通过此变量访问项的属性值,数据类型为对象,对象不能直接连接ui组件的输入,需要通过逻辑组件分发`\n // }\n return pre + `\\n${prefix2}${index + 1}. ${title}(${id})${desc}`\n }, \"\") : \"无\"}\\n\\n` +\n (vars?.length ? `\\n${prefix}当前变量列表:${vars.reduce((pre: string, { id, title, schema }: any, index: number) => {\n return pre + `\\n${prefix}${index + 1}. ${title}` + `\\n${prefix2}变量id:${id}` \n // TODO:目前schema定义不全,只放出变量的会有干扰\n // + `\\n${prefix2}schema定义:${JSON.stringify(schema)}`\n }, \"\")}\\n\\n` : \"\") + \n `${prefix}子组件:\\n`\n }\n\n slot.components?.forEach((component: any) => {\n const { id, title, inputs, outputs, slots } = component\n\n result += `${prefix}- ${title}\\n` + \n `${prefix2}组件id:${id}\\n` +\n `${prefix2}可连接的输入端口:${inputs?.length ? inputs.filter(({ hostId }: any) => {\n return ![\"_config_\", \"_setStyle\"].includes(hostId)\n }).reduce((pre: string, { hostId, title, rels, description }: any, index: number) => {\n return pre + `\\n${prefix2}${index + 1}. ${title}(${hostId})` + \n (description ? `\\n${prefix3}描述:${description}` : \"\") + \n `\\n${prefix3}关联输出端口:${rels?.length ? rels.reduce((pre: string, {id, title}: any, index: number) => {\n return pre + `\\n${prefix4}${index + 1}. ${title}(${id})`\n }, \"\") : \"无\"}`\n }, \"\") : \"无\"}\\n\\n` + \n `${prefix2}可创建的事件:${outputs?.length ? outputs.reduce((pre: string, { hostId, title, description }: any, index: number) => {\n return pre + `\\n${prefix2}${index + 1}. ${title}(${hostId})` + \n (description ? `\\n${prefix2}描述:${description}` : \"\")\n }, \"\") : \"无\"}\\n\\n`;\n\n \n slots?.forEach((slot: any) => {\n result += scopeBasedComponentStructure(slot, slot.scope ? depth + 1 : depth);\n })\n });\n\n return result;\n}\n\nexport interface BuildProcessConfigParams {\n}\n\nexport function BuildProcess(params?: BuildProcessConfigParams) {\n return {\n name: NAME,\n params: params,\n }\n}\n"],"names":["NAME","buildProcess","toolName","Status","getCurrentFocusComponentDescription","params","type","outlineInfo","id","title","data","inputs","outputs","concat","JSON","stringify","length","reduce","pre","_ref","hostId","_ref2","initDiagram","diagramInfo","_objectSpread","status","IDLE","props","streamActionsParser","createActionsParser","diagramIdMap","currentDiagram","getDiagramInfo","updatePageStatus","updateComStatus","promiseStack","PromiseStack","name","displayName","description","getPrompts","pageOutlineInfo","getPageOutlineInfo","connectableComponents","scopeBasedComponentStructure","scope","targetPageId","getPageId","pages","transformPageInfo","getAllPageInfo","allPageInfo","_ref3","_ref4","_ref5","getComponentOutlineInfo","fileFormat","content","fileName","stream","files","replaceContent","actions","actionsFile","getFiles","extName","_actionsFile$content","isComplete","updateDiagramActions","_loop","action","shift","comId","other","_objectWithoutProperties","_excluded","add","updatePage","RUNNING","updateCom","configs","includes","console","error","diagram","updateDiagram","slotId","outputId","createDiagram","_excluded2","push","_ret","Object","entries","forEach","_ref6","_","file","replace","execute","llmContent","displayContent","log","aiRole","processedLines","Set","parseActions","text","isEnd","newActions","lines","split","filter","line","trim","linesToProcess","slice","lastLine","lastLineComplete","endsWith","trimmedLine","has","parsedAction","formatAction","_unused","trimmedLastLine","_unused2","_action","parse","repairedAction","jsonrepair","Array","isArray","_action$","ns","_excluded3","namespace","ComponentsManager","getFullNamespace","varId","Reflect","deleteProperty","target","path","xpath","bindWith","instanceId","from","to","map","config","value","indent","depth","repeat","slot","_slot$components","arguments","undefined","result","prefix","prefix2","prefix3","prefix4","vars","root","_ref7","index","schema","desc","_ref8","components","component","slots","_ref9","_ref0","rels","_ref1","_ref10","BuildProcess"],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ import { asyncToGenerator as _asyncToGenerator, objectSpread2 as _objectSpread2 } from '../_virtual/_rollupPluginBabelHelpers.js';
2
+ import { requestVibeCodingAgent } from '../agents/custom.js';
3
+
4
+ var NAME = 'coding-subagent-as-tool';
5
+ codingSubagentAsTool.toolName = NAME;
6
+ function getBatchCodingPayload(codingManager, getUserMessage) {
7
+ var _getUserMessage, _userMessageContent$f;
8
+ var codings = [...codingManager.waitForCoding];
9
+ var userMessageContent = getUserMessage === null || getUserMessage === void 0 || (_getUserMessage = getUserMessage()) === null || _getUserMessage === void 0 ? void 0 : _getUserMessage.content;
10
+ var userText = Array.isArray(userMessageContent) ? userMessageContent === null || userMessageContent === void 0 || (_userMessageContent$f = userMessageContent.find(m => m.type === 'text')) === null || _userMessageContent$f === void 0 ? void 0 : _userMessageContent$f.text : userMessageContent;
11
+ var message = "\n<\u7528\u6237\u9700\u6C42>\n".concat(userText, "\n</\u7528\u6237\u9700\u6C42> \n# \u6279\u91CF\u7EC4\u4EF6\u4EE3\u7801\u5F00\u53D1\u4EFB\u52A1\n\n## \u5F53\u524D\u9875\u9762\u7ED3\u6784\n").concat(codingManager.getJsxById(codingManager.pageId), "\n\n## \u4EFB\u52A1\u8BF4\u660E\n\u9700\u8981\u6309\u987A\u5E8F\u548C\u7528\u6237\u9700\u6C42\u5F00\u53D1\u4EE5\u4E0B ").concat(codings.length, " \u4E2A\u7EC4\u4EF6\u3002\n\n## \u5F85\u5F00\u53D1\u7EC4\u4EF6\n\n").concat(codings.map((coding, index) => "### \u7EC4\u4EF6 ".concat(index + 1, ": ").concat(coding.comId, "\n**\u9700\u6C42\u63CF\u8FF0\uFF1A**\n").concat(coding.requirement)).join('\n\n'), "\n");
12
+ return {
13
+ key: "vibe_coding_".concat(codingManager.pageId, "_").concat(Math.random().toString(36).substring(2, 15)),
14
+ message,
15
+ attachments: codingManager.attachments,
16
+ pageId: codingManager.pageId
17
+ };
18
+ }
19
+ function onDevelopModule(p, updateComponent) {
20
+ var {
21
+ files
22
+ } = p;
23
+ var filesByUuid = files.reduce((acc, file) => {
24
+ var match = file.fileName.match(/^(.+)@([^.]+)(\..+)$/);
25
+ if (match) {
26
+ var [, name, uuid, ext] = match;
27
+ if (!acc[uuid]) acc[uuid] = [];
28
+ acc[uuid].push({
29
+ fileName: "".concat(name).concat(ext),
30
+ content: file.content
31
+ });
32
+ }
33
+ return acc;
34
+ }, {});
35
+ Object.entries(filesByUuid).forEach(_ref => {
36
+ var [uuid, componentFiles] = _ref;
37
+ updateComponent(uuid, componentFiles);
38
+ });
39
+ }
40
+ function codingSubagentAsTool(config) {
41
+ return {
42
+ name: NAME,
43
+ displayName: '代码开发',
44
+ description: "\u6267\u884C\u300CAI\u533A\u57DF\u5F00\u53D1\u300D\uFF1A\u5F53\u751F\u6210\u9875\u9762\u65F6\u6DFB\u52A0\u4E86\u9700\u8981\u5F00\u53D1\u4EE3\u7801\u7684AI\u7EC4\u4EF6\u65F6\uFF0C\u8C03\u7528\u667A\u80FD\u7EC4\u4EF6\u52A9\u624B\u6279\u91CF\u5F00\u53D1/\u8FD8\u539F\u8FD9\u4E9B\u7EC4\u4EF6\u7684\u4EE3\u7801\u3002\u65E0\u9700\u89C4\u5212\u6B64\u5DE5\u5177\uFF0C\u6B64\u5DE5\u5177\u4F1A\u81EA\u884C\u8C03\u7528\u3002",
45
+ execute(_ref2) {
46
+ return _asyncToGenerator(function* () {
47
+ var {
48
+ getUserMessage
49
+ } = _ref2;
50
+ var {
51
+ codingManager,
52
+ onStart,
53
+ onComplete,
54
+ onError
55
+ } = config;
56
+ if (!codingManager.waitForCoding.length) {
57
+ return {
58
+ llmContent: '当前没有需要开发的组件。',
59
+ displayContent: '当前没有需要开发的组件。'
60
+ };
61
+ }
62
+ onStart === null || onStart === void 0 || onStart();
63
+ var payload = getBatchCodingPayload(codingManager, getUserMessage);
64
+ return new Promise((resolve, reject) => {
65
+ var onProgress = status => {
66
+ if (status === 'complete') {
67
+ onComplete === null || onComplete === void 0 || onComplete();
68
+ resolve({
69
+ llmContent: '代码开发已完成。',
70
+ displayContent: '代码开发已完成。'
71
+ });
72
+ }
73
+ if (status === 'error') {
74
+ onError === null || onError === void 0 || onError();
75
+ reject(new Error('开发出问题了'));
76
+ }
77
+ };
78
+ var promise = requestVibeCodingAgent(_objectSpread2(_objectSpread2({}, payload), {}, {
79
+ onProgress,
80
+ onDevelopModule,
81
+ asTool: true
82
+ }), {
83
+ pageId: payload.pageId
84
+ });
85
+ if (!promise) {
86
+ onError === null || onError === void 0 || onError();
87
+ reject(new Error('此工具暂不支持调用'));
88
+ return;
89
+ }
90
+ promise.catch(error => {
91
+ onError === null || onError === void 0 || onError();
92
+ reject(error);
93
+ });
94
+ });
95
+ })();
96
+ }
97
+ };
98
+ }
99
+
100
+ export { codingSubagentAsTool as default };
101
+ //# sourceMappingURL=coding-subagent-as-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coding-subagent-as-tool.js","sources":["../../src/tools/coding-subagent-as-tool.ts"],"sourcesContent":["import type { CodingManager } from '../agents/workspace/coding-manager'\nimport { requestVibeCodingAgent } from '../agents/custom'\n\nconst NAME = 'coding-subagent-as-tool'\ncodingSubagentAsTool.toolName = NAME\n\ninterface Config {\n codingManager: CodingManager,\n onStart: () => void,\n onComplete: () => void,\n onError: () => void,\n}\n\nfunction getBatchCodingPayload(codingManager: CodingManager, getUserMessage: () => string | any) {\n const codings = [...codingManager.waitForCoding]\n const userMessageContent = getUserMessage?.()?.content\n\n const userText = Array.isArray(userMessageContent) ? userMessageContent?.find(m => m.type === 'text')?.text : userMessageContent\n const message = `\n<用户需求>\n${userText}\n</用户需求> \n# 批量组件代码开发任务\n\n## 当前页面结构\n${codingManager.getJsxById(codingManager.pageId)}\n\n## 任务说明\n需要按顺序和用户需求开发以下 ${codings.length} 个组件。\n\n## 待开发组件\n\n${codings\n .map(\n (coding, index) =>\n `### 组件 ${index + 1}: ${coding.comId}\n**需求描述:**\n${coding.requirement}`\n )\n .join('\\n\\n')}\n`\n return {\n key: `vibe_coding_${codingManager.pageId}_${Math.random().toString(36).substring(2, 15)}`,\n message,\n attachments: codingManager.attachments,\n pageId: codingManager.pageId,\n }\n}\n\nfunction onDevelopModule(\n p: { files: Array<{ fileName: string; content: string }> },\n updateComponent: (comId: string, files: Array<{ fileName: string; content: string }>) => void\n) {\n const { files } = p\n const filesByUuid = files.reduce(\n (acc, file) => {\n const match = file.fileName.match(/^(.+)@([^.]+)(\\..+)$/)\n if (match) {\n const [, name, uuid, ext] = match\n if (!acc[uuid]) acc[uuid] = []\n acc[uuid].push({ fileName: `${name}${ext}`, content: file.content })\n }\n return acc\n },\n {} as Record<string, Array<{ fileName: string; content: string }>>\n )\n Object.entries(filesByUuid).forEach(([uuid, componentFiles]) => {\n updateComponent(uuid, componentFiles)\n })\n}\n\nexport default function codingSubagentAsTool(config: Config): any {\n return {\n name: NAME,\n displayName: '代码开发',\n description: `执行「AI区域开发」:当生成页面时添加了需要开发代码的AI组件时,调用智能组件助手批量开发/还原这些组件的代码。无需规划此工具,此工具会自行调用。`,\n async execute({ getUserMessage }) {\n const { codingManager, onStart, onComplete, onError } = config\n if (!codingManager.waitForCoding.length) {\n return {\n llmContent: '当前没有需要开发的组件。',\n displayContent: '当前没有需要开发的组件。',\n }\n }\n onStart?.();\n const payload = getBatchCodingPayload(codingManager, getUserMessage)\n return new Promise<{ llmContent: string; displayContent: string }>((resolve, reject) => {\n const onProgress = (status: string) => {\n if (status === 'complete') {\n onComplete?.();\n resolve({ llmContent: '代码开发已完成。', displayContent: '代码开发已完成。' })\n }\n if (status === 'error') {\n onError?.();\n reject(new Error('开发出问题了'))\n }\n }\n const promise = requestVibeCodingAgent(\n {\n ...payload,\n onProgress,\n onDevelopModule,\n asTool: true,\n },\n { pageId: payload.pageId }\n )\n if (!promise) {\n onError?.();\n reject(new Error('此工具暂不支持调用'))\n return\n }\n promise.catch((error) => {\n onError?.();\n reject(error);\n })\n })\n },\n }\n}\n"],"names":["NAME","codingSubagentAsTool","toolName","getBatchCodingPayload","codingManager","getUserMessage","_getUserMessage","_userMessageContent$f","codings","waitForCoding","userMessageContent","content","userText","Array","isArray","find","m","type","text","message","concat","getJsxById","pageId","length","map","coding","index","comId","requirement","join","key","Math","random","toString","substring","attachments","onDevelopModule","p","updateComponent","files","filesByUuid","reduce","acc","file","match","fileName","name","uuid","ext","push","Object","entries","forEach","_ref","componentFiles","config","displayName","description","execute","_ref2","_asyncToGenerator","onStart","onComplete","onError","llmContent","displayContent","payload","Promise","resolve","reject","onProgress","status","Error","promise","requestVibeCodingAgent","_objectSpread","asTool","catch","error"],"mappings":"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"}