@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":"index.js","sources":["../../../test/index.ts"],"sourcesContent":["// @ts-nocheck\nimport { context } from './../src/context';\nimport { createActionsParser } from './../src/tools/utils'\nimport { APIRecordReplayManager } from './../src/api-record-replay';\n\nwindow.plugin_ai_context = context\n\n// ========== 默认配置变量 ==========\n// 可以在这里修改默认值,方便测试时调整\nconst DEFAULT_TYPE = 'page'; // 'com' 或 'page'\nconst DEFAULT_COM_ID = 'u_bP96M'; // 默认组件ID\nconst DEFAULT_PAGE_ID = 'u_vLeVH'; // 默认页面ID\nconst DEFAULT_TEST_DELAY = 10; // testActions 默认延迟(毫秒)\nconst DEFAULT_GENERATE_DELAY = 200; // generateActionsFile 默认延迟(毫秒)\n// ==================================\n\nconst mockActions = `\n[\"u_Z5zWg\",\":root\",\"delete\"]\n[\"u_5kRx4\",\":root\",\"delete\"]\n[\"u_NOklc\",\":root\",\"delete\"]\n[\"u_KSX7z\",\":root\",\"delete\"]\n[\"u_4mxma\",\":root\",\"delete\"]\n[\"u_T9tvz\",\"content\",\"addChild\",{\"title\":\"下载图片\",\"comId\":\"u_img1\",\"ns\":\"pc.single-image\",\"layout\":{\"width\":20,\"height\":20,\"marginBottom\":2},\"configs\":[{\"path\":\"常规/图片地址\",\"value\":\"https://placehold.co/20x20/666666/ffffff?text=DL\"},{\"path\":\"常规/填充模式\",\"value\":\"cover\"}]}]\n[\"u_RA1Xs\",\"content\",\"addChild\",{\"title\":\"消息图片\",\"comId\":\"u_img2\",\"ns\":\"pc.single-image\",\"layout\":{\"width\":20,\"height\":20,\"marginBottom\":2},\"configs\":[{\"path\":\"常规/图片地址\",\"value\":\"https://placehold.co/20x20/666666/ffffff?text=MSG\"},{\"path\":\"常规/填充模式\",\"value\":\"cover\"}]}]\n[\"u_AxHmL\",\"content\",\"addChild\",{\"title\":\"学堂图片\",\"comId\":\"u_img3\",\"ns\":\"pc.single-image\",\"layout\":{\"width\":20,\"height\":20,\"marginBottom\":2},\"configs\":[{\"path\":\"常规/图片地址\",\"value\":\"https://placehold.co/20x20/666666/ffffff?text=EDU\"},{\"path\":\"常规/填充模式\",\"value\":\"cover\"}]}]\n[\"u_XE3CM\",\"content\",\"addChild\",{\"title\":\"规则图片\",\"comId\":\"u_img4\",\"ns\":\"pc.single-image\",\"layout\":{\"width\":20,\"height\":20,\"marginBottom\":2},\"configs\":[{\"path\":\"常规/图片地址\",\"value\":\"https://placehold.co/20x20/666666/ffffff?text=RULE\"},{\"path\":\"常规/填充模式\",\"value\":\"cover\"}]}]\n[\"u_t5DDQ\",\"content\",\"addChild\",{\"title\":\"帮助图片\",\"comId\":\"u_img5\",\"ns\":\"pc.single-image\",\"layout\":{\"width\":20,\"height\":20,\"marginBottom\":2},\"configs\":[{\"path\":\"常规/图片地址\",\"value\":\"https://placehold.co/20x20/666666/ffffff?text=HELP\"},{\"path\":\"常规/填充模式\",\"value\":\"cover\"}]}]\n[\"u_img1\",\":root\",\"move\",{\"comId\":\"u_T9tvz\",\"slotId\":\"content\",\"index\":0}]\n[\"u_img2\",\":root\",\"move\",{\"comId\":\"u_RA1Xs\",\"slotId\":\"content\",\"index\":0}]\n[\"u_img3\",\":root\",\"move\",{\"comId\":\"u_AxHmL\",\"slotId\":\"content\",\"index\":0}]\n[\"u_img4\",\":root\",\"move\",{\"comId\":\"u_XE3CM\",\"slotId\":\"content\",\"index\":0}]\n[\"u_img5\",\":root\",\"move\",{\"comId\":\"u_t5DDQ\",\"slotId\":\"content\",\"index\":0}]\n`\n\nwindow.getActions = () => {\n const parser = createActionsParser();\n\n const actions = parser(mockActions);\n\n console.log(actions)\n\n return actions\n}\n\n/**\n * 测试执行actions,支持组件和页面两种模式\n * @param type - 'com' 表示组件模式,'page' 表示页面模式\n * @param id - 组件ID或页面ID\n * @param delay - 每个action之间的延迟时间(毫秒),默认200ms\n */\nwindow.testActions = async (\n type = DEFAULT_TYPE,\n id = type === 'com' ? DEFAULT_COM_ID : DEFAULT_PAGE_ID,\n delay = DEFAULT_TEST_DELAY\n) => {\n const api = window.plugin_ai_context.api;\n const actionsToExecute = window.getActions();\n \n if (type === 'com') {\n // 组件模式\n const updateApi = api?.uiCom?.api?.updateCom;\n if (!updateApi) {\n console.error('Component API not available');\n return;\n }\n \n // 开始执行\n await updateApi(id, [], 'start');\n \n // 遍历执行每个action\n for (let i = 0; i < actionsToExecute.length; i++) {\n // 添加延迟\n await new Promise((resolve) => setTimeout(resolve, delay));\n \n // 执行当前action\n await updateApi(id, [actionsToExecute[i]], 'ing');\n }\n \n // 最后调用空数组,参数为complete\n await new Promise((resolve) => setTimeout(resolve, delay));\n await updateApi(id, [], 'complete');\n } else {\n // 页面模式\n const updateApi = api?.page?.api?.updatePage;\n if (!updateApi) {\n console.error('Page API not available');\n return;\n }\n \n // 开始执行\n await updateApi(id, [], 'start');\n \n // 遍历执行每个action\n for (let i = 0; i < actionsToExecute.length; i++) {\n // 添加延迟\n await new Promise((resolve) => setTimeout(resolve, delay));\n \n // 执行当前action\n await updateApi(id, [actionsToExecute[i]], 'ing');\n }\n \n // 最后调用空数组,参数为complete\n await new Promise((resolve) => setTimeout(resolve, delay));\n await updateApi(id, [], 'complete');\n }\n};\n\n// Helper function to format a value as JavaScript code with proper indentation\nfunction formatValue(value, indent = 0) {\n const indentStr = ' '.repeat(indent);\n const nextIndentStr = ' '.repeat(indent + 1);\n \n if (value === null) {\n return 'null';\n }\n \n if (value === undefined) {\n return 'undefined';\n }\n \n if (typeof value === 'string') {\n return JSON.stringify(value);\n }\n \n if (typeof value === 'number' || typeof value === 'boolean') {\n return String(value);\n }\n \n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]';\n }\n const items = value.map(item => {\n const itemStr = formatValue(item, indent + 1);\n // Handle multi-line items\n if (itemStr.includes('\\n')) {\n return `${nextIndentStr}${itemStr}`;\n }\n return `${nextIndentStr}${itemStr}`;\n }).join(',\\n');\n return `[\\n${items}\\n${indentStr}]`;\n }\n \n if (typeof value === 'object') {\n const keys = Object.keys(value);\n if (keys.length === 0) {\n return '{}';\n }\n const items = keys.map(key => {\n const val = formatValue(value[key], indent + 1);\n // If the value is multi-line, format it properly\n if (val.includes('\\n')) {\n return `${nextIndentStr}\"${key}\": ${val}`;\n }\n return `${nextIndentStr}\"${key}\": ${val}`;\n }).join(',\\n');\n return `{\\n${items}\\n${indentStr}}`;\n }\n \n return String(value);\n}\n\n// Helper function to format a single action object as JavaScript code\nfunction formatAction(action, indent = 1) {\n const indentStr = ' '.repeat(indent);\n const nextIndent = indent + 1;\n const nextIndentStr = ' '.repeat(nextIndent);\n \n const parts = [];\n parts.push(`${indentStr}{`);\n \n if (action.comId !== undefined) {\n parts.push(`${nextIndentStr}\"comId\": ${JSON.stringify(action.comId)},`);\n }\n \n if (action.type !== undefined) {\n parts.push(`${nextIndentStr}\"type\": ${JSON.stringify(action.type)},`);\n }\n \n if (action.target !== undefined) {\n parts.push(`${nextIndentStr}\"target\": ${JSON.stringify(action.target)},`);\n }\n \n if (action.params !== undefined) {\n const paramsStr = formatValue(action.params, nextIndent);\n // Remove trailing comma from params if it's an object/array\n const cleanParams = paramsStr.replace(/,\\s*$/, '');\n parts.push(`${nextIndentStr}\"params\": ${cleanParams}`);\n }\n \n parts.push(`${indentStr}}`);\n \n return parts.join('\\n');\n}\n\n// Function to format the entire actions array as mockActions variable declaration\nfunction formatActionsArray(actions) {\n if (actions.length === 0) {\n return 'let mockActions = [];';\n }\n \n const formattedActions = actions.map((action, index) => {\n const actionStr = formatAction(action, 1);\n return index < actions.length - 1 ? `${actionStr},` : actionStr;\n }).join('\\n');\n \n return `let mockActions = [\\n${formattedActions}\\n];`;\n}\n\n// Main function to generate the complete actions.ts file content\nwindow.generateActionsFile = (pageId, delay = DEFAULT_GENERATE_DELAY) => {\n const actionsToFormat = window.getActions();\n const actionsArrayStr = formatActionsArray(actionsToFormat);\n \n const executeFunctionStr = `async function executeActionsWithDelay(pageId, actions, delay, api) {\n// 开始执行\nawait api.updatePage(pageId, [], \"start\");\n\n// 遍历执行每个action\nfor (let i = 0; i < actions.length; i++) {\n // 添加延迟\n await new Promise((resolve) => setTimeout(resolve, delay));\n\n // 执行当前action\n await api.updatePage(pageId, [actions[i]], \"ing\");\n}\n\n// 最后调用空数组,参数为complete\nawait new Promise((resolve) => setTimeout(resolve, delay));\nawait api.updatePage(pageId, [], \"complete\");\n}`;\n\n const defaultPageId = pageId || `'${DEFAULT_PAGE_ID}'`;\n const executeCallStr = `\\nexecuteActionsWithDelay(${defaultPageId}, mockActions, ${delay}, window.plugin_ai_context.api?.page?.api)`;\n\n const fullContent = `${actionsArrayStr}\\n\\n${executeFunctionStr}${executeCallStr}\\n`;\n\n console.log('Generated actions.ts content:');\n console.log(fullContent);\n \n return fullContent;\n};\n\n// ========== API 收集和回放功能 ==========\n\n// 导出到 window 对象\nwindow.APIRecordReplay = new APIRecordReplayManager();\n\n// [].map(t => {\n// if (t.type === 'updatePage' && t.params[0] === 'u_QIXGy') {\n// t.params[0] = 'u_ail3e'\n// return {\n// ...t,\n// delay: 1000,\n// }\n// }\n// return null\n// }).filter(t => t !== null)"],"names":["window","plugin_ai_context","context","DEFAULT_TYPE","DEFAULT_COM_ID","DEFAULT_PAGE_ID","DEFAULT_TEST_DELAY","DEFAULT_GENERATE_DELAY","mockActions","getActions","parser","createActionsParser","actions","console","log","testActions","_asyncToGenerator","type","arguments","length","undefined","id","delay","api","actionsToExecute","_api$uiCom","updateApi","uiCom","updateCom","error","i","Promise","resolve","setTimeout","_api$page","page","updatePage","formatValue","value","indent","indentStr","repeat","nextIndentStr","JSON","stringify","String","Array","isArray","items","map","item","itemStr","includes","concat","join","keys","Object","key","val","formatAction","action","nextIndent","parts","push","comId","target","params","paramsStr","cleanParams","replace","formatActionsArray","formattedActions","index","actionStr","generateActionsFile","pageId","actionsToFormat","actionsArrayStr","executeFunctionStr","defaultPageId","executeCallStr","fullContent","APIRecordReplay","APIRecordReplayManager"],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
var createTemplates = {
|
|
2
|
+
page: _ref => {
|
|
3
|
+
var {
|
|
4
|
+
title
|
|
5
|
+
} = _ref;
|
|
6
|
+
return {
|
|
7
|
+
type: "normal",
|
|
8
|
+
title: title,
|
|
9
|
+
template: {
|
|
10
|
+
namespace: 'mybricks.harmony.systemPage',
|
|
11
|
+
deletable: false,
|
|
12
|
+
asRoot: true,
|
|
13
|
+
data: {
|
|
14
|
+
useTabBar: false
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
inputs: [{
|
|
18
|
+
id: "open",
|
|
19
|
+
title: "打开",
|
|
20
|
+
schema: {
|
|
21
|
+
type: "object"
|
|
22
|
+
}
|
|
23
|
+
}]
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export { createTemplates };
|
|
29
|
+
//# sourceMappingURL=createTemplates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createTemplates.js","sources":["../../src/preset/createTemplates.ts"],"sourcesContent":["export const createTemplates = {\n page: ({ title }: any) => {\n return {\n type: \"normal\",\n title: title,\n template: {\n namespace: 'mybricks.harmony.systemPage',\n deletable: false,\n asRoot: true,\n data: {\n useTabBar: false,\n },\n },\n inputs: [\n {\n id: \"open\",\n title: \"打开\",\n schema: {\n type: \"object\",\n },\n },\n ],\n }\n }\n}"],"names":["createTemplates","page","_ref","title","type","template","namespace","deletable","asRoot","data","useTabBar","inputs","id","schema"],"mappings":"AAAO,IAAMA,eAAe,GAAG;EAC7BC,IAAI,EAAEC,IAAA,IAAoB;IAAA,IAAnB;AAAEC,MAAAA;AAAW,KAAC,GAAAD,IAAA;IACnB,OAAO;AACLE,MAAAA,IAAI,EAAE,QAAQ;AACdD,MAAAA,KAAK,EAAEA,KAAK;AACZE,MAAAA,QAAQ,EAAE;AACRC,QAAAA,SAAS,EAAE,6BAA6B;AACxCC,QAAAA,SAAS,EAAE,KAAK;AAChBC,QAAAA,MAAM,EAAE,IAAI;AACZC,QAAAA,IAAI,EAAE;AACJC,UAAAA,SAAS,EAAE;AACb;OACD;AACDC,MAAAA,MAAM,EAAE,CACN;AACEC,QAAAA,EAAE,EAAE,MAAM;AACVT,QAAAA,KAAK,EAAE,IAAI;AACXU,QAAAA,MAAM,EAAE;AACNT,UAAAA,IAAI,EAAE;AACR;OACD;KAEJ;AACH,EAAA;AACF;;;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { user } from './user.js';
|
|
2
|
+
import { prompts } from './prompts.js';
|
|
3
|
+
import { createTemplates } from './createTemplates.js';
|
|
4
|
+
|
|
5
|
+
var preset = {
|
|
6
|
+
name: '智能助手',
|
|
7
|
+
user,
|
|
8
|
+
prompts,
|
|
9
|
+
createTemplates
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export { preset as default };
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/preset/index.ts"],"sourcesContent":["import { user } from \"./user\"\nimport { prompts } from \"./prompts\"\nimport { createTemplates } from './createTemplates'\n\nexport default {\n name: '智能助手',\n user,\n prompts,\n createTemplates,\n}\n"],"names":["name","user","prompts","createTemplates"],"mappings":";;;;AAIA,aAAe;AACbA,EAAAA,IAAI,EAAE,MAAM;EACZC,IAAI;EACJC,OAAO;AACPC,EAAAA;AACF,CAAC;;;;"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import '../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import '../rxai/node_modules/idb/build/index.js';
|
|
3
|
+
import 'node-forge';
|
|
4
|
+
import { fileFormat } from '../rxai/src/prompt/base.js';
|
|
5
|
+
|
|
6
|
+
function systemAppendPrompts() {
|
|
7
|
+
return "\n<\u5BF9\u4E8E\u5F53\u524D\u642D\u5EFA\u6709\u4EE5\u4E0B\u7279\u6B8A\u4E0A\u4E0B\u6587>\n<\u642D\u5EFA\u753B\u5E03\u4FE1\u606F>\n \u5F53\u524D\u642D\u5EFA\u753B\u5E03\u7684\u5BBD\u5EA6\u4E3A375\uFF0C\u6240\u6709\u5143\u7D20\u7684\u5C3A\u5BF8\u9700\u8981\u5173\u6CE8\u6B64\u4FE1\u606F\uFF0C\u4E14\u5C3D\u53EF\u80FD\u81EA\u9002\u5E94\u5BBD\u5EA6\u8FDB\u884C\u5E03\u5C40\u3002\n \u6BD4\u5982\uFF1A\n 1.\u5E03\u5C40\u9700\u8981\u81EA\u9002\u5E94\u753B\u5E03\u5BBD\u5EA6\uFF0C\u8003\u8651100%\u901A\u680F\uFF0C\u8981\u4E48\u914D\u7F6E\u5BBD\u5EA6+\u95F4\u8DDD\uFF1B\n 2.\u914D\u7F6E\u4E0A\u4E0B\u5DE6\u53F3\u548C\u5BBD\u5EA6\u9AD8\u5EA6\u65F6\uFF0C\u4E00\u5B9A\u8981\u57FA\u4E8E\u753B\u5E03\u5C3A\u5BF8\u8FDB\u884C\u5408\u7406\u7684\u8BA1\u7B97\uFF1B\n \u7279\u6B8A\u5730\uFF0C\u7CFB\u7EDF\u5DF2\u7ECF\u5185\u7F6E\u4E86\u5E95\u90E8\u5BFC\u822A\u680F\u548C\u9876\u90E8\u5BFC\u822A\u680F\uFF0C\u4EC5\u5173\u6CE8\u9875\u9762\u5185\u5BB9\u5373\u53EF\uFF0C\u4E0D\u7528\u5B9E\u73B0\u6B64\u90E8\u5206\u5185\u5BB9\u3002\n \u6700\u540E\uFF0C\u5FC5\u987B\u7ED9\u9875\u9762\u8BBE\u7F6E\u9875\u9762\u9AD8\u5EA6\u3002\n</\u642D\u5EFA\u753B\u5E03\u4FE1\u606F>\n\n<\u5141\u8BB8\u4F7F\u7528\u7684\u56FE\u6807>\nairplane_fill\nalarm_fill_1\narrow_clockwise\narrow_counterclockwise\narrow_counterclockwise_clock\narrow_down_right_and_arrow_up_left\narrow_left\narrow_right\narrow_right_up_and_square\narrow_up_left_and_arrow_down_right\narrow_up_to_line\narrowshape_turn_up_right_fill\nbackward_end_fill\nbattery\nbattery_75percent\nbell_fill\nbluetooth\nbluetooth_slash\nbookmark\ncalendar\ncamera\ncamera_fill\ncheckmark\ncheckmark_circle\ncheckmark_circle_fill\ncheckmark_square\ncheckmark_square_fill\nchevron_down\nchevron_left\nchevron_right\nchevron_up\nclock\ndial\ndoc_plaintext\ndoc_plaintext_and_pencil\ndoc_text_badge_arrow_up\ndoc_text_badge_magnifyingglass\nellipsis_message\nenvelope\neye\neye_slash\nfast_forward\nfolder\nfolder_badge_plus\nforward_end_fill\ngearshape\nhand_thumbsup_fill\nheadphones_fill\nheart\nheart_fill\nheart_slash\nhouse\nhouse_fill\nline_viewfinder\nlist_square_bill\nlivephoto\nlock\nlock_open\nmagnifyingglass\nmessage\nmessage_on_message\nmic\nmusic\nmusic_note_list\npaintpalette\npaperclip\npause\npicture\npicture_2\npicture_damage\nplay_circle_fill\nplay_fill\nplay_round_rectangle_fill\nplay_video\nplus\nqrcode\nrecord_circle\nresolution_video\nsave\nshare\ntemplate\ntext_clipboard\ntimer\ntrash\nwifi\nworldclock\nxmark\n</\u5141\u8BB8\u4F7F\u7528\u7684\u56FE\u6807>\n</\u5BF9\u4E8E\u5F53\u524D\u642D\u5EFA\u6709\u4EE5\u4E0B\u7279\u6B8A\u4E0A\u4E0B\u6587>";
|
|
8
|
+
}
|
|
9
|
+
function prdExamplesPrompts() {
|
|
10
|
+
return "\n<example>\n<user_query>\u6839\u636E\u56FE\u7247\u642D\u5EFA\u9875\u9762</user_query>\n<assistant_response>\n\u597D\u7684\uFF0C\u7ECF\u8FC7\u5BF9\u56FE\u7247\u7684\u5168\u9762\u5206\u6790\uFF0C\u7ED3\u8BBA\u5982\u4E0B\uFF1A\n".concat(fileFormat({
|
|
11
|
+
content: "**themes**\n \u754C\u9762\u91C7\u7528\u7B80\u7EA6\u7684\u5361\u7247\u5F0F\u5E03\u5C40\uFF0C\u6574\u4F53\u80CC\u666F\u91C7\u7528\u6D45\u7D2B\u8272\uFF0C\u5185\u5BB9\u533A\u57DF\u4F7F\u7528\u7EAF\u767D\u8272\u80CC\u666F\uFF0C\u8425\u9020\u51FA\u6E05\u723D\u7B80\u6D01\u7684\u89C6\u89C9\u6548\u679C\u3002\n \n **layout**\n \u754C\u9762\u603B\u4F53\u91C7\u7528\u4ECE\u4E0A\u5F80\u4E0B\u7684\u7EB5\u5411\u6D41\u5F0F\u5E03\u5C40\uFF0C\u9876\u90E8\u5185\u5BB9\u901A\u680F\uFF0C\u6BCF\u4E2A\u533A\u5757\u4EE5\u5706\u89D2\u5361\u7247\u7684\u5F62\u5F0F\u5448\u73B0\uFF0C\u5E95\u90E8\u901A\u680F\u4E3A\u56FA\u5B9A\u5E03\u5C40\uFF1B\n 1. \u9876\u90E8\u533A\u57DF\u4E3A\u901A\u680F\uFF0C\u4E2D\u95F4\u5C45\u4E2D\u5C55\u793A\u4E00\u4E2A\u56FE\u6807 + \u6807\u9898\uFF1B\n 2. \u5BFC\u822A\u533A\u57DF\u4E3A\u4E24\u884C\u56DB\u5217\u7684\u5BFC\u822A\u5165\u53E3\uFF1B\n 3. \u5957\u9910\u533A\u57DF\u4E3A\u6A2A\u5411\u4E09\u5217\u7684\u5747\u5206\u5E03\u5C40\u5361\u7247\uFF1B\n 3.1 \u5361\u7247\u5185\u6240\u6709\u6587\u672C\u5143\u7D20\u4ECE\u4E0A\u5230\u4E0B\u4F9D\u6B21\u6392\u5217\uFF0C\u53F3\u4E0A\u89D2\u53EF\u80FD\u5B58\u5728\u4E00\u4E2A\u5706\u5F62\u7684\u89D2\u6807\uFF1B\n 4. \u8054\u7CFB\u4EBA\u533A\u57DF\u662F\u5C45\u5DE6\u7684\u6807\u9898 + \u5C45\u53F3\u7684\u8054\u7CFB\u4EBA\u8BE6\u60C5\uFF0C\u8054\u7CFB\u4EBA\u8BE6\u60C5\u5305\u542B\u5934\u50CF\u548C\u6635\u79F0\uFF0C\u4EE5\u53CA\u4E00\u4E2A\u53EF\u9009\u62E9\u7BAD\u5934\uFF1B\n 5. \u7ED3\u7B97\u533A\u57DF\u662F\u56FA\u5B9A\u7684\u5E95\u90E8\u5185\u5BB9\uFF0C\u5305\u542B\u5DE6\u4FA7\u7684\u4EF7\u683C\u8BA1\u7B97+\u53F3\u4FA7\u7684\u652F\u4ED8\u6309\u94AE\uFF1B\n \n **colors**\n \u754C\u9762\u4E3B\u8272\u8C03\u4E3A\u660E\u4EAE\u7684\u84DD\u7D2B\u8272\uFF0C\u7528\u4E8E\u7A81\u51FA\u6309\u94AE\u548C\u91CD\u8981\u6587\u5B57\u3002\u80CC\u666F\u91C7\u7528\u67D4\u548C\u7684\u6D45\u7D2B\u8272\uFF0C\u642D\u914D\u7EAF\u767D\u8272\u7684\u5185\u5BB9\u533A\u57DF\uFF0C\u5F62\u6210\u5C42\u6B21\u5206\u660E\u7684\u89C6\u89C9\u5C42\u7EA7\u3002\n \n **attention**\n \u6CE8\u610F\u4EE5\u4E0B\u7EC6\u8282\uFF1A\n - \u622A\u56FE\u4E2D\u7684\u603B\u4F53\u80CC\u666F\u6CA1\u6709\u610F\u4E49\uFF0C\u53EF\u4EE5\u8003\u8651\u53BB\u6389\uFF1B\n - \u6CE8\u610F\u5404\u533A\u5757\u95F4\u8DDD\uFF0C\u9876\u90E8\u901A\u680F\u5C31\u4E0D\u8981\u4F7F\u7528\u5916\u95F4\u8DDD\u4E86\uFF1B\n - \u5361\u7247\u4E2D\u5B57\u4F53\u5185\u5BB9\u8F83\u4E30\u5BCC\uFF0C\u6CE8\u610F\u5B57\u4F53\u5927\u5C0F\uFF0C\u4E0D\u8981\u6362\u884C\u548C\u91CD\u53E0\uFF1B\n - \u56FE\u7247\u4E2D\u7684\u7535\u8BDD\u533A\u57DF\u9009\u62E9\u4E0E\u8F93\u5165\u624B\u673A\u53F7\u4E3A\u4E00\u4F53\u8BBE\u8BA1\u3001\u6574\u4F53\u5706\u89D2\uFF1B\n - \u9A8C\u8BC1\u7801\u533A\u57DF\u7684\u83B7\u53D6\u9A8C\u8BC1\u7801\u6309\u94AE\u4E3A\u84DD\u8272\uFF0C\u6309\u94AE\u6587\u5B57\u4E3A\u767D\u8272\uFF1B\n\n **risk**\n \u53C2\u8003\u56FE\u7247\u5BBD\u5EA6\u4E3A720\u50CF\u7D20\uFF0C\u76EE\u6807\u753B\u5E03\u5BBD\u5EA6\u4E3A375\u50CF\u7D20\uFF0C\u6211\u4EEC\u9700\u8981\u5BF9\u5143\u7D20\u5C3A\u5BF8\u8FDB\u884C\u5408\u7406\u7684\u7F29\u653E\uFF0C\u6240\u4EE5\u5728\u642D\u5EFA\u65F6\u9700\u8981\u6CE8\u610F\u5185\u5BB9\u4E0D\u8981\u6EA2\u51FA\u753B\u5E03\uFF0C\u4E3B\u8981\u5173\u6CE8\u4EE5\u4E0B\u90E8\u5206\uFF1A\n 1. \u5BFC\u822A\u533A\u57DF\u4E3A\u4E24\u884C\u56DB\u5217\u7684\u7F51\u683C\u5747\u5206\u5E03\u5C40\uFF0C\u4E24\u884C\u4F7F\u7528\u6362\u884C\u6765\u5B9E\u73B0\uFF0C\u540C\u65F6\u5185\u5BB9\u9700\u8981\u8003\u8651\u56FA\u5B9A\u5BBD\u5EA6\uFF0C\u907F\u514D\u8D85\u51FA\u753B\u5E03\uFF1B\n 2. \u5957\u9910\u533A\u57DF\u4E2D\u7684\u5361\u7247\u4E3A\u4E09\u5217\u7684\u5747\u5206\u5E03\u5C40\uFF0C\u5176\u4E2D\u5361\u7247\u7684\u5185\u5BB9\u4FE1\u606F\u8F83\u4E30\u5BCC\uFF0C\u5EFA\u8BAE\u56FA\u5B9A\u5BBD\u9AD8\uFF0C\u540C\u65F6\u5C06\u6587\u672C\u5B57\u4F53\u51CF\u5C11\u81F310px;\n 3. \u201C\u9002\u5408\u5404\u79CD\u6D3B\u52A8\u7684\u573A\u5730\u201D\u4E3A\u52A8\u6001\u5185\u5BB9\uFF0C\u6CE8\u610F\u914D\u7F6E\u6587\u672C\u5B57\u4F53\u6781\u5C0F\uFF0C\u5E76\u4E14\u914D\u7F6E\u6EA2\u51FA\u80FD\u529B\uFF0C\u907F\u514D\u6362\u884C\uFF1B\n 4. \u5E95\u90E8\u5C45\u5DE6\u90E8\u5206\u5185\u5BB9\u5BBD\u5EA6\u7F29\u5C0F\u540E\u4F1A\u8D85\u8FC7\u4E00\u534A\uFF0C\u6CE8\u610F\u5C06\u5B57\u4F53\u8C03\u6574\u81F3\u6781\u5C0F\uFF0C\u907F\u514D\u906E\u6321\u53F3\u4FA7\u5185\u5BB9\uFF1B\n 5. \u53F3\u4FA7\u56FE\u6807 + \u6587\u672C\u6A2A\u5411\u6392\u5217\u65F6\uFF0C\u6CE8\u610F\u6587\u672C\u5BBD\u5EA6\uFF0C\u9632\u6B62\u906E\u6321\u56FE\u6807\uFF1B",
|
|
12
|
+
fileName: 'XX页面需求文档.md'
|
|
13
|
+
}), "\n\n\u63A8\u8350\u91C7\u7528\u4EE5\u4E0B\u7EC4\u4EF6\u8FDB\u884C\u642D\u5EFA\uFF1A\n").concat(fileFormat({
|
|
14
|
+
content: "[\n {\n \"namespace\": \"mybricks.somelib.card\"\n },\n {\n \"namespace\": \"mybricks.somelib.icon\"\n },\n {\n \"namespace\": \"mybricks.somelib.text\"\n },\n {\n \"namespace\": \"mybricks.somelib.button\"\n }\n]",
|
|
15
|
+
fileName: 'XX页面所需要的组件信息.json'
|
|
16
|
+
}), "\n</assistant_response>\n</example>");
|
|
17
|
+
}
|
|
18
|
+
function generatePageActionExamplesPrompts() {
|
|
19
|
+
return "\n<example>\n<user_query>\u642D\u5EFA\u4E00\u4E2A\u4E2A\u4EBA\u4E2D\u5FC3\u9875\u9762\u6846\u67B6</user_query>\n<assistant_response>\n \u9996\u5148\uFF0C\u5FC5\u987B\u6839\u636E\u9875\u9762\u5185\u5BB9\u8BBE\u7F6E\u4E00\u4E2A\u5408\u9002\u7684\u9875\u9762\u7684\u9AD8\u5EA6\u3002\n \u5176\u6B21\uFF0C\u5FC5\u987B\u5BF9\u9875\u9762\u5E03\u5C40\u8BBE\u7F6E\u4E00\u4E2A\u5408\u7406\u7684\u5E03\u5C40\u3002\n \u7136\u540E\n \u57FA\u4E8E\u7528\u6237\u5F53\u524D\u7684\u9009\u62E9\u4E0A\u4E0B\u6587\uFF0C\u6211\u4EEC\u6765\u5B9E\u73B0\u4E00\u4E2A\u4E2A\u4EBA\u4E2D\u5FC3\u9875\u9762\u6846\u67B6\uFF0C\u7531\u4E8E\u662F\u6846\u67B6\uFF0C\u6240\u4EE5\u6211\u4EC5\u7ED9\u51FA\u4E3B\u4F53\u90E8\u5206\uFF0C\u601D\u8003\u8FC7\u7A0B\u5982\u4E0B\uFF1A\n 1. \u642D\u5EFA\u9875\u9762\u65F6\u4E00\u822C\u7528\u4ECE\u4E0A\u5230\u4E0B\u7684\u697C\u5C42\u5316\u642D\u5EFA\u65B9\u5F0F\uFF0C\u6211\u4EEC\u63A8\u8350\u5728\u9875\u9762\u6700\u5916\u5C42\u8BBE\u7F6E\u4E3Aflex\u7684\u5782\u76F4\u5E03\u5C40\uFF0C\u8BBE\u7F6E\u5B50\u7EC4\u4EF6\u7684\u5DE6\u53F3margin\u4EE5\u53CA\u9AD8\u5EA6\uFF0C\u8FD9\u6837\u597D\u8C03\u6574\u4F4D\u7F6E\uFF1B\n 2. \u5C06\u9875\u9762\u4ECE\u4E0A\u5230\u4E0B\u5206\u6210\u9876\u90E8\u4FE1\u606F\u3001\u4E2A\u4EBA\u4FE1\u606F\u3001\u4E2D\u95F4\u5165\u53E3\u3001\u5E95\u90E8\u6309\u94AE\u56DB\u4E2A\u90E8\u5206\uFF1B\n 3. \u4E2A\u4EBA\u4FE1\u606F\u90E8\u5206\uFF0C\u56FE\u6587\u7F16\u6392\u5361\u7247\uFF0C\u7528flex\u5E03\u5C40\u5B9E\u73B0\u5DE6\u53F3\u5E03\u5C40\uFF1B\n 4. \u4E2D\u95F4\u5165\u53E3\u662F\u7AD6\u6392\u7684\u5165\u53E3\uFF0C\u4E3A\u4E86\u65B9\u4FBF\u4E0A\u4E0B\u8C03\u6574\uFF0C\u6211\u4EEC\u53EF\u4EE5\u4F7F\u7528flex\u5E03\u5C40\uFF1B\n 5. \u5E95\u90E8\u5C45\u4E0B\u56FA\u5B9A\u7684\u4FEE\u6539\u4E2A\u4EBA\u4FE1\u606F\u7684\u6309\u94AE\uFF1B\n\n ".concat(fileFormat({
|
|
20
|
+
content: "[\"_root_\",\":root\",\"setLayout\",{\"height\": 820}]\n [\"_root_\",\":root\",\"doConfig\",{\"path\":\"root/\u6807\u9898\",\"value\":\"\u4E2A\u4EBA\u4E2D\u5FC3\u9875\u9762\u6846\u67B6\"}]\n [\"_root_\",\":root\",\"doConfig\",{\"path\":\"root/\u5E03\u5C40\",\"value\":{\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\"}}]\n [\"_root_\",\":root\",\"doConfig\",{\"path\":\"root/\u6837\u5F0F\",\"style\":{\"background\":\"#F5F5F5\"}}]\n [\"_root_\",\"_rootSlot_\",\"addChild\",{\"title\":\"\u9876\u90E8\u4FE1\u606F\",\"ns\":\"some.banner\",\"comId\":\"u_top32\",\"layout\":{\"width\":\"100%\",\"height\":80,\"marginTop\":8,\"marginLeft\":12,\"marginRight\":12},\"configs\":[{\"path\":\"\u5E38\u89C4/\u5E03\u5C40\",\"value\":{\"display\":\"flex\"}}]}]\n [\"_root_\",\"_rootSlot_\",\"addChild\",{\"title\":\"\u4E2A\u4EBA\u4FE1\u606F\",\"ns\":\"some.container\",\"comId\":\"u_a2fer\",\"layout\":{\"width\":\"100%\",\"height\":100,\"marginLeft\":8,\"marginRight\":8},\"configs\":[{\"path\":\"\u5E38\u89C4/\u5E03\u5C40\",\"value\":{\"display\":\"flex\",\"flexDirection\":\"row\",\"justifyContent\":\"space-between\",\"alignItems\":\"center\"}}]}]\n [\"u_a2fer\", \"content\", \"addChild\",{\"title\":\"\u5934\u50CF\",\"ns\":\"some.avatar\",\"comId\":\"u_avatar1\",\"layout\":{\"width\":64,\"height\":64},\"configs\":[]}]\n [\"u_a2fer\", \"content\", \"addChild\",{\"title\":\"\u7528\u6237\u4FE1\u606F\",\"ns\":\"some.container\",\"comId\":\"u_info4\",\"ignore\":true,\"layout\":{\"width\":\"fit-content\",\"height\":\"fit-content\"},\"configs\":[{\"path\":\"\u5E38\u89C4/\u5E03\u5C40\",\"value\":{\"display\":\"flex\",\"flexDirection\":\"row\",\"alignItems\":\"center\"}}]}]\n [\"_root_\",\"_rootSlot_\",\"addChild\",{\"title\":\"\u4E2D\u95F4\u5165\u53E3\",\"ns\":\"some.container\",\"comId\":\"u_iiusd7\",\"layout\":{\"width\":\"100%\",\"height\":200,\"marginLeft\":8,\"marginRight\":8},\"configs\":[{\"path\":\"\u5E38\u89C4/\u5E03\u5C40\",\"value\":{\"display\":\"flex\",\"flexDirection\":\"column\"}}]}]\n [\"_root_\",\"_rootSlot_\",\"addChild\",{\"title\":\"\u5E95\u90E8\u56FA\u5B9A\u6309\u94AE\",\"comId\":\"u_btm21\",\"ns\":\"some.container\",\"layout\":{\"width\":\"100%\",\"height\":84,\"position\":\"fixed\",\"bottom\":0,\"left\":0},\"configs\":[{\"path\":\"\u5E38\u89C4/\u5E03\u5C40\",\"value\":{\"display\":\"flex\"}}]}]",
|
|
21
|
+
fileName: '生成个人中心页面操作步骤.json'
|
|
22
|
+
}), "\n\n \u6CE8\u610F\uFF1A\n - \u7528\u6237\u4FE1\u606F\u5E03\u5C40\u7EC4\u4EF6\u7236\u7EC4\u4EF6\u4E3A\u5E03\u5C40\u7EC4\u4EF6\uFF0C\u4E14\u4EC5\u627F\u62C5\u5E03\u5C40\u529F\u80FD\uFF0C\u4E0D\u627F\u62C5\u6837\u5F0F\u3001\u70B9\u51FB\u529F\u80FD\uFF0C\u6211\u4EEC\u6DFB\u52A0ignore\u6807\u8BB0\u6765\u4F18\u5316\u3002\n</assistant_response>\n</example>\n\n<example>\n<user_query>\u6DFB\u52A0\u4E00\u4E2A\u4E00\u884C\u4E09\u5217\u7684\u5BFC\u822A</user_query>\n<assistant_response>\n \u597D\u7684\uFF0C\u4E00\u884C\u4E09\u5217\u7684\u5BFC\u822A\u8003\u5BDF\u7684\u662F\u6211\u4EEC\u5E03\u5C40\u7684\u5173\u952E\u77E5\u8BC6\uFF0C\u4E00\u884C\u4E09\u5217\uFF0C\u5C31\u662F\u5747\u5206\u5E03\u5C40\uFF0C\u5747\u5206\u6211\u4EEC\u4E00\u822C\u9009\u62E9\u4F7F\u7528flex\u5E03\u5C40\u3002\n \u6240\u4EE5\u63D0\u4F9B\u4E00\u4E2Aflex\u5BB9\u5668\uFF0C\u786E\u5B9A\u5B50\u7EC4\u4EF6\u7684\u5BBD\u5EA6\uFF0C\u5E76\u5C06\u5185\u5BB9\u5E73\u94FA\u4E0A\u53BB\u3002\n \n \u9996\u5148\uFF0C\u5FC5\u987B\u6839\u636E\u9875\u9762\u5185\u5BB9\u8BBE\u7F6E\u4E00\u4E2A\u5408\u9002\u7684\u9875\u9762\u7684\u9AD8\u5EA6\u3002\n \u5176\u6B21\uFF0C\u5FC5\u987B\u5BF9\u9875\u9762\u5E03\u5C40\u8BBE\u7F6E\u4E00\u4E2A\u5408\u7406\u7684\u5E03\u5C40\u3002\n \n ").concat(fileFormat({
|
|
23
|
+
content: "[\"_root_\",\":root\",\"setLayout\",{\"height\": 360}]\n [\"_root_\",\":root\",\"doConfig\",{\"path\":\"root/\u6807\u9898\",\"value\":\"\u4E00\u884C\u4E09\u5217\u7684\u5BFC\u822A\"}]\n [\"_root_\",\":root\",\"doConfig\",{\"path\":\"root/\u5E03\u5C40\",\"value\":{\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\"}}]\n [\"_root_\",\"_rootSlot_\",\"addChild\",{\"title\":\"Flex\u5BB9\u5668\",\"ns\":\"some.container\",\"comId\":\"u_iiusd7\",\"layout\":{\"width\":\"100%\",\"height\":200,\"marginLeft\":8,\"marginRight\":8},\"configs\":[{\"path\":\"\u5E38\u89C4/\u5E03\u5C40\",\"value\":{\"display\":\"flex\",\"flexDirection\":\"row\",\"justifyContent\":\"space-between\",\"alignItems\":\"center\",\"flexWrap\":\"wrap\"}}]}]\n [\"u_iiusd7\",\"content\",\"addChild\",{\"title\":\"\u5BFC\u822A1\",\"ns\":\"some.icon\",\"comId\":\"u_icon1\",\"layout\":{\"width\":120,\"height\":120,\"marginTop\":8},\"configs\":[{\"path\":\"\u6837\u5F0F/\u6587\u672C\",\"style\":{\"background\":\"#0000FF\"}}]}]",
|
|
24
|
+
fileName: '一行三列导航操作步骤.json'
|
|
25
|
+
}), "\n\n\u6CE8\u610F\uFF1A\n - \u8FD9\u4E2AFlex\u5BB9\u5668\u662F\u6839\u7EC4\u4EF6\u7684\u76F4\u63A5\u5B50\u7EC4\u4EF6\uFF0C\u6240\u4EE5\u4E0D\u5141\u8BB8\u6DFB\u52A0ignore\u6807\u8BB0\u3002\n</assistant_response>\n</example>");
|
|
26
|
+
}
|
|
27
|
+
var prompts = {
|
|
28
|
+
systemAppendPrompts: systemAppendPrompts(),
|
|
29
|
+
prdExamplesPrompts: prdExamplesPrompts(),
|
|
30
|
+
generatePageActionExamplesPrompts: generatePageActionExamplesPrompts()
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export { prompts };
|
|
34
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sources":["../../src/preset/prompts.ts"],"sourcesContent":["import { fileFormat } from \"@mybricks/rxai\";\nimport { DeviceType } from './../types';\n\nfunction systemAppendPrompts () {\n return `\n<对于当前搭建有以下特殊上下文>\n<搭建画布信息>\n 当前搭建画布的宽度为375,所有元素的尺寸需要关注此信息,且尽可能自适应宽度进行布局。\n 比如:\n 1.布局需要自适应画布宽度,考虑100%通栏,要么配置宽度+间距;\n 2.配置上下左右和宽度高度时,一定要基于画布尺寸进行合理的计算;\n 特殊地,系统已经内置了底部导航栏和顶部导航栏,仅关注页面内容即可,不用实现此部分内容。\n 最后,必须给页面设置页面高度。\n</搭建画布信息>\n\n<允许使用的图标>\nairplane_fill\nalarm_fill_1\narrow_clockwise\narrow_counterclockwise\narrow_counterclockwise_clock\narrow_down_right_and_arrow_up_left\narrow_left\narrow_right\narrow_right_up_and_square\narrow_up_left_and_arrow_down_right\narrow_up_to_line\narrowshape_turn_up_right_fill\nbackward_end_fill\nbattery\nbattery_75percent\nbell_fill\nbluetooth\nbluetooth_slash\nbookmark\ncalendar\ncamera\ncamera_fill\ncheckmark\ncheckmark_circle\ncheckmark_circle_fill\ncheckmark_square\ncheckmark_square_fill\nchevron_down\nchevron_left\nchevron_right\nchevron_up\nclock\ndial\ndoc_plaintext\ndoc_plaintext_and_pencil\ndoc_text_badge_arrow_up\ndoc_text_badge_magnifyingglass\nellipsis_message\nenvelope\neye\neye_slash\nfast_forward\nfolder\nfolder_badge_plus\nforward_end_fill\ngearshape\nhand_thumbsup_fill\nheadphones_fill\nheart\nheart_fill\nheart_slash\nhouse\nhouse_fill\nline_viewfinder\nlist_square_bill\nlivephoto\nlock\nlock_open\nmagnifyingglass\nmessage\nmessage_on_message\nmic\nmusic\nmusic_note_list\npaintpalette\npaperclip\npause\npicture\npicture_2\npicture_damage\nplay_circle_fill\nplay_fill\nplay_round_rectangle_fill\nplay_video\nplus\nqrcode\nrecord_circle\nresolution_video\nsave\nshare\ntemplate\ntext_clipboard\ntimer\ntrash\nwifi\nworldclock\nxmark\n</允许使用的图标>\n</对于当前搭建有以下特殊上下文>`\n}\n\nfunction prdExamplesPrompts () {\n return `\n<example>\n<user_query>根据图片搭建页面</user_query>\n<assistant_response>\n好的,经过对图片的全面分析,结论如下:\n${fileFormat({\n content: `**themes**\n 界面采用简约的卡片式布局,整体背景采用浅紫色,内容区域使用纯白色背景,营造出清爽简洁的视觉效果。\n \n **layout**\n 界面总体采用从上往下的纵向流式布局,顶部内容通栏,每个区块以圆角卡片的形式呈现,底部通栏为固定布局;\n 1. 顶部区域为通栏,中间居中展示一个图标 + 标题;\n 2. 导航区域为两行四列的导航入口;\n 3. 套餐区域为横向三列的均分布局卡片;\n 3.1 卡片内所有文本元素从上到下依次排列,右上角可能存在一个圆形的角标;\n 4. 联系人区域是居左的标题 + 居右的联系人详情,联系人详情包含头像和昵称,以及一个可选择箭头;\n 5. 结算区域是固定的底部内容,包含左侧的价格计算+右侧的支付按钮;\n \n **colors**\n 界面主色调为明亮的蓝紫色,用于突出按钮和重要文字。背景采用柔和的浅紫色,搭配纯白色的内容区域,形成层次分明的视觉层级。\n \n **attention**\n 注意以下细节:\n - 截图中的总体背景没有意义,可以考虑去掉;\n - 注意各区块间距,顶部通栏就不要使用外间距了;\n - 卡片中字体内容较丰富,注意字体大小,不要换行和重叠;\n - 图片中的电话区域选择与输入手机号为一体设计、整体圆角;\n - 验证码区域的获取验证码按钮为蓝色,按钮文字为白色;\n\n **risk**\n 参考图片宽度为720像素,目标画布宽度为375像素,我们需要对元素尺寸进行合理的缩放,所以在搭建时需要注意内容不要溢出画布,主要关注以下部分:\n 1. 导航区域为两行四列的网格均分布局,两行使用换行来实现,同时内容需要考虑固定宽度,避免超出画布;\n 2. 套餐区域中的卡片为三列的均分布局,其中卡片的内容信息较丰富,建议固定宽高,同时将文本字体减少至10px;\n 3. “适合各种活动的场地”为动态内容,注意配置文本字体极小,并且配置溢出能力,避免换行;\n 4. 底部居左部分内容宽度缩小后会超过一半,注意将字体调整至极小,避免遮挡右侧内容;\n 5. 右侧图标 + 文本横向排列时,注意文本宽度,防止遮挡图标;`,\n fileName: 'XX页面需求文档.md'\n})}\n\n推荐采用以下组件进行搭建:\n${fileFormat({\n content: `[\n {\n \"namespace\": \"mybricks.somelib.card\"\n },\n {\n \"namespace\": \"mybricks.somelib.icon\"\n },\n {\n \"namespace\": \"mybricks.somelib.text\"\n },\n {\n \"namespace\": \"mybricks.somelib.button\"\n }\n]`,\n fileName: 'XX页面所需要的组件信息.json'\n})}\n</assistant_response>\n</example>`\n}\n\nfunction generatePageActionExamplesPrompts() {\n return `\n<example>\n<user_query>搭建一个个人中心页面框架</user_query>\n<assistant_response>\n 首先,必须根据页面内容设置一个合适的页面的高度。\n 其次,必须对页面布局设置一个合理的布局。\n 然后\n 基于用户当前的选择上下文,我们来实现一个个人中心页面框架,由于是框架,所以我仅给出主体部分,思考过程如下:\n 1. 搭建页面时一般用从上到下的楼层化搭建方式,我们推荐在页面最外层设置为flex的垂直布局,设置子组件的左右margin以及高度,这样好调整位置;\n 2. 将页面从上到下分成顶部信息、个人信息、中间入口、底部按钮四个部分;\n 3. 个人信息部分,图文编排卡片,用flex布局实现左右布局;\n 4. 中间入口是竖排的入口,为了方便上下调整,我们可以使用flex布局;\n 5. 底部居下固定的修改个人信息的按钮;\n\n ${fileFormat({\n content: `[\"_root_\",\":root\",\"setLayout\",{\"height\": 820}]\n [\"_root_\",\":root\",\"doConfig\",{\"path\":\"root/标题\",\"value\":\"个人中心页面框架\"}]\n [\"_root_\",\":root\",\"doConfig\",{\"path\":\"root/布局\",\"value\":{\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\"}}]\n [\"_root_\",\":root\",\"doConfig\",{\"path\":\"root/样式\",\"style\":{\"background\":\"#F5F5F5\"}}]\n [\"_root_\",\"_rootSlot_\",\"addChild\",{\"title\":\"顶部信息\",\"ns\":\"some.banner\",\"comId\":\"u_top32\",\"layout\":{\"width\":\"100%\",\"height\":80,\"marginTop\":8,\"marginLeft\":12,\"marginRight\":12},\"configs\":[{\"path\":\"常规/布局\",\"value\":{\"display\":\"flex\"}}]}]\n [\"_root_\",\"_rootSlot_\",\"addChild\",{\"title\":\"个人信息\",\"ns\":\"some.container\",\"comId\":\"u_a2fer\",\"layout\":{\"width\":\"100%\",\"height\":100,\"marginLeft\":8,\"marginRight\":8},\"configs\":[{\"path\":\"常规/布局\",\"value\":{\"display\":\"flex\",\"flexDirection\":\"row\",\"justifyContent\":\"space-between\",\"alignItems\":\"center\"}}]}]\n [\"u_a2fer\", \"content\", \"addChild\",{\"title\":\"头像\",\"ns\":\"some.avatar\",\"comId\":\"u_avatar1\",\"layout\":{\"width\":64,\"height\":64},\"configs\":[]}]\n [\"u_a2fer\", \"content\", \"addChild\",{\"title\":\"用户信息\",\"ns\":\"some.container\",\"comId\":\"u_info4\",\"ignore\":true,\"layout\":{\"width\":\"fit-content\",\"height\":\"fit-content\"},\"configs\":[{\"path\":\"常规/布局\",\"value\":{\"display\":\"flex\",\"flexDirection\":\"row\",\"alignItems\":\"center\"}}]}]\n [\"_root_\",\"_rootSlot_\",\"addChild\",{\"title\":\"中间入口\",\"ns\":\"some.container\",\"comId\":\"u_iiusd7\",\"layout\":{\"width\":\"100%\",\"height\":200,\"marginLeft\":8,\"marginRight\":8},\"configs\":[{\"path\":\"常规/布局\",\"value\":{\"display\":\"flex\",\"flexDirection\":\"column\"}}]}]\n [\"_root_\",\"_rootSlot_\",\"addChild\",{\"title\":\"底部固定按钮\",\"comId\":\"u_btm21\",\"ns\":\"some.container\",\"layout\":{\"width\":\"100%\",\"height\":84,\"position\":\"fixed\",\"bottom\":0,\"left\":0},\"configs\":[{\"path\":\"常规/布局\",\"value\":{\"display\":\"flex\"}}]}]`,\n fileName: '生成个人中心页面操作步骤.json'\n })}\n\n 注意:\n - 用户信息布局组件父组件为布局组件,且仅承担布局功能,不承担样式、点击功能,我们添加ignore标记来优化。\n</assistant_response>\n</example>\n\n<example>\n<user_query>添加一个一行三列的导航</user_query>\n<assistant_response>\n 好的,一行三列的导航考察的是我们布局的关键知识,一行三列,就是均分布局,均分我们一般选择使用flex布局。\n 所以提供一个flex容器,确定子组件的宽度,并将内容平铺上去。\n \n 首先,必须根据页面内容设置一个合适的页面的高度。\n 其次,必须对页面布局设置一个合理的布局。\n \n ${fileFormat({\n content: `[\"_root_\",\":root\",\"setLayout\",{\"height\": 360}]\n [\"_root_\",\":root\",\"doConfig\",{\"path\":\"root/标题\",\"value\":\"一行三列的导航\"}]\n [\"_root_\",\":root\",\"doConfig\",{\"path\":\"root/布局\",\"value\":{\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\"}}]\n [\"_root_\",\"_rootSlot_\",\"addChild\",{\"title\":\"Flex容器\",\"ns\":\"some.container\",\"comId\":\"u_iiusd7\",\"layout\":{\"width\":\"100%\",\"height\":200,\"marginLeft\":8,\"marginRight\":8},\"configs\":[{\"path\":\"常规/布局\",\"value\":{\"display\":\"flex\",\"flexDirection\":\"row\",\"justifyContent\":\"space-between\",\"alignItems\":\"center\",\"flexWrap\":\"wrap\"}}]}]\n [\"u_iiusd7\",\"content\",\"addChild\",{\"title\":\"导航1\",\"ns\":\"some.icon\",\"comId\":\"u_icon1\",\"layout\":{\"width\":120,\"height\":120,\"marginTop\":8},\"configs\":[{\"path\":\"样式/文本\",\"style\":{\"background\":\"#0000FF\"}}]}]`,\n fileName: '一行三列导航操作步骤.json'\n })}\n\n注意:\n - 这个Flex容器是根组件的直接子组件,所以不允许添加ignore标记。\n</assistant_response>\n</example>`\n}\n\nconst prompts = {\n systemAppendPrompts: systemAppendPrompts(),\n prdExamplesPrompts: prdExamplesPrompts(),\n generatePageActionExamplesPrompts: generatePageActionExamplesPrompts(),\n}\n\nexport { prompts }\n\n"],"names":["systemAppendPrompts","prdExamplesPrompts","concat","fileFormat","content","fileName","generatePageActionExamplesPrompts","prompts"],"mappings":";;;;;AAGA,SAASA,mBAAmBA,GAAI;AAC9B,EAAA,OAAA,2iFAAA;AAqGF;AAEA,SAASC,kBAAkBA,GAAI;EAC7B,OAAA,oOAAA,CAAAC,MAAA,CAKAC,UAAU,CAAC;AACXC,IAAAA,OAAO,EAAA,w4IA6B0B;AACjCC,IAAAA,QAAQ,EAAE;AACZ,GAAC,CAAC,EAAA,sFAAA,CAAA,CAAAH,MAAA,CAGAC,UAAU,CAAC;AACXC,IAAAA,OAAO,EAAA,2OAaP;AACAC,IAAAA,QAAQ,EAAE;AACZ,GAAC,CAAC,EAAA,qCAAA,CAAA;AAGF;AAEA,SAASC,iCAAiCA,GAAG;EAC3C,OAAA,2vDAAA,CAAAJ,MAAA,CAcEC,UAAU,CAAC;AACXC,IAAAA,OAAO,EAAA,00EAS4N;AACnOC,IAAAA,QAAQ,EAAE;AACZ,GAAC,CAAC,EAAA,utCAAA,CAAA,CAAAH,MAAA,CAgBAC,UAAU,CAAC;AACXC,IAAAA,OAAO,EAAA,ogCAI8L;AACrMC,IAAAA,QAAQ,EAAE;AACZ,GAAC,CAAC,EAAA,iOAAA,CAAA;AAMJ;AAEA,IAAME,OAAO,GAAG;EACdP,mBAAmB,EAAEA,mBAAmB,EAAE;EAC1CC,kBAAkB,EAAEA,kBAAkB,EAAE;EACxCK,iCAAiC,EAAEA,iCAAiC;AACtE;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.js","sources":["../../src/preset/user.ts"],"sourcesContent":["const user = {\n name: \"user\",\n avatar: \"https://my.mybricks.world/default_avatar.png\"\n}\n\nexport { user }\n"],"names":["user","name","avatar"],"mappings":"AAAA,IAAMA,IAAI,GAAG;AACXC,EAAAA,IAAI,EAAE,MAAM;AACZC,EAAAA,MAAM,EAAE;AACV;;;;"}
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { asyncToGenerator as _asyncToGenerator, objectSpread2 as _objectSpread2 } from './_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import forge from 'node-forge';
|
|
3
|
+
|
|
4
|
+
/** 非 http(s) 协议时,把相对/协议相对 URL 转成 https 绝对 URL */
|
|
5
|
+
function toAbsoluteHttpsUrl(url) {
|
|
6
|
+
var _window$location;
|
|
7
|
+
if (typeof window === "undefined" || !((_window$location = window.location) !== null && _window$location !== void 0 && _window$location.protocol)) return url;
|
|
8
|
+
var p = window.location.protocol;
|
|
9
|
+
if (p === "http:" || p === "https:") return url;
|
|
10
|
+
if (url.startsWith("//")) return "https:" + url;
|
|
11
|
+
if (url.startsWith("/")) return "https://" + window.location.host + url;
|
|
12
|
+
return url;
|
|
13
|
+
}
|
|
14
|
+
function generateRandomKey(length) {
|
|
15
|
+
var chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
16
|
+
var result = "";
|
|
17
|
+
for (var i = 0; i < length; i++) {
|
|
18
|
+
var randomIndex = Math.floor(Math.random() * chars.length);
|
|
19
|
+
result += chars[randomIndex];
|
|
20
|
+
}
|
|
21
|
+
return result;
|
|
22
|
+
}
|
|
23
|
+
function getAiEncryptData(data) {
|
|
24
|
+
var PUBLIC_KEY = "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1ITWRl6ePMu7Fhusup2d\nFEz/hCRTE5mUIeGIjtezG5g8ewBdTaR2FRxtTFONYTaaSR6yFXm9k74tkS1/i0Z8\n7eIV130XydOn4zFhk2sOkG46mQ+lZwJkyVwvMaAOCnHluTIaPMPMV3sYpp3cWspl\n2H++R5/kOGVm6EG9HivrimQEKDDJLg9owbfWO2kSEM9ZpUHUt29msYq+lDtBrivG\noodvC8p5H4a/jXKvLtPRGO09ZO3xk1ktS8isc376Ec9L9Zo8wSwaj5Z/Pg7nd7Sa\ntqj5BEj3YH8rSr1dg77ZMMH1lsuzdA0NHmRGYEvWnUoD6dMqjJjufNwAw9D47DQH\nlwIDAQAB\n-----END PUBLIC KEY-----";
|
|
25
|
+
|
|
26
|
+
// 生成一个随机的AES密钥
|
|
27
|
+
var AESKey = generateRandomKey(16);
|
|
28
|
+
|
|
29
|
+
// 用AES密钥加密数据
|
|
30
|
+
var cipher = forge.cipher.createCipher("AES-CBC", AESKey);
|
|
31
|
+
cipher.start({
|
|
32
|
+
iv: AESKey
|
|
33
|
+
});
|
|
34
|
+
cipher.update(forge.util.createBuffer(forge.util.encodeUtf8(JSON.stringify(data))));
|
|
35
|
+
cipher.finish();
|
|
36
|
+
var encryptedData = forge.util.encode64(cipher.output.getBytes());
|
|
37
|
+
|
|
38
|
+
// 使用RSA公钥加密AES密钥
|
|
39
|
+
var publicKey = forge.pki.publicKeyFromPem(PUBLIC_KEY);
|
|
40
|
+
var encryptedAESKey = forge.util.encode64(publicKey.encrypt(AESKey));
|
|
41
|
+
return {
|
|
42
|
+
chatContent: encryptedData,
|
|
43
|
+
chatKey: encryptedAESKey
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
var logger = {
|
|
47
|
+
info(message) {
|
|
48
|
+
console.log("%c%s%c %s", "background-color: #fa6400; color: #ffffff;padding: 0px 6px", "AI-SDK", "color: #ffffff", message);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
var FetchTarget = /*#__PURE__*/function (FetchTarget) {
|
|
52
|
+
FetchTarget["CustomApp"] = "CustomApp";
|
|
53
|
+
FetchTarget["Platform"] = "Platform";
|
|
54
|
+
FetchTarget["Center"] = "Center";
|
|
55
|
+
return FetchTarget;
|
|
56
|
+
}(FetchTarget || {});
|
|
57
|
+
var fetchTaget;
|
|
58
|
+
function checkFetchTarget() {
|
|
59
|
+
return _checkFetchTarget.apply(this, arguments);
|
|
60
|
+
}
|
|
61
|
+
function _checkFetchTarget() {
|
|
62
|
+
_checkFetchTarget = _asyncToGenerator(function* () {
|
|
63
|
+
if (fetchTaget) {
|
|
64
|
+
return Promise.resolve(fetchTaget);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/** 如果安装了自定义的AI服务,请求自定义服务 */
|
|
68
|
+
var hasAICustomApp = yield fetch(toAbsoluteHttpsUrl("/api/ai-service/check-config")).then(res => {
|
|
69
|
+
return res.json();
|
|
70
|
+
}).then(data => {
|
|
71
|
+
if ((data === null || data === void 0 ? void 0 : data.code) === 1) {
|
|
72
|
+
return true;
|
|
73
|
+
} else {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
}).catch(e => {
|
|
77
|
+
return false;
|
|
78
|
+
});
|
|
79
|
+
if (hasAICustomApp) {
|
|
80
|
+
logger.info("使用自定义服务");
|
|
81
|
+
return fetchTaget = FetchTarget.CustomApp;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/** 如果配置了平台token,请求平台服务 */
|
|
85
|
+
var hasPlatformToken = yield fetch(toAbsoluteHttpsUrl("/api/assistant/status")).then(res => {
|
|
86
|
+
return res.json();
|
|
87
|
+
}).then(data => {
|
|
88
|
+
if ((data === null || data === void 0 ? void 0 : data.code) === 1) {
|
|
89
|
+
return true;
|
|
90
|
+
} else {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
}).catch(e => {
|
|
94
|
+
return false;
|
|
95
|
+
});
|
|
96
|
+
if (hasPlatformToken) {
|
|
97
|
+
logger.info("使用平台服务");
|
|
98
|
+
return fetchTaget = FetchTarget.Platform;
|
|
99
|
+
}
|
|
100
|
+
logger.info("使用AI服务");
|
|
101
|
+
return fetchTaget = FetchTarget.Center;
|
|
102
|
+
});
|
|
103
|
+
return _checkFetchTarget.apply(this, arguments);
|
|
104
|
+
}
|
|
105
|
+
var transfromExtendParams = extendParams => {
|
|
106
|
+
var {
|
|
107
|
+
aiRole
|
|
108
|
+
} = extendParams;
|
|
109
|
+
var model = "google/gemini-3-flash-preview";
|
|
110
|
+
var role = "default";
|
|
111
|
+
if (!aiRole) {
|
|
112
|
+
return {
|
|
113
|
+
model,
|
|
114
|
+
role
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
switch (true) {
|
|
118
|
+
case ["image"].includes(aiRole):
|
|
119
|
+
{
|
|
120
|
+
model = "anthropic/claude-sonnet-4.5";
|
|
121
|
+
role = "image";
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
case ["junior"].includes(aiRole):
|
|
125
|
+
{
|
|
126
|
+
model = "z-ai/glm-4.7";
|
|
127
|
+
role = "junior";
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
case ["architect"].includes(aiRole):
|
|
131
|
+
{
|
|
132
|
+
model = "google/gemini-3-pro-preview";
|
|
133
|
+
role = "architect";
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
case ["expert"].includes(aiRole):
|
|
137
|
+
{
|
|
138
|
+
model = "anthropic/claude-sonnet-4.5";
|
|
139
|
+
role = "expert";
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
default:
|
|
143
|
+
{
|
|
144
|
+
role = "default";
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return {
|
|
149
|
+
model,
|
|
150
|
+
role
|
|
151
|
+
};
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
/** 与 requestAsStreamForProduction / requestAsStreamForDevelopment 同签名,可直接替代默认实现 */
|
|
155
|
+
|
|
156
|
+
var STREAM_URL_BY_TARGET = {
|
|
157
|
+
[FetchTarget.CustomApp]: "/api/ai-service/stream",
|
|
158
|
+
[FetchTarget.Platform]: "/api/assistant/stream",
|
|
159
|
+
[FetchTarget.Center]: "//ai.mybricks.world/stream-with-tools"
|
|
160
|
+
};
|
|
161
|
+
function requestAsStreamForProduction(extraHeaders) {
|
|
162
|
+
return /*#__PURE__*/function () {
|
|
163
|
+
var _ref = _asyncToGenerator(function* (params) {
|
|
164
|
+
var _STREAM_URL_BY_TARGET;
|
|
165
|
+
var {
|
|
166
|
+
messages,
|
|
167
|
+
emits,
|
|
168
|
+
aiRole
|
|
169
|
+
} = params;
|
|
170
|
+
var {
|
|
171
|
+
cancel,
|
|
172
|
+
write,
|
|
173
|
+
complete,
|
|
174
|
+
error
|
|
175
|
+
} = emits;
|
|
176
|
+
yield checkFetchTarget();
|
|
177
|
+
var extendParams = transfromExtendParams({
|
|
178
|
+
aiRole
|
|
179
|
+
});
|
|
180
|
+
var payload = _objectSpread2({
|
|
181
|
+
messages
|
|
182
|
+
}, extendParams);
|
|
183
|
+
var streamUrl = (_STREAM_URL_BY_TARGET = STREAM_URL_BY_TARGET[fetchTaget]) !== null && _STREAM_URL_BY_TARGET !== void 0 ? _STREAM_URL_BY_TARGET : STREAM_URL_BY_TARGET[FetchTarget.Center];
|
|
184
|
+
var body = getAiEncryptData(payload);
|
|
185
|
+
try {
|
|
186
|
+
var controller = new AbortController();
|
|
187
|
+
yield doStreamFetch({
|
|
188
|
+
url: streamUrl,
|
|
189
|
+
body,
|
|
190
|
+
extendParams,
|
|
191
|
+
controller,
|
|
192
|
+
cancel,
|
|
193
|
+
write,
|
|
194
|
+
complete,
|
|
195
|
+
error,
|
|
196
|
+
extraHeaders
|
|
197
|
+
});
|
|
198
|
+
} catch (ex) {
|
|
199
|
+
error(ex);
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
return function (_x2) {
|
|
203
|
+
return _ref.apply(this, arguments);
|
|
204
|
+
};
|
|
205
|
+
}();
|
|
206
|
+
}
|
|
207
|
+
function doStreamFetch(_x3) {
|
|
208
|
+
return _doStreamFetch.apply(this, arguments);
|
|
209
|
+
}
|
|
210
|
+
/** 默认实现:线上用 production,开发用 development。可被 pluginAI 的 onRequest 整体替代。 */
|
|
211
|
+
function _doStreamFetch() {
|
|
212
|
+
_doStreamFetch = _asyncToGenerator(function* (opts) {
|
|
213
|
+
var {
|
|
214
|
+
url,
|
|
215
|
+
body,
|
|
216
|
+
extendParams,
|
|
217
|
+
controller,
|
|
218
|
+
cancel,
|
|
219
|
+
write,
|
|
220
|
+
complete,
|
|
221
|
+
error,
|
|
222
|
+
extraHeaders
|
|
223
|
+
} = opts;
|
|
224
|
+
var response = yield fetch(toAbsoluteHttpsUrl(url), {
|
|
225
|
+
signal: controller.signal,
|
|
226
|
+
method: "POST",
|
|
227
|
+
credentials: "include",
|
|
228
|
+
headers: _objectSpread2(_objectSpread2({
|
|
229
|
+
"Content-Type": "application/json"
|
|
230
|
+
}, extendParams.role ? {
|
|
231
|
+
"M-Request-Role": extendParams.role
|
|
232
|
+
} : {}), extraHeaders !== null && extraHeaders !== void 0 ? extraHeaders : {}),
|
|
233
|
+
body: JSON.stringify(body)
|
|
234
|
+
});
|
|
235
|
+
cancel(() => controller.abort());
|
|
236
|
+
var reader = response.body.getReader();
|
|
237
|
+
var decoder = new TextDecoder();
|
|
238
|
+
while (true) {
|
|
239
|
+
var {
|
|
240
|
+
done,
|
|
241
|
+
value
|
|
242
|
+
} = yield reader.read();
|
|
243
|
+
if (done) break;
|
|
244
|
+
write(decoder.decode(value, {
|
|
245
|
+
stream: true
|
|
246
|
+
}));
|
|
247
|
+
}
|
|
248
|
+
complete("");
|
|
249
|
+
});
|
|
250
|
+
return _doStreamFetch.apply(this, arguments);
|
|
251
|
+
}
|
|
252
|
+
function createRequestAsStream() {
|
|
253
|
+
return requestAsStreamForProduction() ;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* 仅配置 token 的 preset:返回已注入 Authorization 的 requestAsStreamForProduction。
|
|
258
|
+
* 等价于用 onRequest 完全替代默认实现并自带鉴权。
|
|
259
|
+
* @example import pluginAI, { createMyBricksAIRequest } from '@mybricks/plugin-ai'
|
|
260
|
+
* pluginAI({ onRequest: createMyBricksAIRequest({ token }) })
|
|
261
|
+
*/
|
|
262
|
+
function createMyBricksAIRequest(config) {
|
|
263
|
+
return requestAsStreamForProduction({
|
|
264
|
+
Authorization: "Bearer ".concat(config.token)
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
export { createMyBricksAIRequest, createRequestAsStream };
|
|
269
|
+
//# sourceMappingURL=requestAsStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestAsStream.js","sources":["../src/requestAsStream.ts"],"sourcesContent":["import forge from \"node-forge\";\nimport { isProduction } from \"./constants/env\";\n\n/** 非 http(s) 协议时,把相对/协议相对 URL 转成 https 绝对 URL */\nfunction toAbsoluteHttpsUrl(url: string): string {\n if (typeof window === \"undefined\" || !window.location?.protocol) return url;\n const p = window.location.protocol;\n if (p === \"http:\" || p === \"https:\") return url;\n if (url.startsWith(\"//\")) return \"https:\" + url;\n if (url.startsWith(\"/\")) return \"https://\" + window.location.host + url;\n return url;\n}\n\n\nfunction generateRandomKey(length: number) {\n const chars = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n let result = \"\";\n for (let i = 0; i < length; i++) {\n const randomIndex = Math.floor(Math.random() * chars.length);\n result += chars[randomIndex];\n }\n return result;\n}\n\nfunction getAiEncryptData(data: unknown) {\n if (!isProduction()) {\n return data;\n }\n const PUBLIC_KEY = `-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1ITWRl6ePMu7Fhusup2d\nFEz/hCRTE5mUIeGIjtezG5g8ewBdTaR2FRxtTFONYTaaSR6yFXm9k74tkS1/i0Z8\n7eIV130XydOn4zFhk2sOkG46mQ+lZwJkyVwvMaAOCnHluTIaPMPMV3sYpp3cWspl\n2H++R5/kOGVm6EG9HivrimQEKDDJLg9owbfWO2kSEM9ZpUHUt29msYq+lDtBrivG\noodvC8p5H4a/jXKvLtPRGO09ZO3xk1ktS8isc376Ec9L9Zo8wSwaj5Z/Pg7nd7Sa\ntqj5BEj3YH8rSr1dg77ZMMH1lsuzdA0NHmRGYEvWnUoD6dMqjJjufNwAw9D47DQH\nlwIDAQAB\n-----END PUBLIC KEY-----`;\n\n // 生成一个随机的AES密钥\n const AESKey = generateRandomKey(16);\n\n // 用AES密钥加密数据\n const cipher = forge.cipher.createCipher(\"AES-CBC\", AESKey);\n cipher.start({ iv: AESKey });\n cipher.update(\n forge.util.createBuffer(forge.util.encodeUtf8(JSON.stringify(data))),\n );\n cipher.finish();\n const encryptedData = forge.util.encode64(cipher.output.getBytes());\n\n // 使用RSA公钥加密AES密钥\n const publicKey = forge.pki.publicKeyFromPem(PUBLIC_KEY);\n const encryptedAESKey = forge.util.encode64(publicKey.encrypt(AESKey));\n\n return { chatContent: encryptedData, chatKey: encryptedAESKey };\n}\n\nconst logger = {\n info(message: string) {\n console.log(\n \"%c%s%c %s\",\n \"background-color: #fa6400; color: #ffffff;padding: 0px 6px\",\n \"AI-SDK\",\n \"color: #ffffff\",\n message,\n );\n },\n};\n\nenum FetchTarget {\n CustomApp = \"CustomApp\",\n Platform = \"Platform\",\n Center = \"Center\",\n}\n\nlet fetchTaget: FetchTarget;\n\nasync function checkFetchTarget(): Promise<FetchTarget> {\n if (fetchTaget) {\n return Promise.resolve(fetchTaget);\n }\n\n /** 如果安装了自定义的AI服务,请求自定义服务 */\n const hasAICustomApp = await fetch(toAbsoluteHttpsUrl(\"/api/ai-service/check-config\"))\n .then((res) => {\n return res.json();\n })\n .then((data: any) => {\n if (data?.code === 1) {\n return true;\n } else {\n return false;\n }\n })\n .catch((e: any) => {\n return false;\n });\n\n if (hasAICustomApp) {\n logger.info(\"使用自定义服务\");\n return (fetchTaget = FetchTarget.CustomApp);\n }\n\n /** 如果配置了平台token,请求平台服务 */\n const hasPlatformToken = await fetch(toAbsoluteHttpsUrl(\"/api/assistant/status\"))\n .then((res) => {\n return res.json();\n })\n .then((data: any) => {\n if (data?.code === 1) {\n return true;\n } else {\n return false;\n }\n })\n .catch((e: any) => {\n return false;\n });\n\n if (hasPlatformToken) {\n logger.info(\"使用平台服务\");\n return (fetchTaget = FetchTarget.Platform);\n }\n\n logger.info(\"使用AI服务\");\n return (fetchTaget = FetchTarget.Center);\n}\n\nconst transfromExtendParams = (extendParams: { aiRole?: string }) => {\n const { aiRole } = extendParams;\n let model = \"google/gemini-3-flash-preview\";\n let role = \"default\";\n\n if (!aiRole) {\n return {\n model,\n role,\n };\n }\n\n switch (true) {\n case [\"image\"].includes(aiRole): {\n model = \"anthropic/claude-sonnet-4.5\";\n role = \"image\";\n break;\n }\n case [\"junior\"].includes(aiRole): {\n model = \"z-ai/glm-4.7\";\n role = \"junior\";\n break;\n }\n case [\"architect\"].includes(aiRole): {\n model = \"google/gemini-3-pro-preview\";\n role = \"architect\";\n break;\n }\n case [\"expert\"].includes(aiRole): {\n model = \"anthropic/claude-sonnet-4.5\";\n role = \"expert\";\n break;\n }\n default: {\n role = \"default\";\n break;\n }\n }\n\n return {\n model,\n role,\n };\n};\n\nexport type RequestAsStreamParams = {\n messages: any;\n emits: any;\n aiRole?: any;\n};\n\n/** 与 requestAsStreamForProduction / requestAsStreamForDevelopment 同签名,可直接替代默认实现 */\nexport type RequestAsStreamFn = (params: RequestAsStreamParams) => Promise<void>;\n\nconst STREAM_URL_BY_TARGET: Record<FetchTarget, string> = {\n [FetchTarget.CustomApp]: \"/api/ai-service/stream\",\n [FetchTarget.Platform]: \"/api/assistant/stream\",\n [FetchTarget.Center]: \"//ai.mybricks.world/stream-with-tools\",\n};\n\n/** 开发模式:请求 stream-test,明文 body,不校验 fetchTarget */\nasync function requestAsStreamForDevelopment(params: RequestAsStreamParams) {\n const { messages, emits, aiRole } = params;\n const { cancel, write, complete, error } = emits;\n const extendParams = transfromExtendParams({ aiRole });\n const body = { messages, ...extendParams };\n\n try {\n const controller = new AbortController();\n await doStreamFetch({\n url: \"//ai.mybricks.world/stream-test\",\n body,\n extendParams,\n controller,\n cancel,\n write,\n complete,\n error,\n });\n } catch (ex) {\n error(ex as any);\n }\n}\n\n/** 线上模式:按 fetchTarget 选 URL,body 加密;可选 extraHeaders(如 createMyBricksAIRequest 注入 Authorization) */\nfunction requestAsStreamForProduction(extraHeaders?: Record<string, string>): RequestAsStreamFn {\n return async function (params: RequestAsStreamParams) {\n const { messages, emits, aiRole } = params;\n const { cancel, write, complete, error } = emits;\n\n await checkFetchTarget();\n\n const extendParams = transfromExtendParams({ aiRole });\n const payload = { messages, ...extendParams };\n const streamUrl = STREAM_URL_BY_TARGET[fetchTaget] ?? STREAM_URL_BY_TARGET[FetchTarget.Center];\n const body = getAiEncryptData(payload);\n\n try {\n const controller = new AbortController();\n await doStreamFetch({\n url: streamUrl,\n body,\n extendParams,\n controller,\n cancel,\n write,\n complete,\n error,\n extraHeaders,\n });\n } catch (ex) {\n error(ex as any);\n }\n };\n}\n\nasync function doStreamFetch(opts: {\n url: string;\n body: unknown;\n extendParams: { role?: string };\n controller: AbortController;\n cancel: (fn: () => void) => void;\n write: (chunk: string) => void;\n complete: (v: string) => void;\n error: (e: any) => void;\n extraHeaders?: Record<string, string>;\n}) {\n const { url, body, extendParams, controller, cancel, write, complete, error, extraHeaders } = opts;\n\n const response = await fetch(toAbsoluteHttpsUrl(url), {\n signal: controller.signal,\n method: \"POST\",\n credentials: \"include\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...(extendParams.role ? { \"M-Request-Role\": extendParams.role } : {}),\n ...(extraHeaders ?? {}),\n },\n body: JSON.stringify(body),\n });\n\n cancel(() => controller.abort());\n\n const reader = response.body!.getReader();\n const decoder = new TextDecoder();\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n write(decoder.decode(value, { stream: true }));\n }\n\n complete(\"\");\n}\n\n\n/** 默认实现:线上用 production,开发用 development。可被 pluginAI 的 onRequest 整体替代。 */\nfunction createRequestAsStream(): RequestAsStreamFn {\n return isProduction() ? requestAsStreamForProduction() : requestAsStreamForDevelopment;\n}\n\n/**\n * 仅配置 token 的 preset:返回已注入 Authorization 的 requestAsStreamForProduction。\n * 等价于用 onRequest 完全替代默认实现并自带鉴权。\n * @example import pluginAI, { createMyBricksAIRequest } from '@mybricks/plugin-ai'\n * pluginAI({ onRequest: createMyBricksAIRequest({ token }) })\n */\nfunction createMyBricksAIRequest(config: { token: string }): RequestAsStreamFn {\n return requestAsStreamForProduction({ Authorization: `Bearer ${config.token}` });\n}\n\nexport { createRequestAsStream, createMyBricksAIRequest };\n"],"names":["toAbsoluteHttpsUrl","url","_window$location","window","location","protocol","p","startsWith","host","generateRandomKey","length","chars","result","i","randomIndex","Math","floor","random","getAiEncryptData","data","PUBLIC_KEY","AESKey","cipher","forge","createCipher","start","iv","update","util","createBuffer","encodeUtf8","JSON","stringify","finish","encryptedData","encode64","output","getBytes","publicKey","pki","publicKeyFromPem","encryptedAESKey","encrypt","chatContent","chatKey","logger","info","message","console","log","FetchTarget","fetchTaget","checkFetchTarget","_checkFetchTarget","apply","arguments","_asyncToGenerator","Promise","resolve","hasAICustomApp","fetch","then","res","json","code","catch","e","CustomApp","hasPlatformToken","Platform","Center","transfromExtendParams","extendParams","aiRole","model","role","includes","STREAM_URL_BY_TARGET","requestAsStreamForProduction","extraHeaders","_ref","params","_STREAM_URL_BY_TARGET","messages","emits","cancel","write","complete","error","payload","_objectSpread","streamUrl","body","controller","AbortController","doStreamFetch","ex","_x2","_x3","_doStreamFetch","opts","response","signal","method","credentials","headers","abort","reader","getReader","decoder","TextDecoder","done","value","read","decode","stream","createRequestAsStream","createMyBricksAIRequest","config","Authorization","concat","token"],"mappings":"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"}
|