@getverbal/cli 0.6.0 → 0.7.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 (249) hide show
  1. package/dist/cli.js +18760 -1833
  2. package/package.json +2 -1
  3. package/dist/agent-hooks/claude.d.ts +0 -10
  4. package/dist/agent-hooks/claude.d.ts.map +0 -1
  5. package/dist/agent-hooks/claude.js +0 -218
  6. package/dist/agent-hooks/claude.js.map +0 -1
  7. package/dist/agent-hooks/cli.d.ts +0 -2
  8. package/dist/agent-hooks/cli.d.ts.map +0 -1
  9. package/dist/agent-hooks/cli.js +0 -271
  10. package/dist/agent-hooks/cli.js.map +0 -1
  11. package/dist/agent-hooks/codex.d.ts +0 -9
  12. package/dist/agent-hooks/codex.d.ts.map +0 -1
  13. package/dist/agent-hooks/codex.js +0 -349
  14. package/dist/agent-hooks/codex.js.map +0 -1
  15. package/dist/agent-hooks/config.d.ts +0 -32
  16. package/dist/agent-hooks/config.d.ts.map +0 -1
  17. package/dist/agent-hooks/config.js +0 -176
  18. package/dist/agent-hooks/config.js.map +0 -1
  19. package/dist/agent-hooks/ingest.d.ts +0 -4
  20. package/dist/agent-hooks/ingest.d.ts.map +0 -1
  21. package/dist/agent-hooks/ingest.js +0 -22
  22. package/dist/agent-hooks/ingest.js.map +0 -1
  23. package/dist/agent-hooks/launchagent.d.ts +0 -7
  24. package/dist/agent-hooks/launchagent.d.ts.map +0 -1
  25. package/dist/agent-hooks/launchagent.js +0 -51
  26. package/dist/agent-hooks/launchagent.js.map +0 -1
  27. package/dist/agent-hooks/runtime-context.d.ts +0 -20
  28. package/dist/agent-hooks/runtime-context.d.ts.map +0 -1
  29. package/dist/agent-hooks/runtime-context.js +0 -90
  30. package/dist/agent-hooks/runtime-context.js.map +0 -1
  31. package/dist/agent-hooks/state.d.ts +0 -26
  32. package/dist/agent-hooks/state.d.ts.map +0 -1
  33. package/dist/agent-hooks/state.js +0 -67
  34. package/dist/agent-hooks/state.js.map +0 -1
  35. package/dist/agent-hooks/tokscale.d.ts +0 -70
  36. package/dist/agent-hooks/tokscale.d.ts.map +0 -1
  37. package/dist/agent-hooks/tokscale.js +0 -142
  38. package/dist/agent-hooks/tokscale.js.map +0 -1
  39. package/dist/agent-hooks/tool-extraction.d.ts +0 -7
  40. package/dist/agent-hooks/tool-extraction.d.ts.map +0 -1
  41. package/dist/agent-hooks/tool-extraction.js +0 -100
  42. package/dist/agent-hooks/tool-extraction.js.map +0 -1
  43. package/dist/agent-hooks/trace.d.ts +0 -17
  44. package/dist/agent-hooks/trace.d.ts.map +0 -1
  45. package/dist/agent-hooks/trace.js +0 -25
  46. package/dist/agent-hooks/trace.js.map +0 -1
  47. package/dist/auth/browser-auth.d.ts +0 -6
  48. package/dist/auth/browser-auth.d.ts.map +0 -1
  49. package/dist/auth/browser-auth.js +0 -202
  50. package/dist/auth/browser-auth.js.map +0 -1
  51. package/dist/auth/credentials.d.ts +0 -6
  52. package/dist/auth/credentials.d.ts.map +0 -1
  53. package/dist/auth/credentials.js +0 -78
  54. package/dist/auth/credentials.js.map +0 -1
  55. package/dist/cli.d.ts +0 -3
  56. package/dist/cli.d.ts.map +0 -1
  57. package/dist/cli.js.map +0 -1
  58. package/dist/commands/dashboard.d.ts +0 -2
  59. package/dist/commands/dashboard.d.ts.map +0 -1
  60. package/dist/commands/dashboard.js +0 -19
  61. package/dist/commands/dashboard.js.map +0 -1
  62. package/dist/commands/hooks.d.ts +0 -2
  63. package/dist/commands/hooks.d.ts.map +0 -1
  64. package/dist/commands/hooks.js +0 -6
  65. package/dist/commands/hooks.js.map +0 -1
  66. package/dist/commands/import.d.ts +0 -2
  67. package/dist/commands/import.d.ts.map +0 -1
  68. package/dist/commands/import.js +0 -129
  69. package/dist/commands/import.js.map +0 -1
  70. package/dist/commands/init.d.ts +0 -2
  71. package/dist/commands/init.d.ts.map +0 -1
  72. package/dist/commands/init.js +0 -262
  73. package/dist/commands/init.js.map +0 -1
  74. package/dist/commands/logout.d.ts +0 -2
  75. package/dist/commands/logout.d.ts.map +0 -1
  76. package/dist/commands/logout.js +0 -17
  77. package/dist/commands/logout.js.map +0 -1
  78. package/dist/commands/mcp-serve.d.ts +0 -2
  79. package/dist/commands/mcp-serve.d.ts.map +0 -1
  80. package/dist/commands/mcp-serve.js +0 -7
  81. package/dist/commands/mcp-serve.js.map +0 -1
  82. package/dist/commands/status.d.ts +0 -2
  83. package/dist/commands/status.d.ts.map +0 -1
  84. package/dist/commands/status.js +0 -43
  85. package/dist/commands/status.js.map +0 -1
  86. package/dist/commands/uninstall.d.ts +0 -2
  87. package/dist/commands/uninstall.d.ts.map +0 -1
  88. package/dist/commands/uninstall.js +0 -43
  89. package/dist/commands/uninstall.js.map +0 -1
  90. package/dist/commands/update.d.ts +0 -2
  91. package/dist/commands/update.d.ts.map +0 -1
  92. package/dist/commands/update.js +0 -58
  93. package/dist/commands/update.js.map +0 -1
  94. package/dist/configure/claude-code.d.ts +0 -7
  95. package/dist/configure/claude-code.d.ts.map +0 -1
  96. package/dist/configure/claude-code.js +0 -11
  97. package/dist/configure/claude-code.js.map +0 -1
  98. package/dist/configure/claude-desktop.d.ts +0 -8
  99. package/dist/configure/claude-desktop.d.ts.map +0 -1
  100. package/dist/configure/claude-desktop.js +0 -28
  101. package/dist/configure/claude-desktop.js.map +0 -1
  102. package/dist/configure/codex.d.ts +0 -7
  103. package/dist/configure/codex.d.ts.map +0 -1
  104. package/dist/configure/codex.js +0 -12
  105. package/dist/configure/codex.js.map +0 -1
  106. package/dist/configure/cursor.d.ts +0 -7
  107. package/dist/configure/cursor.d.ts.map +0 -1
  108. package/dist/configure/cursor.js +0 -12
  109. package/dist/configure/cursor.js.map +0 -1
  110. package/dist/configure/index.d.ts +0 -34
  111. package/dist/configure/index.d.ts.map +0 -1
  112. package/dist/configure/index.js +0 -153
  113. package/dist/configure/index.js.map +0 -1
  114. package/dist/detect/claude-code.d.ts +0 -3
  115. package/dist/detect/claude-code.d.ts.map +0 -1
  116. package/dist/detect/claude-code.js +0 -82
  117. package/dist/detect/claude-code.js.map +0 -1
  118. package/dist/detect/claude-desktop.d.ts +0 -3
  119. package/dist/detect/claude-desktop.d.ts.map +0 -1
  120. package/dist/detect/claude-desktop.js +0 -89
  121. package/dist/detect/claude-desktop.js.map +0 -1
  122. package/dist/detect/codex.d.ts +0 -3
  123. package/dist/detect/codex.d.ts.map +0 -1
  124. package/dist/detect/codex.js +0 -64
  125. package/dist/detect/codex.js.map +0 -1
  126. package/dist/detect/cursor.d.ts +0 -3
  127. package/dist/detect/cursor.d.ts.map +0 -1
  128. package/dist/detect/cursor.js +0 -81
  129. package/dist/detect/cursor.js.map +0 -1
  130. package/dist/detect/index.d.ts +0 -3
  131. package/dist/detect/index.d.ts.map +0 -1
  132. package/dist/detect/index.js +0 -28
  133. package/dist/detect/index.js.map +0 -1
  134. package/dist/import/file-upload.d.ts +0 -10
  135. package/dist/import/file-upload.d.ts.map +0 -1
  136. package/dist/import/file-upload.js +0 -37
  137. package/dist/import/file-upload.js.map +0 -1
  138. package/dist/import/index.d.ts +0 -11
  139. package/dist/import/index.d.ts.map +0 -1
  140. package/dist/import/index.js +0 -51
  141. package/dist/import/index.js.map +0 -1
  142. package/dist/mcp/exports.d.ts +0 -13
  143. package/dist/mcp/exports.d.ts.map +0 -1
  144. package/dist/mcp/exports.js +0 -13
  145. package/dist/mcp/exports.js.map +0 -1
  146. package/dist/mcp/git-context.d.ts +0 -17
  147. package/dist/mcp/git-context.d.ts.map +0 -1
  148. package/dist/mcp/git-context.js +0 -72
  149. package/dist/mcp/git-context.js.map +0 -1
  150. package/dist/mcp/hooks/anthropic.d.ts +0 -31
  151. package/dist/mcp/hooks/anthropic.d.ts.map +0 -1
  152. package/dist/mcp/hooks/anthropic.js +0 -137
  153. package/dist/mcp/hooks/anthropic.js.map +0 -1
  154. package/dist/mcp/hooks/google.d.ts +0 -53
  155. package/dist/mcp/hooks/google.d.ts.map +0 -1
  156. package/dist/mcp/hooks/google.js +0 -161
  157. package/dist/mcp/hooks/google.js.map +0 -1
  158. package/dist/mcp/hooks/index.d.ts +0 -9
  159. package/dist/mcp/hooks/index.d.ts.map +0 -1
  160. package/dist/mcp/hooks/index.js +0 -7
  161. package/dist/mcp/hooks/index.js.map +0 -1
  162. package/dist/mcp/hooks/openai.d.ts +0 -59
  163. package/dist/mcp/hooks/openai.d.ts.map +0 -1
  164. package/dist/mcp/hooks/openai.js +0 -158
  165. package/dist/mcp/hooks/openai.js.map +0 -1
  166. package/dist/mcp/hooks/types.d.ts +0 -8
  167. package/dist/mcp/hooks/types.d.ts.map +0 -1
  168. package/dist/mcp/hooks/types.js +0 -5
  169. package/dist/mcp/hooks/types.js.map +0 -1
  170. package/dist/mcp/ingestor.d.ts +0 -23
  171. package/dist/mcp/ingestor.d.ts.map +0 -1
  172. package/dist/mcp/ingestor.js +0 -310
  173. package/dist/mcp/ingestor.js.map +0 -1
  174. package/dist/mcp/pricing.d.ts +0 -19
  175. package/dist/mcp/pricing.d.ts.map +0 -1
  176. package/dist/mcp/pricing.js +0 -130
  177. package/dist/mcp/pricing.js.map +0 -1
  178. package/dist/mcp/server.d.ts +0 -10
  179. package/dist/mcp/server.d.ts.map +0 -1
  180. package/dist/mcp/server.js +0 -689
  181. package/dist/mcp/server.js.map +0 -1
  182. package/dist/mcp/session-tracker.d.ts +0 -52
  183. package/dist/mcp/session-tracker.d.ts.map +0 -1
  184. package/dist/mcp/session-tracker.js +0 -186
  185. package/dist/mcp/session-tracker.js.map +0 -1
  186. package/dist/mcp/tools/analyze-spending-trend.d.ts +0 -10
  187. package/dist/mcp/tools/analyze-spending-trend.d.ts.map +0 -1
  188. package/dist/mcp/tools/analyze-spending-trend.js +0 -126
  189. package/dist/mcp/tools/analyze-spending-trend.js.map +0 -1
  190. package/dist/mcp/tools/get-budget-status.d.ts +0 -9
  191. package/dist/mcp/tools/get-budget-status.d.ts.map +0 -1
  192. package/dist/mcp/tools/get-budget-status.js +0 -59
  193. package/dist/mcp/tools/get-budget-status.js.map +0 -1
  194. package/dist/mcp/tools/get-cost-breakdown.d.ts +0 -10
  195. package/dist/mcp/tools/get-cost-breakdown.d.ts.map +0 -1
  196. package/dist/mcp/tools/get-cost-breakdown.js +0 -52
  197. package/dist/mcp/tools/get-cost-breakdown.js.map +0 -1
  198. package/dist/mcp/tools/get-model-efficiency.d.ts +0 -9
  199. package/dist/mcp/tools/get-model-efficiency.d.ts.map +0 -1
  200. package/dist/mcp/tools/get-model-efficiency.js +0 -137
  201. package/dist/mcp/tools/get-model-efficiency.js.map +0 -1
  202. package/dist/mcp/tools/get-recent-prompts.d.ts +0 -13
  203. package/dist/mcp/tools/get-recent-prompts.d.ts.map +0 -1
  204. package/dist/mcp/tools/get-recent-prompts.js +0 -56
  205. package/dist/mcp/tools/get-recent-prompts.js.map +0 -1
  206. package/dist/mcp/tools/get-roi-metrics.d.ts +0 -9
  207. package/dist/mcp/tools/get-roi-metrics.d.ts.map +0 -1
  208. package/dist/mcp/tools/get-roi-metrics.js +0 -84
  209. package/dist/mcp/tools/get-roi-metrics.js.map +0 -1
  210. package/dist/mcp/tools/get-usage-summary.d.ts +0 -10
  211. package/dist/mcp/tools/get-usage-summary.d.ts.map +0 -1
  212. package/dist/mcp/tools/get-usage-summary.js +0 -47
  213. package/dist/mcp/tools/get-usage-summary.js.map +0 -1
  214. package/dist/mcp/tools/index.d.ts +0 -221
  215. package/dist/mcp/tools/index.d.ts.map +0 -1
  216. package/dist/mcp/tools/index.js +0 -161
  217. package/dist/mcp/tools/index.js.map +0 -1
  218. package/dist/mcp/tools/list-projects.d.ts +0 -6
  219. package/dist/mcp/tools/list-projects.d.ts.map +0 -1
  220. package/dist/mcp/tools/list-projects.js +0 -43
  221. package/dist/mcp/tools/list-projects.js.map +0 -1
  222. package/dist/mcp/tools/optimize-prompt.d.ts +0 -44
  223. package/dist/mcp/tools/optimize-prompt.d.ts.map +0 -1
  224. package/dist/mcp/tools/optimize-prompt.js +0 -95
  225. package/dist/mcp/tools/optimize-prompt.js.map +0 -1
  226. package/dist/mcp/types.d.ts +0 -118
  227. package/dist/mcp/types.d.ts.map +0 -1
  228. package/dist/mcp/types.js +0 -5
  229. package/dist/mcp/types.js.map +0 -1
  230. package/dist/types.d.ts +0 -18
  231. package/dist/types.d.ts.map +0 -1
  232. package/dist/types.js +0 -2
  233. package/dist/types.js.map +0 -1
  234. package/dist/update-check/check.d.ts +0 -6
  235. package/dist/update-check/check.d.ts.map +0 -1
  236. package/dist/update-check/check.js +0 -64
  237. package/dist/update-check/check.js.map +0 -1
  238. package/dist/update-check/notify.d.ts +0 -6
  239. package/dist/update-check/notify.d.ts.map +0 -1
  240. package/dist/update-check/notify.js +0 -40
  241. package/dist/update-check/notify.js.map +0 -1
  242. package/dist/verify.d.ts +0 -7
  243. package/dist/verify.d.ts.map +0 -1
  244. package/dist/verify.js +0 -40
  245. package/dist/verify.js.map +0 -1
  246. package/dist/version.d.ts +0 -9
  247. package/dist/version.d.ts.map +0 -1
  248. package/dist/version.js +0 -21
  249. package/dist/version.js.map +0 -1
