figma-to-code-agent 0.6.0 → 0.8.0

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 (193) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.md +69 -77
  3. package/README.zh-CN.md +173 -0
  4. package/dist/agent/ConversationContext.d.ts +91 -0
  5. package/dist/agent/ConversationContext.d.ts.map +1 -0
  6. package/dist/agent/ConversationContext.js +271 -0
  7. package/dist/agent/ConversationContext.js.map +1 -0
  8. package/dist/agent/DecisionEngine.d.ts +77 -0
  9. package/dist/agent/DecisionEngine.d.ts.map +1 -0
  10. package/dist/agent/DecisionEngine.js +414 -0
  11. package/dist/agent/DecisionEngine.js.map +1 -0
  12. package/dist/agent/ExecutionOrchestrator.d.ts +55 -0
  13. package/dist/agent/ExecutionOrchestrator.d.ts.map +1 -0
  14. package/dist/agent/ExecutionOrchestrator.js +360 -0
  15. package/dist/agent/ExecutionOrchestrator.js.map +1 -0
  16. package/dist/agent/IntentUnderstandingEngine.d.ts +43 -0
  17. package/dist/agent/IntentUnderstandingEngine.d.ts.map +1 -0
  18. package/dist/agent/IntentUnderstandingEngine.js +261 -0
  19. package/dist/agent/IntentUnderstandingEngine.js.map +1 -0
  20. package/dist/agent/index.d.ts +9 -0
  21. package/dist/agent/index.d.ts.map +1 -0
  22. package/dist/agent/index.js +30 -0
  23. package/dist/agent/index.js.map +1 -0
  24. package/dist/agent/types.d.ts +111 -0
  25. package/dist/agent/types.d.ts.map +1 -0
  26. package/dist/agent/types.js +6 -0
  27. package/dist/agent/types.js.map +1 -0
  28. package/dist/cli/InteractiveCLI.d.ts +109 -0
  29. package/dist/cli/InteractiveCLI.d.ts.map +1 -0
  30. package/dist/cli/InteractiveCLI.js +534 -0
  31. package/dist/cli/InteractiveCLI.js.map +1 -0
  32. package/dist/cli/ProgressDisplay.d.ts +117 -0
  33. package/dist/cli/ProgressDisplay.d.ts.map +1 -0
  34. package/dist/cli/ProgressDisplay.js +370 -0
  35. package/dist/cli/ProgressDisplay.js.map +1 -0
  36. package/dist/cli/index.d.ts +6 -0
  37. package/dist/cli/index.d.ts.map +1 -0
  38. package/dist/cli/index.js +22 -0
  39. package/dist/cli/index.js.map +1 -0
  40. package/dist/consistency/DesignConsistencyChecker.d.ts +125 -0
  41. package/dist/consistency/DesignConsistencyChecker.d.ts.map +1 -0
  42. package/dist/consistency/DesignConsistencyChecker.js +448 -0
  43. package/dist/consistency/DesignConsistencyChecker.js.map +1 -0
  44. package/dist/consistency/index.d.ts +5 -0
  45. package/dist/consistency/index.d.ts.map +1 -0
  46. package/dist/consistency/index.js +21 -0
  47. package/dist/consistency/index.js.map +1 -0
  48. package/dist/context/CodeStyleMatcher.d.ts +124 -0
  49. package/dist/context/CodeStyleMatcher.d.ts.map +1 -0
  50. package/dist/context/CodeStyleMatcher.js +558 -0
  51. package/dist/context/CodeStyleMatcher.js.map +1 -0
  52. package/dist/context/IncrementalUpdater.d.ts +97 -0
  53. package/dist/context/IncrementalUpdater.d.ts.map +1 -0
  54. package/dist/context/IncrementalUpdater.js +431 -0
  55. package/dist/context/IncrementalUpdater.js.map +1 -0
  56. package/dist/context/index.d.ts +6 -0
  57. package/dist/context/index.d.ts.map +1 -0
  58. package/dist/context/index.js +22 -0
  59. package/dist/context/index.js.map +1 -0
  60. package/dist/feedback/FeedbackLoop.d.ts +125 -0
  61. package/dist/feedback/FeedbackLoop.d.ts.map +1 -0
  62. package/dist/feedback/FeedbackLoop.js +353 -0
  63. package/dist/feedback/FeedbackLoop.js.map +1 -0
  64. package/dist/feedback/index.d.ts +5 -0
  65. package/dist/feedback/index.d.ts.map +1 -0
  66. package/dist/feedback/index.js +21 -0
  67. package/dist/feedback/index.js.map +1 -0
  68. package/dist/mcp/FigmaMCPIntegration.d.ts +72 -0
  69. package/dist/mcp/FigmaMCPIntegration.d.ts.map +1 -0
  70. package/dist/mcp/FigmaMCPIntegration.js +173 -0
  71. package/dist/mcp/FigmaMCPIntegration.js.map +1 -0
  72. package/dist/mcp/MCPServiceManager.d.ts +109 -0
  73. package/dist/mcp/MCPServiceManager.d.ts.map +1 -0
  74. package/dist/mcp/MCPServiceManager.js +237 -0
  75. package/dist/mcp/MCPServiceManager.js.map +1 -0
  76. package/dist/mcp/MCPToolAdapter.d.ts +73 -0
  77. package/dist/mcp/MCPToolAdapter.d.ts.map +1 -0
  78. package/dist/mcp/MCPToolAdapter.js +249 -0
  79. package/dist/mcp/MCPToolAdapter.js.map +1 -0
  80. package/dist/mcp/index.d.ts +7 -0
  81. package/dist/mcp/index.d.ts.map +1 -0
  82. package/dist/mcp/index.js +23 -0
  83. package/dist/mcp/index.js.map +1 -0
  84. package/dist/mcp-server/MCPServer.d.ts +125 -0
  85. package/dist/mcp-server/MCPServer.d.ts.map +1 -0
  86. package/dist/mcp-server/MCPServer.js +449 -0
  87. package/dist/mcp-server/MCPServer.js.map +1 -0
  88. package/dist/mcp-server/index.d.ts +5 -0
  89. package/dist/mcp-server/index.d.ts.map +1 -0
  90. package/dist/mcp-server/index.js +21 -0
  91. package/dist/mcp-server/index.js.map +1 -0
  92. package/dist/monitoring/ExecutionSummary.d.ts +160 -0
  93. package/dist/monitoring/ExecutionSummary.d.ts.map +1 -0
  94. package/dist/monitoring/ExecutionSummary.js +345 -0
  95. package/dist/monitoring/ExecutionSummary.js.map +1 -0
  96. package/dist/monitoring/Logger.d.ts +139 -0
  97. package/dist/monitoring/Logger.d.ts.map +1 -0
  98. package/dist/monitoring/Logger.js +406 -0
  99. package/dist/monitoring/Logger.js.map +1 -0
  100. package/dist/monitoring/index.d.ts +6 -0
  101. package/dist/monitoring/index.d.ts.map +1 -0
  102. package/dist/monitoring/index.js +22 -0
  103. package/dist/monitoring/index.js.map +1 -0
  104. package/dist/performance/LLMCache.d.ts +133 -0
  105. package/dist/performance/LLMCache.d.ts.map +1 -0
  106. package/dist/performance/LLMCache.js +358 -0
  107. package/dist/performance/LLMCache.js.map +1 -0
  108. package/dist/performance/ParallelProcessor.d.ts +89 -0
  109. package/dist/performance/ParallelProcessor.d.ts.map +1 -0
  110. package/dist/performance/ParallelProcessor.js +253 -0
  111. package/dist/performance/ParallelProcessor.js.map +1 -0
  112. package/dist/performance/TokenMonitor.d.ts +166 -0
  113. package/dist/performance/TokenMonitor.d.ts.map +1 -0
  114. package/dist/performance/TokenMonitor.js +315 -0
  115. package/dist/performance/TokenMonitor.js.map +1 -0
  116. package/dist/performance/index.d.ts +7 -0
  117. package/dist/performance/index.d.ts.map +1 -0
  118. package/dist/performance/index.js +23 -0
  119. package/dist/performance/index.js.map +1 -0
  120. package/dist/prototype/InteractivePrototypeGenerator.d.ts +175 -0
  121. package/dist/prototype/InteractivePrototypeGenerator.d.ts.map +1 -0
  122. package/dist/prototype/InteractivePrototypeGenerator.js +624 -0
  123. package/dist/prototype/InteractivePrototypeGenerator.js.map +1 -0
  124. package/dist/prototype/index.d.ts +5 -0
  125. package/dist/prototype/index.d.ts.map +1 -0
  126. package/dist/prototype/index.js +21 -0
  127. package/dist/prototype/index.js.map +1 -0
  128. package/dist/skill/SkillConfig.d.ts +66 -0
  129. package/dist/skill/SkillConfig.d.ts.map +1 -0
  130. package/dist/skill/SkillConfig.js +233 -0
  131. package/dist/skill/SkillConfig.js.map +1 -0
  132. package/dist/skill/SkillInterface.d.ts +102 -0
  133. package/dist/skill/SkillInterface.d.ts.map +1 -0
  134. package/dist/skill/SkillInterface.js +425 -0
  135. package/dist/skill/SkillInterface.js.map +1 -0
  136. package/dist/skill/index.d.ts +7 -0
  137. package/dist/skill/index.d.ts.map +1 -0
  138. package/dist/skill/index.js +23 -0
  139. package/dist/skill/index.js.map +1 -0
  140. package/dist/skill/types.d.ts +103 -0
  141. package/dist/skill/types.d.ts.map +1 -0
  142. package/dist/skill/types.js +6 -0
  143. package/dist/skill/types.js.map +1 -0
  144. package/dist/templates/TemplateManager.d.ts +147 -0
  145. package/dist/templates/TemplateManager.d.ts.map +1 -0
  146. package/dist/templates/TemplateManager.js +418 -0
  147. package/dist/templates/TemplateManager.js.map +1 -0
  148. package/dist/templates/index.d.ts +6 -0
  149. package/dist/templates/index.d.ts.map +1 -0
  150. package/dist/templates/index.js +10 -0
  151. package/dist/templates/index.js.map +1 -0
  152. package/dist/tools/CodeGenerationTool.d.ts +32 -0
  153. package/dist/tools/CodeGenerationTool.d.ts.map +1 -0
  154. package/dist/tools/CodeGenerationTool.js +63 -0
  155. package/dist/tools/CodeGenerationTool.js.map +1 -0
  156. package/dist/tools/FigmaExtractionTool.d.ts +45 -0
  157. package/dist/tools/FigmaExtractionTool.d.ts.map +1 -0
  158. package/dist/tools/FigmaExtractionTool.js +105 -0
  159. package/dist/tools/FigmaExtractionTool.js.map +1 -0
  160. package/dist/tools/ProjectAnalysisTool.d.ts +104 -0
  161. package/dist/tools/ProjectAnalysisTool.d.ts.map +1 -0
  162. package/dist/tools/ProjectAnalysisTool.js +428 -0
  163. package/dist/tools/ProjectAnalysisTool.js.map +1 -0
  164. package/dist/tools/ToolRegistry.d.ts +59 -0
  165. package/dist/tools/ToolRegistry.d.ts.map +1 -0
  166. package/dist/tools/ToolRegistry.js +162 -0
  167. package/dist/tools/ToolRegistry.js.map +1 -0
  168. package/dist/tools/TransformationTool.d.ts +30 -0
  169. package/dist/tools/TransformationTool.d.ts.map +1 -0
  170. package/dist/tools/TransformationTool.js +50 -0
  171. package/dist/tools/TransformationTool.js.map +1 -0
  172. package/dist/tools/index.d.ts +10 -0
  173. package/dist/tools/index.d.ts.map +1 -0
  174. package/dist/tools/index.js +32 -0
  175. package/dist/tools/index.js.map +1 -0
  176. package/dist/tools/types.d.ts +74 -0
  177. package/dist/tools/types.d.ts.map +1 -0
  178. package/dist/tools/types.js +6 -0
  179. package/dist/tools/types.js.map +1 -0
  180. package/dist/transformation/transformers/LayoutOptimizer.d.ts +8 -0
  181. package/dist/transformation/transformers/LayoutOptimizer.d.ts.map +1 -1
  182. package/dist/transformation/transformers/LayoutOptimizer.js +157 -15
  183. package/dist/transformation/transformers/LayoutOptimizer.js.map +1 -1
  184. package/dist/version/VersionManager.d.ts +128 -0
  185. package/dist/version/VersionManager.d.ts.map +1 -0
  186. package/dist/version/VersionManager.js +400 -0
  187. package/dist/version/VersionManager.js.map +1 -0
  188. package/dist/version/index.d.ts +5 -0
  189. package/dist/version/index.d.ts.map +1 -0
  190. package/dist/version/index.js +21 -0
  191. package/dist/version/index.js.map +1 -0
  192. package/package.json +3 -1
  193. package/QUICKSTART.md +0 -178
