@mybricks/plugin-ai 0.0.2 → 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.
- package/dist/_virtual/_rollupPluginBabelHelpers.js +164 -0
- package/dist/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
- package/dist/agents/app.js +335 -0
- package/dist/agents/app.js.map +1 -0
- package/dist/agents/common.js +483 -0
- package/dist/agents/common.js.map +1 -0
- package/dist/agents/custom.js +16 -0
- package/dist/agents/custom.js.map +1 -0
- package/dist/agents/index.js +38 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/knowledges/knowledge-base.js +579 -0
- package/dist/agents/knowledges/knowledge-base.js.map +1 -0
- package/dist/agents/knowledges/knowledge-node.js +228 -0
- package/dist/agents/knowledges/knowledge-node.js.map +1 -0
- package/dist/agents/knowledges/types.js +105 -0
- package/dist/agents/knowledges/types.js.map +1 -0
- package/dist/agents/utils/config.js +229 -0
- package/dist/agents/utils/config.js.map +1 -0
- package/dist/agents/workspace/coding-manager.js +20 -0
- package/dist/agents/workspace/coding-manager.js.map +1 -0
- package/dist/agents/workspace/components-manager.js +113 -0
- package/dist/agents/workspace/components-manager.js.map +1 -0
- package/dist/agents/workspace/outline-focus.js +167 -0
- package/dist/agents/workspace/outline-focus.js.map +1 -0
- package/dist/agents/workspace/outline-info.js +430 -0
- package/dist/agents/workspace/outline-info.js.map +1 -0
- package/dist/agents/workspace/page-tree-generator.js +70 -0
- package/dist/agents/workspace/page-tree-generator.js.map +1 -0
- package/dist/agents/workspace/workspace.js +251 -0
- package/dist/agents/workspace/workspace.js.map +1 -0
- package/dist/agents/workspace-by-knowledges/providers/component-docs-provider.js +100 -0
- package/dist/agents/workspace-by-knowledges/providers/component-docs-provider.js.map +1 -0
- package/dist/agents/workspace-by-knowledges/providers/focus-info-provider.js +120 -0
- package/dist/agents/workspace-by-knowledges/providers/focus-info-provider.js.map +1 -0
- package/dist/agents/workspace-by-knowledges/providers/project-info-provider.js +146 -0
- package/dist/agents/workspace-by-knowledges/providers/project-info-provider.js.map +1 -0
- package/dist/agents/workspace-by-knowledges/test.js +242 -0
- package/dist/agents/workspace-by-knowledges/test.js.map +1 -0
- package/dist/agents/workspace-by-knowledges/utils/components-manager.js +132 -0
- package/dist/agents/workspace-by-knowledges/utils/components-manager.js.map +1 -0
- package/dist/agents/workspace-by-knowledges/utils/outline-focus.js +167 -0
- package/dist/agents/workspace-by-knowledges/utils/outline-focus.js.map +1 -0
- package/dist/agents/workspace-by-knowledges/utils/outline-info.js +430 -0
- package/dist/agents/workspace-by-knowledges/utils/outline-info.js.map +1 -0
- package/dist/agents/workspace-by-knowledges/workspace.js +169 -0
- package/dist/agents/workspace-by-knowledges/workspace.js.map +1 -0
- package/dist/api/cloud-components.js +85 -0
- package/dist/api/cloud-components.js.map +1 -0
- package/dist/api-record-replay/manager.js +168 -0
- package/dist/api-record-replay/manager.js.map +1 -0
- package/{src/api-record-replay/recorder.ts → dist/api-record-replay/recorder.js} +22 -32
- package/dist/api-record-replay/recorder.js.map +1 -0
- package/dist/api-record-replay/replayer.js +136 -0
- package/dist/api-record-replay/replayer.js.map +1 -0
- package/dist/components/attachments/index.js +124 -0
- package/dist/components/attachments/index.js.map +1 -0
- package/dist/components/attachments/index.less.js +8 -0
- package/dist/components/attachments/index.less.js.map +1 -0
- package/dist/components/icons/index.js +112 -0
- package/dist/components/icons/index.js.map +1 -0
- package/dist/components/icons/index.less.js +8 -0
- package/dist/components/icons/index.less.js.map +1 -0
- package/dist/components/mention/index.js +19 -0
- package/dist/components/mention/index.js.map +1 -0
- package/dist/components/mention/index.less.js +8 -0
- package/dist/components/mention/index.less.js.map +1 -0
- package/dist/components/messages/index.js +429 -0
- package/dist/components/messages/index.js.map +1 -0
- package/dist/components/messages/index.less.js +8 -0
- package/dist/components/messages/index.less.js.map +1 -0
- package/dist/components/sender/index.js +244 -0
- package/dist/components/sender/index.js.map +1 -0
- package/dist/components/sender/index.less.js +8 -0
- package/dist/components/sender/index.less.js.map +1 -0
- package/dist/context/RequestStatusTracker.js +44 -0
- package/dist/context/RequestStatusTracker.js.map +1 -0
- package/dist/context/index.js +45 -0
- package/dist/context/index.js.map +1 -0
- package/dist/data.js +4 -0
- package/dist/data.js.map +1 -0
- package/dist/index.js +306 -0
- package/dist/index.js.map +1 -0
- package/dist/plugin-ai/node_modules/style-inject/dist/style-inject.es.js +27 -0
- package/dist/plugin-ai/node_modules/style-inject/dist/style-inject.es.js.map +1 -0
- package/dist/plugin-ai/package.json.js +8 -0
- package/dist/plugin-ai/package.json.js.map +1 -0
- package/dist/plugin-ai/test/index.js +206 -0
- package/dist/plugin-ai/test/index.js.map +1 -0
- package/dist/preset/createTemplates.js +29 -0
- package/dist/preset/createTemplates.js.map +1 -0
- package/dist/preset/index.js +13 -0
- package/dist/preset/index.js.map +1 -0
- package/dist/preset/prompts.js +34 -0
- package/dist/preset/prompts.js.map +1 -0
- package/{src/preset/user.ts → dist/preset/user.js} +4 -3
- package/dist/preset/user.js.map +1 -0
- package/dist/requestAsStream.js +269 -0
- package/dist/requestAsStream.js.map +1 -0
- package/dist/rxai/node_modules/idb/build/index.js +277 -0
- package/dist/rxai/node_modules/idb/build/index.js.map +1 -0
- package/dist/rxai/src/agent/base.js +16 -0
- package/dist/rxai/src/agent/base.js.map +1 -0
- package/dist/rxai/src/agent/planning.js +1076 -0
- package/dist/rxai/src/agent/planning.js.map +1 -0
- package/dist/rxai/src/agent/rxai.js +254 -0
- package/dist/rxai/src/agent/rxai.js.map +1 -0
- package/dist/rxai/src/error/base.js +39 -0
- package/dist/rxai/src/error/base.js.map +1 -0
- package/dist/rxai/src/prompt/base.js +11 -0
- package/dist/rxai/src/prompt/base.js.map +1 -0
- package/dist/rxai/src/prompt/planning.js +23 -0
- package/dist/rxai/src/prompt/planning.js.map +1 -0
- package/dist/rxai/src/prompt/tool.js +14 -0
- package/dist/rxai/src/prompt/tool.js.map +1 -0
- package/dist/rxai/src/request/request.js +123 -0
- package/dist/rxai/src/request/request.js.map +1 -0
- package/dist/rxai/src/tool/getHistoryRecords.js +65 -0
- package/dist/rxai/src/tool/getHistoryRecords.js.map +1 -0
- package/dist/rxai/src/tool/util.js +424 -0
- package/dist/rxai/src/tool/util.js.map +1 -0
- package/dist/rxai/src/utils/events.js +43 -0
- package/dist/rxai/src/utils/events.js.map +1 -0
- package/dist/rxai/src/utils/idb.js +240 -0
- package/dist/rxai/src/utils/idb.js.map +1 -0
- package/dist/rxai/src/utils/retry.js +32 -0
- package/dist/rxai/src/utils/retry.js.map +1 -0
- package/dist/rxai/src/utils/uuid.js +7 -0
- package/dist/rxai/src/utils/uuid.js.map +1 -0
- package/dist/startView/components/header/header.js +12 -0
- package/dist/startView/components/header/header.js.map +1 -0
- package/dist/startView/components/header/header.less.js +8 -0
- package/dist/startView/components/header/header.less.js.map +1 -0
- package/dist/startView/index.js +62 -0
- package/dist/startView/index.js.map +1 -0
- package/dist/startView/index.less.js +8 -0
- package/dist/startView/index.less.js.map +1 -0
- package/dist/tools/analyze-and-expand-prd.js +116 -0
- package/dist/tools/analyze-and-expand-prd.js.map +1 -0
- package/dist/tools/analyze-requirement-and-components.js +208 -0
- package/dist/tools/analyze-requirement-and-components.js.map +1 -0
- package/dist/tools/answer.js +33 -0
- package/dist/tools/answer.js.map +1 -0
- package/dist/tools/build-process.js +550 -0
- package/dist/tools/build-process.js.map +1 -0
- package/dist/tools/coding-subagent-as-tool.js +101 -0
- package/dist/tools/coding-subagent-as-tool.js.map +1 -0
- package/dist/tools/generate-ui-content.js +528 -0
- package/dist/tools/generate-ui-content.js.map +1 -0
- package/dist/tools/index.js +31 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/open-dsl.js +49 -0
- package/dist/tools/open-dsl.js.map +1 -0
- package/dist/tools/refactor-ui-content.js +292 -0
- package/dist/tools/refactor-ui-content.js.map +1 -0
- package/dist/tools/utils.js +832 -0
- package/dist/tools/utils.js.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/view/components/header/header.js +59 -0
- package/dist/view/components/header/header.js.map +1 -0
- package/dist/view/components/header/header.less.js +8 -0
- package/dist/view/components/header/header.less.js.map +1 -0
- package/dist/view/index.js +184 -0
- package/dist/view/index.js.map +1 -0
- package/dist/view/index.less.js +8 -0
- package/dist/view/index.less.js.map +1 -0
- package/package.json +28 -6
- package/src/agents/app.ts +0 -301
- package/src/agents/common.ts +0 -471
- package/src/agents/custom.ts +0 -14
- package/src/agents/index.ts +0 -37
- package/src/agents/knowledges/README.md +0 -614
- package/src/agents/knowledges/SUMMARY.md +0 -527
- package/src/agents/knowledges/index.ts +0 -8
- package/src/agents/knowledges/knowledge-base.ts +0 -565
- package/src/agents/knowledges/knowledge-node.ts +0 -266
- package/src/agents/knowledges/types.ts +0 -208
- package/src/agents/utils/config.ts +0 -427
- package/src/agents/workspace/coding-manager.ts +0 -31
- package/src/agents/workspace/components-manager.ts +0 -124
- package/src/agents/workspace/outline-focus.ts +0 -188
- package/src/agents/workspace/outline-info.ts +0 -520
- package/src/agents/workspace/page-tree-generator.ts +0 -83
- package/src/agents/workspace/workspace.ts +0 -319
- package/src/agents/workspace-by-knowledges/MIGRATION.md +0 -568
- package/src/agents/workspace-by-knowledges/README.md +0 -521
- package/src/agents/workspace-by-knowledges/index.ts +0 -11
- package/src/agents/workspace-by-knowledges/providers/component-docs-provider.ts +0 -92
- package/src/agents/workspace-by-knowledges/providers/focus-info-provider.ts +0 -131
- package/src/agents/workspace-by-knowledges/providers/index.ts +0 -8
- package/src/agents/workspace-by-knowledges/providers/project-info-provider.ts +0 -151
- package/src/agents/workspace-by-knowledges/test.ts +0 -240
- package/src/agents/workspace-by-knowledges/types.ts +0 -56
- package/src/agents/workspace-by-knowledges/utils/components-manager.ts +0 -145
- package/src/agents/workspace-by-knowledges/utils/index.ts +0 -8
- package/src/agents/workspace-by-knowledges/utils/outline-focus.ts +0 -178
- package/src/agents/workspace-by-knowledges/utils/outline-info.ts +0 -521
- package/src/agents/workspace-by-knowledges/workspace.ts +0 -166
- package/src/api/cloud-components.ts +0 -129
- package/src/api-record-replay/README.md +0 -187
- package/src/api-record-replay/index.ts +0 -11
- package/src/api-record-replay/manager.ts +0 -168
- package/src/api-record-replay/replayer.ts +0 -148
- package/src/components/attachments/index.less +0 -117
- package/src/components/attachments/index.tsx +0 -136
- package/src/components/icons/index.less +0 -8
- package/src/components/icons/index.tsx +0 -44
- package/src/components/index.less +0 -34
- package/src/components/mention/index.less +0 -23
- package/src/components/mention/index.tsx +0 -19
- package/src/components/messages/index.less +0 -1013
- package/src/components/messages/index.tsx +0 -519
- package/src/components/sender/index.less +0 -203
- package/src/components/sender/index.tsx +0 -298
- package/src/components/types.ts +0 -31
- package/src/constants/index.ts +0 -8
- package/src/context/RequestStatusTracker.ts +0 -50
- package/src/context/index.ts +0 -83
- package/src/data.ts +0 -5
- package/src/global.d.ts +0 -100
- package/src/index.tsx +0 -264
- package/src/mock.ts +0 -1267
- package/src/preset/agents.ts +0 -380
- package/src/preset/createTemplates.ts +0 -25
- package/src/preset/index.ts +0 -12
- package/src/preset/prompts.ts +0 -235
- package/src/preset/requestAsStream.ts +0 -246
- package/src/startView/components/header/header.less +0 -17
- package/src/startView/components/header/header.tsx +0 -15
- package/src/startView/components/index.ts +0 -1
- package/src/startView/index.less +0 -34
- package/src/startView/index.tsx +0 -61
- package/src/tools/analyze-and-expand-prd.ts +0 -272
- package/src/tools/analyze-requirement-and-components.ts +0 -589
- package/src/tools/answer.ts +0 -59
- package/src/tools/build-process.ts +0 -1174
- package/src/tools/coding-subagent-as-tool.ts +0 -119
- package/src/tools/generate-ui-content.ts +0 -1083
- package/src/tools/index.ts +0 -28
- package/src/tools/open-dsl.ts +0 -69
- package/src/tools/refactor-ui-content.ts +0 -801
- package/src/tools/type.d.ts +0 -12
- package/src/tools/utils.ts +0 -914
- package/src/types/index.ts +0 -4
- package/src/view/components/header/header.less +0 -51
- package/src/view/components/header/header.tsx +0 -60
- package/src/view/components/index.ts +0 -1
- package/src/view/index.less +0 -5
- package/src/view/index.tsx +0 -168
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outline-info.js","sources":["../../../../src/agents/workspace-by-knowledges/utils/outline-info.ts"],"sourcesContent":["import { ComponentsManager } from \"./components-manager\";\n\nexport interface SlotInfo {\n id: string;\n title?: string;\n layout?: any;\n components?: OutlineNode[];\n}\n\nexport interface OutlineNode {\n id: string;\n title: string;\n def?: {\n namespace?: string;\n };\n asRoot?: boolean;\n data?: any;\n style?: any;\n slots?: SlotInfo[];\n _hasCollapsedChildren?: boolean;\n}\n\n// 设计器给出的 OutlineNode\nexport interface OriginOutlineNode extends OutlineNode {\n components: OutlineNode[]\n layout: {\n width: string | number\n height: string | number\n }\n}\n\n\nexport interface ComponentsResult {\n id: string;\n jsx: string;\n namespaces: string[];\n}\n\nconst ROOT_NAMESPACE = 'root';\nconst ROOT_ID = '_root_';\nconst ROOT_SLOT_ID = '_rootSlot_';\n\nexport class OutlineInfoManager {\n\n api: any;\n\n constructor({ api }: { api: any }) {\n this.api = api;\n }\n\n private getOutlineInfo(id: string, type: string): OriginOutlineNode {\n if (type === \"logicCom\") {\n return this.api?.logicCom?.api?.getOutlineInfo(id)\n } else if (type === \"uiCom\") {\n return this.api?.uiCom?.api?.getOutlineInfo(id)\n } else {\n return this.api?.page?.api?.getOutlineInfo(id)\n }\n }\n\n getPageOutline(pageId: string) {\n return this.normalizePageOutline(this.getOutlineInfo(pageId, 'page'), pageId);\n }\n\n getUiComOutline(componentId: string) {\n return this.getOutlineInfo(componentId, 'uiCom');\n }\n\n getLogicComOutline(componentId: string) {\n return this.getOutlineInfo(componentId, 'logicCom');\n }\n\n private getOriginOutlineRootCom = (originOutline: OriginOutlineNode) => {\n return originOutline?.components?.[0]?.asRoot ? originOutline?.components?.[0] : null\n }\n\n getPageMetaInfo(pageId: string) {\n const originOutlineJson = this.getOutlineInfo(pageId, 'page')\n\n const rootId = this.getOriginOutlineRootCom(originOutlineJson) ? this.getOriginOutlineRootCom(originOutlineJson)?.id : undefined;\n\n return {\n pageId,\n rootId\n }\n }\n \n\n private normalizePageOutline(outline: OriginOutlineNode, pageId: string): OutlineNode {\n if (outline?.id === pageId) {\n\n let rootNode: OutlineNode = outline\n let rootSlots: SlotInfo[] | undefined = [{\n id: ROOT_SLOT_ID,\n components: outline?.components,\n layout: outline?.layout\n }];\n const whInfo: any = {\n width: outline?.layout?.width,\n height: outline?.layout?.height,\n }\n\n // 说明有asRoot组件,把asRoot的信息往上提取一层\n const rootCom = this.getOriginOutlineRootCom(outline)\n if (!!rootCom) {\n rootNode = rootCom;\n rootSlots = rootNode.slots\n }\n\n const normalized = {\n ...rootNode,\n style: {\n ...(rootNode.style ?? {}),\n ...whInfo, // 注意用的是页面的宽高\n },\n slots: rootSlots,\n def: {\n version: '1.0.0',\n namespace: ROOT_NAMESPACE\n },\n asRoot: true\n };\n\n return {\n id: pageId,\n title: outline.title, // 注意用的是页面的title\n slots: [{ id: ROOT_ID, components: [normalized] }]\n };\n }\n\n return {\n id: pageId,\n title: outline.title,\n slots: [{ id: ROOT_ID, components: [outline] }]\n };\n }\n\n getComponentIdToTitleMap(pageId: string) {\n const outline = this.getPageOutline(pageId);\n const componentMap = new Map<string, string>();\n\n componentMap.set(ROOT_ID, outline.title ?? '页面根节点');\n\n function traverse(data: any) {\n if (!data) return;\n\n if (Array.isArray(data)) {\n data.forEach(item => traverse(item));\n return;\n }\n\n if (data.id && data.title) {\n componentMap.set(data.id, data.title);\n }\n\n if (data.slots && Array.isArray(data.slots)) {\n data.slots.forEach((slot: SlotInfo) => {\n if (slot.components && Array.isArray(slot.components)) {\n slot.components.forEach(component => traverse(component));\n }\n });\n }\n }\n\n traverse(outline);\n return componentMap;\n }\n\n generateJSXByPageId(pageId: string, targetComponentIds: string[] = []): ComponentsResult {\n const outline = this.getPageOutline(pageId);\n return this.generateJSXByOutline(outline, targetComponentIds);\n }\n\n generateJSXByOutline(outlineInfo: OutlineNode, targetComponentIds: string[] = []): ComponentsResult {\n return OutlineJSXGenerator.generate(outlineInfo, targetComponentIds);\n }\n\n findParentNodeByComId(pageOutlineInfo: OutlineNode, comId: string): OutlineNode | null {\n function helper(node: OutlineNode): OutlineNode | null {\n if (!node || !node.slots) return null;\n for (const slot of node.slots || []) {\n if (slot.components && Array.isArray(slot.components)) {\n for (const component of slot.components) {\n if (component.id === comId) {\n return node;\n }\n // 向下递归\n const found = helper(component);\n if (found) return found;\n }\n }\n }\n return null;\n }\n return helper(pageOutlineInfo);\n }\n}\n\nclass OutlineJSXGenerator {\n private static namespacesSet = new Set<string>();\n\n /**\n * 遮蔽base64和svg代码,避免DSL过大\n */\n private static maskLargeContent(obj: any): any {\n if (obj === null || obj === undefined) {\n return obj;\n }\n\n // 如果是字符串,检查是否为base64或svg\n if (typeof obj === 'string') {\n // 检测base64图片(data:image开头或长base64字符串)\n if (obj.startsWith('data:image/') || /^[A-Za-z0-9+/=]{100,}$/.test(obj)) {\n const prefix = obj.substring(0, 22);\n return `[BASE64_MASKED:${prefix}...length:${obj.length}]`;\n }\n // 检测SVG代码\n if (obj.includes('<svg') || obj.includes('<?xml') && obj.includes('svg')) {\n const length = obj.length;\n if (length > 200) {\n return `[SVG_MASKED:length:${length}]`;\n }\n }\n return obj;\n }\n\n // 如果是数组,递归处理每个元素\n if (Array.isArray(obj)) {\n return obj.map(item => this.maskLargeContent(item));\n }\n\n // 如果是对象,递归处理每个属性\n if (typeof obj === 'object') {\n const result: any = {};\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n result[key] = this.maskLargeContent(obj[key]);\n }\n }\n return result;\n }\n\n return obj;\n }\n\n static generate(outlineInfo: OutlineNode, targetComponentIds: string[] = []): ComponentsResult {\n this.namespacesSet.clear();\n\n if (targetComponentIds.length === 0) {\n const jsx = this.processData(outlineInfo);\n return {\n id: outlineInfo.id,\n jsx,\n namespaces: Array.from(this.namespacesSet)\n };\n }\n\n if (targetComponentIds.length === 1) {\n const targetNode = this.findNodeById(outlineInfo, targetComponentIds[0]);\n if (targetNode) {\n const jsx = this.processData(targetNode);\n return {\n id: targetNode.id,\n jsx,\n namespaces: Array.from(this.namespacesSet)\n };\n }\n }\n\n const ancestorNodes = this.findMinimalCommonAncestors(outlineInfo, targetComponentIds);\n const jsx = ancestorNodes.map(node => this.processData(node)).join('\\n');\n\n return {\n id: ancestorNodes[0]?.id,\n jsx,\n namespaces: Array.from(this.namespacesSet)\n };\n }\n\n private static findMinimalCommonAncestors(root: OutlineNode, targetIds: string[]): OutlineNode[] {\n if (targetIds.length === 0) return [root];\n if (targetIds.length === 1) {\n const targetNode = this.findNodeById(root, targetIds[0]);\n return targetNode ? [targetNode] : [];\n }\n\n const paths: OutlineNode[][] = [];\n for (const targetId of targetIds) {\n const path = this.findPathToNode(root, targetId);\n if (path) {\n paths.push(path);\n }\n }\n\n if (paths.length === 0) {\n return [];\n }\n if (paths.length === 1) {\n return [paths[0][paths[0].length - 1]];\n }\n\n let commonAncestor: OutlineNode | null = null;\n const minLength = Math.min(...paths.map(path => path.length));\n\n for (let i = 0; i < minLength; i++) {\n const currentNodes = paths.map(path => path[i]);\n const firstNode = currentNodes[0];\n\n if (currentNodes.every(node => node.id === firstNode.id)) {\n commonAncestor = firstNode;\n } else {\n break;\n }\n }\n\n if (commonAncestor) {\n return [commonAncestor];\n }\n\n return [root];\n }\n\n private static findPathToNode(root: OutlineNode, targetId: string): OutlineNode[] | null {\n if (root.id === targetId) {\n return [root];\n }\n\n if (root.slots && Array.isArray(root.slots)) {\n for (const slot of root.slots) {\n if (slot.components && Array.isArray(slot.components)) {\n for (const component of slot.components) {\n const path = this.findPathToNode(component, targetId);\n if (path) {\n return [root, ...path];\n }\n }\n }\n }\n }\n\n return null;\n }\n\n private static findNodeById(root: OutlineNode, targetId: string): OutlineNode | null {\n if (root.id === targetId) {\n return root;\n }\n\n if (root.slots && Array.isArray(root.slots)) {\n for (const slot of root.slots) {\n if (slot.components && Array.isArray(slot.components)) {\n for (const component of slot.components) {\n const found = this.findNodeById(component, targetId);\n if (found) return found;\n }\n }\n }\n }\n\n return null;\n }\n\n private static extractLayout(style: any): Record<string, any> {\n if (!style) return {};\n\n const layout: Record<string, any> = {};\n\n ['width', 'height', 'margin', 'marginLeft', 'marginRight', 'marginTop', 'marginBottom']\n .forEach(prop => {\n if (style[prop] !== undefined) {\n layout[prop] = style[prop];\n }\n });\n\n if (style.layout !== undefined) {\n if (style.layout === 'flex-column' || style.layout === 'flex') {\n layout.display = 'flex';\n layout.flexDirection = 'column';\n }\n if (style.layout === 'flex-row') {\n layout.display = 'flex';\n layout.flexDirection = 'row';\n }\n if (style.alignItems) layout.alignItems = style.alignItems;\n if (style.justifyContent) layout.justifyContent = style.justifyContent;\n if (style.layout === 'absolute') {\n layout.position = 'relative';\n }\n }\n\n if (style.position === 'absolute') {\n ['left', 'right', 'top', 'bottom', 'widthFact', 'heightFact', 'position']\n .forEach(prop => {\n if (style[prop] !== undefined) {\n layout[prop] = style[prop];\n }\n })\n }\n\n return layout;\n }\n\n private static extractStyleArray(style: any): string[] {\n if (!style?.css || !Array.isArray(style.css)) return [];\n\n return style.css.map((cssItem: any) => {\n const selector = cssItem.selector || '';\n const cssProps = cssItem.css || {};\n\n const cssString = Object.entries(cssProps)\n .map(([key, value]) => `${key}: '${value}'`)\n .join(', ');\n\n return `${selector} : { ${cssString} }`;\n });\n }\n\n private static processData(node: OutlineNode | OutlineNode[]): string {\n if (!node) return '';\n\n if (Array.isArray(node)) {\n return node.map(item => this.processData(item)).filter(Boolean).join('\\n');\n }\n\n if (node.id && node.def?.namespace) {\n return this.generateComponentJSX(node);\n }\n\n if (node.slots && Array.isArray(node.slots)) {\n return node.slots.map(slot => {\n if (slot.components && Array.isArray(slot.components)) {\n return this.processData(slot.components);\n }\n return '';\n }).filter(Boolean).join('');\n }\n\n return '';\n }\n\n private static generateComponentJSX(node: OutlineNode, indent = ''): string {\n if (!node?.id) return '';\n\n const namespace = node.def?.namespace;\n if (namespace !== ROOT_NAMESPACE) {\n this.namespacesSet.add(namespace);\n }\n const layout = this.extractLayout(node.style);\n const styleArray = this.extractStyleArray(node.style);\n\n let jsx;\n\n const namespaceTag = ComponentsManager.getAbbreviation(namespace)\n\n // 遮蔽data中的base64和svg内容\n const maskedData = node.data ? this.maskLargeContent(node.data) : null;\n\n if (node.asRoot) {\n jsx = `<${ROOT_NAMESPACE} id=\"${ROOT_ID}\"` + (maskedData ? ` data={${JSON.stringify(maskedData)}}` : '');\n } else {\n jsx = `<${namespaceTag} id=\"${node.id}\" title=\"${node.title}\"` + (maskedData ? ` data={${JSON.stringify(maskedData)}}` : '');\n }\n\n if (Object.keys(layout).length > 0) {\n jsx += ` layout={${JSON.stringify(layout)}}`;\n }\n\n if (styleArray.length > 0) {\n // 遮蔽styleArray中的base64和svg内容\n const maskedStyleArray = styleArray.map(style => this.maskLargeContent(style));\n jsx += ` styleAry={[${maskedStyleArray.map(style => `\"${style}\"`).join(', ')}]}`;\n }\n\n jsx += ' >';\n\n const slotsJSX = this.generateSlotsJSX(node.slots || [], indent + ' ');\n if (slotsJSX) {\n jsx += slotsJSX;\n jsx += `\\n${indent}</${namespaceTag}>`;\n } else {\n jsx += ' />';\n }\n\n return jsx;\n }\n\n private static generateSlotsJSX(slots: SlotInfo[], indent = ' '): string {\n if (!slots || slots.length === 0) return '';\n\n let slotsJSX = '';\n slots.forEach(slot => {\n if (slot.id) {\n slotsJSX += `\\n${indent}<slots.${slot.id}`;\n\n if (slot.title) {\n slotsJSX += ` title=\"${slot.title}\"`;\n }\n\n if (slot.layout) {\n slotsJSX += ` layout={${JSON.stringify(this.extractLayout(slot.layout))}}`;\n }\n\n slotsJSX += '>';\n\n if (slot.components && Array.isArray(slot.components)) {\n slot.components.forEach(component => {\n const childJSX = this.generateComponentJSX(component, indent + ' ');\n if (childJSX) {\n slotsJSX += `\\n${indent} ${childJSX}`;\n }\n });\n }\n\n slotsJSX += `\\n${indent}</slots.${slot.id}>`;\n }\n });\n\n return slotsJSX;\n }\n}\n\n"],"names":["ROOT_NAMESPACE","ROOT_ID","ROOT_SLOT_ID","OutlineInfoManager","constructor","_ref","api","_defineProperty","originOutline","_originOutline$compon","_originOutline$compon2","components","asRoot","getOutlineInfo","id","type","_this$api","logicCom","_this$api2","uiCom","_this$api3","page","getPageOutline","pageId","normalizePageOutline","getUiComOutline","componentId","getLogicComOutline","getPageMetaInfo","_this$getOriginOutlin","originOutlineJson","rootId","getOriginOutlineRootCom","undefined","outline","_outline$layout","_outline$layout2","_rootNode$style","rootNode","rootSlots","layout","whInfo","width","height","rootCom","slots","normalized","_objectSpread","style","def","version","namespace","title","getComponentIdToTitleMap","_outline$title","componentMap","Map","set","traverse","data","Array","isArray","forEach","item","slot","component","generateJSXByPageId","targetComponentIds","arguments","length","generateJSXByOutline","outlineInfo","OutlineJSXGenerator","generate","findParentNodeByComId","pageOutlineInfo","comId","helper","node","found","maskLargeContent","obj","startsWith","test","prefix","substring","concat","includes","map","result","key","hasOwnProperty","_ancestorNodes$","namespacesSet","clear","jsx","processData","namespaces","from","targetNode","findNodeById","ancestorNodes","findMinimalCommonAncestors","join","root","targetIds","paths","targetId","path","findPathToNode","push","commonAncestor","minLength","Math","min","_loop","i","currentNodes","firstNode","every","extractLayout","prop","display","flexDirection","alignItems","justifyContent","position","extractStyleArray","css","cssItem","selector","cssProps","cssString","Object","entries","_ref2","value","_node$def","filter","Boolean","generateComponentJSX","_node$def2","indent","add","styleArray","namespaceTag","ComponentsManager","getAbbreviation","maskedData","JSON","stringify","keys","maskedStyleArray","slotsJSX","generateSlotsJSX","childJSX","Set"],"mappings":"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"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { asyncToGenerator as _asyncToGenerator } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import { KnowledgeBase } from '../knowledges/knowledge-base.js';
|
|
3
|
+
import { createProjectInfoProvider } from './providers/project-info-provider.js';
|
|
4
|
+
import { createFocusInfoProvider } from './providers/focus-info-provider.js';
|
|
5
|
+
import { createComponentDocsProvider } from './providers/component-docs-provider.js';
|
|
6
|
+
import { ComponentsManager } from './utils/components-manager.js';
|
|
7
|
+
import './utils/outline-info.js';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Workspace 类
|
|
11
|
+
* 继承自 KnowledgeBase,提供工作空间的知识库视图
|
|
12
|
+
*/
|
|
13
|
+
class Workspace extends KnowledgeBase {
|
|
14
|
+
constructor(config) {
|
|
15
|
+
super({
|
|
16
|
+
name: (config === null || config === void 0 ? void 0 : config.name) || 'Workspace',
|
|
17
|
+
description: (config === null || config === void 0 ? void 0 : config.description) || '工作空间包含项目信息、聚焦信息和组件配置文档'
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
// 初始化 providers
|
|
21
|
+
this.initializeProviders();
|
|
22
|
+
|
|
23
|
+
// 默认打开项目信息和聚焦信息(保存 Promise 以便外部可以等待)
|
|
24
|
+
this.defaultFilesOpened = this.openDefaultFiles();
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* 初始化所有 providers
|
|
29
|
+
*/
|
|
30
|
+
initializeProviders() {
|
|
31
|
+
// 1. 项目信息 Provider(包含画布索引)
|
|
32
|
+
this.registerProvider(createProjectInfoProvider());
|
|
33
|
+
|
|
34
|
+
// 2. 聚焦信息 Provider(包含聚焦树结构和描述)
|
|
35
|
+
this.registerProvider(createFocusInfoProvider());
|
|
36
|
+
|
|
37
|
+
// 3. 组件配置文档 Provider(隐藏目录)
|
|
38
|
+
this.registerProvider(createComponentDocsProvider());
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* 默认打开项目信息和聚焦信息
|
|
43
|
+
*/
|
|
44
|
+
openDefaultFiles() {
|
|
45
|
+
var _this = this;
|
|
46
|
+
return _asyncToGenerator(function* () {
|
|
47
|
+
try {
|
|
48
|
+
// 打开项目信息
|
|
49
|
+
yield _this.openFile('项目信息.md');
|
|
50
|
+
|
|
51
|
+
// 打开聚焦信息
|
|
52
|
+
yield _this.openFile('聚焦信息.md');
|
|
53
|
+
} catch (error) {
|
|
54
|
+
console.warn('Failed to open default files:', error);
|
|
55
|
+
}
|
|
56
|
+
})();
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* 等待默认文件打开完成
|
|
61
|
+
*/
|
|
62
|
+
waitForReady() {
|
|
63
|
+
var _this2 = this;
|
|
64
|
+
return _asyncToGenerator(function* () {
|
|
65
|
+
yield _this2.defaultFilesOpened;
|
|
66
|
+
})();
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* 打开组件文档(通过路径)
|
|
71
|
+
* @example await workspace.openComponentDoc('组件配置文档/pc.button.md')
|
|
72
|
+
*/
|
|
73
|
+
openComponentDoc(path) {
|
|
74
|
+
var _this3 = this;
|
|
75
|
+
return _asyncToGenerator(function* () {
|
|
76
|
+
yield _this3.defaultFilesOpened; // 确保默认文件已打开
|
|
77
|
+
yield _this3.openFile(path);
|
|
78
|
+
|
|
79
|
+
// 自动打开依赖组件
|
|
80
|
+
var match = path.match(/组件配置文档\/(.+)\.md$/);
|
|
81
|
+
if (match) {
|
|
82
|
+
var abbreviation = match[1];
|
|
83
|
+
var namespace = ComponentsManager.getFullNamespace(abbreviation);
|
|
84
|
+
var requires = ComponentsManager.getRequireComponents(namespace);
|
|
85
|
+
if (requires && requires.length > 0) {
|
|
86
|
+
for (var requiredNs of requires) {
|
|
87
|
+
var requiredAbbr = ComponentsManager.getAbbreviation(requiredNs);
|
|
88
|
+
var requiredPath = "\u7EC4\u4EF6\u914D\u7F6E\u6587\u6863/".concat(requiredAbbr, ".md");
|
|
89
|
+
try {
|
|
90
|
+
yield _this3.openFile(requiredPath);
|
|
91
|
+
} catch (error) {
|
|
92
|
+
console.warn("Failed to auto-open required component ".concat(requiredPath, ":"), error);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
})();
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* 根据组件 namespace 打开组件文档
|
|
102
|
+
*/
|
|
103
|
+
openComponentDocByNamespace(namespace) {
|
|
104
|
+
var _this4 = this;
|
|
105
|
+
return _asyncToGenerator(function* () {
|
|
106
|
+
var abbreviation = ComponentsManager.getAbbreviation(namespace);
|
|
107
|
+
var path = "\u7EC4\u4EF6\u914D\u7F6E\u6587\u6863/".concat(abbreviation, ".md");
|
|
108
|
+
yield _this4.openComponentDoc(path);
|
|
109
|
+
})();
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* 打开文档(类似旧版 workspace 的 openDocument)
|
|
114
|
+
* @param id 文档ID(页面ID或组件ID)
|
|
115
|
+
* @param options 文档选项
|
|
116
|
+
*/
|
|
117
|
+
openDocument(id, options) {
|
|
118
|
+
var _this5 = this;
|
|
119
|
+
return _asyncToGenerator(function* () {
|
|
120
|
+
yield _this5.defaultFilesOpened; // 确保默认文件已打开
|
|
121
|
+
|
|
122
|
+
var doc = {
|
|
123
|
+
id,
|
|
124
|
+
title: options.title || id,
|
|
125
|
+
description: options.description,
|
|
126
|
+
content: options.content,
|
|
127
|
+
docType: options.type,
|
|
128
|
+
extname: '.md',
|
|
129
|
+
directoryId: options.directoryId
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
// 使用 KnowledgeBase 的底层动态文档功能
|
|
133
|
+
yield _this5.openDynamicDocument(doc);
|
|
134
|
+
})();
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* 关闭文档
|
|
139
|
+
* @param id 文档ID
|
|
140
|
+
* @param directoryId 目录ID(可选)
|
|
141
|
+
*/
|
|
142
|
+
closeDocument(id, directoryId) {
|
|
143
|
+
this.removeDynamicDocument(id, directoryId);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* 刷新工作空间(当 context.currentFocus 变化时调用)
|
|
148
|
+
*/
|
|
149
|
+
refresh() {
|
|
150
|
+
var _this6 = this;
|
|
151
|
+
return _asyncToGenerator(function* () {
|
|
152
|
+
// 清空所有已打开的文件
|
|
153
|
+
_this6.clearOpenedFiles();
|
|
154
|
+
|
|
155
|
+
// 清空所有动态文档
|
|
156
|
+
_this6.clearDynamicDocuments();
|
|
157
|
+
|
|
158
|
+
// 重新初始化 providers
|
|
159
|
+
_this6.initializeProviders();
|
|
160
|
+
|
|
161
|
+
// 重新打开默认文件
|
|
162
|
+
_this6.defaultFilesOpened = _this6.openDefaultFiles();
|
|
163
|
+
yield _this6.defaultFilesOpened;
|
|
164
|
+
})();
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export { Workspace };
|
|
169
|
+
//# sourceMappingURL=workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.js","sources":["../../../src/agents/workspace-by-knowledges/workspace.ts"],"sourcesContent":["/**\n * Workspace 类(基于知识库架构重构 + Context)\n * \n * 从 context 获取所有依赖,无需手动传入 api 和 focusInfo\n */\n\nimport { KnowledgeBase } from '../knowledges/knowledge-base';\nimport { WorkspaceConfig } from './types';\nimport { DynamicDocument } from '../knowledges/types';\nimport { \n createProjectInfoProvider,\n createFocusInfoProvider,\n createComponentDocsProvider\n} from './providers';\nimport { ComponentsManager } from './utils';\n\n/**\n * Workspace 类\n * 继承自 KnowledgeBase,提供工作空间的知识库视图\n */\nexport class Workspace extends KnowledgeBase {\n private defaultFilesOpened: Promise<void>;\n\n constructor(config?: WorkspaceConfig) {\n super({\n name: config?.name || 'Workspace',\n description: config?.description || '工作空间包含项目信息、聚焦信息和组件配置文档'\n });\n\n // 初始化 providers\n this.initializeProviders();\n \n // 默认打开项目信息和聚焦信息(保存 Promise 以便外部可以等待)\n this.defaultFilesOpened = this.openDefaultFiles();\n }\n\n /**\n * 初始化所有 providers\n */\n private initializeProviders(): void {\n // 1. 项目信息 Provider(包含画布索引)\n this.registerProvider(createProjectInfoProvider());\n\n // 2. 聚焦信息 Provider(包含聚焦树结构和描述)\n this.registerProvider(createFocusInfoProvider());\n\n // 3. 组件配置文档 Provider(隐藏目录)\n this.registerProvider(createComponentDocsProvider());\n }\n\n /**\n * 默认打开项目信息和聚焦信息\n */\n private async openDefaultFiles(): Promise<void> {\n try {\n // 打开项目信息\n await this.openFile('项目信息.md');\n \n // 打开聚焦信息\n await this.openFile('聚焦信息.md');\n } catch (error) {\n console.warn('Failed to open default files:', error);\n }\n }\n\n /**\n * 等待默认文件打开完成\n */\n async waitForReady(): Promise<void> {\n await this.defaultFilesOpened;\n }\n\n /**\n * 打开组件文档(通过路径)\n * @example await workspace.openComponentDoc('组件配置文档/pc.button.md')\n */\n async openComponentDoc(path: string): Promise<void> {\n await this.defaultFilesOpened; // 确保默认文件已打开\n await this.openFile(path);\n \n // 自动打开依赖组件\n const match = path.match(/组件配置文档\\/(.+)\\.md$/);\n if (match) {\n const abbreviation = match[1];\n const namespace = ComponentsManager.getFullNamespace(abbreviation);\n const requires = ComponentsManager.getRequireComponents(namespace);\n \n if (requires && requires.length > 0) {\n for (const requiredNs of requires) {\n const requiredAbbr = ComponentsManager.getAbbreviation(requiredNs);\n const requiredPath = `组件配置文档/${requiredAbbr}.md`;\n try {\n await this.openFile(requiredPath);\n } catch (error) {\n console.warn(`Failed to auto-open required component ${requiredPath}:`, error);\n }\n }\n }\n }\n }\n\n /**\n * 根据组件 namespace 打开组件文档\n */\n async openComponentDocByNamespace(namespace: string): Promise<void> {\n const abbreviation = ComponentsManager.getAbbreviation(namespace);\n const path = `组件配置文档/${abbreviation}.md`;\n await this.openComponentDoc(path);\n }\n\n /**\n * 打开文档(类似旧版 workspace 的 openDocument)\n * @param id 文档ID(页面ID或组件ID)\n * @param options 文档选项\n */\n async openDocument(id: string, options: {\n type: '画布' | '组件';\n content: string;\n title?: string;\n description?: string;\n /** 所属目录ID,如果不指定则使用默认动态文档目录 */\n directoryId?: string;\n }): Promise<void> {\n await this.defaultFilesOpened; // 确保默认文件已打开\n \n const doc: DynamicDocument = {\n id,\n title: options.title || id,\n description: options.description,\n content: options.content,\n docType: options.type,\n extname: '.md',\n directoryId: options.directoryId\n };\n\n // 使用 KnowledgeBase 的底层动态文档功能\n await this.openDynamicDocument(doc);\n }\n\n /**\n * 关闭文档\n * @param id 文档ID\n * @param directoryId 目录ID(可选)\n */\n closeDocument(id: string, directoryId?: string): void {\n this.removeDynamicDocument(id, directoryId);\n }\n\n /**\n * 刷新工作空间(当 context.currentFocus 变化时调用)\n */\n async refresh(): Promise<void> {\n // 清空所有已打开的文件\n this.clearOpenedFiles();\n \n // 清空所有动态文档\n this.clearDynamicDocuments();\n \n // 重新初始化 providers\n this.initializeProviders();\n \n // 重新打开默认文件\n this.defaultFilesOpened = this.openDefaultFiles();\n await this.defaultFilesOpened;\n }\n}\n"],"names":["Workspace","KnowledgeBase","constructor","config","name","description","initializeProviders","defaultFilesOpened","openDefaultFiles","registerProvider","createProjectInfoProvider","createFocusInfoProvider","createComponentDocsProvider","_this","_asyncToGenerator","openFile","error","console","warn","waitForReady","_this2","openComponentDoc","path","_this3","match","abbreviation","namespace","ComponentsManager","getFullNamespace","requires","getRequireComponents","length","requiredNs","requiredAbbr","getAbbreviation","requiredPath","concat","openComponentDocByNamespace","_this4","openDocument","id","options","_this5","doc","title","content","docType","type","extname","directoryId","openDynamicDocument","closeDocument","removeDynamicDocument","refresh","_this6","clearOpenedFiles","clearDynamicDocuments"],"mappings":";;;;;;;;AAgBA;AACA;AACA;AACA;AACO,MAAMA,SAAS,SAASC,aAAa,CAAC;EAG3CC,WAAWA,CAACC,MAAwB,EAAE;AACpC,IAAA,KAAK,CAAC;MACJC,IAAI,EAAE,CAAAD,MAAM,KAAA,IAAA,IAANA,MAAM,uBAANA,MAAM,CAAEC,IAAI,KAAI,WAAW;MACjCC,WAAW,EAAE,CAAAF,MAAM,KAAA,IAAA,IAANA,MAAM,KAAA,MAAA,GAAA,MAAA,GAANA,MAAM,CAAEE,WAAW,KAAI;AACtC,KAAC,CAAC;;AAEF;IACA,IAAI,CAACC,mBAAmB,EAAE;;AAE1B;AACA,IAAA,IAAI,CAACC,kBAAkB,GAAG,IAAI,CAACC,gBAAgB,EAAE;AACnD,EAAA;;AAEA;AACF;AACA;AACUF,EAAAA,mBAAmBA,GAAS;AAClC;AACA,IAAA,IAAI,CAACG,gBAAgB,CAACC,yBAAyB,EAAE,CAAC;;AAElD;AACA,IAAA,IAAI,CAACD,gBAAgB,CAACE,uBAAuB,EAAE,CAAC;;AAEhD;AACA,IAAA,IAAI,CAACF,gBAAgB,CAACG,2BAA2B,EAAE,CAAC;AACtD,EAAA;;AAEA;AACF;AACA;AACgBJ,EAAAA,gBAAgBA,GAAkB;AAAA,IAAA,IAAAK,KAAA,GAAA,IAAA;AAAA,IAAA,OAAAC,iBAAA,CAAA,aAAA;MAC9C,IAAI;AACF;AACA,QAAA,MAAMD,KAAI,CAACE,QAAQ,CAAC,SAAS,CAAC;;AAE9B;AACA,QAAA,MAAMF,KAAI,CAACE,QAAQ,CAAC,SAAS,CAAC;MAChC,CAAC,CAAC,OAAOC,KAAK,EAAE;AACdC,QAAAA,OAAO,CAACC,IAAI,CAAC,+BAA+B,EAAEF,KAAK,CAAC;AACtD,MAAA;AAAC,IAAA,CAAA,CAAA,EAAA;AACH,EAAA;;AAEA;AACF;AACA;AACQG,EAAAA,YAAYA,GAAkB;AAAA,IAAA,IAAAC,MAAA,GAAA,IAAA;AAAA,IAAA,OAAAN,iBAAA,CAAA,aAAA;MAClC,MAAMM,MAAI,CAACb,kBAAkB;AAAC,IAAA,CAAA,CAAA,EAAA;AAChC,EAAA;;AAEA;AACF;AACA;AACA;EACQc,gBAAgBA,CAACC,IAAY,EAAiB;AAAA,IAAA,IAAAC,MAAA,GAAA,IAAA;AAAA,IAAA,OAAAT,iBAAA,CAAA,aAAA;AAClD,MAAA,MAAMS,MAAI,CAAChB,kBAAkB,CAAC;AAC9B,MAAA,MAAMgB,MAAI,CAACR,QAAQ,CAACO,IAAI,CAAC;;AAEzB;AACA,MAAA,IAAME,KAAK,GAAGF,IAAI,CAACE,KAAK,CAAC,mBAAmB,CAAC;AAC7C,MAAA,IAAIA,KAAK,EAAE;AACT,QAAA,IAAMC,YAAY,GAAGD,KAAK,CAAC,CAAC,CAAC;AAC7B,QAAA,IAAME,SAAS,GAAGC,iBAAiB,CAACC,gBAAgB,CAACH,YAAY,CAAC;AAClE,QAAA,IAAMI,QAAQ,GAAGF,iBAAiB,CAACG,oBAAoB,CAACJ,SAAS,CAAC;AAElE,QAAA,IAAIG,QAAQ,IAAIA,QAAQ,CAACE,MAAM,GAAG,CAAC,EAAE;AACnC,UAAA,KAAK,IAAMC,UAAU,IAAIH,QAAQ,EAAE;AACjC,YAAA,IAAMI,YAAY,GAAGN,iBAAiB,CAACO,eAAe,CAACF,UAAU,CAAC;AAClE,YAAA,IAAMG,YAAY,GAAA,uCAAA,CAAAC,MAAA,CAAaH,YAAY,EAAA,KAAA,CAAK;YAChD,IAAI;AACF,cAAA,MAAMV,MAAI,CAACR,QAAQ,CAACoB,YAAY,CAAC;YACnC,CAAC,CAAC,OAAOnB,KAAK,EAAE;cACdC,OAAO,CAACC,IAAI,CAAA,yCAAA,CAAAkB,MAAA,CAA2CD,YAAY,EAAA,GAAA,CAAA,EAAKnB,KAAK,CAAC;AAChF,YAAA;AACF,UAAA;AACF,QAAA;AACF,MAAA;AAAC,IAAA,CAAA,CAAA,EAAA;AACH,EAAA;;AAEA;AACF;AACA;EACQqB,2BAA2BA,CAACX,SAAiB,EAAiB;AAAA,IAAA,IAAAY,MAAA,GAAA,IAAA;AAAA,IAAA,OAAAxB,iBAAA,CAAA,aAAA;AAClE,MAAA,IAAMW,YAAY,GAAGE,iBAAiB,CAACO,eAAe,CAACR,SAAS,CAAC;AACjE,MAAA,IAAMJ,IAAI,GAAA,uCAAA,CAAAc,MAAA,CAAaX,YAAY,EAAA,KAAA,CAAK;AACxC,MAAA,MAAMa,MAAI,CAACjB,gBAAgB,CAACC,IAAI,CAAC;AAAC,IAAA,CAAA,CAAA,EAAA;AACpC,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACQiB,EAAAA,YAAYA,CAACC,EAAU,EAAEC,OAO9B,EAAiB;AAAA,IAAA,IAAAC,MAAA,GAAA,IAAA;AAAA,IAAA,OAAA5B,iBAAA,CAAA,aAAA;AAChB,MAAA,MAAM4B,MAAI,CAACnC,kBAAkB,CAAC;;AAE9B,MAAA,IAAMoC,GAAoB,GAAG;QAC3BH,EAAE;AACFI,QAAAA,KAAK,EAAEH,OAAO,CAACG,KAAK,IAAIJ,EAAE;QAC1BnC,WAAW,EAAEoC,OAAO,CAACpC,WAAW;QAChCwC,OAAO,EAAEJ,OAAO,CAACI,OAAO;QACxBC,OAAO,EAAEL,OAAO,CAACM,IAAI;AACrBC,QAAAA,OAAO,EAAE,KAAK;QACdC,WAAW,EAAER,OAAO,CAACQ;OACtB;;AAED;AACA,MAAA,MAAMP,MAAI,CAACQ,mBAAmB,CAACP,GAAG,CAAC;AAAC,IAAA,CAAA,CAAA,EAAA;AACtC,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACEQ,EAAAA,aAAaA,CAACX,EAAU,EAAES,WAAoB,EAAQ;AACpD,IAAA,IAAI,CAACG,qBAAqB,CAACZ,EAAE,EAAES,WAAW,CAAC;AAC7C,EAAA;;AAEA;AACF;AACA;AACQI,EAAAA,OAAOA,GAAkB;AAAA,IAAA,IAAAC,MAAA,GAAA,IAAA;AAAA,IAAA,OAAAxC,iBAAA,CAAA,aAAA;AAC7B;MACAwC,MAAI,CAACC,gBAAgB,EAAE;;AAEvB;MACAD,MAAI,CAACE,qBAAqB,EAAE;;AAE5B;MACAF,MAAI,CAAChD,mBAAmB,EAAE;;AAE1B;AACAgD,MAAAA,MAAI,CAAC/C,kBAAkB,GAAG+C,MAAI,CAAC9C,gBAAgB,EAAE;MACjD,MAAM8C,MAAI,CAAC/C,kBAAkB;AAAC,IAAA,CAAA,CAAA,EAAA;AAChC,EAAA;AACF;;;;"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { asyncToGenerator as _asyncToGenerator } from '../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import { jsonSafeParse } from '../tools/utils.js';
|
|
3
|
+
import { context } from '../context/index.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 查询云组件列表(固定 URL)
|
|
7
|
+
*/
|
|
8
|
+
function fetchCloudComponents() {
|
|
9
|
+
return _fetchCloudComponents.apply(this, arguments);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* 将云组件列表转为「允许使用的组件」的 XML 片段
|
|
14
|
+
* 约定:
|
|
15
|
+
* - namespace 必填
|
|
16
|
+
* - meta.summary 作为 description 使用(若无则尝试其它字段)
|
|
17
|
+
* - 云组件统一视为 UI 组件
|
|
18
|
+
*/
|
|
19
|
+
function _fetchCloudComponents() {
|
|
20
|
+
_fetchCloudComponents = _asyncToGenerator(function* () {
|
|
21
|
+
var url = "/api/material/list?type=component&tags=".concat(encodeURIComponent('含提示词'), "&page=1&pageSize=50");
|
|
22
|
+
try {
|
|
23
|
+
var res = yield fetch(url, {
|
|
24
|
+
method: "GET"
|
|
25
|
+
});
|
|
26
|
+
if (!res.ok) {
|
|
27
|
+
throw new Error("Request failed with status ".concat(res.status));
|
|
28
|
+
}
|
|
29
|
+
var json = yield res.json();
|
|
30
|
+
console.log('json', json);
|
|
31
|
+
var list = json && json.data && Array.isArray(json.data.list) && json.data.list || (Array.isArray(json.list) ? json.list : []) || [];
|
|
32
|
+
return list;
|
|
33
|
+
} catch (error) {
|
|
34
|
+
console.error("[plugin-ai] fetchCloudComponents error:", error);
|
|
35
|
+
return [];
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
return _fetchCloudComponents.apply(this, arguments);
|
|
39
|
+
}
|
|
40
|
+
function buildCloudComponentsPrompts(components) {
|
|
41
|
+
if (!Array.isArray(components) || !components.length) {
|
|
42
|
+
return "";
|
|
43
|
+
}
|
|
44
|
+
return "<\u53EF\u4EE5\u4F7F\u7528\u7684MyBricks\u590D\u5408\u7EC4\u4EF6>\n \u590D\u5408\u7EC4\u4EF6\u662F\u5C01\u88C5\u597D\u7684MyBricks\u7EC4\u4EF6\uFF0C\u901A\u5E38\u6BD4\u666E\u901A\u7EC4\u4EF6\u7684\u529F\u80FD\u66F4\u5F3A\u5927\uFF0C\u4F46\u662F\u6CA1\u90A3\u4E48\u7075\u6D3B\uFF0C\u56E0\u6B64\u5728\u4F7F\u7528\u65F6\uFF0C\u9700\u8981\u6839\u636E\u5177\u4F53\u9700\u6C42\u9009\u62E9\u5408\u9002\u7684\u7EC4\u4EF6\u3002\n ".concat(components.filter(item => !!(item !== null && item !== void 0 && item.namespace)).map(item => {
|
|
45
|
+
var _meta$ai, _meta$ai2;
|
|
46
|
+
var meta = jsonSafeParse(item.meta || "{}");
|
|
47
|
+
return "<component>\n <namespace>".concat(item.namespace, "</namespace>\n <title>").concat(item.title || "", "</title>\n <description>").concat((meta === null || meta === void 0 || (_meta$ai = meta.ai) === null || _meta$ai === void 0 || (_meta$ai = _meta$ai.prompts) === null || _meta$ai === void 0 ? void 0 : _meta$ai.summary) || "", "</description>\n ").concat((meta === null || meta === void 0 || (_meta$ai2 = meta.ai) === null || _meta$ai2 === void 0 || (_meta$ai2 = _meta$ai2.prompts) === null || _meta$ai2 === void 0 ? void 0 : _meta$ai2.usage) || "", "\n </component>\n ");
|
|
48
|
+
}).join("\n"), "\n</\u53EF\u4EE5\u4F7F\u7528\u7684MyBricks\u590D\u5408\u7EC4\u4EF6>\n ");
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* 创建 getAllComDefPrompts 方法,返回原有组件信息 + 云组件信息
|
|
53
|
+
*/
|
|
54
|
+
function createGetAllComDefPrompts(getAllComDefPrompts) {
|
|
55
|
+
// 若未启用云组件,则直接返回原有的 getAllComDefPrompts(不请求云组件)
|
|
56
|
+
if (!context.useCloudComponents) {
|
|
57
|
+
return () => {
|
|
58
|
+
var _getAllComDefPrompts;
|
|
59
|
+
return (_getAllComDefPrompts = getAllComDefPrompts === null || getAllComDefPrompts === void 0 ? void 0 : getAllComDefPrompts()) !== null && _getAllComDefPrompts !== void 0 ? _getAllComDefPrompts : "";
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
var cloudPrompts = "";
|
|
63
|
+
fetchCloudComponents().then(list => {
|
|
64
|
+
cloudPrompts = buildCloudComponentsPrompts(list);
|
|
65
|
+
}).catch(error => {
|
|
66
|
+
console.error("[plugin-ai] createGetAllComDefPrompts fetchCloudComponents error:", error);
|
|
67
|
+
// 失败就保持 cloudPrompts 为空,只使用原有组件定义
|
|
68
|
+
});
|
|
69
|
+
return () => {
|
|
70
|
+
var _getAllComDefPrompts2;
|
|
71
|
+
var base = (_getAllComDefPrompts2 = getAllComDefPrompts === null || getAllComDefPrompts === void 0 ? void 0 : getAllComDefPrompts()) !== null && _getAllComDefPrompts2 !== void 0 ? _getAllComDefPrompts2 : "";
|
|
72
|
+
console.log('cloudPrompts', cloudPrompts);
|
|
73
|
+
if (!cloudPrompts) {
|
|
74
|
+
// 若云组件尚未加载完成,则只返回原有组件定义,避免影响正常使用
|
|
75
|
+
return base;
|
|
76
|
+
}
|
|
77
|
+
if (!base) {
|
|
78
|
+
return cloudPrompts;
|
|
79
|
+
}
|
|
80
|
+
return "".concat(cloudPrompts, "\n").concat(base, "\n");
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export { buildCloudComponentsPrompts, createGetAllComDefPrompts, fetchCloudComponents };
|
|
85
|
+
//# sourceMappingURL=cloud-components.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-components.js","sources":["../../src/api/cloud-components.ts"],"sourcesContent":["import { jsonSafeParse } from \"./../tools/utils\";\nimport { context } from \"../context\";\n\nexport interface CloudComponentMeta {\n summary?: string;\n description?: string;\n [key: string]: any;\n}\n\nexport interface CloudComponent {\n namespace: string;\n title?: string;\n meta?: string;\n summary?: string;\n [key: string]: any;\n}\n\ninterface CloudComponentsApiResponse {\n data?: {\n list?: CloudComponent[];\n [key: string]: any;\n };\n list?: CloudComponent[];\n [key: string]: any;\n}\n\n/**\n * 查询云组件列表(固定 URL)\n */\nexport async function fetchCloudComponents(): Promise<CloudComponent[]> {\n const url = `/api/material/list?type=component&tags=${encodeURIComponent('含提示词')}&page=1&pageSize=50`;\n\n try {\n const res = await fetch(url, { method: \"GET\" });\n if (!res.ok) {\n throw new Error(`Request failed with status ${res.status}`);\n }\n\n const json = (await res.json()) as CloudComponentsApiResponse;\n\n console.log('json', json);\n const list =\n (json && json.data && Array.isArray(json.data.list) && json.data.list) ||\n (Array.isArray(json.list) ? json.list : []) ||\n [];\n\n return list;\n } catch (error) {\n console.error(\"[plugin-ai] fetchCloudComponents error:\", error);\n return [];\n }\n}\n\n/**\n * 将云组件列表转为「允许使用的组件」的 XML 片段\n * 约定:\n * - namespace 必填\n * - meta.summary 作为 description 使用(若无则尝试其它字段)\n * - 云组件统一视为 UI 组件\n */\nexport function buildCloudComponentsPrompts(\n components: CloudComponent[]\n): string {\n if (!Array.isArray(components) || !components.length) {\n return \"\";\n }\n\n return `<可以使用的MyBricks复合组件>\n 复合组件是封装好的MyBricks组件,通常比普通组件的功能更强大,但是没那么灵活,因此在使用时,需要根据具体需求选择合适的组件。\n ${components.filter((item) => !!item?.namespace).map((item) => {\n\n const meta = jsonSafeParse(item.meta as string || \"{}\");\n\n return `<component>\n <namespace>${item.namespace}</namespace>\n <title>${item.title || \"\"}</title>\n <description>${meta?.ai?.prompts?.summary || \"\"}</description>\n ${meta?.ai?.prompts?.usage || \"\"}\n </component>\n `}).join(\"\\n\")}\n</可以使用的MyBricks复合组件>\n `;\n}\n\n/**\n * 创建 getAllComDefPrompts 方法,返回原有组件信息 + 云组件信息\n */\nexport function createGetAllComDefPrompts(\n getAllComDefPrompts: (() => string) | undefined\n): () => string {\n // 若未启用云组件,则直接返回原有的 getAllComDefPrompts(不请求云组件)\n if (!context.useCloudComponents) {\n return (): string => {\n return getAllComDefPrompts?.() ?? \"\";\n };\n }\n\n let cloudPrompts = \"\";\n fetchCloudComponents()\n .then((list) => {\n cloudPrompts = buildCloudComponentsPrompts(list);\n })\n .catch((error) => {\n console.error(\n \"[plugin-ai] createGetAllComDefPrompts fetchCloudComponents error:\",\n error\n );\n // 失败就保持 cloudPrompts 为空,只使用原有组件定义\n });\n\n return (): string => {\n const base = getAllComDefPrompts?.() ?? \"\";\n\n console.log('cloudPrompts', cloudPrompts);\n\n if (!cloudPrompts) {\n // 若云组件尚未加载完成,则只返回原有组件定义,避免影响正常使用\n return base;\n }\n\n if (!base) {\n return cloudPrompts;\n }\n\n return `${cloudPrompts}\\n${base}\\n`;\n };\n}\n\n\n"],"names":["fetchCloudComponents","_fetchCloudComponents","apply","arguments","_asyncToGenerator","url","concat","encodeURIComponent","res","fetch","method","ok","Error","status","json","console","log","list","data","Array","isArray","error","buildCloudComponentsPrompts","components","length","filter","item","namespace","map","_meta$ai","_meta$ai2","meta","jsonSafeParse","title","ai","prompts","summary","usage","join","createGetAllComDefPrompts","getAllComDefPrompts","context","useCloudComponents","_getAllComDefPrompts","cloudPrompts","then","catch","_getAllComDefPrompts2","base"],"mappings":"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"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { asyncToGenerator as _asyncToGenerator, objectSpread2 as _objectSpread2 } from '../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import { apiRecorder } from './recorder.js';
|
|
3
|
+
import { replay, replayFromJSON } from './replayer.js';
|
|
4
|
+
import { context } from '../context/index.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* 获取 API 实例的辅助函数
|
|
8
|
+
* 从 context.designer 获取 API
|
|
9
|
+
*/
|
|
10
|
+
function getAPI() {
|
|
11
|
+
return context.designer;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* API 记录和回放管理器
|
|
16
|
+
* 提供录制、dump 和回放功能
|
|
17
|
+
*/
|
|
18
|
+
class APIRecordReplayManager {
|
|
19
|
+
/**
|
|
20
|
+
* 开始录制 API 调用
|
|
21
|
+
*/
|
|
22
|
+
start() {
|
|
23
|
+
apiRecorder.start();
|
|
24
|
+
console.log('[APIRecordReplay] 开始录制');
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* 停止录制
|
|
29
|
+
*/
|
|
30
|
+
stop() {
|
|
31
|
+
apiRecorder.stop();
|
|
32
|
+
console.log('[APIRecordReplay] 停止录制');
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* 导出录制的 JSON 字符串
|
|
37
|
+
* @returns JSON 字符串
|
|
38
|
+
*/
|
|
39
|
+
dump() {
|
|
40
|
+
var json = apiRecorder.dump();
|
|
41
|
+
console.log('[APIRecordReplay] 导出记录:', json);
|
|
42
|
+
return json;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* 获取记录数组
|
|
47
|
+
* @returns 记录数组
|
|
48
|
+
*/
|
|
49
|
+
getRecords() {
|
|
50
|
+
return apiRecorder.getRecords();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* 清空记录
|
|
55
|
+
*/
|
|
56
|
+
clear() {
|
|
57
|
+
apiRecorder.clear();
|
|
58
|
+
console.log('[APIRecordReplay] 已清空记录');
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* 检查是否正在录制
|
|
63
|
+
* @returns 是否正在录制
|
|
64
|
+
*/
|
|
65
|
+
isRecording() {
|
|
66
|
+
return apiRecorder.getRecording();
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* 回放记录的 API 调用
|
|
71
|
+
* @param records 记录数组(可选,如果不提供则使用当前录制的记录)
|
|
72
|
+
* @param options 回放选项(可选)
|
|
73
|
+
*/
|
|
74
|
+
replay(records, options) {
|
|
75
|
+
return _asyncToGenerator(function* () {
|
|
76
|
+
var api = getAPI();
|
|
77
|
+
if (!api) {
|
|
78
|
+
console.error('[APIRecordReplay] API 不可用');
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
var replayAPI = {
|
|
82
|
+
createPage: api.createPage.bind(api),
|
|
83
|
+
createCanvas: api.createCanvas.bind(api),
|
|
84
|
+
updatePage: api.updatePage.bind(api),
|
|
85
|
+
updateUiCom: api.updateUiCom.bind(api),
|
|
86
|
+
updateLogicCom: api.updateLogicCom.bind(api),
|
|
87
|
+
createDiagram: api.createDiagram.bind(api),
|
|
88
|
+
updateDiagram: api.updateDiagram.bind(api)
|
|
89
|
+
};
|
|
90
|
+
var recordsToReplay = records || apiRecorder.getRecords();
|
|
91
|
+
if (recordsToReplay.length === 0) {
|
|
92
|
+
console.warn('[APIRecordReplay] 没有可回放的记录');
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
console.log("[APIRecordReplay] \u5F00\u59CB\u56DE\u653E ".concat(recordsToReplay.length, " \u6761\u8BB0\u5F55"));
|
|
96
|
+
yield replay(recordsToReplay, replayAPI, _objectSpread2({
|
|
97
|
+
onBeforeAction: (action, index) => {
|
|
98
|
+
var _options$onBeforeActi;
|
|
99
|
+
console.log("[APIRecordReplay] \u6267\u884C\u64CD\u4F5C ".concat(index + 1, "/").concat(recordsToReplay.length, ": ").concat(action.type));
|
|
100
|
+
options === null || options === void 0 || (_options$onBeforeActi = options.onBeforeAction) === null || _options$onBeforeActi === void 0 || _options$onBeforeActi.call(options, action, index);
|
|
101
|
+
},
|
|
102
|
+
onAfterAction: (action, index, result) => {
|
|
103
|
+
var _options$onAfterActio;
|
|
104
|
+
options === null || options === void 0 || (_options$onAfterActio = options.onAfterAction) === null || _options$onAfterActio === void 0 || _options$onAfterActio.call(options, action, index, result);
|
|
105
|
+
},
|
|
106
|
+
onComplete: () => {
|
|
107
|
+
var _options$onComplete;
|
|
108
|
+
console.log('[APIRecordReplay] 回放完成');
|
|
109
|
+
options === null || options === void 0 || (_options$onComplete = options.onComplete) === null || _options$onComplete === void 0 || _options$onComplete.call(options);
|
|
110
|
+
},
|
|
111
|
+
onError: (error, action, index) => {
|
|
112
|
+
var _options$onError;
|
|
113
|
+
console.error("[APIRecordReplay] \u56DE\u653E\u51FA\u9519:", error);
|
|
114
|
+
options === null || options === void 0 || (_options$onError = options.onError) === null || _options$onError === void 0 || _options$onError.call(options, error, action, index);
|
|
115
|
+
}
|
|
116
|
+
}, options));
|
|
117
|
+
})();
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* 从 JSON 字符串回放
|
|
122
|
+
* @param jsonString JSON 字符串
|
|
123
|
+
* @param options 回放选项(可选)
|
|
124
|
+
*/
|
|
125
|
+
replayFromJSON(jsonString, options) {
|
|
126
|
+
return _asyncToGenerator(function* () {
|
|
127
|
+
var api = getAPI();
|
|
128
|
+
if (!api) {
|
|
129
|
+
console.error('[APIRecordReplay] API 不可用');
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
var replayAPI = {
|
|
133
|
+
createPage: api.createPage.bind(api),
|
|
134
|
+
createCanvas: api.createCanvas.bind(api),
|
|
135
|
+
updatePage: api.updatePage.bind(api),
|
|
136
|
+
updateUiCom: api.updateUiCom.bind(api),
|
|
137
|
+
updateLogicCom: api.updateLogicCom.bind(api),
|
|
138
|
+
createDiagram: api.createDiagram.bind(api),
|
|
139
|
+
updateDiagram: api.updateDiagram.bind(api)
|
|
140
|
+
};
|
|
141
|
+
console.log('[APIRecordReplay] 从 JSON 开始回放');
|
|
142
|
+
yield replayFromJSON(jsonString, replayAPI, _objectSpread2({
|
|
143
|
+
onBeforeAction: (action, index) => {
|
|
144
|
+
var _options$onBeforeActi2;
|
|
145
|
+
console.log("[APIRecordReplay] \u6267\u884C\u64CD\u4F5C ".concat(index + 1, ": ").concat(action.type));
|
|
146
|
+
options === null || options === void 0 || (_options$onBeforeActi2 = options.onBeforeAction) === null || _options$onBeforeActi2 === void 0 || _options$onBeforeActi2.call(options, action, index);
|
|
147
|
+
},
|
|
148
|
+
onAfterAction: (action, index, result) => {
|
|
149
|
+
var _options$onAfterActio2;
|
|
150
|
+
options === null || options === void 0 || (_options$onAfterActio2 = options.onAfterAction) === null || _options$onAfterActio2 === void 0 || _options$onAfterActio2.call(options, action, index, result);
|
|
151
|
+
},
|
|
152
|
+
onComplete: () => {
|
|
153
|
+
var _options$onComplete2;
|
|
154
|
+
console.log('[APIRecordReplay] 回放完成');
|
|
155
|
+
options === null || options === void 0 || (_options$onComplete2 = options.onComplete) === null || _options$onComplete2 === void 0 || _options$onComplete2.call(options);
|
|
156
|
+
},
|
|
157
|
+
onError: (error, action, index) => {
|
|
158
|
+
var _options$onError2;
|
|
159
|
+
console.error("[APIRecordReplay] \u56DE\u653E\u51FA\u9519:", error);
|
|
160
|
+
options === null || options === void 0 || (_options$onError2 = options.onError) === null || _options$onError2 === void 0 || _options$onError2.call(options, error, action, index);
|
|
161
|
+
}
|
|
162
|
+
}, options));
|
|
163
|
+
})();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
export { APIRecordReplayManager };
|
|
168
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sources":["../../src/api-record-replay/manager.ts"],"sourcesContent":["/**\n * API 记录和回放管理器\n * 提供录制、dump 和回放功能\n */\n\nimport { apiRecorder, RecordedAction } from './recorder';\nimport { replay, replayFromJSON, ReplayAPI, ReplayOptions } from './replayer';\nimport { context } from '../context';\n\n/**\n * 获取 API 实例的辅助函数\n * 从 context.designer 获取 API\n */\nfunction getAPI() {\n return context.designer;\n}\n\n/**\n * API 记录和回放管理器\n * 提供录制、dump 和回放功能\n */\nexport class APIRecordReplayManager {\n /**\n * 开始录制 API 调用\n */\n start() {\n apiRecorder.start();\n console.log('[APIRecordReplay] 开始录制');\n }\n\n /**\n * 停止录制\n */\n stop() {\n apiRecorder.stop();\n console.log('[APIRecordReplay] 停止录制');\n }\n\n /**\n * 导出录制的 JSON 字符串\n * @returns JSON 字符串\n */\n dump(): string {\n const json = apiRecorder.dump();\n console.log('[APIRecordReplay] 导出记录:', json);\n return json;\n }\n\n /**\n * 获取记录数组\n * @returns 记录数组\n */\n getRecords(): RecordedAction[] {\n return apiRecorder.getRecords();\n }\n\n /**\n * 清空记录\n */\n clear() {\n apiRecorder.clear();\n console.log('[APIRecordReplay] 已清空记录');\n }\n\n /**\n * 检查是否正在录制\n * @returns 是否正在录制\n */\n isRecording(): boolean {\n return apiRecorder.getRecording();\n }\n\n /**\n * 回放记录的 API 调用\n * @param records 记录数组(可选,如果不提供则使用当前录制的记录)\n * @param options 回放选项(可选)\n */\n async replay(records?: RecordedAction[], options?: ReplayOptions) {\n const api = getAPI();\n if (!api) {\n console.error('[APIRecordReplay] API 不可用');\n return;\n }\n\n const replayAPI: ReplayAPI = {\n createPage: api.createPage!.bind(api),\n createCanvas: api.createCanvas!.bind(api),\n updatePage: api.updatePage!.bind(api),\n updateUiCom: api.updateUiCom!.bind(api),\n updateLogicCom: api.updateLogicCom!.bind(api),\n createDiagram: api.createDiagram!.bind(api),\n updateDiagram: api.updateDiagram!.bind(api)\n };\n\n const recordsToReplay = records || apiRecorder.getRecords();\n \n if (recordsToReplay.length === 0) {\n console.warn('[APIRecordReplay] 没有可回放的记录');\n return;\n }\n\n console.log(`[APIRecordReplay] 开始回放 ${recordsToReplay.length} 条记录`);\n \n await replay(recordsToReplay, replayAPI, {\n onBeforeAction: (action, index) => {\n console.log(`[APIRecordReplay] 执行操作 ${index + 1}/${recordsToReplay.length}: ${action.type}`);\n options?.onBeforeAction?.(action, index);\n },\n onAfterAction: (action, index, result) => {\n options?.onAfterAction?.(action, index, result);\n },\n onComplete: () => {\n console.log('[APIRecordReplay] 回放完成');\n options?.onComplete?.();\n },\n onError: (error, action, index) => {\n console.error(`[APIRecordReplay] 回放出错:`, error);\n options?.onError?.(error, action, index);\n },\n ...options\n });\n }\n\n /**\n * 从 JSON 字符串回放\n * @param jsonString JSON 字符串\n * @param options 回放选项(可选)\n */\n async replayFromJSON(jsonString: string, options?: ReplayOptions) {\n const api = getAPI();\n if (!api) {\n console.error('[APIRecordReplay] API 不可用');\n return;\n }\n\n const replayAPI: ReplayAPI = {\n createPage: api.createPage!.bind(api),\n createCanvas: api.createCanvas!.bind(api),\n updatePage: api.updatePage!.bind(api),\n updateUiCom: api.updateUiCom!.bind(api),\n updateLogicCom: api.updateLogicCom!.bind(api),\n createDiagram: api.createDiagram!.bind(api),\n updateDiagram: api.updateDiagram!.bind(api)\n };\n\n console.log('[APIRecordReplay] 从 JSON 开始回放');\n \n await replayFromJSON(jsonString, replayAPI, {\n onBeforeAction: (action, index) => {\n console.log(`[APIRecordReplay] 执行操作 ${index + 1}: ${action.type}`);\n options?.onBeforeAction?.(action, index);\n },\n onAfterAction: (action, index, result) => {\n options?.onAfterAction?.(action, index, result);\n },\n onComplete: () => {\n console.log('[APIRecordReplay] 回放完成');\n options?.onComplete?.();\n },\n onError: (error, action, index) => {\n console.error(`[APIRecordReplay] 回放出错:`, error);\n options?.onError?.(error, action, index);\n },\n ...options\n });\n }\n}\n\n"],"names":["getAPI","context","designer","APIRecordReplayManager","start","apiRecorder","console","log","stop","dump","json","getRecords","clear","isRecording","getRecording","replay","records","options","_asyncToGenerator","api","error","replayAPI","createPage","bind","createCanvas","updatePage","updateUiCom","updateLogicCom","createDiagram","updateDiagram","recordsToReplay","length","warn","concat","_objectSpread","onBeforeAction","action","index","_options$onBeforeActi","type","call","onAfterAction","result","_options$onAfterActio","onComplete","_options$onComplete","onError","_options$onError","replayFromJSON","jsonString","_options$onBeforeActi2","_options$onAfterActio2","_options$onComplete2","_options$onError2"],"mappings":"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"}
|