@defai.digital/mcp-server 13.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/LICENSE +214 -0
  2. package/dist/bin.d.ts +3 -0
  3. package/dist/bin.d.ts.map +1 -0
  4. package/dist/bin.js +7 -0
  5. package/dist/bin.js.map +1 -0
  6. package/dist/bootstrap.d.ts +89 -0
  7. package/dist/bootstrap.d.ts.map +1 -0
  8. package/dist/bootstrap.js +161 -0
  9. package/dist/bootstrap.js.map +1 -0
  10. package/dist/index.d.ts +10 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +17 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/middleware/rate-limiter.d.ts +136 -0
  15. package/dist/middleware/rate-limiter.d.ts.map +1 -0
  16. package/dist/middleware/rate-limiter.js +262 -0
  17. package/dist/middleware/rate-limiter.js.map +1 -0
  18. package/dist/prompts/agent-guide.d.ts +16 -0
  19. package/dist/prompts/agent-guide.d.ts.map +1 -0
  20. package/dist/prompts/agent-guide.js +391 -0
  21. package/dist/prompts/agent-guide.js.map +1 -0
  22. package/dist/prompts/explain-workflow.d.ts +15 -0
  23. package/dist/prompts/explain-workflow.d.ts.map +1 -0
  24. package/dist/prompts/explain-workflow.js +157 -0
  25. package/dist/prompts/explain-workflow.js.map +1 -0
  26. package/dist/prompts/index.d.ts +39 -0
  27. package/dist/prompts/index.d.ts.map +1 -0
  28. package/dist/prompts/index.js +83 -0
  29. package/dist/prompts/index.js.map +1 -0
  30. package/dist/prompts/review-changes.d.ts +15 -0
  31. package/dist/prompts/review-changes.d.ts.map +1 -0
  32. package/dist/prompts/review-changes.js +102 -0
  33. package/dist/prompts/review-changes.js.map +1 -0
  34. package/dist/prompts/troubleshoot-session.d.ts +15 -0
  35. package/dist/prompts/troubleshoot-session.d.ts.map +1 -0
  36. package/dist/prompts/troubleshoot-session.js +156 -0
  37. package/dist/prompts/troubleshoot-session.js.map +1 -0
  38. package/dist/registry-accessor.d.ts +83 -0
  39. package/dist/registry-accessor.d.ts.map +1 -0
  40. package/dist/registry-accessor.js +153 -0
  41. package/dist/registry-accessor.js.map +1 -0
  42. package/dist/resources/agents.d.ts +40 -0
  43. package/dist/resources/agents.d.ts.map +1 -0
  44. package/dist/resources/agents.js +123 -0
  45. package/dist/resources/agents.js.map +1 -0
  46. package/dist/resources/config.d.ts +57 -0
  47. package/dist/resources/config.d.ts.map +1 -0
  48. package/dist/resources/config.js +222 -0
  49. package/dist/resources/config.js.map +1 -0
  50. package/dist/resources/index.d.ts +38 -0
  51. package/dist/resources/index.d.ts.map +1 -0
  52. package/dist/resources/index.js +132 -0
  53. package/dist/resources/index.js.map +1 -0
  54. package/dist/resources/policies.d.ts +40 -0
  55. package/dist/resources/policies.d.ts.map +1 -0
  56. package/dist/resources/policies.js +122 -0
  57. package/dist/resources/policies.js.map +1 -0
  58. package/dist/resources/sessions.d.ts +30 -0
  59. package/dist/resources/sessions.d.ts.map +1 -0
  60. package/dist/resources/sessions.js +64 -0
  61. package/dist/resources/sessions.js.map +1 -0
  62. package/dist/resources/workflows.d.ts +40 -0
  63. package/dist/resources/workflows.d.ts.map +1 -0
  64. package/dist/resources/workflows.js +143 -0
  65. package/dist/resources/workflows.js.map +1 -0
  66. package/dist/schema-registry.d.ts +23 -0
  67. package/dist/schema-registry.d.ts.map +1 -0
  68. package/dist/schema-registry.js +225 -0
  69. package/dist/schema-registry.js.map +1 -0
  70. package/dist/server.d.ts +63 -0
  71. package/dist/server.d.ts.map +1 -0
  72. package/dist/server.js +393 -0
  73. package/dist/server.js.map +1 -0
  74. package/dist/session-accessor.d.ts +23 -0
  75. package/dist/session-accessor.d.ts.map +1 -0
  76. package/dist/session-accessor.js +39 -0
  77. package/dist/session-accessor.js.map +1 -0
  78. package/dist/shared-registry.d.ts +23 -0
  79. package/dist/shared-registry.d.ts.map +1 -0
  80. package/dist/shared-registry.js +235 -0
  81. package/dist/shared-registry.js.map +1 -0
  82. package/dist/stdio.d.ts +6 -0
  83. package/dist/stdio.d.ts.map +1 -0
  84. package/dist/stdio.js +152 -0
  85. package/dist/stdio.js.map +1 -0
  86. package/dist/tool-namespacing.d.ts +28 -0
  87. package/dist/tool-namespacing.d.ts.map +1 -0
  88. package/dist/tool-namespacing.js +80 -0
  89. package/dist/tool-namespacing.js.map +1 -0
  90. package/dist/tools/ability.d.ts +55 -0
  91. package/dist/tools/ability.d.ts.map +1 -0
  92. package/dist/tools/ability.js +560 -0
  93. package/dist/tools/ability.js.map +1 -0
  94. package/dist/tools/agent.d.ts +73 -0
  95. package/dist/tools/agent.d.ts.map +1 -0
  96. package/dist/tools/agent.js +895 -0
  97. package/dist/tools/agent.js.map +1 -0
  98. package/dist/tools/config.d.ts +36 -0
  99. package/dist/tools/config.d.ts.map +1 -0
  100. package/dist/tools/config.js +265 -0
  101. package/dist/tools/config.js.map +1 -0
  102. package/dist/tools/design.d.ts +42 -0
  103. package/dist/tools/design.d.ts.map +1 -0
  104. package/dist/tools/design.js +736 -0
  105. package/dist/tools/design.js.map +1 -0
  106. package/dist/tools/discuss.d.ts +40 -0
  107. package/dist/tools/discuss.d.ts.map +1 -0
  108. package/dist/tools/discuss.js +331 -0
  109. package/dist/tools/discuss.js.map +1 -0
  110. package/dist/tools/file-system.d.ts +63 -0
  111. package/dist/tools/file-system.d.ts.map +1 -0
  112. package/dist/tools/file-system.js +513 -0
  113. package/dist/tools/file-system.js.map +1 -0
  114. package/dist/tools/guard.d.ts +29 -0
  115. package/dist/tools/guard.d.ts.map +1 -0
  116. package/dist/tools/guard.js +311 -0
  117. package/dist/tools/guard.js.map +1 -0
  118. package/dist/tools/index.d.ts +35 -0
  119. package/dist/tools/index.d.ts.map +1 -0
  120. package/dist/tools/index.js +178 -0
  121. package/dist/tools/index.js.map +1 -0
  122. package/dist/tools/memory.d.ts +101 -0
  123. package/dist/tools/memory.d.ts.map +1 -0
  124. package/dist/tools/memory.js +704 -0
  125. package/dist/tools/memory.js.map +1 -0
  126. package/dist/tools/orchestration.d.ts +58 -0
  127. package/dist/tools/orchestration.d.ts.map +1 -0
  128. package/dist/tools/orchestration.js +714 -0
  129. package/dist/tools/orchestration.js.map +1 -0
  130. package/dist/tools/review.d.ts +40 -0
  131. package/dist/tools/review.d.ts.map +1 -0
  132. package/dist/tools/review.js +319 -0
  133. package/dist/tools/review.js.map +1 -0
  134. package/dist/tools/scaffold.d.ts +27 -0
  135. package/dist/tools/scaffold.d.ts.map +1 -0
  136. package/dist/tools/scaffold.js +495 -0
  137. package/dist/tools/scaffold.js.map +1 -0
  138. package/dist/tools/session.d.ts +75 -0
  139. package/dist/tools/session.d.ts.map +1 -0
  140. package/dist/tools/session.js +749 -0
  141. package/dist/tools/session.js.map +1 -0
  142. package/dist/tools/telemetry.d.ts +58 -0
  143. package/dist/tools/telemetry.d.ts.map +1 -0
  144. package/dist/tools/telemetry.js +638 -0
  145. package/dist/tools/telemetry.js.map +1 -0
  146. package/dist/tools/trace.d.ts +29 -0
  147. package/dist/tools/trace.d.ts.map +1 -0
  148. package/dist/tools/trace.js +191 -0
  149. package/dist/tools/trace.js.map +1 -0
  150. package/dist/tools/workflow.d.ts +26 -0
  151. package/dist/tools/workflow.d.ts.map +1 -0
  152. package/dist/tools/workflow.js +269 -0
  153. package/dist/tools/workflow.js.map +1 -0
  154. package/dist/trace-wrapper.d.ts +79 -0
  155. package/dist/trace-wrapper.d.ts.map +1 -0
  156. package/dist/trace-wrapper.js +151 -0
  157. package/dist/trace-wrapper.js.map +1 -0
  158. package/dist/types.d.ts +185 -0
  159. package/dist/types.d.ts.map +1 -0
  160. package/dist/types.js +11 -0
  161. package/dist/types.js.map +1 -0
  162. package/dist/utils/artifact-store.d.ts +49 -0
  163. package/dist/utils/artifact-store.d.ts.map +1 -0
  164. package/dist/utils/artifact-store.js +102 -0
  165. package/dist/utils/artifact-store.js.map +1 -0
  166. package/dist/utils/index.d.ts +6 -0
  167. package/dist/utils/index.d.ts.map +1 -0
  168. package/dist/utils/index.js +10 -0
  169. package/dist/utils/index.js.map +1 -0
  170. package/dist/utils/response.d.ts +139 -0
  171. package/dist/utils/response.d.ts.map +1 -0
  172. package/dist/utils/response.js +293 -0
  173. package/dist/utils/response.js.map +1 -0
  174. package/dist/validation.d.ts +223 -0
  175. package/dist/validation.d.ts.map +1 -0
  176. package/dist/validation.js +372 -0
  177. package/dist/validation.js.map +1 -0
  178. package/package.json +67 -0
