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,414 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DecisionEngine = void 0;
4
+ /**
5
+ * 决策引擎
6
+ * 根据意图和可用工具生成、评估和选择执行策略
7
+ */
8
+ class DecisionEngine {
9
+ /**
10
+ * 生成可能的策略
11
+ */
12
+ generateStrategies(intent, availableTools) {
13
+ const strategies = [];
14
+ // 根据意图类型生成不同的策略
15
+ switch (intent.type) {
16
+ case 'generate_new':
17
+ strategies.push(...this.generateNewCodeStrategies(intent, availableTools));
18
+ break;
19
+ case 'update_existing':
20
+ strategies.push(...this.generateUpdateStrategies(intent, availableTools));
21
+ break;
22
+ case 'optimize':
23
+ strategies.push(...this.generateOptimizeStrategies(intent, availableTools));
24
+ break;
25
+ case 'analyze':
26
+ strategies.push(...this.generateAnalyzeStrategies(intent, availableTools));
27
+ break;
28
+ }
29
+ return strategies;
30
+ }
31
+ /**
32
+ * 评估策略
33
+ */
34
+ evaluateStrategy(strategy, context) {
35
+ // 评估可行性(基于工具可用性和步骤复杂度)
36
+ const feasibility = this.calculateFeasibility(strategy);
37
+ // 评估成本(基于预估的 token 使用和 API 调用)
38
+ const cost = strategy.estimatedCost;
39
+ // 评估质量(基于策略的预期质量和用户要求)
40
+ const quality = this.calculateQuality(strategy, context);
41
+ // 评估速度(基于预估时间和用户要求)
42
+ const speed = this.calculateSpeed(strategy, context);
43
+ // 计算加权总分
44
+ const weights = this.getWeights(context);
45
+ const total = feasibility * weights.feasibility +
46
+ (1 - cost / 10000) * weights.cost + // 归一化成本
47
+ quality * weights.quality +
48
+ speed * weights.speed;
49
+ return {
50
+ feasibility,
51
+ cost,
52
+ quality,
53
+ speed,
54
+ total,
55
+ };
56
+ }
57
+ /**
58
+ * 选择最佳策略
59
+ */
60
+ selectBestStrategy(strategies, context) {
61
+ if (strategies.length === 0) {
62
+ throw new Error('No strategies available');
63
+ }
64
+ // 评估所有策略
65
+ const scoredStrategies = strategies.map((strategy) => ({
66
+ strategy,
67
+ score: this.evaluateStrategy(strategy, context),
68
+ }));
69
+ // 按总分排序
70
+ scoredStrategies.sort((a, b) => b.score.total - a.score.total);
71
+ return scoredStrategies[0].strategy;
72
+ }
73
+ /**
74
+ * 分析设计复杂度
75
+ */
76
+ analyzeComplexity(figmaData) {
77
+ const nodeCount = this.countNodes(figmaData);
78
+ const depth = this.calculateDepth(figmaData);
79
+ let complexity;
80
+ if (nodeCount < 20) {
81
+ complexity = 'simple';
82
+ }
83
+ else if (nodeCount < 50) {
84
+ complexity = 'medium';
85
+ }
86
+ else {
87
+ complexity = 'complex';
88
+ }
89
+ return { nodeCount, depth, complexity };
90
+ }
91
+ // ========== 私有方法 ==========
92
+ /**
93
+ * 生成新代码的策略
94
+ */
95
+ generateNewCodeStrategies(intent, _availableTools) {
96
+ const strategies = [];
97
+ const qualityMode = intent.qualityMode || 'balanced';
98
+ // 策略 1:快速规则策略(适合简单设计)
99
+ if (qualityMode === 'fast' || qualityMode === 'balanced') {
100
+ strategies.push({
101
+ id: 'fast-rule-based',
102
+ name: '快速规则策略',
103
+ description: '使用规则引擎快速生成代码,适合简单设计',
104
+ steps: this.buildFastRuleSteps(intent),
105
+ estimatedTime: 30,
106
+ estimatedCost: 1000,
107
+ expectedQuality: qualityMode === 'fast' ? 'medium' : 'high',
108
+ });
109
+ }
110
+ // 策略 2:AI 增强策略(适合复杂设计)
111
+ if (qualityMode === 'balanced' || qualityMode === 'high') {
112
+ strategies.push({
113
+ id: 'ai-enhanced',
114
+ name: 'AI 增强策略',
115
+ description: '使用 AI 辅助生成高质量代码,适合复杂设计',
116
+ steps: this.buildAIEnhancedSteps(intent),
117
+ estimatedTime: 120,
118
+ estimatedCost: 5000,
119
+ expectedQuality: 'high',
120
+ });
121
+ }
122
+ return strategies;
123
+ }
124
+ /**
125
+ * 生成更新代码的策略
126
+ */
127
+ generateUpdateStrategies(intent, _availableTools) {
128
+ return [
129
+ {
130
+ id: 'incremental-update',
131
+ name: '增量更新策略',
132
+ description: '分析差异并选择性更新代码',
133
+ steps: [
134
+ {
135
+ tool: 'project-analysis',
136
+ action: 'analyze',
137
+ inputs: { path: '.' },
138
+ },
139
+ {
140
+ tool: 'figma-extraction',
141
+ action: 'extract',
142
+ inputs: { figmaInput: intent.figmaInput },
143
+ },
144
+ {
145
+ tool: 'diff-analysis',
146
+ action: 'compare',
147
+ inputs: {},
148
+ },
149
+ {
150
+ tool: 'code-generation',
151
+ action: 'update',
152
+ inputs: {
153
+ framework: intent.targetFramework,
154
+ styleMode: intent.styleMode,
155
+ updateMode: 'selective',
156
+ },
157
+ },
158
+ ],
159
+ estimatedTime: 90,
160
+ estimatedCost: 3000,
161
+ expectedQuality: 'high',
162
+ },
163
+ ];
164
+ }
165
+ /**
166
+ * 生成优化代码的策略
167
+ */
168
+ generateOptimizeStrategies(_intent, _availableTools) {
169
+ return [
170
+ {
171
+ id: 'optimization',
172
+ name: '代码优化策略',
173
+ description: '分析并优化现有代码',
174
+ steps: [
175
+ {
176
+ tool: 'project-analysis',
177
+ action: 'analyze',
178
+ inputs: { path: '.' },
179
+ },
180
+ {
181
+ tool: 'performance-optimizer',
182
+ action: 'optimize',
183
+ inputs: {},
184
+ },
185
+ {
186
+ tool: 'accessibility-enhancer',
187
+ action: 'enhance',
188
+ inputs: {},
189
+ },
190
+ ],
191
+ estimatedTime: 60,
192
+ estimatedCost: 2000,
193
+ expectedQuality: 'high',
194
+ },
195
+ ];
196
+ }
197
+ /**
198
+ * 生成分析设计的策略
199
+ */
200
+ generateAnalyzeStrategies(intent, _availableTools) {
201
+ return [
202
+ {
203
+ id: 'design-analysis',
204
+ name: '设计分析策略',
205
+ description: '分析设计并提供建议',
206
+ steps: [
207
+ {
208
+ tool: 'figma-extraction',
209
+ action: 'extract',
210
+ inputs: { figmaInput: intent.figmaInput },
211
+ },
212
+ {
213
+ tool: 'design-analyzer',
214
+ action: 'analyze',
215
+ inputs: {},
216
+ },
217
+ ],
218
+ estimatedTime: 30,
219
+ estimatedCost: 1500,
220
+ expectedQuality: 'high',
221
+ },
222
+ ];
223
+ }
224
+ /**
225
+ * 构建快速规则策略的步骤
226
+ */
227
+ buildFastRuleSteps(intent) {
228
+ const steps = [
229
+ {
230
+ tool: 'figma-extraction',
231
+ action: 'extract',
232
+ inputs: { figmaInput: intent.figmaInput },
233
+ fallbackTool: 'figma-api',
234
+ },
235
+ {
236
+ tool: 'transformation',
237
+ action: 'transform',
238
+ inputs: { mode: 'fast' },
239
+ },
240
+ {
241
+ tool: 'code-generation',
242
+ action: 'generate',
243
+ inputs: {
244
+ framework: intent.targetFramework,
245
+ styleMode: intent.styleMode,
246
+ typescript: intent.additionalRequirements.includes('typescript'),
247
+ },
248
+ },
249
+ ];
250
+ return steps;
251
+ }
252
+ /**
253
+ * 构建 AI 增强策略的步骤
254
+ */
255
+ buildAIEnhancedSteps(intent) {
256
+ const steps = [
257
+ {
258
+ tool: 'figma-extraction',
259
+ action: 'extract',
260
+ inputs: { figmaInput: intent.figmaInput },
261
+ fallbackTool: 'figma-api',
262
+ },
263
+ {
264
+ tool: 'transformation',
265
+ action: 'transform',
266
+ inputs: { mode: 'enhanced' },
267
+ },
268
+ {
269
+ tool: 'semantic-namer',
270
+ action: 'name',
271
+ inputs: {},
272
+ },
273
+ {
274
+ tool: 'component-extractor',
275
+ action: 'extract',
276
+ inputs: {},
277
+ },
278
+ {
279
+ tool: 'code-generation',
280
+ action: 'generate',
281
+ inputs: {
282
+ framework: intent.targetFramework,
283
+ styleMode: intent.styleMode,
284
+ typescript: intent.additionalRequirements.includes('typescript'),
285
+ },
286
+ },
287
+ ];
288
+ // 添加可选的优化步骤
289
+ if (intent.qualityMode === 'high') {
290
+ steps.push({
291
+ tool: 'accessibility-enhancer',
292
+ action: 'enhance',
293
+ inputs: {},
294
+ }, {
295
+ tool: 'performance-optimizer',
296
+ action: 'optimize',
297
+ inputs: {},
298
+ });
299
+ }
300
+ // 添加响应式支持
301
+ if (intent.additionalRequirements.includes('responsive')) {
302
+ steps.push({
303
+ tool: 'responsive-merger',
304
+ action: 'merge',
305
+ inputs: {},
306
+ });
307
+ }
308
+ return steps;
309
+ }
310
+ /**
311
+ * 计算可行性分数
312
+ */
313
+ calculateFeasibility(strategy) {
314
+ // 基于步骤数量和复杂度
315
+ const stepCount = strategy.steps.length;
316
+ const hasFallbacks = strategy.steps.some((s) => s.fallbackTool);
317
+ let score = 1.0;
318
+ // 步骤越多,可行性略微降低
319
+ score -= stepCount * 0.02;
320
+ // 有回退选项增加可行性
321
+ if (hasFallbacks) {
322
+ score += 0.1;
323
+ }
324
+ return Math.max(0, Math.min(1, score));
325
+ }
326
+ /**
327
+ * 计算质量分数
328
+ */
329
+ calculateQuality(strategy, context) {
330
+ const qualityMap = {
331
+ low: 0.5,
332
+ medium: 0.75,
333
+ high: 1.0,
334
+ };
335
+ let score = qualityMap[strategy.expectedQuality];
336
+ // 如果用户要求高质量,提升高质量策略的分数
337
+ if (context.intent?.qualityMode === 'high' && strategy.expectedQuality === 'high') {
338
+ score += 0.1;
339
+ }
340
+ return Math.min(1, score);
341
+ }
342
+ /**
343
+ * 计算速度分数
344
+ */
345
+ calculateSpeed(strategy, context) {
346
+ // 时间越短,速度分数越高
347
+ const maxTime = 180; // 3 分钟
348
+ let score = 1 - strategy.estimatedTime / maxTime;
349
+ // 如果用户要求快速,提升快速策略的分数
350
+ if (context.intent?.qualityMode === 'fast' && strategy.estimatedTime < 60) {
351
+ score += 0.2;
352
+ }
353
+ return Math.max(0, Math.min(1, score));
354
+ }
355
+ /**
356
+ * 获取评分权重
357
+ */
358
+ getWeights(context) {
359
+ const qualityMode = context.intent?.qualityMode || 'balanced';
360
+ switch (qualityMode) {
361
+ case 'fast':
362
+ return {
363
+ feasibility: 0.3,
364
+ cost: 0.1,
365
+ quality: 0.2,
366
+ speed: 0.4,
367
+ };
368
+ case 'high':
369
+ return {
370
+ feasibility: 0.2,
371
+ cost: 0.1,
372
+ quality: 0.5,
373
+ speed: 0.2,
374
+ };
375
+ case 'balanced':
376
+ default:
377
+ return {
378
+ feasibility: 0.25,
379
+ cost: 0.15,
380
+ quality: 0.35,
381
+ speed: 0.25,
382
+ };
383
+ }
384
+ }
385
+ /**
386
+ * 计算节点数量
387
+ */
388
+ countNodes(data) {
389
+ if (!data)
390
+ return 0;
391
+ let count = 1;
392
+ if (data.children && Array.isArray(data.children)) {
393
+ for (const child of data.children) {
394
+ count += this.countNodes(child);
395
+ }
396
+ }
397
+ return count;
398
+ }
399
+ /**
400
+ * 计算树深度
401
+ */
402
+ calculateDepth(data) {
403
+ if (!data) {
404
+ return 0;
405
+ }
406
+ if (!data.children || data.children.length === 0) {
407
+ return 1;
408
+ }
409
+ const childDepths = data.children.map((child) => this.calculateDepth(child));
410
+ return 1 + Math.max(...childDepths);
411
+ }
412
+ }
413
+ exports.DecisionEngine = DecisionEngine;
414
+ //# sourceMappingURL=DecisionEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DecisionEngine.js","sourceRoot":"","sources":["../../src/agent/DecisionEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import type { Strategy, ExecutionResult, ToolResult, ConversationContext } from './types';
2
+ import type { Tool } from '../tools/types';
3
+ /**
4
+ * 执行编排器
5
+ * 协调工具调用和处理结果
6
+ */
7
+ export declare class ExecutionOrchestrator {
8
+ private tools;
9
+ private executionStartTime;
10
+ private totalTokensUsed;
11
+ private totalApiCalls;
12
+ private toolsInvoked;
13
+ constructor(tools: Map<string, Tool>);
14
+ /**
15
+ * 执行策略
16
+ */
17
+ executeStrategy(strategy: Strategy, context: ConversationContext): Promise<ExecutionResult>;
18
+ /**
19
+ * 调用工具(带重试和回退)
20
+ */
21
+ private invokeToolWithRetry;
22
+ /**
23
+ * 调用回退工具
24
+ */
25
+ private invokeFallbackTool;
26
+ /**
27
+ * 调用工具
28
+ */
29
+ invokeTool(tool: Tool, inputs: Record<string, any>): Promise<ToolResult>;
30
+ /**
31
+ * 处理工具失败
32
+ */
33
+ handleToolFailure(tool: Tool, error: Error, fallback?: Tool): Promise<ToolResult>;
34
+ /**
35
+ * 保存检查点
36
+ */
37
+ private saveCheckpoint;
38
+ /**
39
+ * 从检查点恢复
40
+ */
41
+ restoreFromCheckpoint(context: ConversationContext, checkpointId: string): Promise<boolean>;
42
+ /**
43
+ * 分析执行结果并决定下一步
44
+ */
45
+ private analyzeResults;
46
+ /**
47
+ * 获取执行指标
48
+ */
49
+ private getMetrics;
50
+ /**
51
+ * 重置指标
52
+ */
53
+ resetMetrics(): void;
54
+ }
55
+ //# sourceMappingURL=ExecutionOrchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExecutionOrchestrator.d.ts","sourceRoot":"","sources":["../../src/agent/ExecutionOrchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EAER,eAAe,EAGf,UAAU,EACV,mBAAmB,EAGpB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;GAGG;AACH,qBAAa,qBAAqB;IAMpB,OAAO,CAAC,KAAK;IALzB,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,YAAY,CAAgB;gBAEhB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;IAE5C;;OAEG;IACG,eAAe,CACnB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,eAAe,CAAC;IAwH3B;;OAEG;YACW,mBAAmB;IA+DjC;;OAEG;YACW,kBAAkB;IA4ChC;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IA8B9E;;OAEG;IACG,iBAAiB,CACrB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,QAAQ,CAAC,EAAE,IAAI,GACd,OAAO,CAAC,UAAU,CAAC;IAgCtB;;OAEG;IACH,OAAO,CAAC,cAAc;IAetB;;OAEG;IACG,qBAAqB,CACzB,OAAO,EAAE,mBAAmB,EAC5B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC;IAgBnB;;OAEG;IACH,OAAO,CAAC,cAAc;IA6BtB;;OAEG;IACH,OAAO,CAAC,UAAU;IASlB;;OAEG;IACH,YAAY,IAAI,IAAI;CAMrB"}