@mybricks/plugin-ai 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/dist/_virtual/_rollupPluginBabelHelpers.js +164 -0
  2. package/dist/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
  3. package/dist/agents/app.js +335 -0
  4. package/dist/agents/app.js.map +1 -0
  5. package/dist/agents/common.js +483 -0
  6. package/dist/agents/common.js.map +1 -0
  7. package/dist/agents/custom.js +16 -0
  8. package/dist/agents/custom.js.map +1 -0
  9. package/dist/agents/index.js +38 -0
  10. package/dist/agents/index.js.map +1 -0
  11. package/dist/agents/knowledges/knowledge-base.js +579 -0
  12. package/dist/agents/knowledges/knowledge-base.js.map +1 -0
  13. package/dist/agents/knowledges/knowledge-node.js +228 -0
  14. package/dist/agents/knowledges/knowledge-node.js.map +1 -0
  15. package/dist/agents/knowledges/types.js +105 -0
  16. package/dist/agents/knowledges/types.js.map +1 -0
  17. package/dist/agents/utils/config.js +229 -0
  18. package/dist/agents/utils/config.js.map +1 -0
  19. package/dist/agents/workspace/coding-manager.js +20 -0
  20. package/dist/agents/workspace/coding-manager.js.map +1 -0
  21. package/dist/agents/workspace/components-manager.js +113 -0
  22. package/dist/agents/workspace/components-manager.js.map +1 -0
  23. package/dist/agents/workspace/outline-focus.js +167 -0
  24. package/dist/agents/workspace/outline-focus.js.map +1 -0
  25. package/dist/agents/workspace/outline-info.js +430 -0
  26. package/dist/agents/workspace/outline-info.js.map +1 -0
  27. package/dist/agents/workspace/page-tree-generator.js +70 -0
  28. package/dist/agents/workspace/page-tree-generator.js.map +1 -0
  29. package/dist/agents/workspace/workspace.js +251 -0
  30. package/dist/agents/workspace/workspace.js.map +1 -0
  31. package/dist/agents/workspace-by-knowledges/providers/component-docs-provider.js +100 -0
  32. package/dist/agents/workspace-by-knowledges/providers/component-docs-provider.js.map +1 -0
  33. package/dist/agents/workspace-by-knowledges/providers/focus-info-provider.js +120 -0
  34. package/dist/agents/workspace-by-knowledges/providers/focus-info-provider.js.map +1 -0
  35. package/dist/agents/workspace-by-knowledges/providers/project-info-provider.js +146 -0
  36. package/dist/agents/workspace-by-knowledges/providers/project-info-provider.js.map +1 -0
  37. package/dist/agents/workspace-by-knowledges/test.js +242 -0
  38. package/dist/agents/workspace-by-knowledges/test.js.map +1 -0
  39. package/dist/agents/workspace-by-knowledges/utils/components-manager.js +132 -0
  40. package/dist/agents/workspace-by-knowledges/utils/components-manager.js.map +1 -0
  41. package/dist/agents/workspace-by-knowledges/utils/outline-focus.js +167 -0
  42. package/dist/agents/workspace-by-knowledges/utils/outline-focus.js.map +1 -0
  43. package/dist/agents/workspace-by-knowledges/utils/outline-info.js +430 -0
  44. package/dist/agents/workspace-by-knowledges/utils/outline-info.js.map +1 -0
  45. package/dist/agents/workspace-by-knowledges/workspace.js +169 -0
  46. package/dist/agents/workspace-by-knowledges/workspace.js.map +1 -0
  47. package/dist/api/cloud-components.js +85 -0
  48. package/dist/api/cloud-components.js.map +1 -0
  49. package/dist/api-record-replay/manager.js +168 -0
  50. package/dist/api-record-replay/manager.js.map +1 -0
  51. package/dist/api-record-replay/recorder.js +107 -0
  52. package/dist/api-record-replay/recorder.js.map +1 -0
  53. package/dist/api-record-replay/replayer.js +136 -0
  54. package/dist/api-record-replay/replayer.js.map +1 -0
  55. package/dist/components/attachments/index.js +124 -0
  56. package/dist/components/attachments/index.js.map +1 -0
  57. package/dist/components/attachments/index.less.js +8 -0
  58. package/dist/components/attachments/index.less.js.map +1 -0
  59. package/dist/components/icons/index.js +112 -0
  60. package/dist/components/icons/index.js.map +1 -0
  61. package/dist/components/icons/index.less.js +8 -0
  62. package/dist/components/icons/index.less.js.map +1 -0
  63. package/dist/components/mention/index.js +19 -0
  64. package/dist/components/mention/index.js.map +1 -0
  65. package/dist/components/mention/index.less.js +8 -0
  66. package/dist/components/mention/index.less.js.map +1 -0
  67. package/dist/components/messages/index.js +429 -0
  68. package/dist/components/messages/index.js.map +1 -0
  69. package/dist/components/messages/index.less.js +8 -0
  70. package/dist/components/messages/index.less.js.map +1 -0
  71. package/dist/components/sender/index.js +244 -0
  72. package/dist/components/sender/index.js.map +1 -0
  73. package/dist/components/sender/index.less.js +8 -0
  74. package/dist/components/sender/index.less.js.map +1 -0
  75. package/dist/context/RequestStatusTracker.js +44 -0
  76. package/dist/context/RequestStatusTracker.js.map +1 -0
  77. package/dist/context/index.js +45 -0
  78. package/dist/context/index.js.map +1 -0
  79. package/dist/data.js +4 -0
  80. package/dist/data.js.map +1 -0
  81. package/dist/index.js +306 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/plugin-ai/node_modules/style-inject/dist/style-inject.es.js +27 -0
  84. package/dist/plugin-ai/node_modules/style-inject/dist/style-inject.es.js.map +1 -0
  85. package/dist/plugin-ai/package.json.js +8 -0
  86. package/dist/plugin-ai/package.json.js.map +1 -0
  87. package/dist/plugin-ai/test/index.js +206 -0
  88. package/dist/plugin-ai/test/index.js.map +1 -0
  89. package/dist/preset/createTemplates.js +29 -0
  90. package/dist/preset/createTemplates.js.map +1 -0
  91. package/dist/preset/index.js +13 -0
  92. package/dist/preset/index.js.map +1 -0
  93. package/dist/preset/prompts.js +34 -0
  94. package/dist/preset/prompts.js.map +1 -0
  95. package/dist/preset/user.js +7 -0
  96. package/dist/preset/user.js.map +1 -0
  97. package/dist/requestAsStream.js +269 -0
  98. package/dist/requestAsStream.js.map +1 -0
  99. package/dist/rxai/node_modules/idb/build/index.js +277 -0
  100. package/dist/rxai/node_modules/idb/build/index.js.map +1 -0
  101. package/dist/rxai/src/agent/base.js +16 -0
  102. package/dist/rxai/src/agent/base.js.map +1 -0
  103. package/dist/rxai/src/agent/planning.js +1076 -0
  104. package/dist/rxai/src/agent/planning.js.map +1 -0
  105. package/dist/rxai/src/agent/rxai.js +254 -0
  106. package/dist/rxai/src/agent/rxai.js.map +1 -0
  107. package/dist/rxai/src/error/base.js +39 -0
  108. package/dist/rxai/src/error/base.js.map +1 -0
  109. package/dist/rxai/src/prompt/base.js +11 -0
  110. package/dist/rxai/src/prompt/base.js.map +1 -0
  111. package/dist/rxai/src/prompt/planning.js +23 -0
  112. package/dist/rxai/src/prompt/planning.js.map +1 -0
  113. package/dist/rxai/src/prompt/tool.js +14 -0
  114. package/dist/rxai/src/prompt/tool.js.map +1 -0
  115. package/dist/rxai/src/request/request.js +123 -0
  116. package/dist/rxai/src/request/request.js.map +1 -0
  117. package/dist/rxai/src/tool/getHistoryRecords.js +65 -0
  118. package/dist/rxai/src/tool/getHistoryRecords.js.map +1 -0
  119. package/dist/rxai/src/tool/util.js +424 -0
  120. package/dist/rxai/src/tool/util.js.map +1 -0
  121. package/dist/rxai/src/utils/events.js +43 -0
  122. package/dist/rxai/src/utils/events.js.map +1 -0
  123. package/dist/rxai/src/utils/idb.js +240 -0
  124. package/dist/rxai/src/utils/idb.js.map +1 -0
  125. package/dist/rxai/src/utils/retry.js +32 -0
  126. package/dist/rxai/src/utils/retry.js.map +1 -0
  127. package/dist/rxai/src/utils/uuid.js +7 -0
  128. package/dist/rxai/src/utils/uuid.js.map +1 -0
  129. package/dist/startView/components/header/header.js +12 -0
  130. package/dist/startView/components/header/header.js.map +1 -0
  131. package/dist/startView/components/header/header.less.js +8 -0
  132. package/dist/startView/components/header/header.less.js.map +1 -0
  133. package/dist/startView/index.js +62 -0
  134. package/dist/startView/index.js.map +1 -0
  135. package/dist/startView/index.less.js +8 -0
  136. package/dist/startView/index.less.js.map +1 -0
  137. package/dist/tools/analyze-and-expand-prd.js +116 -0
  138. package/dist/tools/analyze-and-expand-prd.js.map +1 -0
  139. package/dist/tools/analyze-requirement-and-components.js +208 -0
  140. package/dist/tools/analyze-requirement-and-components.js.map +1 -0
  141. package/dist/tools/answer.js +33 -0
  142. package/dist/tools/answer.js.map +1 -0
  143. package/dist/tools/build-process.js +550 -0
  144. package/dist/tools/build-process.js.map +1 -0
  145. package/dist/tools/coding-subagent-as-tool.js +101 -0
  146. package/dist/tools/coding-subagent-as-tool.js.map +1 -0
  147. package/dist/tools/generate-ui-content.js +528 -0
  148. package/dist/tools/generate-ui-content.js.map +1 -0
  149. package/dist/tools/index.js +31 -0
  150. package/dist/tools/index.js.map +1 -0
  151. package/dist/tools/open-dsl.js +49 -0
  152. package/dist/tools/open-dsl.js.map +1 -0
  153. package/dist/tools/refactor-ui-content.js +292 -0
  154. package/dist/tools/refactor-ui-content.js.map +1 -0
  155. package/dist/tools/utils.js +832 -0
  156. package/dist/tools/utils.js.map +1 -0
  157. package/dist/types/index.js +8 -0
  158. package/dist/types/index.js.map +1 -0
  159. package/dist/view/components/header/header.js +59 -0
  160. package/dist/view/components/header/header.js.map +1 -0
  161. package/dist/view/components/header/header.less.js +8 -0
  162. package/dist/view/components/header/header.less.js.map +1 -0
  163. package/dist/view/index.js +184 -0
  164. package/dist/view/index.js.map +1 -0
  165. package/dist/view/index.less.js +8 -0
  166. package/dist/view/index.less.js.map +1 -0
  167. package/package.json +33 -6
  168. package/src/agents/app.ts +0 -173
  169. package/src/agents/common.ts +0 -111
  170. package/src/agents/index.ts +0 -7
  171. package/src/components/icons/index.less +0 -8
  172. package/src/components/icons/index.tsx +0 -24
  173. package/src/components/messages/index.less +0 -806
  174. package/src/components/messages/index.tsx +0 -236
  175. package/src/context/index.ts +0 -21
  176. package/src/data.ts +0 -5
  177. package/src/index.tsx +0 -84
  178. package/src/mock.ts +0 -1267
  179. package/src/startView/index.less +0 -216
  180. package/src/startView/index.tsx +0 -229
  181. package/src/tools/analyze-and-expand-prd.ts +0 -166
  182. package/src/tools/answer-user.ts +0 -35
  183. package/src/tools/focus-element.ts +0 -47
  184. package/src/tools/generate-page.ts +0 -750
  185. package/src/tools/get-component-info-by-ids.ts +0 -166
  186. package/src/tools/get-component-info.ts +0 -53
  187. package/src/tools/get-components-doc-and-prd.ts +0 -137
  188. package/src/tools/get-focus-mybricks-dsl.ts +0 -26
  189. package/src/tools/get-mybricks-dsl.ts +0 -73
  190. package/src/tools/index.ts +0 -25
  191. package/src/tools/modify-component.ts +0 -385
  192. package/src/tools/type.d.ts +0 -12
  193. package/src/tools/utils.ts +0 -62
  194. package/src/types.d.ts +0 -65
  195. package/src/view/components/header/header.less +0 -17
  196. package/src/view/components/header/header.tsx +0 -15
  197. package/src/view/components/index.ts +0 -3
  198. package/src/view/components/messages/messages.less +0 -228
  199. package/src/view/components/messages/messages.tsx +0 -172
  200. package/src/view/components/sender/sender.less +0 -44
  201. package/src/view/components/sender/sender.tsx +0 -62
  202. package/src/view/index.less +0 -5
  203. package/src/view/index.tsx +0 -18
