@mcp-consultant-tools/log-analytics 28.0.0 → 29.0.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 (73) hide show
  1. package/build/cli/commands/function-commands.d.ts +7 -0
  2. package/build/cli/commands/function-commands.d.ts.map +1 -0
  3. package/build/cli/commands/function-commands.js +120 -0
  4. package/build/cli/commands/function-commands.js.map +1 -0
  5. package/build/cli/commands/index.d.ts +10 -0
  6. package/build/cli/commands/index.d.ts.map +1 -0
  7. package/build/cli/commands/index.js +15 -0
  8. package/build/cli/commands/index.js.map +1 -0
  9. package/build/cli/commands/query-commands.d.ts +7 -0
  10. package/build/cli/commands/query-commands.d.ts.map +1 -0
  11. package/build/cli/commands/query-commands.js +486 -0
  12. package/build/cli/commands/query-commands.js.map +1 -0
  13. package/build/cli/commands/workspace-commands.d.ts +7 -0
  14. package/build/cli/commands/workspace-commands.d.ts.map +1 -0
  15. package/build/cli/commands/workspace-commands.js +47 -0
  16. package/build/cli/commands/workspace-commands.js.map +1 -0
  17. package/build/cli/output.d.ts +11 -0
  18. package/build/cli/output.d.ts.map +1 -0
  19. package/build/cli/output.js +10 -0
  20. package/build/cli/output.js.map +1 -0
  21. package/build/cli.d.ts +9 -0
  22. package/build/cli.d.ts.map +1 -0
  23. package/build/cli.js +27 -0
  24. package/build/cli.js.map +1 -0
  25. package/build/context-factory.d.ts +4 -0
  26. package/build/context-factory.d.ts.map +1 -0
  27. package/build/context-factory.js +45 -0
  28. package/build/context-factory.js.map +1 -0
  29. package/build/index.d.ts +14 -2
  30. package/build/index.d.ts.map +1 -1
  31. package/build/index.js +35 -1121
  32. package/build/index.js.map +1 -1
  33. package/build/prompts/index.d.ts +7 -0
  34. package/build/prompts/index.d.ts.map +1 -0
  35. package/build/prompts/index.js +6 -0
  36. package/build/prompts/index.js.map +1 -0
  37. package/build/prompts/templates.d.ts +3 -0
  38. package/build/prompts/templates.d.ts.map +1 -0
  39. package/build/prompts/templates.js +195 -0
  40. package/build/prompts/templates.js.map +1 -0
  41. package/build/services/index.d.ts +3 -0
  42. package/build/services/index.d.ts.map +1 -0
  43. package/build/services/index.js +2 -0
  44. package/build/services/index.js.map +1 -0
  45. package/build/services/log-analytics-service.d.ts +117 -0
  46. package/build/services/log-analytics-service.d.ts.map +1 -0
  47. package/build/services/log-analytics-service.js +419 -0
  48. package/build/services/log-analytics-service.js.map +1 -0
  49. package/build/tool-examples.d.ts +1 -8
  50. package/build/tool-examples.d.ts.map +1 -1
  51. package/build/tool-examples.js +1 -12
  52. package/build/tool-examples.js.map +1 -1
  53. package/build/tools/function-tools.d.ts +3 -0
  54. package/build/tools/function-tools.d.ts.map +1 -0
  55. package/build/tools/function-tools.js +536 -0
  56. package/build/tools/function-tools.js.map +1 -0
  57. package/build/tools/index.d.ts +9 -0
  58. package/build/tools/index.d.ts.map +1 -0
  59. package/build/tools/index.js +12 -0
  60. package/build/tools/index.js.map +1 -0
  61. package/build/tools/query-tools.d.ts +3 -0
  62. package/build/tools/query-tools.d.ts.map +1 -0
  63. package/build/tools/query-tools.js +105 -0
  64. package/build/tools/query-tools.js.map +1 -0
  65. package/build/tools/workspace-tools.d.ts +3 -0
  66. package/build/tools/workspace-tools.d.ts.map +1 -0
  67. package/build/tools/workspace-tools.js +53 -0
  68. package/build/tools/workspace-tools.js.map +1 -0
  69. package/build/types.d.ts +9 -0
  70. package/build/types.d.ts.map +1 -0
  71. package/build/types.js +2 -0
  72. package/build/types.js.map +1 -0
  73. package/package.json +5 -3