@@ -1,137 +0,0 @@
1
- /**
2
- * MCP Tool: get_model_efficiency
3
- * Per-model cost efficiency comparison and recommendations
4
- */
5
- export async function getModelEfficiency(apiKey, apiUrl, params = {}) {
6
- try {
7
- const timeframe = params.timeframe || '30d';
8
- // Call backend endpoint
9
- const response = await fetch(`${apiUrl}/api/v1/roi/model-efficiency?timeframe=${timeframe}`, {
10
- method: 'GET',
11
- headers: {
12
- 'Authorization': `Bearer ${apiKey}`,
13
- 'Content-Type': 'application/json',
14
- },
15
- });
16
- if (!response.ok) {
17
- return `Error: Failed to fetch model efficiency (${response.status})`;
18
- }
19
- const data = (await response.json());
20
- // Format for natural language display
21
- let output = `⚡ Model Efficiency Comparison (${timeframe})
22
-
23
- `;
24
- // Organization average
25
- output += `━━━ Organization Average ━━━
26
- `;
27
- output += `💰 Cost/Token: $${data.organization_average.avg_cost_per_token.toFixed(8)}
28
- `;
29
- output += `🎯 Efficiency Score: ${data.organization_average.avg_efficiency_score}/100
30
- `;
31
- output += `✨ Quality Score: ${data.organization_average.avg_quality_score}/100
32
- `;
33
- output += `📊 Models Used: ${data.organization_average.total_models}
34
- `;
35
- output += `💵 Total Spend: $${data.organization_average.total_cost.toFixed(2)}
36
- `;
37
- output += `🔤 Total Tokens: ${formatLargeNumber(data.organization_average.total_tokens)}
38
-
39
- `;
40
- // Most efficient models
41
- if (data.top_efficient.models.length > 0) {
42
- output += `━━━ Most Cost-Efficient Models ━━━
43
- `;
44
- data.top_efficient.models.forEach((model, idx) => {
45
- output += `${idx + 1}. ${model.model}
46
- `;
47
- output += ` 💰 Cost: $${model.cost_per_token.toFixed(8)}/token
48
- `;
49
- output += ` 🎯 Efficiency: ${model.efficiency_score}/100
50
- `;
51
- output += ` ✨ Quality: ${model.quality_score}/100
52
- `;
53
- });
54
- output += '\n';
55
- }
56
- // Least efficient models
57
- if (data.bottom_efficient.models.length > 0) {
58
- output += `━━━ Least Cost-Efficient Models ━━━
59
- `;
60
- data.bottom_efficient.models.forEach((model, idx) => {
61
- output += `${idx + 1}. ${model.model}
62
- `;
63
- output += ` 💰 Cost: $${model.cost_per_token.toFixed(8)}/token
64
- `;
65
- output += ` 🎯 Efficiency: ${model.efficiency_score}/100
66
- `;
67
- output += ` ✨ Quality: ${model.quality_score}/100
68
- `;
69
- });
70
- output += '\n';
71
- }
72
- // All models ranked
73
- output += `━━━ All Models Ranked by Efficiency ━━━
74
- `;
75
- data.models.slice(0, 10).forEach((model, idx) => {
76
- const statusIcon = getStatusIcon(model.efficiency_score);
77
- output += `${idx + 1}. ${statusIcon} ${model.model}
78
- `;
79
- output += ` Cost: $${model.cost_per_token.toFixed(8)}/token | Quality: ${model.quality_score}/100
80
- `;
81
- output += ` ${model.recommendation}
82
- `;
83
- });
84
- if (data.models.length > 10) {
85
- output += `
86
- ... and ${data.models.length - 10} more models
87
-
88
- `;
89
- }
90
- else {
91
- output += '\n';
92
- }
93
- // Recommendations
94
- if (data.recommendations.length > 0) {
95
- output += `━━━ Recommendations ━━━
96
- `;
97
- data.recommendations.forEach((rec) => {
98
- output += `${rec}
99
- `;
100
- });
101
- output += '\n';
102
- }
103
- // Insights
104
- output += `━━━ Key Insights ━━━
105
- `;
106
- data.insights.forEach((insight) => {
107
- output += `${insight}
108
- `;
109
- });
110
- return output;
111
- }
112
- catch (error) {
113
- const msg = error instanceof Error ? error.message : String(error);
114
- return `Error fetching model efficiency: ${msg}`;
115
- }
116
- }
117
- function getStatusIcon(efficiencyScore) {
118
- if (efficiencyScore < 20)
119
- return '💎';
120
- if (efficiencyScore < 40)
121
- return '✅';
122
- if (efficiencyScore < 60)
123
- return '⚠️';
124
- if (efficiencyScore < 80)
125
- return '❌';
126
- return '🚫';
127
- }
128
- function formatLargeNumber(num) {
129
- if (num >= 1000000) {
130
- return `${(num / 1000000).toFixed(2)}M`;
131
- }
132
- if (num >= 1000) {
133
- return `${(num / 1000).toFixed(2)}K`;
134
- }
135
- return num.toFixed(0);
136
- }
137
- //# sourceMappingURL=get-model-efficiency.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-model-efficiency.js","sourceRoot":"","sources":["../../../src/mcp/tools/get-model-efficiency.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- /**
2
- * MCP Tool: get_recent_prompts
3
- * Retrieve recent prompts with filtering
4
- */
5
- export interface GetRecentPromptsParams {
6
- limit?: number;
7
- offset?: number;
8
- provider?: string;
9
- model?: string;
10
- include_content?: boolean;
11
- }
12
- export declare function getRecentPrompts(apiKey: string, apiUrl: string, params?: GetRecentPromptsParams): Promise<string>;
13
- //# sourceMappingURL=get-recent-prompts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-recent-prompts.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/get-recent-prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,sBAA2B,GAClC,OAAO,CAAC,MAAM,CAAC,CAyDjB"}
@@ -1,56 +0,0 @@
1
- /**
2
- * MCP Tool: get_recent_prompts
3
- * Retrieve recent prompts with filtering
4
- */
5
- export async function getRecentPrompts(apiKey, apiUrl, params = {}) {
6
- try {
7
- const limit = params.limit || 10;
8
- const offset = params.offset || 0;
9
- const includeContent = params.include_content ? 'true' : 'false';
10
- let url = `${apiUrl}/api/v1/usage/prompts?limit=${limit}&offset=${offset}&include_content=${includeContent}`;
11
- if (params.provider) {
12
- url += `&provider=${params.provider}`;
13
- }
14
- if (params.model) {
15
- url += `&model=${params.model}`;
16
- }
17
- const response = await fetch(url, {
18
- method: 'GET',
19
- headers: {
20
- 'Authorization': `Bearer ${apiKey}`,
21
- 'Content-Type': 'application/json',
22
- },
23
- });
24
- if (!response.ok) {
25
- return `Error: Failed to fetch prompts (${response.status})`;
26
- }
27
- const data = (await response.json());
28
- // Format for natural language display
29
- let output = `📝 Recent Prompts (${data.prompts?.length || 0} results)
30
-
31
- `;
32
- if (data.prompts && data.prompts.length > 0) {
33
- data.prompts.forEach((prompt, idx) => {
34
- output += `[${idx + 1}] ${prompt.provider} / ${prompt.model}
35
- `;
36
- output += ` ${prompt.preview || '(empty)'}
37
- `;
38
- output += ` Cost: $${prompt.cost?.toFixed(4)} | In: ${prompt.tokens_in} | Out: ${prompt.tokens_out}
39
- `;
40
- output += ` ${new Date(prompt.created_at).toLocaleString()}
41
-
42
- `;
43
- });
44
- }
45
- if (data.has_more) {
46
- output += `... and ${data.total - (offset + limit)} more results available
47
- `;
48
- }
49
- return output;
50
- }
51
- catch (error) {
52
- const msg = error instanceof Error ? error.message : String(error);
53
- return `Error fetching recent prompts: ${msg}`;
54
- }
55
- }
56
- //# sourceMappingURL=get-recent-prompts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-recent-prompts.js","sourceRoot":"","sources":["../../../src/mcp/tools/get-recent-prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAc,EACd,MAAc,EACd,SAAiC,EAAE;IAEnC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;QAClC,MAAM,cAAc,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAEjE,IAAI,GAAG,GAAG,GAAG,MAAM,+BAA+B,KAAK,WAAW,MAAM,oBAAoB,cAAc,EAAE,CAAC;QAC7G,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,GAAG,IAAI,aAAa,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxC,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,GAAG,IAAI,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC;QAClC,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,MAAM,EAAE;gBACnC,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,mCAAmC,QAAQ,CAAC,MAAM,GAAG,CAAC;QAC/D,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAQ,CAAC;QAE5C,sCAAsC;QACtC,IAAI,MAAM,GAAG,sBAAsB,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;;CAE/D,CAAC;QAEE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAW,EAAE,GAAW,EAAE,EAAE;gBAChD,MAAM,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,MAAM,CAAC,QAAQ,MAAM,MAAM,CAAC,KAAK;CAClE,CAAC;gBACM,MAAM,IAAI,OAAO,MAAM,CAAC,OAAO,IAAI,SAAS;CACnD,CAAC;gBACM,MAAM,IAAI,cAAc,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,SAAS,WAAW,MAAM,CAAC,UAAU;CAC5G,CAAC;gBACM,MAAM,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE;;CAEpE,CAAC;YACI,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,WAAW,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;CACvD,CAAC;QACE,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,OAAO,kCAAkC,GAAG,EAAE,CAAC;IACjD,CAAC;AACH,CAAC"}
@@ -1,9 +0,0 @@
1
- /**
2
- * MCP Tool: get_roi_metrics
3
- * Calculate ROI and efficiency metrics with trend comparison
4
- */
5
- export interface GetRoiMetricsParams {
6
- timeframe?: '7d' | '30d' | '90d';
7
- }
8
- export declare function getRoiMetrics(apiKey: string, apiUrl: string, params?: GetRoiMetricsParams): Promise<string>;
9
- //# sourceMappingURL=get-roi-metrics.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-roi-metrics.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/get-roi-metrics.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;CAClC;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,mBAAwB,GAC/B,OAAO,CAAC,MAAM,CAAC,CAqEjB"}
@@ -1,84 +0,0 @@
1
- /**
2
- * MCP Tool: get_roi_metrics
3
- * Calculate ROI and efficiency metrics with trend comparison
4
- */
5
- export async function getRoiMetrics(apiKey, apiUrl, params = {}) {
6
- try {
7
- const timeframe = params.timeframe || '30d';
8
- // Call backend endpoint
9
- const response = await fetch(`${apiUrl}/api/v1/roi/metrics?timeframe=${timeframe}`, {
10
- method: 'GET',
11
- headers: {
12
- 'Authorization': `Bearer ${apiKey}`,
13
- 'Content-Type': 'application/json',
14
- },
15
- });
16
- if (!response.ok) {
17
- return `Error: Failed to fetch ROI metrics (${response.status})`;
18
- }
19
- const data = (await response.json());
20
- // Format for natural language display
21
- let output = `📊 ROI & Efficiency Metrics (Last ${timeframe})
22
-
23
- `;
24
- // Current metrics
25
- output += `━━━ Current Period ━━━
26
- `;
27
- output += `💰 Total Spend: $${data.current.totalCost.toFixed(2)}
28
- `;
29
- output += `📈 Total Tokens: ${formatLargeNumber(data.current.totalTokens)}
30
- `;
31
- output += `⚡ Cost/Token: $${data.current.costPerToken.toFixed(8)}
32
- `;
33
- output += `📊 Daily Average: $${data.current.costPerDay.toFixed(2)}
34
- `;
35
- output += `🎯 Efficiency Score: ${data.current.efficiencyScore}/100${getEfficiencyLabel(data.current.efficiencyScore)}
36
-
37
- `;
38
- // Previous period comparison
39
- output += `━━━ Previous Period Comparison ━━━
40
- `;
41
- const costChangeSymbol = data.trends.costChange > 0 ? '📈' : data.trends.costChange < 0 ? '📉' : '→';
42
- const efficiencyChangeSymbol = data.trends.efficiencyChange > 0 ? '⬆️' : data.trends.efficiencyChange < 0 ? '⬇️' : '→';
43
- output += `${costChangeSymbol} Cost Change: ${Math.abs(data.trends.costChange).toFixed(1)}% (${data.trends.costDirection})
44
- `;
45
- output += `${efficiencyChangeSymbol} Efficiency: ${Math.abs(data.trends.efficiencyChange).toFixed(1)}% (${data.trends.efficiencyDirection})
46
- `;
47
- output += `Cost/Token: $${data.previous.costPerToken.toFixed(8)}
48
-
49
- `;
50
- // Insights
51
- output += `━━━ Insights ━━━
52
- `;
53
- data.insights.forEach((insight) => {
54
- output += `${insight}
55
- `;
56
- });
57
- return output;
58
- }
59
- catch (error) {
60
- const msg = error instanceof Error ? error.message : String(error);
61
- return `Error fetching ROI metrics: ${msg}`;
62
- }
63
- }
64
- function getEfficiencyLabel(score) {
65
- if (score < 20)
66
- return ' (Excellent)';
67
- if (score < 40)
68
- return ' (Good)';
69
- if (score < 60)
70
- return ' (Fair)';
71
- if (score < 80)
72
- return ' (Poor)';
73
- return ' (Very Poor)';
74
- }
75
- function formatLargeNumber(num) {
76
- if (num >= 1000000) {
77
- return `${(num / 1000000).toFixed(2)}M`;
78
- }
79
- if (num >= 1000) {
80
- return `${(num / 1000).toFixed(2)}K`;
81
- }
82
- return num.toFixed(0);
83
- }
84
- //# sourceMappingURL=get-roi-metrics.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-roi-metrics.js","sourceRoot":"","sources":["../../../src/mcp/tools/get-roi-metrics.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * MCP Tool: get_usage_summary
3
- * Get aggregated usage data for LLM spending
4
- */
5
- export interface GetUsageSummaryParams {
6
- timeframe?: '7d' | '30d' | '90d';
7
- group_by?: 'provider' | 'model' | 'project';
8
- }
9
- export declare function getUsageSummary(apiKey: string, apiUrl: string, params?: GetUsageSummaryParams): Promise<string>;
10
- //# sourceMappingURL=get-usage-summary.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-usage-summary.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/get-usage-summary.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;IACjC,QAAQ,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;CAC7C;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,qBAA0B,GACjC,OAAO,CAAC,MAAM,CAAC,CAkDjB"}
@@ -1,47 +0,0 @@
1
- /**
2
- * MCP Tool: get_usage_summary
3
- * Get aggregated usage data for LLM spending
4
- */
5
- export async function getUsageSummary(apiKey, apiUrl, params = {}) {
6
- try {
7
- const timeframe = params.timeframe || '30d';
8
- const groupBy = params.group_by || 'provider';
9
- // Call backend endpoint
10
- const response = await fetch(`${apiUrl}/api/v1/usage/breakdown?timeframe=${timeframe}&group_by=${groupBy}`, {
11
- method: 'GET',
12
- headers: {
13
- 'Authorization': `Bearer ${apiKey}`,
14
- 'Content-Type': 'application/json',
15
- },
16
- });
17
- if (!response.ok) {
18
- return `Error: Failed to fetch usage summary (${response.status})`;
19
- }
20
- const data = (await response.json());
21
- // Format for natural language display
22
- let output = `📊 Usage Summary (Last ${timeframe})
23
-
24
- `;
25
- output += `Total Spend: $${data.total_cost.toFixed(2)}
26
-
27
- `;
28
- if (data.breakdown && data.breakdown.length > 0) {
29
- output += `Breakdown by ${groupBy}:
30
- `;
31
- data.breakdown.slice(0, 5).forEach((item) => {
32
- output += `• ${item.name}: $${item.cost.toFixed(2)} (${item.percentage.toFixed(1)}%)
33
- `;
34
- });
35
- if (data.breakdown.length > 5) {
36
- output += `... and ${data.breakdown.length - 5} more
37
- `;
38
- }
39
- }
40
- return output;
41
- }
42
- catch (error) {
43
- const msg = error instanceof Error ? error.message : String(error);
44
- return `Error fetching usage summary: ${msg}`;
45
- }
46
- }
47
- //# sourceMappingURL=get-usage-summary.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-usage-summary.js","sourceRoot":"","sources":["../../../src/mcp/tools/get-usage-summary.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAc,EACd,MAAc,EACd,SAAgC,EAAE;IAElC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC;QAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,IAAI,UAAU,CAAC;QAE9C,wBAAwB;QACxB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,GAAG,MAAM,qCAAqC,SAAS,aAAa,OAAO,EAAE,EAC7E;YACE,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,MAAM,EAAE;gBACnC,cAAc,EAAE,kBAAkB;aACnC;SACF,CACF,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,yCAAyC,QAAQ,CAAC,MAAM,GAAG,CAAC;QACrE,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAQ,CAAC;QAE5C,sCAAsC;QACtC,IAAI,MAAM,GAAG,0BAA0B,SAAS;;CAEnD,CAAC;QACE,MAAM,IAAI,iBAAiB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;;CAExD,CAAC;QAEE,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,gBAAgB,OAAO;CACtC,CAAC;YACI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;gBAC/C,MAAM,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;CACxF,CAAC;YACI,CAAC,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,WAAW,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;CACrD,CAAC;YACI,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,OAAO,iCAAiC,GAAG,EAAE,CAAC;IAChD,CAAC;AACH,CAAC"}
@@ -1,221 +0,0 @@
1
- /**
2
- * MCP Tools Registry
3
- * Exports all available tools for Claude Desktop integration
4
- */
5
- export { getUsageSummary } from './get-usage-summary.js';
6
- export type { GetUsageSummaryParams } from './get-usage-summary.js';
7
- export { getBudgetStatus } from './get-budget-status.js';
8
- export type { GetBudgetStatusParams } from './get-budget-status.js';
9
- export { getRecentPrompts } from './get-recent-prompts.js';
10
- export type { GetRecentPromptsParams } from './get-recent-prompts.js';
11
- export { listProjects } from './list-projects.js';
12
- export { getCostBreakdown } from './get-cost-breakdown.js';
13
- export type { GetCostBreakdownParams } from './get-cost-breakdown.js';
14
- export { getRoiMetrics } from './get-roi-metrics.js';
15
- export type { GetRoiMetricsParams } from './get-roi-metrics.js';
16
- export { analyzeSpendingTrend } from './analyze-spending-trend.js';
17
- export type { AnalyzeSpendingTrendParams } from './analyze-spending-trend.js';
18
- export { getModelEfficiency } from './get-model-efficiency.js';
19
- export type { GetModelEfficiencyParams } from './get-model-efficiency.js';
20
- import { optimizePromptTool, OPTIMIZE_PROMPT_TOOL } from './optimize-prompt.js';
21
- export { optimizePromptTool, OPTIMIZE_PROMPT_TOOL };
22
- /**
23
- * Tool definitions for MCP server registration
24
- */
25
- export declare const MCP_TOOLS: ({
26
- name: string;
27
- description: string;
28
- inputSchema: {
29
- type: "object";
30
- required: string[];
31
- properties: {
32
- prompt: {
33
- type: "string";
34
- description: string;
35
- };
36
- context: {
37
- type: "string";
38
- description: string;
39
- };
40
- threshold: {
41
- type: "number";
42
- description: string;
43
- minimum: number;
44
- maximum: number;
45
- };
46
- };
47
- };
48
- } | {
49
- name: string;
50
- description: string;
51
- inputSchema: {
52
- type: "object";
53
- properties: {
54
- timeframe: {
55
- type: "string";
56
- enum: string[];
57
- description: string;
58
- };
59
- group_by: {
60
- type: "string";
61
- enum: string[];
62
- description: string;
63
- };
64
- break_down_by?: undefined;
65
- limit?: undefined;
66
- offset?: undefined;
67
- provider?: undefined;
68
- model?: undefined;
69
- include_content?: undefined;
70
- project_id?: undefined;
71
- metric?: undefined;
72
- };
73
- };
74
- } | {
75
- name: string;
76
- description: string;
77
- inputSchema: {
78
- type: "object";
79
- properties: {
80
- timeframe: {
81
- type: "string";
82
- enum: string[];
83
- description: string;
84
- };
85
- break_down_by: {
86
- type: "string";
87
- enum: string[];
88
- description: string;
89
- };
90
- group_by?: undefined;
91
- limit?: undefined;
92
- offset?: undefined;
93
- provider?: undefined;
94
- model?: undefined;
95
- include_content?: undefined;
96
- project_id?: undefined;
97
- metric?: undefined;
98
- };
99
- };
100
- } | {
101
- name: string;
102
- description: string;
103
- inputSchema: {
104
- type: "object";
105
- properties: {
106
- limit: {
107
- type: "number";
108
- description: string;
109
- };
110
- offset: {
111
- type: "number";
112
- description: string;
113
- };
114
- provider: {
115
- type: "string";
116
- description: string;
117
- };
118
- model: {
119
- type: "string";
120
- description: string;
121
- };
122
- include_content: {
123
- type: "boolean";
124
- description: string;
125
- };
126
- timeframe?: undefined;
127
- group_by?: undefined;
128
- break_down_by?: undefined;
129
- project_id?: undefined;
130
- metric?: undefined;
131
- };
132
- };
133
- } | {
134
- name: string;
135
- description: string;
136
- inputSchema: {
137
- type: "object";
138
- properties: {
139
- project_id: {
140
- type: "string";
141
- description: string;
142
- };
143
- timeframe?: undefined;
144
- group_by?: undefined;
145
- break_down_by?: undefined;
146
- limit?: undefined;
147
- offset?: undefined;
148
- provider?: undefined;
149
- model?: undefined;
150
- include_content?: undefined;
151
- metric?: undefined;
152
- };
153
- };
154
- } | {
155
- name: string;
156
- description: string;
157
- inputSchema: {
158
- type: "object";
159
- properties: {
160
- timeframe?: undefined;
161
- group_by?: undefined;
162
- break_down_by?: undefined;
163
- limit?: undefined;
164
- offset?: undefined;
165
- provider?: undefined;
166
- model?: undefined;
167
- include_content?: undefined;
168
- project_id?: undefined;
169
- metric?: undefined;
170
- };
171
- };
172
- } | {
173
- name: string;
174
- description: string;
175
- inputSchema: {
176
- type: "object";
177
- properties: {
178
- timeframe: {
179
- type: "string";
180
- enum: string[];
181
- description: string;
182
- };
183
- group_by?: undefined;
184
- break_down_by?: undefined;
185
- limit?: undefined;
186
- offset?: undefined;
187
- provider?: undefined;
188
- model?: undefined;
189
- include_content?: undefined;
190
- project_id?: undefined;
191
- metric?: undefined;
192
- };
193
- };
194
- } | {
195
- name: string;
196
- description: string;
197
- inputSchema: {
198
- type: "object";
199
- properties: {
200
- timeframe: {
201
- type: "string";
202
- enum: string[];
203
- description: string;
204
- };
205
- metric: {
206
- type: "string";
207
- enum: string[];
208
- description: string;
209
- };
210
- group_by?: undefined;
211
- break_down_by?: undefined;
212
- limit?: undefined;
213
- offset?: undefined;
214
- provider?: undefined;
215
- model?: undefined;
216
- include_content?: undefined;
217
- project_id?: undefined;
218
- };
219
- };
220
- })[];
221
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAEpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEtE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAGtE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,YAAY,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAE9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,YAAY,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAG1E,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA2IrB,CAAC"}