@@ -0,0 +1,353 @@
1
+ "use strict";
2
+ /**
3
+ * 反馈循环系统
4
+ * 根据用户反馈迭代优化生成的代码
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.FeedbackLoop = void 0;
8
+ /**
9
+ * 反馈循环管理器
10
+ */
11
+ class FeedbackLoop {
12
+ constructor(maxIterations = 5) {
13
+ this.feedbacks = new Map();
14
+ this.iterations = [];
15
+ this.currentIteration = 0;
16
+ this.maxIterations = maxIterations;
17
+ }
18
+ /**
19
+ * 添加用户反馈
20
+ */
21
+ addFeedback(feedback) {
22
+ const fullFeedback = {
23
+ ...feedback,
24
+ id: this.generateId(),
25
+ timestamp: new Date(),
26
+ };
27
+ this.feedbacks.set(fullFeedback.id, fullFeedback);
28
+ return fullFeedback;
29
+ }
30
+ /**
31
+ * 分析反馈并生成改进计划
32
+ */
33
+ async analyzeFeedback(feedbacks) {
34
+ const changes = [];
35
+ // 按类型分组反馈
36
+ const feedbackByType = this.groupFeedbackByType(feedbacks);
37
+ // 分析样式反馈
38
+ if (feedbackByType.style.length > 0) {
39
+ changes.push(...this.analyzeStyleFeedback(feedbackByType.style));
40
+ }
41
+ // 分析结构反馈
42
+ if (feedbackByType.structure.length > 0) {
43
+ changes.push(...this.analyzeStructureFeedback(feedbackByType.structure));
44
+ }
45
+ // 分析功能反馈
46
+ if (feedbackByType.functionality.length > 0) {
47
+ changes.push(...this.analyzeFunctionalityFeedback(feedbackByType.functionality));
48
+ }
49
+ // 分析性能反馈
50
+ if (feedbackByType.performance.length > 0) {
51
+ changes.push(...this.analyzePerformanceFeedback(feedbackByType.performance));
52
+ }
53
+ // 计算优先级
54
+ const priority = this.calculatePriority(feedbacks);
55
+ // 估算工作量
56
+ const estimatedEffort = this.estimateEffort(changes);
57
+ return {
58
+ id: this.generateId(),
59
+ feedbackIds: feedbacks.map((f) => f.id),
60
+ changes,
61
+ estimatedEffort,
62
+ priority,
63
+ };
64
+ }
65
+ /**
66
+ * 执行迭代
67
+ */
68
+ async executeIteration(plan, applyChanges) {
69
+ this.currentIteration++;
70
+ if (this.currentIteration > this.maxIterations) {
71
+ throw new Error(`Maximum iterations (${this.maxIterations}) reached`);
72
+ }
73
+ const result = {
74
+ iterationNumber: this.currentIteration,
75
+ feedbackProcessed: plan.feedbackIds.map((id) => this.feedbacks.get(id)).filter(Boolean),
76
+ changesApplied: [],
77
+ success: false,
78
+ errors: [],
79
+ userSatisfied: false,
80
+ };
81
+ try {
82
+ // 应用变更
83
+ const success = await applyChanges(plan.changes);
84
+ if (success) {
85
+ result.changesApplied = plan.changes;
86
+ result.success = true;
87
+ }
88
+ else {
89
+ result.errors.push('Failed to apply changes');
90
+ }
91
+ }
92
+ catch (error) {
93
+ result.errors.push(error.message);
94
+ }
95
+ this.iterations.push(result);
96
+ return result;
97
+ }
98
+ /**
99
+ * 确认用户满意度
100
+ */
101
+ confirmSatisfaction(satisfied) {
102
+ if (this.iterations.length > 0) {
103
+ this.iterations[this.iterations.length - 1].userSatisfied = satisfied;
104
+ }
105
+ }
106
+ /**
107
+ * 获取迭代历史
108
+ */
109
+ getHistory() {
110
+ const satisfactionReached = this.iterations.some((i) => i.userSatisfied);
111
+ const maxIterationsReached = this.currentIteration >= this.maxIterations;
112
+ return {
113
+ iterations: this.iterations,
114
+ totalFeedbacks: this.feedbacks.size,
115
+ totalChanges: this.iterations.reduce((sum, i) => sum + i.changesApplied.length, 0),
116
+ satisfactionReached,
117
+ maxIterationsReached,
118
+ };
119
+ }
120
+ /**
121
+ * 重置反馈循环
122
+ */
123
+ reset() {
124
+ this.feedbacks.clear();
125
+ this.iterations = [];
126
+ this.currentIteration = 0;
127
+ }
128
+ /**
129
+ * 获取所有反馈
130
+ */
131
+ getAllFeedbacks() {
132
+ return Array.from(this.feedbacks.values()).sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime());
133
+ }
134
+ /**
135
+ * 获取未处理的反馈
136
+ */
137
+ getUnprocessedFeedbacks() {
138
+ const processedIds = new Set(this.iterations.flatMap((i) => i.feedbackProcessed.map((f) => f.id)));
139
+ return Array.from(this.feedbacks.values()).filter((f) => !processedIds.has(f.id));
140
+ }
141
+ /**
142
+ * 是否可以继续迭代
143
+ */
144
+ canContinue() {
145
+ return this.currentIteration < this.maxIterations && !this.isSatisfied();
146
+ }
147
+ /**
148
+ * 是否已满意
149
+ */
150
+ isSatisfied() {
151
+ return this.iterations.some((i) => i.userSatisfied);
152
+ }
153
+ /**
154
+ * 按类型分组反馈
155
+ */
156
+ groupFeedbackByType(feedbacks) {
157
+ const groups = {
158
+ style: [],
159
+ structure: [],
160
+ functionality: [],
161
+ performance: [],
162
+ other: [],
163
+ };
164
+ for (const feedback of feedbacks) {
165
+ groups[feedback.type].push(feedback);
166
+ }
167
+ return groups;
168
+ }
169
+ /**
170
+ * 分析样式反馈
171
+ */
172
+ analyzeStyleFeedback(feedbacks) {
173
+ const changes = [];
174
+ for (const feedback of feedbacks) {
175
+ // 检测常见的样式问题
176
+ const content = feedback.content.toLowerCase();
177
+ if (content.includes('color') || content.includes('颜色')) {
178
+ changes.push({
179
+ type: 'modify',
180
+ target: feedback.targetFiles?.[0] || 'styles',
181
+ description: 'Update color scheme',
182
+ reason: feedback.content,
183
+ autoApplicable: true,
184
+ });
185
+ }
186
+ if (content.includes('spacing') || content.includes('间距') || content.includes('padding')) {
187
+ changes.push({
188
+ type: 'modify',
189
+ target: feedback.targetFiles?.[0] || 'styles',
190
+ description: 'Adjust spacing and padding',
191
+ reason: feedback.content,
192
+ autoApplicable: true,
193
+ });
194
+ }
195
+ if (content.includes('font') || content.includes('字体') || content.includes('text')) {
196
+ changes.push({
197
+ type: 'modify',
198
+ target: feedback.targetFiles?.[0] || 'styles',
199
+ description: 'Update typography',
200
+ reason: feedback.content,
201
+ autoApplicable: true,
202
+ });
203
+ }
204
+ }
205
+ return changes;
206
+ }
207
+ /**
208
+ * 分析结构反馈
209
+ */
210
+ analyzeStructureFeedback(feedbacks) {
211
+ const changes = [];
212
+ for (const feedback of feedbacks) {
213
+ const content = feedback.content.toLowerCase();
214
+ if (content.includes('component') || content.includes('组件')) {
215
+ changes.push({
216
+ type: 'refactor',
217
+ target: feedback.targetFiles?.[0] || 'components',
218
+ description: 'Refactor component structure',
219
+ reason: feedback.content,
220
+ autoApplicable: false,
221
+ });
222
+ }
223
+ if (content.includes('split') || content.includes('拆分')) {
224
+ changes.push({
225
+ type: 'refactor',
226
+ target: feedback.targetFiles?.[0] || 'components',
227
+ description: 'Split into smaller components',
228
+ reason: feedback.content,
229
+ autoApplicable: false,
230
+ });
231
+ }
232
+ if (content.includes('merge') || content.includes('合并')) {
233
+ changes.push({
234
+ type: 'refactor',
235
+ target: feedback.targetFiles?.[0] || 'components',
236
+ description: 'Merge related components',
237
+ reason: feedback.content,
238
+ autoApplicable: false,
239
+ });
240
+ }
241
+ }
242
+ return changes;
243
+ }
244
+ /**
245
+ * 分析功能反馈
246
+ */
247
+ analyzeFunctionalityFeedback(feedbacks) {
248
+ const changes = [];
249
+ for (const feedback of feedbacks) {
250
+ const content = feedback.content.toLowerCase();
251
+ if (content.includes('add') || content.includes('添加') || content.includes('新增')) {
252
+ changes.push({
253
+ type: 'add',
254
+ target: feedback.targetFiles?.[0] || 'features',
255
+ description: 'Add new functionality',
256
+ reason: feedback.content,
257
+ autoApplicable: false,
258
+ });
259
+ }
260
+ if (content.includes('remove') || content.includes('删除') || content.includes('移除')) {
261
+ changes.push({
262
+ type: 'remove',
263
+ target: feedback.targetFiles?.[0] || 'features',
264
+ description: 'Remove functionality',
265
+ reason: feedback.content,
266
+ autoApplicable: false,
267
+ });
268
+ }
269
+ if (content.includes('fix') || content.includes('修复') || content.includes('bug')) {
270
+ changes.push({
271
+ type: 'modify',
272
+ target: feedback.targetFiles?.[0] || 'code',
273
+ description: 'Fix functionality issue',
274
+ reason: feedback.content,
275
+ autoApplicable: false,
276
+ });
277
+ }
278
+ }
279
+ return changes;
280
+ }
281
+ /**
282
+ * 分析性能反馈
283
+ */
284
+ analyzePerformanceFeedback(feedbacks) {
285
+ const changes = [];
286
+ for (const feedback of feedbacks) {
287
+ const content = feedback.content.toLowerCase();
288
+ if (content.includes('slow') || content.includes('慢') || content.includes('performance')) {
289
+ changes.push({
290
+ type: 'modify',
291
+ target: feedback.targetFiles?.[0] || 'performance',
292
+ description: 'Optimize performance',
293
+ reason: feedback.content,
294
+ autoApplicable: false,
295
+ });
296
+ }
297
+ if (content.includes('memory') || content.includes('内存')) {
298
+ changes.push({
299
+ type: 'modify',
300
+ target: feedback.targetFiles?.[0] || 'performance',
301
+ description: 'Optimize memory usage',
302
+ reason: feedback.content,
303
+ autoApplicable: false,
304
+ });
305
+ }
306
+ }
307
+ return changes;
308
+ }
309
+ /**
310
+ * 计算优先级
311
+ */
312
+ calculatePriority(feedbacks) {
313
+ let priority = 0;
314
+ for (const feedback of feedbacks) {
315
+ switch (feedback.severity) {
316
+ case 'high':
317
+ priority += 3;
318
+ break;
319
+ case 'medium':
320
+ priority += 2;
321
+ break;
322
+ case 'low':
323
+ priority += 1;
324
+ break;
325
+ }
326
+ }
327
+ return priority;
328
+ }
329
+ /**
330
+ * 估算工作量
331
+ */
332
+ estimateEffort(changes) {
333
+ const autoApplicableCount = changes.filter((c) => c.autoApplicable).length;
334
+ const manualCount = changes.length - autoApplicableCount;
335
+ if (manualCount > 5 || changes.length > 10) {
336
+ return 'high';
337
+ }
338
+ else if (manualCount > 2 || changes.length > 5) {
339
+ return 'medium';
340
+ }
341
+ else {
342
+ return 'low';
343
+ }
344
+ }
345
+ /**
346
+ * 生成唯一 ID
347
+ */
348
+ generateId() {
349
+ return `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
350
+ }
351
+ }
352
+ exports.FeedbackLoop = FeedbackLoop;
353
+ //# sourceMappingURL=FeedbackLoop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeedbackLoop.js","sourceRoot":"","sources":["../../src/feedback/FeedbackLoop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * 反馈循环模块
3
+ */
4
+ export * from './FeedbackLoop';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/feedback/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ /**
3
+ * 反馈循环模块
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ __exportStar(require("./FeedbackLoop"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/feedback/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,iDAA+B"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Figma MCP 服务集成
3
+ * 实现 MCP 优先、API 回退的策略
4
+ */
5
+ import type { MCPServiceManager } from './MCPServiceManager';
6
+ import type { FigmaFile } from '../extraction/types';
7
+ export interface FigmaMCPConfig {
8
+ mcpUrl?: string;
9
+ mcpEnabled?: boolean;
10
+ apiToken: string;
11
+ apiEnabled?: boolean;
12
+ preferMCP?: boolean;
13
+ fallbackToAPI?: boolean;
14
+ }
15
+ /**
16
+ * Figma MCP 集成类
17
+ * 提供统一的 Figma 数据访问接口,自动处理 MCP/API 切换
18
+ */
19
+ export declare class FigmaMCPIntegration {
20
+ private config;
21
+ private serviceManager?;
22
+ private mcpClient?;
23
+ private apiClient;
24
+ private mcpAvailable;
25
+ constructor(config: FigmaMCPConfig, serviceManager?: MCPServiceManager | undefined);
26
+ /**
27
+ * 初始化连接
28
+ */
29
+ initialize(): Promise<void>;
30
+ /**
31
+ * 获取 Figma 文件数据
32
+ * 优先使用 MCP,失败时回退到 API
33
+ */
34
+ getFile(fileKey: string): Promise<FigmaFile>;
35
+ /**
36
+ * 获取图片资源
37
+ */
38
+ getImages(fileKey: string, nodeIds: string[], format?: 'png' | 'jpg' | 'svg' | 'pdf'): Promise<Record<string, string>>;
39
+ /**
40
+ * 下载图片到本地
41
+ */
42
+ downloadImage(imageUrl: string, outputPath: string): Promise<void>;
43
+ /**
44
+ * 监听设计变更(仅 MCP 支持)
45
+ */
46
+ watchChanges(callback: (changes: any) => void): void;
47
+ /**
48
+ * 检查 MCP 是否可用
49
+ */
50
+ isMCPAvailable(): boolean;
51
+ /**
52
+ * 检查 API 是否可用
53
+ */
54
+ isAPIAvailable(): boolean;
55
+ /**
56
+ * 断开连接
57
+ */
58
+ disconnect(): void;
59
+ /**
60
+ * 判断是否应该使用 MCP
61
+ */
62
+ private shouldUseMCP;
63
+ /**
64
+ * 通过 MCP 获取文件
65
+ */
66
+ private getFileViaMCP;
67
+ }
68
+ /**
69
+ * 创建 Figma MCP 集成实例
70
+ */
71
+ export declare function createFigmaMCPIntegration(config: FigmaMCPConfig, serviceManager?: MCPServiceManager): FigmaMCPIntegration;
72
+ //# sourceMappingURL=FigmaMCPIntegration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FigmaMCPIntegration.d.ts","sourceRoot":"","sources":["../../src/mcp/FigmaMCPIntegration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAoB,MAAM,qBAAqB,CAAC;AAC/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,WAAW,cAAc;IAE7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IAGrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IAGrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;GAGG;AACH,qBAAa,mBAAmB;IAM5B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc,CAAC;IANzB,OAAO,CAAC,SAAS,CAAC,CAAY;IAC9B,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,YAAY,CAAS;gBAGnB,MAAM,EAAE,cAAc,EACtB,cAAc,CAAC,EAAE,iBAAiB,YAAA;IAW5C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgCjC;;;OAGG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IA6BlD;;OAEG;IACG,SAAS,CACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,GAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAa,GAC5C,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAUlC;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxE;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAYpD;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,UAAU,IAAI,IAAI;IAOlB;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;OAEG;YACW,aAAa;CAQ5B;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,cAAc,EACtB,cAAc,CAAC,EAAE,iBAAiB,GACjC,mBAAmB,CAErB"}
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ /**
3
+ * Figma MCP 服务集成
4
+ * 实现 MCP 优先、API 回退的策略
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.FigmaMCPIntegration = void 0;
8
+ exports.createFigmaMCPIntegration = createFigmaMCPIntegration;
9
+ const FigmaAPIClient_1 = require("../extraction/FigmaAPIClient");
10
+ const MCPClient_1 = require("../extraction/MCPClient");
11
+ /**
12
+ * Figma MCP 集成类
13
+ * 提供统一的 Figma 数据访问接口,自动处理 MCP/API 切换
14
+ */
15
+ class FigmaMCPIntegration {
16
+ constructor(config, serviceManager) {
17
+ this.config = config;
18
+ this.serviceManager = serviceManager;
19
+ this.mcpAvailable = false;
20
+ // 初始化 API 客户端(始终可用作为回退)
21
+ this.apiClient = new FigmaAPIClient_1.FigmaAPIClient(config.apiToken);
22
+ // 初始化 MCP 客户端(如果启用)
23
+ if (config.mcpEnabled !== false && config.mcpUrl) {
24
+ this.mcpClient = new MCPClient_1.MCPClient(config.mcpUrl);
25
+ }
26
+ }
27
+ /**
28
+ * 初始化连接
29
+ */
30
+ async initialize() {
31
+ // 尝试连接 MCP
32
+ if (this.mcpClient && this.config.mcpEnabled !== false) {
33
+ try {
34
+ await this.mcpClient.connect();
35
+ this.mcpAvailable = true;
36
+ console.log('✓ Figma MCP service connected');
37
+ }
38
+ catch (error) {
39
+ console.warn('Figma MCP service not available, will use API fallback:', error);
40
+ this.mcpAvailable = false;
41
+ }
42
+ }
43
+ // 注册到服务管理器
44
+ if (this.serviceManager && this.mcpClient && this.config.mcpUrl) {
45
+ const serviceConfig = {
46
+ id: 'figma-mcp',
47
+ name: 'Figma MCP Service',
48
+ url: this.config.mcpUrl,
49
+ autoConnect: true,
50
+ healthCheckInterval: 60000, // 每分钟检查一次
51
+ maxReconnectAttempts: 5,
52
+ };
53
+ try {
54
+ await this.serviceManager.registerService(serviceConfig);
55
+ }
56
+ catch (error) {
57
+ console.warn('Failed to register Figma MCP service:', error);
58
+ }
59
+ }
60
+ }
61
+ /**
62
+ * 获取 Figma 文件数据
63
+ * 优先使用 MCP,失败时回退到 API
64
+ */
65
+ async getFile(fileKey) {
66
+ // 策略 1: 优先使用 MCP
67
+ if (this.shouldUseMCP()) {
68
+ try {
69
+ console.log('Attempting to fetch via MCP...');
70
+ const result = await this.getFileViaMCP();
71
+ console.log('✓ Successfully fetched via MCP');
72
+ return result;
73
+ }
74
+ catch (error) {
75
+ console.warn('MCP fetch failed:', error);
76
+ // 如果不允许回退,直接抛出错误
77
+ if (this.config.fallbackToAPI === false) {
78
+ throw error;
79
+ }
80
+ console.log('Falling back to API...');
81
+ }
82
+ }
83
+ // 策略 2: 使用 API(回退或主要方式)
84
+ if (this.config.apiEnabled !== false) {
85
+ console.log('Fetching via Figma API...');
86
+ return await this.apiClient.getFile(fileKey);
87
+ }
88
+ throw new Error('No available method to fetch Figma file');
89
+ }
90
+ /**
91
+ * 获取图片资源
92
+ */
93
+ async getImages(fileKey, nodeIds, format = 'png') {
94
+ // MCP 目前不支持图片导出,直接使用 API
95
+ if (this.config.apiEnabled !== false) {
96
+ const result = await this.apiClient.getImages(fileKey, nodeIds, format);
97
+ return result.images || {};
98
+ }
99
+ throw new Error('Image export not available');
100
+ }
101
+ /**
102
+ * 下载图片到本地
103
+ */
104
+ async downloadImage(imageUrl, outputPath) {
105
+ return await this.apiClient.downloadImage(imageUrl, outputPath);
106
+ }
107
+ /**
108
+ * 监听设计变更(仅 MCP 支持)
109
+ */
110
+ watchChanges(callback) {
111
+ if (!this.mcpClient) {
112
+ throw new Error('MCP client not available for watching changes');
113
+ }
114
+ if (!this.mcpAvailable) {
115
+ throw new Error('MCP service not connected');
116
+ }
117
+ this.mcpClient.watchChanges(callback);
118
+ }
119
+ /**
120
+ * 检查 MCP 是否可用
121
+ */
122
+ isMCPAvailable() {
123
+ return this.mcpAvailable && this.mcpClient?.isConnected() === true;
124
+ }
125
+ /**
126
+ * 检查 API 是否可用
127
+ */
128
+ isAPIAvailable() {
129
+ return this.config.apiEnabled !== false;
130
+ }
131
+ /**
132
+ * 断开连接
133
+ */
134
+ disconnect() {
135
+ if (this.mcpClient) {
136
+ this.mcpClient.disconnect();
137
+ this.mcpAvailable = false;
138
+ }
139
+ }
140
+ /**
141
+ * 判断是否应该使用 MCP
142
+ */
143
+ shouldUseMCP() {
144
+ // 检查 MCP 是否启用
145
+ if (this.config.mcpEnabled === false) {
146
+ return false;
147
+ }
148
+ // 检查是否优先使用 MCP
149
+ if (this.config.preferMCP === false) {
150
+ return false;
151
+ }
152
+ // 检查 MCP 是否可用
153
+ return this.mcpAvailable && this.mcpClient?.isConnected() === true;
154
+ }
155
+ /**
156
+ * 通过 MCP 获取文件
157
+ */
158
+ async getFileViaMCP() {
159
+ if (!this.mcpClient) {
160
+ throw new Error('MCP client not initialized');
161
+ }
162
+ // 获取当前打开的文件
163
+ return await this.mcpClient.getCurrentFile();
164
+ }
165
+ }
166
+ exports.FigmaMCPIntegration = FigmaMCPIntegration;
167
+ /**
168
+ * 创建 Figma MCP 集成实例
169
+ */
170
+ function createFigmaMCPIntegration(config, serviceManager) {
171
+ return new FigmaMCPIntegration(config, serviceManager);
172
+ }
173
+ //# sourceMappingURL=FigmaMCPIntegration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FigmaMCPIntegration.js","sourceRoot":"","sources":["../../src/mcp/FigmaMCPIntegration.ts"],"names":[],"mappings":"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"}