@@ -0,0 +1,419 @@
1
+ import { ConfidentialClientApplication } from '@azure/msal-node';
2
+ import axios from 'axios';
3
+ export class LogAnalyticsService {
4
+ config;
5
+ msalClient = null;
6
+ accessToken = null;
7
+ tokenExpirationTime = 0;
8
+ baseUrl = 'https://api.loganalytics.io/v1';
9
+ constructor(config) {
10
+ this.config = config;
11
+ // Initialize MSAL client if using Entra ID auth
12
+ if (this.config.authMethod === 'entra-id') {
13
+ if (!this.config.tenantId || !this.config.clientId || !this.config.clientSecret) {
14
+ throw new Error('Entra ID authentication requires tenantId, clientId, and clientSecret');
15
+ }
16
+ this.msalClient = new ConfidentialClientApplication({
17
+ auth: {
18
+ clientId: this.config.clientId,
19
+ clientSecret: this.config.clientSecret,
20
+ authority: `https://login.microsoftonline.com/${this.config.tenantId}`,
21
+ },
22
+ });
23
+ }
24
+ }
25
+ /**
26
+ * Get access token for Log Analytics API using Microsoft Entra ID OAuth
27
+ * Implements token caching with 5-minute buffer before expiry
28
+ */
29
+ async getAccessToken() {
30
+ if (!this.msalClient) {
31
+ throw new Error('MSAL client not initialized. Use Entra ID authentication method.');
32
+ }
33
+ // Return cached token if still valid (with 5-minute buffer)
34
+ const currentTime = Date.now();
35
+ const bufferTime = 5 * 60 * 1000; // 5 minutes in milliseconds
36
+ if (this.accessToken && this.tokenExpirationTime > currentTime + bufferTime) {
37
+ return this.accessToken;
38
+ }
39
+ // Acquire new token
40
+ try {
41
+ const result = await this.msalClient.acquireTokenByClientCredential({
42
+ scopes: ['https://api.loganalytics.io/.default'],
43
+ });
44
+ if (!result || !result.accessToken) {
45
+ throw new Error('Failed to acquire access token');
46
+ }
47
+ this.accessToken = result.accessToken;
48
+ this.tokenExpirationTime = result.expiresOn ? result.expiresOn.getTime() : 0;
49
+ return this.accessToken;
50
+ }
51
+ catch (error) {
52
+ throw new Error(`Failed to acquire access token: ${error.message}`);
53
+ }
54
+ }
55
+ /**
56
+ * Get authorization headers based on authentication method
57
+ */
58
+ async getAuthHeaders(resource) {
59
+ if (this.config.authMethod === 'entra-id') {
60
+ const token = await this.getAccessToken();
61
+ return {
62
+ Authorization: `Bearer ${token}`,
63
+ 'Content-Type': 'application/json',
64
+ };
65
+ }
66
+ else if (this.config.authMethod === 'api-key') {
67
+ if (!resource.apiKey) {
68
+ throw new Error(`API key not configured for resource: ${resource.id}`);
69
+ }
70
+ return {
71
+ 'X-Api-Key': resource.apiKey,
72
+ 'Content-Type': 'application/json',
73
+ };
74
+ }
75
+ else {
76
+ throw new Error(`Unsupported authentication method: ${this.config.authMethod}`);
77
+ }
78
+ }
79
+ /**
80
+ * Execute a KQL query against a Log Analytics workspace
81
+ */
82
+ async executeQuery(resourceId, query, timespan) {
83
+ const resource = this.getResourceById(resourceId);
84
+ try {
85
+ const headers = await this.getAuthHeaders(resource);
86
+ const url = `${this.baseUrl}/workspaces/${resource.workspaceId}/query`;
87
+ const requestBody = { query };
88
+ if (timespan) {
89
+ requestBody.timespan = timespan;
90
+ }
91
+ const response = await axios.post(url, requestBody, {
92
+ headers,
93
+ timeout: 30000, // 30-second timeout
94
+ });
95
+ return response.data;
96
+ }
97
+ catch (error) {
98
+ // Enhanced error handling
99
+ let errorMessage = 'Unknown error';
100
+ let errorDetails = {};
101
+ if (error.response) {
102
+ const status = error.response.status;
103
+ const data = error.response.data;
104
+ switch (status) {
105
+ case 401:
106
+ errorMessage = 'Authentication failed. Check your credentials and ensure the app registration has proper permissions.';
107
+ break;
108
+ case 403:
109
+ errorMessage = 'Access denied. Ensure the service principal has "Log Analytics Reader" role on the workspace.';
110
+ break;
111
+ case 429:
112
+ errorMessage = 'Rate limit exceeded. Reduce query frequency or upgrade authentication method.';
113
+ if (error.response.headers['retry-after']) {
114
+ errorMessage += ` Retry after ${error.response.headers['retry-after']} seconds.`;
115
+ }
116
+ break;
117
+ case 400:
118
+ if (data && data.error) {
119
+ if (data.error.code === 'SyntaxError') {
120
+ errorMessage = `KQL syntax error: ${data.error.message}`;
121
+ }
122
+ else if (data.error.code === 'SemanticError') {
123
+ errorMessage = `KQL semantic error: ${data.error.message}. Check table/column names.`;
124
+ }
125
+ else {
126
+ errorMessage = `Bad request: ${data.error.message}`;
127
+ }
128
+ }
129
+ else {
130
+ errorMessage = 'Bad request. Check your query syntax.';
131
+ }
132
+ break;
133
+ case 504:
134
+ errorMessage = 'Query timeout. Try reducing the time range or simplifying the query.';
135
+ break;
136
+ default:
137
+ errorMessage = `HTTP ${status}: ${data?.error?.message || error.message}`;
138
+ }
139
+ errorDetails = {
140
+ status,
141
+ code: data?.error?.code,
142
+ message: data?.error?.message,
143
+ };
144
+ }
145
+ else if (error.code === 'ENOTFOUND' || error.code === 'ECONNREFUSED') {
146
+ errorMessage = 'Network error: Unable to reach Log Analytics API. Check your internet connection.';
147
+ }
148
+ else if (error.code === 'ETIMEDOUT') {
149
+ errorMessage = 'Request timeout. The query took too long to execute.';
150
+ }
151
+ else {
152
+ errorMessage = error.message;
153
+ }
154
+ throw new Error(errorMessage);
155
+ }
156
+ }
157
+ /**
158
+ * Get workspace metadata (schema)
159
+ */
160
+ async getMetadata(resourceId) {
161
+ const resource = this.getResourceById(resourceId);
162
+ try {
163
+ const headers = await this.getAuthHeaders(resource);
164
+ const url = `${this.baseUrl}/workspaces/${resource.workspaceId}/metadata`;
165
+ const response = await axios.get(url, {
166
+ headers,
167
+ timeout: 15000,
168
+ });
169
+ return response.data;
170
+ }
171
+ catch (error) {
172
+ throw new Error(`Failed to get metadata: ${error.message}`);
173
+ }
174
+ }
175
+ /**
176
+ * Test workspace access by executing a simple query
177
+ */
178
+ async testWorkspaceAccess(resourceId) {
179
+ const resource = this.getResourceById(resourceId);
180
+ try {
181
+ // Execute a minimal query to test access
182
+ const result = await this.executeQuery(resourceId, 'print test="success"');
183
+ return {
184
+ success: true,
185
+ message: `Successfully connected to workspace: ${resource.name}`,
186
+ details: {
187
+ workspaceId: resource.workspaceId,
188
+ authMethod: this.config.authMethod,
189
+ },
190
+ };
191
+ }
192
+ catch (error) {
193
+ return {
194
+ success: false,
195
+ message: `Failed to access workspace: ${error.message}`,
196
+ details: {
197
+ workspaceId: resource.workspaceId,
198
+ error: error.message,
199
+ },
200
+ };
201
+ }
202
+ }
203
+ /**
204
+ * Get recent events from any table
205
+ */
206
+ async getRecentEvents(resourceId, tableName, timespan = 'PT1H', limit = 100) {
207
+ const query = `
208
+ ${tableName}
209
+ | where TimeGenerated > ago(${this.convertTimespanToKQL(timespan)})
210
+ | order by TimeGenerated desc
211
+ | take ${limit}
212
+ `.trim();
213
+ return this.executeQuery(resourceId, query, timespan);
214
+ }
215
+ /**
216
+ * Search logs across tables or specific table
217
+ */
218
+ async searchLogs(resourceId, searchText, tableName, timespan = 'PT1H', limit = 100) {
219
+ let query;
220
+ if (tableName) {
221
+ query = `
222
+ search in (${tableName}) "${searchText}"
223
+ | where TimeGenerated > ago(${this.convertTimespanToKQL(timespan)})
224
+ | order by TimeGenerated desc
225
+ | take ${limit}
226
+ `.trim();
227
+ }
228
+ else {
229
+ query = `
230
+ search "${searchText}"
231
+ | where TimeGenerated > ago(${this.convertTimespanToKQL(timespan)})
232
+ | order by TimeGenerated desc
233
+ | take ${limit}
234
+ `.trim();
235
+ }
236
+ return this.executeQuery(resourceId, query, timespan);
237
+ }
238
+ /**
239
+ * Get Azure Function logs from FunctionAppLogs table
240
+ */
241
+ async getFunctionLogs(resourceId, functionName, timespan = 'PT1H', severityLevel, limit = 100) {
242
+ let query = `
243
+ FunctionAppLogs
244
+ | where TimeGenerated > ago(${this.convertTimespanToKQL(timespan)})
245
+ `;
246
+ if (functionName) {
247
+ query += `\n | where FunctionName == "${functionName}"`;
248
+ }
249
+ if (severityLevel !== undefined) {
250
+ query += `\n | where LevelId >= ${severityLevel}`;
251
+ }
252
+ query += `
253
+ | order by TimeGenerated desc
254
+ | take ${limit}
255
+ | project TimeGenerated, FunctionName, Message, Level, ExceptionDetails, HostInstanceId
256
+ `.trim();
257
+ return this.executeQuery(resourceId, query, timespan);
258
+ }
259
+ /**
260
+ * Get Azure Function errors
261
+ */
262
+ async getFunctionErrors(resourceId, functionName, timespan = 'PT1H', limit = 100) {
263
+ let query = `
264
+ FunctionAppLogs
265
+ | where TimeGenerated > ago(${this.convertTimespanToKQL(timespan)})
266
+ | where ExceptionDetails != ""
267
+ `;
268
+ if (functionName) {
269
+ query += `\n | where FunctionName == "${functionName}"`;
270
+ }
271
+ query += `
272
+ | order by TimeGenerated desc
273
+ | take ${limit}
274
+ | project TimeGenerated, FunctionName, Message, ExceptionDetails, Level, HostInstanceId
275
+ `.trim();
276
+ return this.executeQuery(resourceId, query, timespan);
277
+ }
278
+ /**
279
+ * Get Azure Function execution statistics
280
+ */
281
+ async getFunctionStats(resourceId, functionName, timespan = 'PT1H') {
282
+ let query = `
283
+ FunctionAppLogs
284
+ | where TimeGenerated > ago(${this.convertTimespanToKQL(timespan)})
285
+ `;
286
+ if (functionName) {
287
+ query += `\n | where FunctionName == "${functionName}"`;
288
+ query += `
289
+ | summarize
290
+ TotalExecutions = count(),
291
+ ErrorCount = countif(ExceptionDetails != ""),
292
+ SuccessCount = countif(ExceptionDetails == ""),
293
+ UniqueHosts = dcount(HostInstanceId)
294
+ | extend SuccessRate = round(100.0 * SuccessCount / TotalExecutions, 2)
295
+ `.trim();
296
+ }
297
+ else {
298
+ query += `
299
+ | summarize
300
+ TotalExecutions = count(),
301
+ ErrorCount = countif(ExceptionDetails != ""),
302
+ SuccessCount = countif(ExceptionDetails == ""),
303
+ UniqueFunctions = dcount(FunctionName),
304
+ UniqueHosts = dcount(HostInstanceId)
305
+ by FunctionName
306
+ | extend SuccessRate = round(100.0 * SuccessCount / TotalExecutions, 2)
307
+ | order by TotalExecutions desc
308
+ `.trim();
309
+ }
310
+ return this.executeQuery(resourceId, query, timespan);
311
+ }
312
+ /**
313
+ * Get Azure Function invocations from traces or requests table
314
+ */
315
+ async getFunctionInvocations(resourceId, functionName, timespan = 'PT1H', limit = 100) {
316
+ // Try requests table first (for HTTP-triggered functions)
317
+ let query = `
318
+ union isfuzzy=true requests, traces
319
+ | where TimeGenerated > ago(${this.convertTimespanToKQL(timespan)})
320
+ `;
321
+ if (functionName) {
322
+ query += `\n | where operation_Name contains "${functionName}" or name contains "${functionName}"`;
323
+ }
324
+ query += `
325
+ | order by TimeGenerated desc
326
+ | take ${limit}
327
+ | project TimeGenerated, operation_Name, name, success, resultCode, duration, timestamp
328
+ `.trim();
329
+ return this.executeQuery(resourceId, query, timespan);
330
+ }
331
+ /**
332
+ * Get all configured resources
333
+ */
334
+ getAllResources() {
335
+ return this.config.resources;
336
+ }
337
+ /**
338
+ * Get only active resources
339
+ */
340
+ getActiveResources() {
341
+ return this.config.resources.filter((r) => r.active);
342
+ }
343
+ /**
344
+ * Get resource by ID and validate it's active
345
+ */
346
+ getResourceById(resourceId) {
347
+ const resource = this.config.resources.find((r) => r.id === resourceId);
348
+ if (!resource) {
349
+ const availableIds = this.config.resources.map((r) => r.id).join(', ');
350
+ throw new Error(`Resource '${resourceId}' not found. Available resources: ${availableIds || 'none'}`);
351
+ }
352
+ if (!resource.active) {
353
+ throw new Error(`Resource '${resourceId}' is inactive. Set 'active: true' in configuration to enable it.`);
354
+ }
355
+ return resource;
356
+ }
357
+ /**
358
+ * Convert ISO 8601 duration to KQL timespan format
359
+ * PT1H -> 1h, P1D -> 1d, PT30M -> 30m, etc.
360
+ */
361
+ convertTimespanToKQL(iso8601Duration) {
362
+ // Handle common patterns
363
+ const patterns = {
364
+ 'PT15M': '15m',
365
+ 'PT30M': '30m',
366
+ 'PT1H': '1h',
367
+ 'PT2H': '2h',
368
+ 'PT6H': '6h',
369
+ 'PT12H': '12h',
370
+ 'PT24H': '24h',
371
+ 'P1D': '1d',
372
+ 'P2D': '2d',
373
+ 'P7D': '7d',
374
+ 'P30D': '30d',
375
+ };
376
+ if (patterns[iso8601Duration]) {
377
+ return patterns[iso8601Duration];
378
+ }
379
+ // Parse ISO 8601 duration
380
+ const regex = /P(?:(\d+)D)?T?(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)S)?/;
381
+ const match = iso8601Duration.match(regex);
382
+ if (!match) {
383
+ // If no match, return as-is (might be KQL format already)
384
+ return iso8601Duration;
385
+ }
386
+ const [, days, hours, minutes, seconds] = match;
387
+ // Convert to KQL format (use largest unit)
388
+ if (days)
389
+ return `${days}d`;
390
+ if (hours)
391
+ return `${hours}h`;
392
+ if (minutes)
393
+ return `${minutes}m`;
394
+ if (seconds)
395
+ return `${seconds}s`;
396
+ return '1h'; // Default fallback
397
+ }
398
+ /**
399
+ * Validate KQL query (basic check)
400
+ */
401
+ validateQuery(query) {
402
+ if (!query || query.trim().length === 0) {
403
+ return { valid: false, error: 'Query cannot be empty' };
404
+ }
405
+ // Check for dangerous operations (optional - KQL is read-only by nature)
406
+ const dangerousKeywords = ['invoke', 'execute', 'evaluate'];
407
+ const lowerQuery = query.toLowerCase();
408
+ for (const keyword of dangerousKeywords) {
409
+ if (lowerQuery.includes(keyword)) {
410
+ return {
411
+ valid: false,
412
+ error: `Query contains potentially dangerous keyword: ${keyword}`
413
+ };
414
+ }
415
+ }
416
+ return { valid: true };
417
+ }
418
+ }
419
+ //# sourceMappingURL=log-analytics-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-analytics-service.js","sourceRoot":"","sources":["../../src/services/log-analytics-service.ts"],"names":[],"mappings":"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"}
@@ -5,14 +5,7 @@
5
5
  * LLM accuracy when calling these tools. Based on Anthropic research showing
