@mybricks/plugin-ai 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/dist/api-record-replay/recorder.js +107 -0
- 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/dist/preset/user.js +7 -0
- 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 +33 -6
- package/src/agents/app.ts +0 -173
- package/src/agents/common.ts +0 -111
- package/src/agents/index.ts +0 -7
- package/src/components/icons/index.less +0 -8
- package/src/components/icons/index.tsx +0 -24
- package/src/components/messages/index.less +0 -806
- package/src/components/messages/index.tsx +0 -236
- package/src/context/index.ts +0 -21
- package/src/data.ts +0 -5
- package/src/index.tsx +0 -84
- package/src/mock.ts +0 -1267
- package/src/startView/index.less +0 -216
- package/src/startView/index.tsx +0 -229
- package/src/tools/analyze-and-expand-prd.ts +0 -166
- package/src/tools/answer-user.ts +0 -35
- package/src/tools/focus-element.ts +0 -47
- package/src/tools/generate-page.ts +0 -750
- package/src/tools/get-component-info-by-ids.ts +0 -166
- package/src/tools/get-component-info.ts +0 -53
- package/src/tools/get-components-doc-and-prd.ts +0 -137
- package/src/tools/get-focus-mybricks-dsl.ts +0 -26
- package/src/tools/get-mybricks-dsl.ts +0 -73
- package/src/tools/index.ts +0 -25
- package/src/tools/modify-component.ts +0 -385
- package/src/tools/type.d.ts +0 -12
- package/src/tools/utils.ts +0 -62
- package/src/types.d.ts +0 -65
- package/src/view/components/header/header.less +0 -17
- package/src/view/components/header/header.tsx +0 -15
- package/src/view/components/index.ts +0 -3
- package/src/view/components/messages/messages.less +0 -228
- package/src/view/components/messages/messages.tsx +0 -172
- package/src/view/components/sender/sender.less +0 -44
- package/src/view/components/sender/sender.tsx +0 -62
- package/src/view/index.less +0 -5
- package/src/view/index.tsx +0 -18
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
import { fileFormat } from '@mybricks/rxai'
|
|
2
|
-
import { getFiles } from './utils'
|
|
3
|
-
|
|
4
|
-
interface GetComponentInfoParams {
|
|
5
|
-
getComInfo: (namespace: string) => string
|
|
6
|
-
getComJson: (id: string) => string
|
|
7
|
-
getPageJson: (id: string) => string
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export default function getComponentsInfoByIds(config: GetComponentInfoParams, ): any {
|
|
11
|
-
return {
|
|
12
|
-
name: 'get-components-info-by-id',
|
|
13
|
-
displayName: "获取组件配置文档",
|
|
14
|
-
description: `通过现有的元素ID(组件或页面)获取「当前元素及其所有子组件」的DSL(包含父子结构信息和当前搭建信息)和涉及的组件配置文档。
|
|
15
|
-
参数:元素ID;
|
|
16
|
-
作用:获取组件的配置文档和当前元素DSL(包含父子结构信息和当前搭建信息),用于后续修改组件;
|
|
17
|
-
返回值:相关组件的配置文档和当前元素DSL;
|
|
18
|
-
`,
|
|
19
|
-
getPrompts: () => {
|
|
20
|
-
return `<工具总览>
|
|
21
|
-
你是一个可以获取组件配置文档和搭建信息工具,你作为MyBricks低代码平台(以下简称MyBricks平台或MyBricks)的资深页面搭建助手,可以选中组件的ID,返回组件的各类上下文。
|
|
22
|
-
</工具总览>
|
|
23
|
-
|
|
24
|
-
<任务流程>
|
|
25
|
-
按照以下格式返回所要获取上下文的所有组件:
|
|
26
|
-
${fileFormat({ content: '{ "id": "u_23ver", "type": "com" }', fileName: '需要获取上下文的组件ID.json' })}
|
|
27
|
-
- type为 *page* 或 *com* ;
|
|
28
|
-
- 注意:文件内容注意不要出现语法错误,文件声明要保持一致;
|
|
29
|
-
</任务流程>`
|
|
30
|
-
},
|
|
31
|
-
lastAppendMessage: '已提供组件文档和搭建配置,请继续。',
|
|
32
|
-
execute({ files, content }) {
|
|
33
|
-
const selectFile = getFiles(files, { extName: 'json' });
|
|
34
|
-
let selectId,selectType
|
|
35
|
-
try {
|
|
36
|
-
selectId = JSON.parse(selectFile?.content)?.id;
|
|
37
|
-
selectType = JSON.parse(selectFile?.content)?.type;
|
|
38
|
-
} catch (error) {}
|
|
39
|
-
|
|
40
|
-
if (!selectId) {
|
|
41
|
-
return '没有选择的组件ID'
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
const { jsx, namespaces } = getComponentsInfoByJson(selectType === 'page' ? config.getPageJson(selectId) : config.getComJson(selectId))
|
|
45
|
-
|
|
46
|
-
const docs = namespaces.reduce((acc, cur) => {
|
|
47
|
-
return acc + '\n' + config.getComInfo(cur)
|
|
48
|
-
}, '')
|
|
49
|
-
|
|
50
|
-
return `<元素${selectId}的DSL>
|
|
51
|
-
${jsx}
|
|
52
|
-
</元素${selectId}的DSL>
|
|
53
|
-
|
|
54
|
-
<关联的所有组件配置文档>
|
|
55
|
-
${docs}
|
|
56
|
-
</关联的所有组件配置文档>`
|
|
57
|
-
},
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
interface GetComponentsResult {
|
|
63
|
-
jsx: string;
|
|
64
|
-
namespaces: string[];
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
function getComponentsInfoByJson(data: any): GetComponentsResult {
|
|
68
|
-
const namespacesSet = new Set<string>(); // 使用Set去重
|
|
69
|
-
|
|
70
|
-
// 生成插槽JSX
|
|
71
|
-
function generateSlotsJSX(slots: any[], indent = ' ') {
|
|
72
|
-
if (!slots || slots.length === 0) return '';
|
|
73
|
-
|
|
74
|
-
let slotsJSX = '';
|
|
75
|
-
slots.forEach(slot => {
|
|
76
|
-
if (slot.id) {
|
|
77
|
-
slotsJSX += `\n${indent}<slots.${slot.id}>`;
|
|
78
|
-
|
|
79
|
-
// 如果插槽有组件,递归处理
|
|
80
|
-
if (slot.components && Array.isArray(slot.components)) {
|
|
81
|
-
slot.components.forEach(component => {
|
|
82
|
-
const childJSX = generateComponentJSX(component, indent + ' ');
|
|
83
|
-
if (childJSX) {
|
|
84
|
-
slotsJSX += `\n${indent} ${childJSX}`;
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
slotsJSX += `\n${indent}</slots.${slot.id}>`;
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
return slotsJSX;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
// 生成单个组件的JSX
|
|
97
|
-
function generateComponentJSX(node: any, indent = '') {
|
|
98
|
-
if (!node || !node.id) return '';
|
|
99
|
-
|
|
100
|
-
const namespace = node.def?.namespace || 'content';
|
|
101
|
-
namespacesSet.add(namespace); // 添加到namespace集合
|
|
102
|
-
|
|
103
|
-
const dataStr = JSON.stringify(node.data || {});
|
|
104
|
-
let jsx = `<${namespace} id="${node.id}" data={${dataStr}}`;
|
|
105
|
-
|
|
106
|
-
// 处理插槽
|
|
107
|
-
const slotsJSX = generateSlotsJSX(node.slots || [], indent + ' ');
|
|
108
|
-
if (slotsJSX) {
|
|
109
|
-
jsx += slotsJSX;
|
|
110
|
-
jsx += `\n${indent}</${namespace}>`;
|
|
111
|
-
} else {
|
|
112
|
-
jsx += ` />`;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
return jsx;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
// 递归处理数据
|
|
119
|
-
function processData(node: any) {
|
|
120
|
-
if (!node) return '';
|
|
121
|
-
|
|
122
|
-
// 如果是数组,遍历每个元素
|
|
123
|
-
if (Array.isArray(node)) {
|
|
124
|
-
let result = '';
|
|
125
|
-
node.forEach((item, index) => {
|
|
126
|
-
const jsx = processData(item);
|
|
127
|
-
if (jsx) {
|
|
128
|
-
result += jsx;
|
|
129
|
-
if (index < node.length - 1) {
|
|
130
|
-
result += '\n';
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
return result;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
// 如果是组件节点
|
|
138
|
-
if (node.id) {
|
|
139
|
-
return generateComponentJSX(node);
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
// 处理slots中的组件
|
|
143
|
-
if (node.slots && Array.isArray(node.slots)) {
|
|
144
|
-
let result = '';
|
|
145
|
-
node.slots.forEach(slot => {
|
|
146
|
-
if (slot.components && Array.isArray(slot.components)) {
|
|
147
|
-
const slotResult = processData(slot.components);
|
|
148
|
-
if (slotResult) {
|
|
149
|
-
result += slotResult;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
return result;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
return '';
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
// 开始处理
|
|
160
|
-
const jsx = processData(data);
|
|
161
|
-
|
|
162
|
-
return {
|
|
163
|
-
jsx,
|
|
164
|
-
namespaces: Array.from(namespacesSet) // 转换为数组并去重
|
|
165
|
-
};
|
|
166
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { fileFormat } from '@mybricks/rxai'
|
|
2
|
-
import { getFiles } from './utils'
|
|
3
|
-
|
|
4
|
-
interface GetComponentInfoParams {
|
|
5
|
-
getComInfo: (id: string) => string
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
*
|
|
10
|
-
* @deprecated 信息不完整,后面估计要废弃了
|
|
11
|
-
* @param config
|
|
12
|
-
* @returns
|
|
13
|
-
*/
|
|
14
|
-
export default function getComponentsInfoByIds(config: GetComponentInfoParams, ): any {
|
|
15
|
-
return {
|
|
16
|
-
name: 'get-components-info-by-ids',
|
|
17
|
-
displayName: "获取组件配置文档",
|
|
18
|
-
description: `通过现有的组件ID获取当前组件的配置文档和当前组件搭建配置。
|
|
19
|
-
参数:组件ID;
|
|
20
|
-
作用:获取组件的配置文档和当前搭建信息,用于后续修改组件;
|
|
21
|
-
返回值:相关组件的配置文档和搭建配置;
|
|
22
|
-
|
|
23
|
-
注意:搭建配置不包含DSL(没有子组件信息),仅包含当前组件的配置信息。
|
|
24
|
-
`,
|
|
25
|
-
getPrompts: () => {
|
|
26
|
-
return `<工具总览>
|
|
27
|
-
你是一个可以获取组件配置文档和搭建信息工具,你作为MyBricks低代码平台(以下简称MyBricks平台或MyBricks)的资深页面搭建助手,可以选中要返回组件的ID返回组件的各类上下文。
|
|
28
|
-
</工具总览>
|
|
29
|
-
|
|
30
|
-
<任务流程>
|
|
31
|
-
按照以下格式返回所要获取上下文的所有组件:
|
|
32
|
-
${fileFormat({ content: '[{ "id": "u_23ver" }, { "id": "u_9sdi2" }]', fileName: '需要获取上下文的组件ID列表.json' })}
|
|
33
|
-
- 注意:文件内容注意不要出现语法错误,文件声明要保持一致;
|
|
34
|
-
</任务流程>`
|
|
35
|
-
},
|
|
36
|
-
lastAppendMessage: '已提供组件文档和搭建配置,请继续。',
|
|
37
|
-
execute({ files, content }) {
|
|
38
|
-
const idsFile = getFiles(files, { extName: 'json' });
|
|
39
|
-
let ids = [];
|
|
40
|
-
try {
|
|
41
|
-
ids = JSON.parse(idsFile?.content);
|
|
42
|
-
} catch (error) {}
|
|
43
|
-
|
|
44
|
-
const docs = ids.reduce((acc, cur) => {
|
|
45
|
-
return acc + '\n' + config.getComInfo(cur.id)
|
|
46
|
-
}, '')
|
|
47
|
-
|
|
48
|
-
return `<组件配置文档和搭建情况>
|
|
49
|
-
${docs}
|
|
50
|
-
</组件搭建文档和搭建情况>`
|
|
51
|
-
},
|
|
52
|
-
}
|
|
53
|
-
}
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import { fileFormat } from '@mybricks/rxai'
|
|
2
|
-
|
|
3
|
-
interface GetComponentsDocAndPrdToolParams {
|
|
4
|
-
allowComponents: string;
|
|
5
|
-
examples: string;
|
|
6
|
-
canvasWidth: string;
|
|
7
|
-
queryComponentsDocsByNamespaces: (
|
|
8
|
-
namespaces: [{ namespace: string }],
|
|
9
|
-
) => string;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export default function getComponentsDocAndPrd(config: GetComponentsDocAndPrdToolParams, ): any {
|
|
13
|
-
return {
|
|
14
|
-
name: 'generate-page-prd-and-require-component',
|
|
15
|
-
displayName: "理解和整理当前页面需求",
|
|
16
|
-
description: `整理/扩写需求/分析图片 + 组件选型,是页面搭建/生成的前置操作。
|
|
17
|
-
前置要求:用户提出过搭建页面需求
|
|
18
|
-
参数:用户需求(可能是文本,一句话、图片附近、文件附件等需求)
|
|
19
|
-
返回值:需求分析规格说明书(PRD)文件 + 组件选型;`,
|
|
20
|
-
aiRole: "expert",
|
|
21
|
-
getPrompts: () => {
|
|
22
|
-
return `<工具总览>
|
|
23
|
-
你是一个获取组件文档和用户需求的工具,你作为MyBricks低代码平台(以下简称MyBricks平台或MyBricks)的资深页面搭建助手,拥有专业的产品经理能力。
|
|
24
|
-
你的任务是根据「允许使用的组件及其说明」,整理或扩写用户的需求(如果有图片附件、需要参考图片中的内容,对图片详细理解),并将需求中可能用到的组件列出来整理成「需求文档」和「组件使用文档」。
|
|
25
|
-
|
|
26
|
-
提示:MyBricks是用来通过AI+可视化搭建的方式生成各类应用的生产力工具,用户可以与AI沟通、让AI搭建完成一部分内容,以及通过拖拽、配置等方式,快速搭建出各类应用。
|
|
27
|
-
</工具总览>
|
|
28
|
-
|
|
29
|
-
<任务流程>
|
|
30
|
-
根据「用户需求」和「搭建上下文」,按照以下格式返回内容:
|
|
31
|
-
${fileFormat({ content: '(需求分析规格说明书的内容)', fileName: 'XX需求文档.md' })}
|
|
32
|
-
|
|
33
|
-
${fileFormat({ content: '(搭建所需要的组件选型)', fileName: 'XX需求组件选型.json' })}
|
|
34
|
-
- - 注意:文件内容注意不要出现语法错误,文件声明要保持一致;
|
|
35
|
-
</任务流程>
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
<允许使用的组件及其说明>
|
|
39
|
-
|
|
40
|
-
${config.allowComponents}
|
|
41
|
-
|
|
42
|
-
注意:
|
|
43
|
-
- 以上是允许使用的组件及说明,包括了 title、type、namespace、description等信息;
|
|
44
|
-
- 在回答各类问题或者搭建页面时,只能使用上述范围的组件,禁止臆造内容;
|
|
45
|
-
</允许使用的组件及其说明>
|
|
46
|
-
|
|
47
|
-
</MyBricks组件>
|
|
48
|
-
|
|
49
|
-
<你的工作流程>
|
|
50
|
-
按照以下步骤完成prd(需求分析规格说明书)文件:
|
|
51
|
-
1、总体需求分析,详细分析用户需求:
|
|
52
|
-
1.1)首先,确定总体的功能,描述整体的概述信息
|
|
53
|
-
|
|
54
|
-
其次,我们需要区分用户的目的是「还原设计稿/图片效果」还是「根据自然语言/原型文件/草稿生成应用」,在「还原设计稿/图片效果」下,需要关注画布和设计稿图片的尺寸风险。
|
|
55
|
-
1.2 )确定设计风格、布局和内容、颜色样式、文案内容、特别注意事项、风险提示等内容,其中:
|
|
56
|
-
- 设计风格(themes):包括风格、色系、字号等,总体按照现代简洁、扁平化、美观大方的原则,注意色彩结构紧凑、搭配合理、字体清晰;
|
|
57
|
-
- 布局和内容(layout):总体的布局结构,以及各个区块内的元素位置、视觉、亮点等;
|
|
58
|
-
- 颜色样式(colors):考虑主色调、辅助色调、背景颜色、字体颜色、按钮颜色、边框颜色等;
|
|
59
|
-
- 特别注意事项(attention):界面中的一些设计细节,例如背景、定位、圆角、特别的图标等;
|
|
60
|
-
- 风险提示(risk):
|
|
61
|
-
> 如果是「还原设计稿/图片效果」,关注画布和图片尺寸不一致的风险;
|
|
62
|
-
目标画布是${config.canvasWidth}*任意高度的尺寸,需要依据参考图片宽度(事实值,不要捏造)给出可能的风险,一般来说存在两种情况:
|
|
63
|
-
如果是,图片宽度比画布大,那一定存在内容多大/过多溢出的情况,此时需要你发现并列出以下风险:
|
|
64
|
-
- 风险分类一:自适应布局
|
|
65
|
-
- 看起来间距相等、宽度相似的排列,在目标画布上,建议使用宽度固定的均分/网格布局来实现;
|
|
66
|
-
- 风险分类二:避免遮挡
|
|
67
|
-
- 内容丰富的卡片,考虑文本需要缩小到一个较小的值避免遮挡;
|
|
68
|
-
- 兄弟元素的互相影响,比如居右有一个头像,文本居右但是在头像左侧,需要注意位置计算,文本不要遮挡到头像;
|
|
69
|
-
- 风险分类三:错误的宽度
|
|
70
|
-
- 设置宽度时,父节点及其上层节点的宽度(扣除各类间距),避免超出画布宽度;
|
|
71
|
-
如果是,图片宽度比画布小,那一定存在留白的情况,此时需要你发现并列出以下风险:
|
|
72
|
-
- 风险分类一:自适应布局
|
|
73
|
-
- 看看起来间距相等、宽度相似的排列,在目标画布上,建议使用宽度固定的均分/网格布局来实现;
|
|
74
|
-
主要是大图片缩放后尺寸别溢出,小图片缩放后别留白。
|
|
75
|
-
> 如果是「根据自然语言/原型文件/草稿生成应用」,关注需求细节不要遗漏的风险;
|
|
76
|
-
|
|
77
|
-
> 特别注意:
|
|
78
|
-
- 你只需要客观事实地描述需求的元素排列即可,可以告知用户风险,不允许出现直接的布局建议以及组件使用建议(比如flex布局、弹性布局,比如使用XX组件,比如CSS代码);
|
|
79
|
-
- 斟酌你的用词,使用通用的名词(比如卡片、内容、文本、图片、图标),禁止使用带有语义的名词(比如选项卡,会被误解成某个组件)来描述元素;
|
|
80
|
-
|
|
81
|
-
2、根据需求分析,详细拆解所需要的组件,注意:
|
|
82
|
-
- 根据业务类型选择合理的技术方案(类库、组件、图标等),注意不要超出允许的范围;
|
|
83
|
-
- 禁止主观臆造不存在的组件等,只能基于事实上提供的组件进行;
|
|
84
|
-
- 组件选型不要想当然的认为英文的namespace就是语义化的,更多关注于中文描述和「何时使用」「注意事项」来判断应该使用什么组件。
|
|
85
|
-
|
|
86
|
-
接下来,根据上述分析,按照以下格式返回内容:
|
|
87
|
-
${fileFormat({ content: '(需求分析规格说明书的内容)', fileName: 'XX需求文档.md' })}
|
|
88
|
-
|
|
89
|
-
${fileFormat({ content: '(搭建所需要的组件选型)', fileName: 'XX需求组件选型.json' })}
|
|
90
|
-
|
|
91
|
-
注意:require.json文件要严格按照JSON格式返回,注意不要出现语法错误;
|
|
92
|
-
|
|
93
|
-
</你的工作流程>
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
<examples>
|
|
97
|
-
${config.examples}
|
|
98
|
-
</examples>
|
|
99
|
-
`
|
|
100
|
-
},
|
|
101
|
-
execute({ files, content }) {
|
|
102
|
-
let prdFile: File | undefined = undefined, requireComsFile: File | undefined = undefined;
|
|
103
|
-
Object.keys(files).forEach((fileKey) => {
|
|
104
|
-
const file: File = files[fileKey] as File;
|
|
105
|
-
if (file.extension === 'md') {
|
|
106
|
-
prdFile = file
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
if (file.extension === 'json') {
|
|
110
|
-
requireComsFile = file
|
|
111
|
-
}
|
|
112
|
-
})
|
|
113
|
-
|
|
114
|
-
let requireComponents = [];
|
|
115
|
-
try {
|
|
116
|
-
requireComponents = JSON.parse(requireComsFile?.content);
|
|
117
|
-
} catch (error) {}
|
|
118
|
-
const requireComponentsDocs = config.queryComponentsDocsByNamespaces(requireComponents);
|
|
119
|
-
return `<需求文档>
|
|
120
|
-
---
|
|
121
|
-
${prdFile?.name}
|
|
122
|
-
---
|
|
123
|
-
|
|
124
|
-
${prdFile?.content}
|
|
125
|
-
</需求文档>
|
|
126
|
-
|
|
127
|
-
<允许使用的组件知识库文档>
|
|
128
|
-
---
|
|
129
|
-
${requireComsFile?.name}
|
|
130
|
-
---
|
|
131
|
-
|
|
132
|
-
${requireComponentsDocs}
|
|
133
|
-
|
|
134
|
-
</允许使用的组件知识库文档>`
|
|
135
|
-
},
|
|
136
|
-
}
|
|
137
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { fileFormat } from '@mybricks/rxai'
|
|
2
|
-
import { getFiles } from './utils'
|
|
3
|
-
|
|
4
|
-
interface GetMybricksDslToolParams {
|
|
5
|
-
id: string
|
|
6
|
-
getFocusContext: () => string;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export default function getMybricksDsl(config: GetMybricksDslToolParams): any {
|
|
10
|
-
return {
|
|
11
|
-
name: 'get-focus-mybricks-dsl-by-id',
|
|
12
|
-
displayName: "获取当前搭建上下文",
|
|
13
|
-
description: `获取聚焦(页面/组件)的完整当前搭建内容,特别是子组件内容,包括搭建的DSL、结构、组件层级、配置信息等。
|
|
14
|
-
返回值:聚焦元素的完整DSL结构,包括搭建的组件id、层级、配置信息等;
|
|
15
|
-
|
|
16
|
-
注意:信息不包含组件配置文档。
|
|
17
|
-
`,
|
|
18
|
-
lastAppendMessage: '已提供上下文,请继续。',
|
|
19
|
-
execute() {
|
|
20
|
-
const contextDoc = config.getFocusContext();
|
|
21
|
-
return `<元素${config.id}的上下文信息>
|
|
22
|
-
${contextDoc}
|
|
23
|
-
</元素${config.id}的上下文信息>`
|
|
24
|
-
},
|
|
25
|
-
}
|
|
26
|
-
}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { fileFormat } from '@mybricks/rxai'
|
|
2
|
-
import { getFiles } from './utils'
|
|
3
|
-
|
|
4
|
-
interface GetMybricksDslToolParams {
|
|
5
|
-
getContext: (
|
|
6
|
-
id: string,
|
|
7
|
-
type: 'com' | 'page'
|
|
8
|
-
) => string;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export default function getMybricksDsl(config: GetMybricksDslToolParams): Tool {
|
|
12
|
-
return {
|
|
13
|
-
name: 'get-mybricks-dsl-by-id',
|
|
14
|
-
displayName: "根据ID获取(页面/组件)的完整内容",
|
|
15
|
-
description: `根据ID获取(页面/组件)的完整内容,包括搭建的DSL、结构、组件层级、配置信息等。
|
|
16
|
-
参数:元素ID(页面ID或者组件ID);
|
|
17
|
-
返回值:页面的完整上下文信息,包括搭建的DSL结构、组件id、层级、配置信息等;
|
|
18
|
-
`,
|
|
19
|
-
getPrompts: () => {
|
|
20
|
-
return `<工具总览>
|
|
21
|
-
你是一个上下文分析工具,作为MyBricks低代码平台(以下简称MyBricks平台或MyBricks)的资深页面分析助手,拥有专业的技术分析能力。
|
|
22
|
-
你的任务是选择需要获取上下文的「元素ID」,系统会自动根据ID返回页面的完整上下文信息。
|
|
23
|
-
</工具总览>
|
|
24
|
-
|
|
25
|
-
<任务流程>
|
|
26
|
-
选中需要获取上下文的「元素ID」:
|
|
27
|
-
${fileFormat({ content: '{ "id": "u_s1213", "type": "com" }', fileName: '选择的元素.json' })}
|
|
28
|
-
- 注意:要严格按照此格式返回,注意不要出现语法错误;
|
|
29
|
-
</任务流程>
|
|
30
|
-
|
|
31
|
-
<关于返回值>
|
|
32
|
-
只能按照「任务流程」设计,返回选择的「元素ID」和「类型」。
|
|
33
|
-
注意:
|
|
34
|
-
type:固定为 "com" 或 "page",表示组件或页面;
|
|
35
|
-
</关于返回值>
|
|
36
|
-
|
|
37
|
-
<examples>
|
|
38
|
-
<example>
|
|
39
|
-
<user_query>解释一下组件u_s1213的搭建结构</user_query>
|
|
40
|
-
<assistant_response>
|
|
41
|
-
解释搭建结构,需要先获取组件u_s1213的搭建DSL,才能开始分析。
|
|
42
|
-
${fileFormat({ content: '{ "id": "u_s1213", "type": "com" }', fileName: '选择的元素.json' })}
|
|
43
|
-
</assistant_response>
|
|
44
|
-
</example>
|
|
45
|
-
<example>
|
|
46
|
-
<user_query>我聚焦的页面是有什么内容</user_query>
|
|
47
|
-
<assistant_response>
|
|
48
|
-
解释内容,需要先获取页面u_pju67的搭建DSL,才能开始分析。
|
|
49
|
-
${fileFormat({ content: '{ "id": "u_pju67", "type": "page" }', fileName: '选择的元素.json' })}
|
|
50
|
-
</assistant_response>
|
|
51
|
-
</example>
|
|
52
|
-
</examples>
|
|
53
|
-
`
|
|
54
|
-
},
|
|
55
|
-
execute({ files, content }) {
|
|
56
|
-
const selectFile = getFiles(files, { extName: 'json' })
|
|
57
|
-
|
|
58
|
-
let selectDom
|
|
59
|
-
try {
|
|
60
|
-
selectDom = JSON.parse(selectFile?.content)
|
|
61
|
-
} catch (error) {}
|
|
62
|
-
|
|
63
|
-
if (!selectDom?.id) {
|
|
64
|
-
return '未获取到元素ID,请重新选择'
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
const contextDoc = config.getContext(selectDom?.id, selectDom?.type);
|
|
68
|
-
return `<元素${selectDom?.id}的上下文信息>
|
|
69
|
-
${contextDoc}
|
|
70
|
-
</元素${selectDom?.id}的上下文信息>`
|
|
71
|
-
},
|
|
72
|
-
}
|
|
73
|
-
}
|
package/src/tools/index.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import GeneratePage from './generate-page';
|
|
2
|
-
import GetComponentsDocAndPrd from './get-components-doc-and-prd';
|
|
3
|
-
import ModifyComponent from './modify-component'
|
|
4
|
-
import GetMybricksDSL from './get-mybricks-dsl';
|
|
5
|
-
import GetFocusMybricksDSL from './get-focus-mybricks-dsl';
|
|
6
|
-
import FocusElement from './focus-element'
|
|
7
|
-
import GetComponentInfo from './get-component-info'
|
|
8
|
-
import GetComponentsInfoByIds from './get-component-info-by-ids';
|
|
9
|
-
import AnswerUser from './answer-user';
|
|
10
|
-
import AnalyzeAndExpandPrd from './analyze-and-expand-prd';
|
|
11
|
-
|
|
12
|
-
export const MYBRICKS_TOOLS = {
|
|
13
|
-
GeneratePage,
|
|
14
|
-
GetComponentsDocAndPrd,
|
|
15
|
-
ModifyComponent,
|
|
16
|
-
// GetMybricksDSL,
|
|
17
|
-
GetFocusMybricksDSL,
|
|
18
|
-
GetComponentInfo,
|
|
19
|
-
GetComponentsInfoByIds,
|
|
20
|
-
AnalyzeAndExpandPrd,
|
|
21
|
-
// AnswerUser
|
|
22
|
-
// FocusElement
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export { MyBricksHelper } from './utils'
|