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,253 @@
1
+ "use strict";
2
+ /**
3
+ * 并行处理系统
4
+ * 分析组件独立性并并行执行以提高性能
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ParallelProcessor = void 0;
8
+ /**
9
+ * 并行处理器
10
+ */
11
+ class ParallelProcessor {
12
+ constructor(config = {}) {
13
+ this.activeTasks = new Set();
14
+ this.completedTasks = new Map();
15
+ this.config = {
16
+ maxConcurrency: config.maxConcurrency || 4,
17
+ timeout: config.timeout || 30000,
18
+ retryOnFailure: config.retryOnFailure ?? true,
19
+ maxRetries: config.maxRetries || 2,
20
+ };
21
+ }
22
+ /**
23
+ * 分析组件独立性
24
+ * 检查组件之间是否有依赖关系
25
+ */
26
+ analyzeComponentIndependence(nodes) {
27
+ const dependencies = new Map();
28
+ for (const node of nodes) {
29
+ const deps = [];
30
+ // 检查是否引用了其他组件
31
+ if (node.metadata.componentName) {
32
+ for (const otherNode of nodes) {
33
+ if (otherNode.id !== node.id && this.hasReference(node, otherNode)) {
34
+ deps.push(otherNode.id);
35
+ }
36
+ }
37
+ }
38
+ dependencies.set(node.id, deps);
39
+ }
40
+ return dependencies;
41
+ }
42
+ /**
43
+ * 并行执行任务
44
+ */
45
+ async executeParallel(tasks, processor) {
46
+ // 重置状态
47
+ this.activeTasks.clear();
48
+ this.completedTasks.clear();
49
+ // 按优先级排序
50
+ const sortedTasks = [...tasks].sort((a, b) => (b.priority || 0) - (a.priority || 0));
51
+ // 构建依赖图
52
+ const dependencyGraph = this.buildDependencyGraph(sortedTasks);
53
+ // 执行任务
54
+ const results = [];
55
+ const pending = new Set(sortedTasks.map((t) => t.id));
56
+ while (pending.size > 0 || this.activeTasks.size > 0) {
57
+ // 找到可以执行的任务(没有未完成的依赖)
58
+ const readyTasks = sortedTasks.filter((task) => pending.has(task.id) &&
59
+ !this.activeTasks.has(task.id) &&
60
+ this.areDependenciesMet(task, dependencyGraph));
61
+ // 启动新任务(不超过并发限制)
62
+ const availableSlots = this.config.maxConcurrency - this.activeTasks.size;
63
+ const tasksToStart = readyTasks.slice(0, availableSlots);
64
+ const promises = tasksToStart.map((task) => this.executeTask(task, processor));
65
+ if (promises.length > 0) {
66
+ // 等待至少一个任务完成
67
+ const result = await Promise.race(promises);
68
+ results.push(result);
69
+ pending.delete(result.taskId);
70
+ }
71
+ else if (this.activeTasks.size > 0) {
72
+ // 等待任何活动任务完成
73
+ await new Promise((resolve) => setTimeout(resolve, 100));
74
+ }
75
+ else {
76
+ // 没有可执行的任务且没有活动任务,可能存在循环依赖
77
+ break;
78
+ }
79
+ }
80
+ // 检查是否有未完成的任务
81
+ if (pending.size > 0) {
82
+ throw new Error(`Failed to complete all tasks. Remaining: ${Array.from(pending).join(', ')}`);
83
+ }
84
+ return results;
85
+ }
86
+ /**
87
+ * 并行处理组件
88
+ * 自动分析独立性并并行执行
89
+ */
90
+ async processComponents(components, processor) {
91
+ // 分析依赖关系
92
+ const dependencies = this.analyzeComponentIndependence(components);
93
+ // 创建任务
94
+ const tasks = components.map((component) => ({
95
+ id: component.id,
96
+ type: 'component',
97
+ data: component,
98
+ dependencies: dependencies.get(component.id) || [],
99
+ priority: this.calculatePriority(component),
100
+ }));
101
+ // 执行任务
102
+ const results = await this.executeParallel(tasks, async (task) => {
103
+ return processor(task.data);
104
+ });
105
+ // 转换为 Map
106
+ const resultMap = new Map();
107
+ for (const result of results) {
108
+ resultMap.set(result.taskId, result);
109
+ }
110
+ return resultMap;
111
+ }
112
+ /**
113
+ * 合并结果
114
+ * 将并行处理的结果合并为单一结果
115
+ */
116
+ mergeResults(results, merger) {
117
+ const successfulResults = results.filter((r) => r.success && r.data !== undefined);
118
+ if (successfulResults.length === 0) {
119
+ throw new Error('No successful results to merge');
120
+ }
121
+ const data = successfulResults.map((r) => r.data);
122
+ return merger(data);
123
+ }
124
+ /**
125
+ * 获取执行统计
126
+ */
127
+ getStats() {
128
+ const results = Array.from(this.completedTasks.values());
129
+ const successful = results.filter((r) => r.success);
130
+ const totalDuration = results.reduce((sum, r) => sum + r.duration, 0);
131
+ return {
132
+ totalTasks: results.length,
133
+ successfulTasks: successful.length,
134
+ failedTasks: results.length - successful.length,
135
+ averageDuration: results.length > 0 ? totalDuration / results.length : 0,
136
+ totalDuration,
137
+ };
138
+ }
139
+ /**
140
+ * 执行单个任务
141
+ */
142
+ async executeTask(task, processor) {
143
+ this.activeTasks.add(task.id);
144
+ const startTime = Date.now();
145
+ let attempts = 0;
146
+ let lastError;
147
+ while (attempts <= this.config.maxRetries) {
148
+ try {
149
+ // 设置超时
150
+ const result = await Promise.race([
151
+ processor(task),
152
+ this.createTimeout(this.config.timeout),
153
+ ]);
154
+ const duration = Date.now() - startTime;
155
+ const processingResult = {
156
+ taskId: task.id,
157
+ success: true,
158
+ data: result,
159
+ duration,
160
+ };
161
+ this.completedTasks.set(task.id, processingResult);
162
+ this.activeTasks.delete(task.id);
163
+ return processingResult;
164
+ }
165
+ catch (error) {
166
+ lastError = error;
167
+ attempts++;
168
+ if (!this.config.retryOnFailure || attempts > this.config.maxRetries) {
169
+ break;
170
+ }
171
+ // 等待一段时间后重试
172
+ await new Promise((resolve) => setTimeout(resolve, 1000 * attempts));
173
+ }
174
+ }
175
+ // 任务失败
176
+ const duration = Date.now() - startTime;
177
+ const processingResult = {
178
+ taskId: task.id,
179
+ success: false,
180
+ error: lastError,
181
+ duration,
182
+ };
183
+ this.completedTasks.set(task.id, processingResult);
184
+ this.activeTasks.delete(task.id);
185
+ return processingResult;
186
+ }
187
+ /**
188
+ * 创建超时 Promise
189
+ */
190
+ createTimeout(ms) {
191
+ return new Promise((_, reject) => {
192
+ setTimeout(() => reject(new Error(`Task timeout after ${ms}ms`)), ms);
193
+ });
194
+ }
195
+ /**
196
+ * 构建依赖图
197
+ */
198
+ buildDependencyGraph(tasks) {
199
+ const graph = new Map();
200
+ for (const task of tasks) {
201
+ graph.set(task.id, new Set(task.dependencies || []));
202
+ }
203
+ return graph;
204
+ }
205
+ /**
206
+ * 检查任务的依赖是否都已完成
207
+ */
208
+ areDependenciesMet(task, dependencyGraph) {
209
+ const dependencies = dependencyGraph.get(task.id);
210
+ if (!dependencies || dependencies.size === 0) {
211
+ return true;
212
+ }
213
+ for (const depId of dependencies) {
214
+ const result = this.completedTasks.get(depId);
215
+ if (!result || !result.success) {
216
+ return false;
217
+ }
218
+ }
219
+ return true;
220
+ }
221
+ /**
222
+ * 检查一个节点是否引用了另一个节点
223
+ */
224
+ hasReference(node, otherNode) {
225
+ // 检查名称引用
226
+ if (node.metadata.componentName === otherNode.metadata.componentName) {
227
+ return true;
228
+ }
229
+ // 检查子节点
230
+ for (const child of node.children) {
231
+ if (this.hasReference(child, otherNode)) {
232
+ return true;
233
+ }
234
+ }
235
+ return false;
236
+ }
237
+ /**
238
+ * 计算组件优先级
239
+ * 优先处理简单的、独立的组件
240
+ */
241
+ calculatePriority(component) {
242
+ let priority = 0;
243
+ // 子节点越少,优先级越高
244
+ priority += Math.max(0, 100 - component.children.length);
245
+ // 独立组件优先级更高
246
+ if (component.metadata.isComponent) {
247
+ priority += 50;
248
+ }
249
+ return priority;
250
+ }
251
+ }
252
+ exports.ParallelProcessor = ParallelProcessor;
253
+ //# sourceMappingURL=ParallelProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParallelProcessor.js","sourceRoot":"","sources":["../../src/performance/ParallelProcessor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,166 @@
1
+ /**
2
+ * Token 使用量监控系统
3
+ * 监控和管理 LLM Token 使用,控制成本
4
+ */
5
+ export interface TokenUsage {
6
+ id: string;
7
+ timestamp: Date;
8
+ model: string;
9
+ operation: string;
10
+ promptTokens: number;
11
+ completionTokens: number;
12
+ totalTokens: number;
13
+ estimatedCost: number;
14
+ metadata?: {
15
+ userId?: string;
16
+ sessionId?: string;
17
+ requestId?: string;
18
+ [key: string]: any;
19
+ };
20
+ }
21
+ export interface TokenBudget {
22
+ daily?: number;
23
+ weekly?: number;
24
+ monthly?: number;
25
+ perRequest?: number;
26
+ }
27
+ export interface TokenStats {
28
+ totalTokens: number;
29
+ totalCost: number;
30
+ totalRequests: number;
31
+ averageTokensPerRequest: number;
32
+ averageCostPerRequest: number;
33
+ byModel: Map<string, ModelStats>;
34
+ byOperation: Map<string, OperationStats>;
35
+ byPeriod: {
36
+ today: PeriodStats;
37
+ thisWeek: PeriodStats;
38
+ thisMonth: PeriodStats;
39
+ };
40
+ }
41
+ export interface ModelStats {
42
+ model: string;
43
+ requests: number;
44
+ totalTokens: number;
45
+ totalCost: number;
46
+ averageTokens: number;
47
+ }
48
+ export interface OperationStats {
49
+ operation: string;
50
+ requests: number;
51
+ totalTokens: number;
52
+ totalCost: number;
53
+ averageTokens: number;
54
+ }
55
+ export interface PeriodStats {
56
+ tokens: number;
57
+ cost: number;
58
+ requests: number;
59
+ }
60
+ export interface CostConfig {
61
+ [model: string]: {
62
+ promptCost: number;
63
+ completionCost: number;
64
+ };
65
+ }
66
+ /**
67
+ * Token 监控器
68
+ */
69
+ export declare class TokenMonitor {
70
+ private usages;
71
+ private budget;
72
+ private costConfig;
73
+ private warningThreshold;
74
+ private onBudgetWarning?;
75
+ private onBudgetExceeded?;
76
+ constructor(budget?: TokenBudget, costConfig?: CostConfig);
77
+ /**
78
+ * 记录 Token 使用
79
+ */
80
+ recordUsage(usage: Omit<TokenUsage, 'id' | 'timestamp' | 'estimatedCost'>): TokenUsage;
81
+ /**
82
+ * 获取统计信息
83
+ */
84
+ getStats(): TokenStats;
85
+ /**
86
+ * 检查是否超出预算
87
+ */
88
+ checkBudget(): {
89
+ daily: {
90
+ exceeded: boolean;
91
+ usage: number;
92
+ budget: number;
93
+ };
94
+ weekly: {
95
+ exceeded: boolean;
96
+ usage: number;
97
+ budget: number;
98
+ };
99
+ monthly: {
100
+ exceeded: boolean;
101
+ usage: number;
102
+ budget: number;
103
+ };
104
+ };
105
+ /**
106
+ * 预估请求成本
107
+ */
108
+ estimateCost(model: string, promptTokens: number, completionTokens: number): number;
109
+ /**
110
+ * 获取剩余预算
111
+ */
112
+ getRemainingBudget(): {
113
+ daily: number;
114
+ weekly: number;
115
+ monthly: number;
116
+ };
117
+ /**
118
+ * 设置预算警告回调
119
+ */
120
+ onWarning(callback: (usage: number, budget: number) => void): void;
121
+ /**
122
+ * 设置预算超出回调
123
+ */
124
+ onExceeded(callback: (usage: number, budget: number) => void): void;
125
+ /**
126
+ * 更新预算
127
+ */
128
+ updateBudget(budget: Partial<TokenBudget>): void;
129
+ /**
130
+ * 清除历史记录
131
+ */
132
+ clearHistory(beforeDate?: Date): void;
133
+ /**
134
+ * 导出使用记录
135
+ */
136
+ exportUsage(startDate?: Date, endDate?: Date): TokenUsage[];
137
+ /**
138
+ * 生成报告
139
+ */
140
+ generateReport(): string;
141
+ /**
142
+ * 计算成本
143
+ */
144
+ private calculateCost;
145
+ /**
146
+ * 按模型统计
147
+ */
148
+ private getStatsByModel;
149
+ /**
150
+ * 按操作统计
151
+ */
152
+ private getStatsByOperation;
153
+ /**
154
+ * 获取时间段统计
155
+ */
156
+ private getStatsForPeriod;
157
+ /**
158
+ * 获取默认成本配置
159
+ */
160
+ private getDefaultCostConfig;
161
+ /**
162
+ * 生成唯一 ID
163
+ */
164
+ private generateId;
165
+ }
166
+ //# sourceMappingURL=TokenMonitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenMonitor.d.ts","sourceRoot":"","sources":["../../src/performance/TokenMonitor.ts"],"names":[],"mappings":"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"}