6
6
  * 72% → 90% accuracy improvement with examples.
7
7
  */
8
- /**
9
- * Helper function to append examples to a description string.
10
- * Formats examples as a bulleted list for easy parsing by LLMs.
11
- */
12
- export declare function descWithExamples(description: string, examples: {
13
- label: string;
14
- value: string;
15
- }[]): string;
8
+ export { descWithExamples } from '@mcp-consultant-tools/core';
16
9
  export declare const KQL_EXAMPLES: {
17
10
  label: string;
18
11
  value: string;
@@ -1 +1 @@
1
- {"version":3,"file":"tool-examples.d.ts","sourceRoot":"","sources":["../src/tool-examples.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,GAC3C,MAAM,CAMR;AAMD,eAAO,MAAM,YAAY;;;GAiBxB,CAAC;AAMF,eAAO,MAAM,iBAAiB;;;GAM7B,CAAC;AAMF,eAAO,MAAM,sBAAsB;;;GAIlC,CAAC;AAMF,eAAO,MAAM,mBAAmB;;;GAM/B,CAAC;AAMF,eAAO,MAAM,iBAAiB;;;GAI7B,CAAC;AAMF,eAAO,MAAM,sBAAsB;;;GAGlC,CAAC;AAMF,eAAO,MAAM,iBAAiB;;;GAM7B,CAAC"}
1
+ {"version":3,"file":"tool-examples.d.ts","sourceRoot":"","sources":["../src/tool-examples.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAM9D,eAAO,MAAM,YAAY;;;GAiBxB,CAAC;AAMF,eAAO,MAAM,iBAAiB;;;GAM7B,CAAC;AAMF,eAAO,MAAM,sBAAsB;;;GAIlC,CAAC;AAMF,eAAO,MAAM,mBAAmB;;;GAM/B,CAAC;AAMF,eAAO,MAAM,iBAAiB;;;GAI7B,CAAC;AAMF,eAAO,MAAM,sBAAsB;;;GAGlC,CAAC;AAMF,eAAO,MAAM,iBAAiB;;;GAM7B,CAAC"}
@@ -5,18 +5,7 @@
5
5
  * LLM accuracy when calling these tools. Based on Anthropic research showing
6
6
  * 72% → 90% accuracy improvement with examples.
7
7
  */
8
- /**
9
- * Helper function to append examples to a description string.
10
- * Formats examples as a bulleted list for easy parsing by LLMs.
11
- */
12
- export function descWithExamples(description, examples) {
13
- if (examples.length === 0)
14
- return description;
15
- const exampleLines = examples
16
- .map(ex => ` - ${ex.label}: \`${ex.value}\``)
17
- .join('\n');
18
- return `${description}\n\nExamples:\n${exampleLines}`;
19
- }
8
+ export { descWithExamples } from '@mcp-consultant-tools/core';
20
9
  // ========================================
21
10
  // KQL Query Examples
22
11
  // ========================================
@@ -1 +1 @@
1
- {"version":3,"file":"tool-examples.js","sourceRoot":"","sources":["../src/tool-examples.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-examples.js","sourceRoot":"","sources":["../src/tool-examples.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ServiceContext } from '../types.js';
2
+ export declare function registerFunctionTools(server: any, ctx: ServiceContext): void;
3
+ //# sourceMappingURL=function-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function-tools.d.ts","sourceRoot":"","sources":["../../src/tools/function-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAelD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAimB5E"}