@@ -0,0 +1,167 @@
1
+ import { objectSpread2 as _objectSpread2 } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import { OutlineInfoManager } from './outline-info.js';
3
+ import { ComponentsManager } from './components-manager.js';
4
+
5
+ class PageHierarchyGenerator {
6
+ static generate(outlineInfo, currentFocus) {
7
+ var processedData = currentFocus.type === 'uiCom' ? this.filterToFocusedComponent(outlineInfo, currentFocus.comId) : outlineInfo;
8
+ return this.generateTreeDescription(processedData, {
9
+ pageId: currentFocus.pageId,
10
+ comId: currentFocus.comId
11
+ });
12
+ }
13
+ static containsComponent(data, targetId) {
14
+ if (!data) return false;
15
+ if (data.id === targetId) return true;
16
+ if (data.slots && Array.isArray(data.slots)) {
17
+ return data.slots.some(slot => {
18
+ if (slot.components && Array.isArray(slot.components)) {
19
+ return slot.components.some(component => this.containsComponent(component, targetId));
20
+ }
21
+ return false;
22
+ });
23
+ }
24
+ return false;
25
+ }
26
+ static hasChildren(data) {
27
+ if (!(data !== null && data !== void 0 && data.slots) || !Array.isArray(data.slots)) {
28
+ return false;
29
+ }
30
+ return data.slots.some(slot => {
31
+ return slot.components && Array.isArray(slot.components) && slot.components.length > 0;
32
+ });
33
+ }
34
+ static filterToFocusedComponent(data, targetId) {
35
+ if (!data) return null;
36
+ if (data.id === targetId) {
37
+ return data;
38
+ }
39
+ if (data.slots && Array.isArray(data.slots)) {
40
+ var filteredSlots = data.slots.map(slot => {
41
+ if (slot.components && Array.isArray(slot.components)) {
42
+ var filteredComponents = slot.components.map(component => {
43
+ if (this.containsComponent(component, targetId)) {
44
+ return this.filterToFocusedComponent(component, targetId);
45
+ } else {
46
+ var hasChildComponents = this.hasChildren(component);
47
+ return _objectSpread2(_objectSpread2({}, component), {}, {
48
+ slots: undefined,
49
+ _hasCollapsedChildren: hasChildComponents
50
+ });
51
+ }
52
+ }).filter(Boolean);
53
+ return filteredComponents.length > 0 ? _objectSpread2(_objectSpread2({}, slot), {}, {
54
+ components: filteredComponents
55
+ }) : null;
56
+ }
57
+ return null;
58
+ }).filter(Boolean);
59
+ if (filteredSlots.length > 0) {
60
+ return _objectSpread2(_objectSpread2({}, data), {}, {
61
+ slots: filteredSlots
62
+ });
63
+ }
64
+ }
65
+ return null;
66
+ }
67
+ static generateTreeDescription(data, focusInfo) {
68
+ var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
69
+ var indent = ' '.repeat(level);
70
+ var result = '';
71
+ if (!data) {
72
+ return '无内容,代表内容为空';
73
+ }
74
+ if (Array.isArray(data)) {
75
+ if (data.length === 0) {
76
+ return '无内容,代表内容为空';
77
+ }
78
+ data.forEach(item => {
79
+ result += this.generateTreeDescription(item, focusInfo, level);
80
+ });
81
+ return result;
82
+ }
83
+ if (data.asRoot) {
84
+ var _data$slots;
85
+ if (Array.isArray((_data$slots = data.slots) === null || _data$slots === void 0 || (_data$slots = _data$slots[0]) === null || _data$slots === void 0 ? void 0 : _data$slots.components)) {
86
+ var _data$slots2;
87
+ (_data$slots2 = data.slots) === null || _data$slots2 === void 0 || (_data$slots2 = _data$slots2[0]) === null || _data$slots2 === void 0 || _data$slots2.components.forEach(component => {
88
+ result += this.generateTreeDescription(component, focusInfo, level);
89
+ });
90
+ return result;
91
+ }
92
+ }
93
+ if (data.title) {
94
+ var _data$def;
95
+ var namespace = (_data$def = data.def) === null || _data$def === void 0 ? void 0 : _data$def.namespace;
96
+ var isFocused = data.id === focusInfo.comId || data.id === focusInfo.pageId;
97
+ var focusMarker = isFocused ? ' 【当前聚焦】' : '';
98
+ var collapsedMarker = data._hasCollapsedChildren ? ' 【子组件已折叠】' : '';
99
+ result += "".concat(indent, "- ").concat(data.title, "[id=").concat(data.id, "]").concat(namespace ? "(".concat(ComponentsManager.getAbbreviation(namespace), ")") : '').concat(focusMarker).concat(collapsedMarker, "\n");
100
+ }
101
+ if (data.slots && Array.isArray(data.slots)) {
102
+ data.slots.forEach(slot => {
103
+ if (slot.components && Array.isArray(slot.components)) {
104
+ slot.components.forEach(component => {
105
+ result += this.generateTreeDescription(component, focusInfo, level + 1);
106
+ });
107
+ }
108
+ });
109
+ }
110
+ return result;
111
+ }
112
+ }
113
+ class FocusDescriptionGenerator {
114
+ static generate(currentFocus) {
115
+ var {
116
+ pageId,
117
+ comId,
118
+ title,
119
+ type
120
+ } = currentFocus !== null && currentFocus !== void 0 ? currentFocus : {};
121
+ if (!currentFocus || !currentFocus.pageId && !currentFocus.comId) {
122
+ return '当前没有聚焦到任何页面或组件。';
123
+ }
124
+ var focusDesc = '';
125
+ switch (type) {
126
+ case 'uiCom':
127
+ focusDesc = "\u7EC4\u4EF6(title=".concat(title, ",\u7EC4\u4EF6id=").concat(comId, ")");
128
+ break;
129
+ case 'page':
130
+ case 'section':
131
+ focusDesc = "\u9875\u9762(title=".concat(title, ",\u9875\u9762id=").concat(pageId, ")");
132
+ break;
133
+ default:
134
+ focusDesc = "\u672A\u77E5\u7C7B\u578B(title=".concat(title, ")");
135
+ }
136
+ return "\u5F53\u524D\u5DF2\u805A\u7126\u5230".concat(focusDesc, "\u4E2D\uFF0C\u540E\u7EED\u7528\u6237\u7684\u63D0\u95EE\uFF0C\u5173\u4E8E\"\u8FD9\u4E2A\"\u3001\"\u6B64\"\u3001\"\u6574\u4F53\"\uFF0C\u751A\u81F3\u4E0D\u63D0\u4E3B\u8BED\uFF0C\u90FD\u662F\u6307\u4EE3\u6B64\u5143\u7D20\u53CA\u5176\u5B50\u7EC4\u4EF6\u5185\u5BB9\u3002");
137
+ }
138
+ }
139
+ class FocusOutlineInfoManager extends OutlineInfoManager {
140
+ constructor(_ref) {
141
+ var {
142
+ api,
143
+ focusInfo
144
+ } = _ref;
145
+ super({
146
+ api
147
+ });
148
+ this.focusInfo = _objectSpread2({}, focusInfo);
149
+ this.focusPageOutlineInfo = focusInfo !== null && focusInfo !== void 0 && focusInfo.pageId ? this.getPageOutline(focusInfo.pageId) : null;
150
+ }
151
+ getFocusPageOutline() {
152
+ return this.focusPageOutlineInfo;
153
+ }
154
+ generateFocusHierarchy() {
155
+ var _this$focusInfo;
156
+ if (!this.focusPageOutlineInfo || !((_this$focusInfo = this.focusInfo) !== null && _this$focusInfo !== void 0 && _this$focusInfo.pageId)) {
157
+ return '无内容,代表内容为空';
158
+ }
159
+ return PageHierarchyGenerator.generate(this.focusPageOutlineInfo, this.focusInfo);
160
+ }
161
+ generateFocusDescription() {
162
+ return FocusDescriptionGenerator.generate(this.focusInfo);
163
+ }
164
+ }
165
+
166
+ export { FocusOutlineInfoManager };
167
+ //# sourceMappingURL=outline-focus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outline-focus.js","sources":["../../../../src/agents/workspace-by-knowledges/utils/outline-focus.ts"],"sourcesContent":["import { OutlineInfoManager, type OutlineNode, type SlotInfo } from './outline-info';\nimport { ComponentsManager } from './components-manager';\nimport { FocusInfo } from '../types';\n\nclass PageHierarchyGenerator {\n static generate(outlineInfo: OutlineNode, currentFocus: FocusInfo): string {\n const processedData = currentFocus.type === 'uiCom'\n ? this.filterToFocusedComponent(outlineInfo, currentFocus.comId!)\n : outlineInfo;\n\n return this.generateTreeDescription(processedData as OutlineNode, {\n pageId: currentFocus.pageId,\n comId: currentFocus.comId,\n });\n }\n\n private static containsComponent(data: OutlineNode, targetId: string): boolean {\n if (!data) return false;\n if (data.id === targetId) return true;\n\n if (data.slots && Array.isArray(data.slots)) {\n return data.slots.some(slot => {\n if (slot.components && Array.isArray(slot.components)) {\n return slot.components.some(component => this.containsComponent(component, targetId));\n }\n return false;\n });\n }\n return false;\n }\n\n private static hasChildren(data: OutlineNode): boolean {\n if (!data?.slots || !Array.isArray(data.slots)) {\n return false;\n }\n return data.slots.some(slot => {\n return slot.components && Array.isArray(slot.components) && slot.components.length > 0;\n });\n }\n\n private static filterToFocusedComponent(data: OutlineNode, targetId: string): OutlineNode | null {\n if (!data) return null;\n\n if (data.id === targetId) {\n return data;\n }\n\n if (data.slots && Array.isArray(data.slots)) {\n const filteredSlots = data.slots.map(slot => {\n if (slot.components && Array.isArray(slot.components)) {\n const filteredComponents = slot.components.map(component => {\n if (this.containsComponent(component, targetId)) {\n return this.filterToFocusedComponent(component, targetId);\n } else {\n const hasChildComponents = this.hasChildren(component);\n return {\n ...component,\n slots: undefined,\n _hasCollapsedChildren: hasChildComponents\n };\n }\n }).filter(Boolean) as OutlineNode[];\n\n return filteredComponents.length > 0 ? { ...slot, components: filteredComponents } : null;\n }\n return null;\n }).filter(Boolean) as SlotInfo[];\n\n if (filteredSlots.length > 0) {\n return { ...data, slots: filteredSlots };\n }\n }\n return null;\n }\n\n private static generateTreeDescription(data: OutlineNode | OutlineNode[], focusInfo: FocusInfo, level = 0): string {\n const indent = ' '.repeat(level);\n let result = '';\n\n if (!data) {\n return '无内容,代表内容为空';\n }\n\n if (Array.isArray(data)) {\n if (data.length === 0) {\n return '无内容,代表内容为空';\n }\n data.forEach(item => {\n result += this.generateTreeDescription(item, focusInfo, level);\n });\n return result;\n }\n\n if (data.asRoot) {\n if (Array.isArray(data.slots?.[0]?.components)) {\n data.slots?.[0]?.components.forEach(component => {\n result += this.generateTreeDescription(component, focusInfo, level);\n });\n return result;\n }\n }\n\n if (data.title) {\n const namespace = data.def?.namespace;\n const isFocused = data.id === focusInfo.comId ||\n data.id === focusInfo.pageId;\n const focusMarker = isFocused ? ' 【当前聚焦】' : '';\n const collapsedMarker = data._hasCollapsedChildren ? ' 【子组件已折叠】' : '';\n\n result += `${indent}- ${data.title}[id=${data.id}]${namespace ? `(${ComponentsManager.getAbbreviation(namespace)})` : ''}${focusMarker}${collapsedMarker}\\n`;\n }\n\n if (data.slots && Array.isArray(data.slots)) {\n data.slots.forEach(slot => {\n if (slot.components && Array.isArray(slot.components)) {\n slot.components.forEach(component => {\n result += this.generateTreeDescription(component, focusInfo, level + 1);\n });\n }\n });\n }\n\n return result;\n }\n}\n\nclass FocusDescriptionGenerator {\n static generate(currentFocus: FocusInfo): string {\n const { pageId, comId, title, type } = currentFocus ?? {};\n\n if (!currentFocus || (!currentFocus.pageId && !currentFocus.comId)) {\n return '当前没有聚焦到任何页面或组件。';\n }\n\n let focusDesc = '';\n\n switch (type) {\n case 'uiCom':\n focusDesc = `组件(title=${title},组件id=${comId})`;\n break;\n case 'page':\n case 'section':\n focusDesc = `页面(title=${title},页面id=${pageId})`;\n break;\n default:\n focusDesc = `未知类型(title=${title})`;\n }\n\n return `当前已聚焦到${focusDesc}中,后续用户的提问,关于\"这个\"、\"此\"、\"整体\",甚至不提主语,都是指代此元素及其子组件内容。`;\n }\n}\n\nexport class FocusOutlineInfoManager extends OutlineInfoManager {\n private focusInfo: FocusInfo;\n private focusPageOutlineInfo: OutlineNode | null;\n\n constructor({ api, focusInfo }: { api: any, focusInfo: FocusInfo }) {\n super({ api });\n this.focusInfo = { ...focusInfo };\n this.focusPageOutlineInfo = focusInfo?.pageId ? this.getPageOutline(focusInfo.pageId) : null;\n }\n\n getFocusPageOutline(): OutlineNode | null {\n return this.focusPageOutlineInfo;\n }\n\n generateFocusHierarchy(): string {\n if (!this.focusPageOutlineInfo || !this.focusInfo?.pageId) {\n return '无内容,代表内容为空';\n }\n return PageHierarchyGenerator.generate(this.focusPageOutlineInfo, this.focusInfo);\n }\n\n generateFocusDescription(): string {\n return FocusDescriptionGenerator.generate(this.focusInfo);\n }\n}\n\n"],"names":["PageHierarchyGenerator","generate","outlineInfo","currentFocus","processedData","type","filterToFocusedComponent","comId","generateTreeDescription","pageId","containsComponent","data","targetId","id","slots","Array","isArray","some","slot","components","component","hasChildren","length","filteredSlots","map","filteredComponents","hasChildComponents","_objectSpread","undefined","_hasCollapsedChildren","filter","Boolean","focusInfo","level","arguments","indent","repeat","result","forEach","item","asRoot","_data$slots","_data$slots2","title","_data$def","namespace","def","isFocused","focusMarker","collapsedMarker","concat","ComponentsManager","getAbbreviation","FocusDescriptionGenerator","focusDesc","FocusOutlineInfoManager","OutlineInfoManager","constructor","_ref","api","focusPageOutlineInfo","getPageOutline","getFocusPageOutline","generateFocusHierarchy","_this$focusInfo","generateFocusDescription"],"mappings":"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"}
@@ -0,0 +1,430 @@
1
+ import { defineProperty as _defineProperty, objectSpread2 as _objectSpread2 } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import { ComponentsManager } from './components-manager.js';
3
+
4
+ // 设计器给出的 OutlineNode
5
+
6
+ var ROOT_NAMESPACE = 'root';
7
+ var ROOT_ID = '_root_';
8
+ var ROOT_SLOT_ID = '_rootSlot_';
9
+ class OutlineInfoManager {
10
+ constructor(_ref) {
11
+ var {
12
+ api
13
+ } = _ref;
14
+ _defineProperty(this, "getOriginOutlineRootCom", originOutline => {
15
+ var _originOutline$compon, _originOutline$compon2;
16
+ return originOutline !== null && originOutline !== void 0 && (_originOutline$compon = originOutline.components) !== null && _originOutline$compon !== void 0 && (_originOutline$compon = _originOutline$compon[0]) !== null && _originOutline$compon !== void 0 && _originOutline$compon.asRoot ? originOutline === null || originOutline === void 0 || (_originOutline$compon2 = originOutline.components) === null || _originOutline$compon2 === void 0 ? void 0 : _originOutline$compon2[0] : null;
17
+ });
18
+ this.api = api;
19
+ }
20
+ getOutlineInfo(id, type) {
21
+ if (type === "logicCom") {
22
+ var _this$api;
23
+ return (_this$api = this.api) === null || _this$api === void 0 || (_this$api = _this$api.logicCom) === null || _this$api === void 0 || (_this$api = _this$api.api) === null || _this$api === void 0 ? void 0 : _this$api.getOutlineInfo(id);
24
+ } else if (type === "uiCom") {
25
+ var _this$api2;
26
+ return (_this$api2 = this.api) === null || _this$api2 === void 0 || (_this$api2 = _this$api2.uiCom) === null || _this$api2 === void 0 || (_this$api2 = _this$api2.api) === null || _this$api2 === void 0 ? void 0 : _this$api2.getOutlineInfo(id);
27
+ } else {
28
+ var _this$api3;
29
+ return (_this$api3 = this.api) === null || _this$api3 === void 0 || (_this$api3 = _this$api3.page) === null || _this$api3 === void 0 || (_this$api3 = _this$api3.api) === null || _this$api3 === void 0 ? void 0 : _this$api3.getOutlineInfo(id);
30
+ }
31
+ }
32
+ getPageOutline(pageId) {
33
+ return this.normalizePageOutline(this.getOutlineInfo(pageId, 'page'), pageId);
34
+ }
35
+ getUiComOutline(componentId) {
36
+ return this.getOutlineInfo(componentId, 'uiCom');
37
+ }
38
+ getLogicComOutline(componentId) {
39
+ return this.getOutlineInfo(componentId, 'logicCom');
40
+ }
41
+ getPageMetaInfo(pageId) {
42
+ var _this$getOriginOutlin;
43
+ var originOutlineJson = this.getOutlineInfo(pageId, 'page');
44
+ var rootId = this.getOriginOutlineRootCom(originOutlineJson) ? (_this$getOriginOutlin = this.getOriginOutlineRootCom(originOutlineJson)) === null || _this$getOriginOutlin === void 0 ? void 0 : _this$getOriginOutlin.id : undefined;
45
+ return {
46
+ pageId,
47
+ rootId
48
+ };
49
+ }
50
+ normalizePageOutline(outline, pageId) {
51
+ if ((outline === null || outline === void 0 ? void 0 : outline.id) === pageId) {
52
+ var _outline$layout, _outline$layout2, _rootNode$style;
53
+ var rootNode = outline;
54
+ var rootSlots = [{
55
+ id: ROOT_SLOT_ID,
56
+ components: outline === null || outline === void 0 ? void 0 : outline.components,
57
+ layout: outline === null || outline === void 0 ? void 0 : outline.layout
58
+ }];
59
+ var whInfo = {
60
+ width: outline === null || outline === void 0 || (_outline$layout = outline.layout) === null || _outline$layout === void 0 ? void 0 : _outline$layout.width,
61
+ height: outline === null || outline === void 0 || (_outline$layout2 = outline.layout) === null || _outline$layout2 === void 0 ? void 0 : _outline$layout2.height
62
+ };
63
+
64
+ // 说明有asRoot组件,把asRoot的信息往上提取一层
65
+ var rootCom = this.getOriginOutlineRootCom(outline);
66
+ if (!!rootCom) {
67
+ rootNode = rootCom;
68
+ rootSlots = rootNode.slots;
69
+ }
70
+ var normalized = _objectSpread2(_objectSpread2({}, rootNode), {}, {
71
+ style: _objectSpread2(_objectSpread2({}, (_rootNode$style = rootNode.style) !== null && _rootNode$style !== void 0 ? _rootNode$style : {}), whInfo),
72
+ slots: rootSlots,
73
+ def: {
74
+ version: '1.0.0',
75
+ namespace: ROOT_NAMESPACE
76
+ },
77
+ asRoot: true
78
+ });
79
+ return {
80
+ id: pageId,
81
+ title: outline.title,
82
+ // 注意用的是页面的title
83
+ slots: [{
84
+ id: ROOT_ID,
85
+ components: [normalized]
86
+ }]
87
+ };
88
+ }
89
+ return {
90
+ id: pageId,
91
+ title: outline.title,
92
+ slots: [{
93
+ id: ROOT_ID,
94
+ components: [outline]
95
+ }]
96
+ };
97
+ }
98
+ getComponentIdToTitleMap(pageId) {
99
+ var _outline$title;
100
+ var outline = this.getPageOutline(pageId);
101
+ var componentMap = new Map();
102
+ componentMap.set(ROOT_ID, (_outline$title = outline.title) !== null && _outline$title !== void 0 ? _outline$title : '页面根节点');
103
+ function traverse(data) {
104
+ if (!data) return;
105
+ if (Array.isArray(data)) {
106
+ data.forEach(item => traverse(item));
107
+ return;
108
+ }
109
+ if (data.id && data.title) {
110
+ componentMap.set(data.id, data.title);
111
+ }
112
+ if (data.slots && Array.isArray(data.slots)) {
113
+ data.slots.forEach(slot => {
114
+ if (slot.components && Array.isArray(slot.components)) {
115
+ slot.components.forEach(component => traverse(component));
116
+ }
117
+ });
118
+ }
119
+ }
120
+ traverse(outline);
121
+ return componentMap;
122
+ }
123
+ generateJSXByPageId(pageId) {
124
+ var targetComponentIds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
125
+ var outline = this.getPageOutline(pageId);
126
+ return this.generateJSXByOutline(outline, targetComponentIds);
127
+ }
128
+ generateJSXByOutline(outlineInfo) {
129
+ var targetComponentIds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
130
+ return OutlineJSXGenerator.generate(outlineInfo, targetComponentIds);
131
+ }
132
+ findParentNodeByComId(pageOutlineInfo, comId) {
133
+ function helper(node) {
134
+ if (!node || !node.slots) return null;
135
+ for (var slot of node.slots || []) {
136
+ if (slot.components && Array.isArray(slot.components)) {
137
+ for (var component of slot.components) {
138
+ if (component.id === comId) {
139
+ return node;
140
+ }
141
+ // 向下递归
142
+ var found = helper(component);
143
+ if (found) return found;
144
+ }
145
+ }
146
+ }
147
+ return null;
148
+ }
149
+ return helper(pageOutlineInfo);
150
+ }
151
+ }
152
+ class OutlineJSXGenerator {
153
+ /**
154
+ * 遮蔽base64和svg代码,避免DSL过大
155
+ */
156
+ static maskLargeContent(obj) {
157
+ if (obj === null || obj === undefined) {
158
+ return obj;
159
+ }
160
+
161
+ // 如果是字符串,检查是否为base64或svg
162
+ if (typeof obj === 'string') {
163
+ // 检测base64图片(data:image开头或长base64字符串)
164
+ if (obj.startsWith('data:image/') || /^[A-Za-z0-9+/=]{100,}$/.test(obj)) {
165
+ var prefix = obj.substring(0, 22);
166
+ return "[BASE64_MASKED:".concat(prefix, "...length:").concat(obj.length, "]");
167
+ }
168
+ // 检测SVG代码
169
+ if (obj.includes('<svg') || obj.includes('<?xml') && obj.includes('svg')) {
170
+ var length = obj.length;
171
+ if (length > 200) {
172
+ return "[SVG_MASKED:length:".concat(length, "]");
173
+ }
174
+ }
175
+ return obj;
176
+ }
177
+
178
+ // 如果是数组,递归处理每个元素
179
+ if (Array.isArray(obj)) {
180
+ return obj.map(item => this.maskLargeContent(item));
181
+ }
182
+
183
+ // 如果是对象,递归处理每个属性
184
+ if (typeof obj === 'object') {
185
+ var result = {};
186
+ for (var key in obj) {
187
+ if (obj.hasOwnProperty(key)) {
188
+ result[key] = this.maskLargeContent(obj[key]);
189
+ }
190
+ }
191
+ return result;
192
+ }
193
+ return obj;
194
+ }
195
+ static generate(outlineInfo) {
196
+ var _ancestorNodes$;
197
+ var targetComponentIds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
198
+ this.namespacesSet.clear();
199
+ if (targetComponentIds.length === 0) {
200
+ var _jsx = this.processData(outlineInfo);
201
+ return {
202
+ id: outlineInfo.id,
203
+ jsx: _jsx,
204
+ namespaces: Array.from(this.namespacesSet)
205
+ };
206
+ }
207
+ if (targetComponentIds.length === 1) {
208
+ var targetNode = this.findNodeById(outlineInfo, targetComponentIds[0]);
209
+ if (targetNode) {
210
+ var _jsx2 = this.processData(targetNode);
211
+ return {
212
+ id: targetNode.id,
213
+ jsx: _jsx2,
214
+ namespaces: Array.from(this.namespacesSet)
215
+ };
216
+ }
217
+ }
218
+ var ancestorNodes = this.findMinimalCommonAncestors(outlineInfo, targetComponentIds);
219
+ var jsx = ancestorNodes.map(node => this.processData(node)).join('\n');
220
+ return {
221
+ id: (_ancestorNodes$ = ancestorNodes[0]) === null || _ancestorNodes$ === void 0 ? void 0 : _ancestorNodes$.id,
222
+ jsx,
223
+ namespaces: Array.from(this.namespacesSet)
224
+ };
225
+ }
226
+ static findMinimalCommonAncestors(root, targetIds) {
227
+ if (targetIds.length === 0) return [root];
228
+ if (targetIds.length === 1) {
229
+ var targetNode = this.findNodeById(root, targetIds[0]);
230
+ return targetNode ? [targetNode] : [];
231
+ }
232
+ var paths = [];
233
+ for (var targetId of targetIds) {
234
+ var path = this.findPathToNode(root, targetId);
235
+ if (path) {
236
+ paths.push(path);
237
+ }
238
+ }
239
+ if (paths.length === 0) {
240
+ return [];
241
+ }
242
+ if (paths.length === 1) {
243
+ return [paths[0][paths[0].length - 1]];
244
+ }
245
+ var commonAncestor = null;
246
+ var minLength = Math.min(...paths.map(path => path.length));
247
+ var _loop = function _loop(i) {
248
+ var currentNodes = paths.map(path => path[i]);
249
+ var firstNode = currentNodes[0];
250
+ if (currentNodes.every(node => node.id === firstNode.id)) {
251
+ commonAncestor = firstNode;
252
+ } else {
253
+ return 1; // break
254
+ }
255
+ };
256
+ for (var i = 0; i < minLength; i++) {
257
+ if (_loop(i)) break;
258
+ }
259
+ if (commonAncestor) {
260
+ return [commonAncestor];
261
+ }
262
+ return [root];
263
+ }
264
+ static findPathToNode(root, targetId) {
265
+ if (root.id === targetId) {
266
+ return [root];
267
+ }
268
+ if (root.slots && Array.isArray(root.slots)) {
269
+ for (var slot of root.slots) {
270
+ if (slot.components && Array.isArray(slot.components)) {
271
+ for (var component of slot.components) {
272
+ var path = this.findPathToNode(component, targetId);
273
+ if (path) {
274
+ return [root, ...path];
275
+ }
276
+ }
277
+ }
278
+ }
279
+ }
280
+ return null;
281
+ }
282
+ static findNodeById(root, targetId) {
283
+ if (root.id === targetId) {
284
+ return root;
285
+ }
286
+ if (root.slots && Array.isArray(root.slots)) {
287
+ for (var slot of root.slots) {
288
+ if (slot.components && Array.isArray(slot.components)) {
289
+ for (var component of slot.components) {
290
+ var found = this.findNodeById(component, targetId);
291
+ if (found) return found;
292
+ }
293
+ }
294
+ }
295
+ }
296
+ return null;
297
+ }
298
+ static extractLayout(style) {
299
+ if (!style) return {};
300
+ var layout = {};
301
+ ['width', 'height', 'margin', 'marginLeft', 'marginRight', 'marginTop', 'marginBottom'].forEach(prop => {
302
+ if (style[prop] !== undefined) {
303
+ layout[prop] = style[prop];
304
+ }
305
+ });
306
+ if (style.layout !== undefined) {
307
+ if (style.layout === 'flex-column' || style.layout === 'flex') {
308
+ layout.display = 'flex';
309
+ layout.flexDirection = 'column';
310
+ }
311
+ if (style.layout === 'flex-row') {
312
+ layout.display = 'flex';
313
+ layout.flexDirection = 'row';
314
+ }
315
+ if (style.alignItems) layout.alignItems = style.alignItems;
316
+ if (style.justifyContent) layout.justifyContent = style.justifyContent;
317
+ if (style.layout === 'absolute') {
318
+ layout.position = 'relative';
319
+ }
320
+ }
321
+ if (style.position === 'absolute') {
322
+ ['left', 'right', 'top', 'bottom', 'widthFact', 'heightFact', 'position'].forEach(prop => {
323
+ if (style[prop] !== undefined) {
324
+ layout[prop] = style[prop];
325
+ }
326
+ });
327
+ }
328
+ return layout;
329
+ }
330
+ static extractStyleArray(style) {
331
+ if (!(style !== null && style !== void 0 && style.css) || !Array.isArray(style.css)) return [];
332
+ return style.css.map(cssItem => {
333
+ var selector = cssItem.selector || '';
334
+ var cssProps = cssItem.css || {};
335
+ var cssString = Object.entries(cssProps).map(_ref2 => {
336
+ var [key, value] = _ref2;
337
+ return "".concat(key, ": '").concat(value, "'");
338
+ }).join(', ');
339
+ return "".concat(selector, " : { ").concat(cssString, " }");
340
+ });
341
+ }
342
+ static processData(node) {
343
+ var _node$def;
344
+ if (!node) return '';
345
+ if (Array.isArray(node)) {
346
+ return node.map(item => this.processData(item)).filter(Boolean).join('\n');
347
+ }
348
+ if (node.id && (_node$def = node.def) !== null && _node$def !== void 0 && _node$def.namespace) {
349
+ return this.generateComponentJSX(node);
350
+ }
351
+ if (node.slots && Array.isArray(node.slots)) {
352
+ return node.slots.map(slot => {
353
+ if (slot.components && Array.isArray(slot.components)) {
354
+ return this.processData(slot.components);
355
+ }
356
+ return '';
357
+ }).filter(Boolean).join('');
358
+ }
359
+ return '';
360
+ }
361
+ static generateComponentJSX(node) {
362
+ var _node$def2;
363
+ var indent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
364
+ if (!(node !== null && node !== void 0 && node.id)) return '';
365
+ var namespace = (_node$def2 = node.def) === null || _node$def2 === void 0 ? void 0 : _node$def2.namespace;
366
+ if (namespace !== ROOT_NAMESPACE) {
367
+ this.namespacesSet.add(namespace);
368
+ }
369
+ var layout = this.extractLayout(node.style);
370
+ var styleArray = this.extractStyleArray(node.style);
371
+ var jsx;
372
+ var namespaceTag = ComponentsManager.getAbbreviation(namespace);
373
+
374
+ // 遮蔽data中的base64和svg内容
375
+ var maskedData = node.data ? this.maskLargeContent(node.data) : null;
376
+ if (node.asRoot) {
377
+ jsx = "<".concat(ROOT_NAMESPACE, " id=\"").concat(ROOT_ID, "\"") + (maskedData ? " data={".concat(JSON.stringify(maskedData), "}") : '');
378
+ } else {
379
+ jsx = "<".concat(namespaceTag, " id=\"").concat(node.id, "\" title=\"").concat(node.title, "\"") + (maskedData ? " data={".concat(JSON.stringify(maskedData), "}") : '');
380
+ }
381
+ if (Object.keys(layout).length > 0) {
382
+ jsx += " layout={".concat(JSON.stringify(layout), "}");
383
+ }
384
+ if (styleArray.length > 0) {
385
+ // 遮蔽styleArray中的base64和svg内容
386
+ var maskedStyleArray = styleArray.map(style => this.maskLargeContent(style));
387
+ jsx += " styleAry={[".concat(maskedStyleArray.map(style => "\"".concat(style, "\"")).join(', '), "]}");
388
+ }
389
+ jsx += ' >';
390
+ var slotsJSX = this.generateSlotsJSX(node.slots || [], indent + ' ');
391
+ if (slotsJSX) {
392
+ jsx += slotsJSX;
393
+ jsx += "\n".concat(indent, "</").concat(namespaceTag, ">");
394
+ } else {
395
+ jsx += ' />';
396
+ }
397
+ return jsx;
398
+ }
399
+ static generateSlotsJSX(slots) {
400
+ var indent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ' ';
401
+ if (!slots || slots.length === 0) return '';
402
+ var slotsJSX = '';
403
+ slots.forEach(slot => {
404
+ if (slot.id) {
405
+ slotsJSX += "\n".concat(indent, "<slots.").concat(slot.id);
406
+ if (slot.title) {
407
+ slotsJSX += " title=\"".concat(slot.title, "\"");
408
+ }
409
+ if (slot.layout) {
410
+ slotsJSX += " layout={".concat(JSON.stringify(this.extractLayout(slot.layout)), "}");
411
+ }
412
+ slotsJSX += '>';
413
+ if (slot.components && Array.isArray(slot.components)) {
414
+ slot.components.forEach(component => {
415
+ var childJSX = this.generateComponentJSX(component, indent + ' ');
416
+ if (childJSX) {
417
+ slotsJSX += "\n".concat(indent, " ").concat(childJSX);
418
+ }
419
+ });
420
+ }
421
+ slotsJSX += "\n".concat(indent, "</slots.").concat(slot.id, ">");
422
+ }
423
+ });
424
+ return slotsJSX;
425
+ }
426
+ }
427
+ _defineProperty(OutlineJSXGenerator, "namespacesSet", new Set());
428
+
429
+ export { OutlineInfoManager };
430
+ //# sourceMappingURL=outline-info.js.map