@@ -0,0 +1,638 @@
1
+ import { randomUUID } from 'crypto';
2
+ import { LIMIT_EVENT_BUFFER } from '@defai.digital/contracts';
3
+ /**
4
+ * Metrics record tool definition
5
+ */
6
+ export const metricsRecordTool = {
7
+ name: 'metrics_record',
8
+ description: 'Record a metric value',
9
+ idempotent: false,
10
+ inputSchema: {
11
+ type: 'object',
12
+ properties: {
13
+ metricName: {
14
+ type: 'string',
15
+ description: 'Name of the metric (e.g., agent_requests_total)',
16
+ },
17
+ value: {
18
+ type: 'number',
19
+ description: 'Metric value',
20
+ },
21
+ labels: {
22
+ type: 'object',
23
+ description: 'Labels for the metric (key-value pairs)',
24
+ additionalProperties: { type: 'string' },
25
+ },
26
+ type: {
27
+ type: 'string',
28
+ description: 'Metric type',
29
+ enum: ['counter', 'gauge', 'histogram', 'summary', 'timer'],
30
+ default: 'gauge',
31
+ },
32
+ },
33
+ required: ['metricName', 'value'],
34
+ },
35
+ };
36
+ /**
37
+ * Metrics increment tool definition
38
+ */
39
+ export const metricsIncrementTool = {
40
+ name: 'metrics_increment',
41
+ description: 'Increment a counter metric',
42
+ idempotent: false,
43
+ inputSchema: {
44
+ type: 'object',
45
+ properties: {
46
+ metricName: {
47
+ type: 'string',
48
+ description: 'Name of the counter metric',
49
+ },
50
+ delta: {
51
+ type: 'number',
52
+ description: 'Amount to increment by',
53
+ default: 1,
54
+ },
55
+ labels: {
56
+ type: 'object',
57
+ description: 'Labels for the metric',
58
+ additionalProperties: { type: 'string' },
59
+ },
60
+ },
61
+ required: ['metricName'],
62
+ },
63
+ };
64
+ /**
65
+ * Metrics query tool definition
66
+ */
67
+ export const metricsQueryTool = {
68
+ name: 'metrics_query',
69
+ description: 'Query metric values',
70
+ idempotent: true,
71
+ inputSchema: {
72
+ type: 'object',
73
+ properties: {
74
+ metricName: {
75
+ type: 'string',
76
+ description: 'Name of the metric to query',
77
+ },
78
+ labels: {
79
+ type: 'object',
80
+ description: 'Filter by labels',
81
+ additionalProperties: { type: 'string' },
82
+ },
83
+ aggregation: {
84
+ type: 'string',
85
+ description: 'Aggregation function',
86
+ enum: ['sum', 'avg', 'min', 'max', 'count', 'rate', 'percentile', 'last'],
87
+ },
88
+ limit: {
89
+ type: 'number',
90
+ description: 'Maximum data points to return',
91
+ default: 100,
92
+ },
93
+ },
94
+ required: ['metricName'],
95
+ },
96
+ };
97
+ /**
98
+ * Metrics list tool definition
99
+ */
100
+ export const metricsListTool = {
101
+ name: 'metrics_list',
102
+ description: 'List all available metrics',
103
+ idempotent: true,
104
+ inputSchema: {
105
+ type: 'object',
106
+ properties: {
107
+ category: {
108
+ type: 'string',
109
+ description: 'Filter by category',
110
+ enum: ['system', 'application', 'agent', 'workflow', 'session', 'memory', 'provider', 'tool', 'trace', 'custom'],
111
+ },
112
+ type: {
113
+ type: 'string',
114
+ description: 'Filter by metric type',
115
+ enum: ['counter', 'gauge', 'histogram', 'summary', 'timer'],
116
+ },
117
+ prefix: {
118
+ type: 'string',
119
+ description: 'Filter by name prefix',
120
+ },
121
+ },
122
+ },
123
+ };
124
+ /**
125
+ * Telemetry summary tool definition
126
+ */
127
+ export const telemetrySummaryTool = {
128
+ name: 'telemetry_summary',
129
+ description: 'Get a summary of telemetry data',
130
+ idempotent: true,
131
+ inputSchema: {
132
+ type: 'object',
133
+ properties: {
134
+ categories: {
135
+ type: 'array',
136
+ description: 'Categories to include',
137
+ items: {
138
+ type: 'string',
139
+ enum: ['system', 'application', 'agent', 'workflow', 'session', 'memory', 'provider', 'tool', 'trace', 'custom'],
140
+ },
141
+ },
142
+ includeDetails: {
143
+ type: 'boolean',
144
+ description: 'Include metric details',
145
+ default: false,
146
+ },
147
+ },
148
+ },
149
+ };
150
+ /**
151
+ * Timer start tool definition
152
+ */
153
+ export const timerStartTool = {
154
+ name: 'timer_start',
155
+ description: 'Start a timer for measuring duration',
156
+ idempotent: false,
157
+ inputSchema: {
158
+ type: 'object',
159
+ properties: {
160
+ metricName: {
161
+ type: 'string',
162
+ description: 'Name of the timer metric',
163
+ },
164
+ labels: {
165
+ type: 'object',
166
+ description: 'Labels for the timer',
167
+ additionalProperties: { type: 'string' },
168
+ },
169
+ },
170
+ required: ['metricName'],
171
+ },
172
+ };
173
+ /**
174
+ * Timer stop tool definition
175
+ */
176
+ export const timerStopTool = {
177
+ name: 'timer_stop',
178
+ description: 'Stop a timer and record the duration',
179
+ idempotent: false,
180
+ inputSchema: {
181
+ type: 'object',
182
+ properties: {
183
+ timerId: {
184
+ type: 'string',
185
+ description: 'Timer ID returned by timer_start',
186
+ },
187
+ },
188
+ required: ['timerId'],
189
+ },
190
+ };
191
+ const metricStore = new Map();
192
+ const timerStore = new Map();
193
+ // Initialize default metrics
194
+ function ensureMetric(name, type = 'gauge') {
195
+ let metric = metricStore.get(name);
196
+ if (metric === undefined) {
197
+ const category = name.split('_')[0] ?? 'custom';
198
+ metric = {
199
+ name,
200
+ type,
201
+ category,
202
+ unit: 'none',
203
+ values: [],
204
+ currentValue: 0,
205
+ };
206
+ metricStore.set(name, metric);
207
+ }
208
+ return metric;
209
+ }
210
+ /**
211
+ * Handler for metrics_record tool
212
+ */
213
+ export const handleMetricsRecord = async (args) => {
214
+ const metricName = args.metricName;
215
+ const value = args.value;
216
+ const labels = args.labels ?? {};
217
+ const type = args.type ?? 'gauge';
218
+ try {
219
+ const metric = ensureMetric(metricName, type);
220
+ metric.currentValue = value;
221
+ metric.values.push({
222
+ value,
223
+ labels,
224
+ timestamp: new Date().toISOString(),
225
+ });
226
+ // Keep only last 1000 values
227
+ if (metric.values.length > LIMIT_EVENT_BUFFER) {
228
+ metric.values = metric.values.slice(-LIMIT_EVENT_BUFFER);
229
+ }
230
+ return {
231
+ content: [
232
+ {
233
+ type: 'text',
234
+ text: JSON.stringify({
235
+ recorded: true,
236
+ metricName,
237
+ value,
238
+ labels,
239
+ type: metric.type,
240
+ timestamp: new Date().toISOString(),
241
+ }, null, 2),
242
+ },
243
+ ],
244
+ };
245
+ }
246
+ catch (error) {
247
+ const message = error instanceof Error ? error.message : 'Unknown error';
248
+ return {
249
+ content: [
250
+ {
251
+ type: 'text',
252
+ text: JSON.stringify({
253
+ error: 'RECORD_FAILED',
254
+ message,
255
+ metricName,
256
+ }),
257
+ },
258
+ ],
259
+ isError: true,
260
+ };
261
+ }
262
+ };
263
+ /**
264
+ * Handler for metrics_increment tool
265
+ */
266
+ export const handleMetricsIncrement = async (args) => {
267
+ const metricName = args.metricName;
268
+ const delta = args.delta ?? 1;
269
+ const labels = args.labels ?? {};
270
+ try {
271
+ const metric = ensureMetric(metricName, 'counter');
272
+ metric.currentValue += delta;
273
+ metric.values.push({
274
+ value: metric.currentValue,
275
+ labels,
276
+ timestamp: new Date().toISOString(),
277
+ });
278
+ if (metric.values.length > LIMIT_EVENT_BUFFER) {
279
+ metric.values = metric.values.slice(-LIMIT_EVENT_BUFFER);
280
+ }
281
+ return {
282
+ content: [
283
+ {
284
+ type: 'text',
285
+ text: JSON.stringify({
286
+ incremented: true,
287
+ metricName,
288
+ delta,
289
+ currentValue: metric.currentValue,
290
+ labels,
291
+ timestamp: new Date().toISOString(),
292
+ }, null, 2),
293
+ },
294
+ ],
295
+ };
296
+ }
297
+ catch (error) {
298
+ const message = error instanceof Error ? error.message : 'Unknown error';
299
+ return {
300
+ content: [
301
+ {
302
+ type: 'text',
303
+ text: JSON.stringify({
304
+ error: 'INCREMENT_FAILED',
305
+ message,
306
+ metricName,
307
+ }),
308
+ },
309
+ ],
310
+ isError: true,
311
+ };
312
+ }
313
+ };
314
+ /**
315
+ * Handler for metrics_query tool
316
+ */
317
+ export const handleMetricsQuery = async (args) => {
318
+ const metricName = args.metricName;
319
+ const labels = args.labels;
320
+ const aggregation = args.aggregation;
321
+ const limit = args.limit ?? 100;
322
+ try {
323
+ const metric = metricStore.get(metricName);
324
+ if (metric === undefined) {
325
+ return {
326
+ content: [
327
+ {
328
+ type: 'text',
329
+ text: JSON.stringify({
330
+ error: 'METRIC_NOT_FOUND',
331
+ message: `Metric "${metricName}" not found`,
332
+ metricName,
333
+ }),
334
+ },
335
+ ],
336
+ isError: true,
337
+ };
338
+ }
339
+ // Filter by labels if specified
340
+ let filteredValues = metric.values;
341
+ if (labels !== undefined && Object.keys(labels).length > 0) {
342
+ filteredValues = metric.values.filter((v) => Object.entries(labels).every(([k, val]) => v.labels[k] === val));
343
+ }
344
+ // Apply limit
345
+ filteredValues = filteredValues.slice(-limit);
346
+ // Apply aggregation
347
+ let aggregatedValue = null;
348
+ if (aggregation !== undefined && filteredValues.length > 0) {
349
+ const values = filteredValues.map((v) => v.value);
350
+ switch (aggregation) {
351
+ case 'sum':
352
+ aggregatedValue = values.reduce((a, b) => a + b, 0);
353
+ break;
354
+ case 'avg':
355
+ aggregatedValue = values.reduce((a, b) => a + b, 0) / values.length;
356
+ break;
357
+ case 'min':
358
+ aggregatedValue = Math.min(...values);
359
+ break;
360
+ case 'max':
361
+ aggregatedValue = Math.max(...values);
362
+ break;
363
+ case 'count':
364
+ aggregatedValue = values.length;
365
+ break;
366
+ case 'last':
367
+ aggregatedValue = values[values.length - 1] ?? null;
368
+ break;
369
+ }
370
+ }
371
+ return {
372
+ content: [
373
+ {
374
+ type: 'text',
375
+ text: JSON.stringify({
376
+ metricName,
377
+ type: metric.type,
378
+ category: metric.category,
379
+ currentValue: metric.currentValue,
380
+ dataPoints: filteredValues,
381
+ total: filteredValues.length,
382
+ aggregation: aggregation ?? null,
383
+ aggregatedValue,
384
+ }, null, 2),
385
+ },
386
+ ],
387
+ };
388
+ }
389
+ catch (error) {
390
+ const message = error instanceof Error ? error.message : 'Unknown error';
391
+ return {
392
+ content: [
393
+ {
394
+ type: 'text',
395
+ text: JSON.stringify({
396
+ error: 'QUERY_FAILED',
397
+ message,
398
+ metricName,
399
+ }),
400
+ },
401
+ ],
402
+ isError: true,
403
+ };
404
+ }
405
+ };
406
+ /**
407
+ * Handler for metrics_list tool
408
+ */
409
+ export const handleMetricsList = async (args) => {
410
+ const category = args.category;
411
+ const type = args.type;
412
+ const prefix = args.prefix;
413
+ try {
414
+ let metrics = Array.from(metricStore.values());
415
+ if (category !== undefined) {
416
+ metrics = metrics.filter((m) => m.category === category);
417
+ }
418
+ if (type !== undefined) {
419
+ metrics = metrics.filter((m) => m.type === type);
420
+ }
421
+ if (prefix !== undefined) {
422
+ metrics = metrics.filter((m) => m.name.startsWith(prefix));
423
+ }
424
+ return {
425
+ content: [
426
+ {
427
+ type: 'text',
428
+ text: JSON.stringify({
429
+ metrics: metrics.map((m) => ({
430
+ name: m.name,
431
+ type: m.type,
432
+ category: m.category,
433
+ currentValue: m.currentValue,
434
+ dataPointCount: m.values.length,
435
+ lastUpdated: m.values.length > 0 ? m.values[m.values.length - 1]?.timestamp : null,
436
+ })),
437
+ total: metrics.length,
438
+ }, null, 2),
439
+ },
440
+ ],
441
+ };
442
+ }
443
+ catch (error) {
444
+ const message = error instanceof Error ? error.message : 'Unknown error';
445
+ return {
446
+ content: [
447
+ {
448
+ type: 'text',
449
+ text: JSON.stringify({
450
+ error: 'LIST_FAILED',
451
+ message,
452
+ }),
453
+ },
454
+ ],
455
+ isError: true,
456
+ };
457
+ }
458
+ };
459
+ /**
460
+ * Handler for telemetry_summary tool
461
+ */
462
+ export const handleTelemetrySummary = async (args) => {
463
+ const categories = args.categories;
464
+ const includeDetails = args.includeDetails ?? false;
465
+ try {
466
+ let metrics = Array.from(metricStore.values());
467
+ if (categories !== undefined && categories.length > 0) {
468
+ metrics = metrics.filter((m) => categories.includes(m.category));
469
+ }
470
+ // Group by category
471
+ const byCategory = new Map();
472
+ for (const metric of metrics) {
473
+ const existing = byCategory.get(metric.category);
474
+ if (existing !== undefined) {
475
+ existing.push(metric);
476
+ }
477
+ else {
478
+ byCategory.set(metric.category, [metric]);
479
+ }
480
+ }
481
+ const categorySummaries = Array.from(byCategory.entries()).map(([cat, catMetrics]) => ({
482
+ category: cat,
483
+ metricCount: catMetrics.length,
484
+ dataPointCount: catMetrics.reduce((sum, m) => sum + m.values.length, 0),
485
+ metrics: includeDetails
486
+ ? catMetrics.map((m) => ({
487
+ name: m.name,
488
+ type: m.type,
489
+ currentValue: m.currentValue,
490
+ lastUpdated: m.values.length > 0 ? m.values[m.values.length - 1]?.timestamp : null,
491
+ }))
492
+ : undefined,
493
+ }));
494
+ const totalDataPoints = metrics.reduce((sum, m) => sum + m.values.length, 0);
495
+ return {
496
+ content: [
497
+ {
498
+ type: 'text',
499
+ text: JSON.stringify({
500
+ totalMetrics: metrics.length,
501
+ totalDataPoints,
502
+ byCategory: categorySummaries,
503
+ generatedAt: new Date().toISOString(),
504
+ }, null, 2),
505
+ },
506
+ ],
507
+ };
508
+ }
509
+ catch (error) {
510
+ const message = error instanceof Error ? error.message : 'Unknown error';
511
+ return {
512
+ content: [
513
+ {
514
+ type: 'text',
515
+ text: JSON.stringify({
516
+ error: 'SUMMARY_FAILED',
517
+ message,
518
+ }),
519
+ },
520
+ ],
521
+ isError: true,
522
+ };
523
+ }
524
+ };
525
+ /**
526
+ * Handler for timer_start tool
527
+ */
528
+ export const handleTimerStart = async (args) => {
529
+ const metricName = args.metricName;
530
+ const labels = args.labels ?? {};
531
+ try {
532
+ const timerId = randomUUID();
533
+ timerStore.set(timerId, {
534
+ timerId,
535
+ metricName,
536
+ labels,
537
+ startedAt: Date.now(),
538
+ });
539
+ return {
540
+ content: [
541
+ {
542
+ type: 'text',
543
+ text: JSON.stringify({
544
+ timerId,
545
+ metricName,
546
+ labels,
547
+ startedAt: new Date().toISOString(),
548
+ }, null, 2),
549
+ },
550
+ ],
551
+ };
552
+ }
553
+ catch (error) {
554
+ const message = error instanceof Error ? error.message : 'Unknown error';
555
+ return {
556
+ content: [
557
+ {
558
+ type: 'text',
559
+ text: JSON.stringify({
560
+ error: 'TIMER_START_FAILED',
561
+ message,
562
+ metricName,
563
+ }),
564
+ },
565
+ ],
566
+ isError: true,
567
+ };
568
+ }
569
+ };
570
+ /**
571
+ * Handler for timer_stop tool
572
+ */
573
+ export const handleTimerStop = async (args) => {
574
+ const timerId = args.timerId;
575
+ try {
576
+ const timer = timerStore.get(timerId);
577
+ if (timer === undefined) {
578
+ return {
579
+ content: [
580
+ {
581
+ type: 'text',
582
+ text: JSON.stringify({
583
+ error: 'TIMER_NOT_FOUND',
584
+ message: `Timer "${timerId}" not found`,
585
+ timerId,
586
+ }),
587
+ },
588
+ ],
589
+ isError: true,
590
+ };
591
+ }
592
+ const duration = Date.now() - timer.startedAt;
593
+ // Record the duration as a metric
594
+ const metric = ensureMetric(timer.metricName, 'timer');
595
+ metric.currentValue = duration;
596
+ metric.values.push({
597
+ value: duration,
598
+ labels: timer.labels,
599
+ timestamp: new Date().toISOString(),
600
+ });
601
+ if (metric.values.length > LIMIT_EVENT_BUFFER) {
602
+ metric.values = metric.values.slice(-LIMIT_EVENT_BUFFER);
603
+ }
604
+ // Clean up timer
605
+ timerStore.delete(timerId);
606
+ return {
607
+ content: [
608
+ {
609
+ type: 'text',
610
+ text: JSON.stringify({
611
+ timerId,
612
+ metricName: timer.metricName,
613
+ durationMs: duration,
614
+ labels: timer.labels,
615
+ stoppedAt: new Date().toISOString(),
616
+ }, null, 2),
617
+ },
618
+ ],
619
+ };
620
+ }
621
+ catch (error) {
622
+ const message = error instanceof Error ? error.message : 'Unknown error';
623
+ return {
624
+ content: [
625
+ {
626
+ type: 'text',
627
+ text: JSON.stringify({
628
+ error: 'TIMER_STOP_FAILED',
629
+ message,
630
+ timerId,
631
+ }),
632
+ },
633
+ ],
634
+ isError: true,
635
+ };
636
+ }
637
+ };
638
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/tools/telemetry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { MCPTool, ToolHandler } from '../types.js';
2
+ /**
3
+ * Trace list tool definition
4
+ */
5
+ export declare const traceListTool: MCPTool;
6
+ /**
7
+ * Trace get tool definition
8
+ */
9
+ export declare const traceGetTool: MCPTool;
10
+ /**
11
+ * Trace analyze tool definition
12
+ */
13
+ export declare const traceAnalyzeTool: MCPTool;
14
+ /**
15
+ * Handler for trace_list tool
16
+ * INV-MCP-RESP-002: Arrays limited to 10 items with pagination
17
+ */
18
+ export declare const handleTraceList: ToolHandler;
19
+ /**
20
+ * Handler for trace_get tool
21
+ * INV-MCP-RESP-001: Response < 10KB with summary, events stored as artifact
22
+ */
23
+ export declare const handleTraceGet: ToolHandler;
24
+ /**
25
+ * Handler for trace_analyze tool
26
+ * INV-MCP-RESP-006: Response includes summary field with key metrics only
27
+ */
28
+ export declare const handleTraceAnalyze: ToolHandler;
29
+ //# sourceMappingURL=trace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../src/tools/trace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAQxD;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,OAmB3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,OAc1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,OAc9B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,WAoC7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,WAuE5B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAoBhC,CAAC"}