@mcp-consultant-tools/log-analytics 28.0.0 → 29.0.0-beta.1

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,536 @@
1
+ import { z } from 'zod';
2
+ import { formatTableAsMarkdown, filterColumns, resolveColumnPreset, } from '../utils/loganalytics-formatters.js';
3
+ import { descWithExamples, TIMESPAN_EXAMPLES, COLUMN_PRESET_EXAMPLES, APP_NAME_EXAMPLES, OUTPUT_FORMAT_EXAMPLES, SEVERITY_EXAMPLES, } from '../tool-examples.js';
4
+ export function registerFunctionTools(server, ctx) {
5
+ server.tool("la-get-fn-logs", "Get Azure Function logs from FunctionAppLogs table with optional filtering", {
6
+ resourceId: z.string().describe("Resource ID"),
7
+ functionName: z.string().optional().describe(descWithExamples("Function name to filter by (optional)", APP_NAME_EXAMPLES)),
8
+ timespan: z.string().optional().describe(descWithExamples("Time range (default: PT1H)", TIMESPAN_EXAMPLES)),
9
+ severityLevel: z.number().optional().describe(descWithExamples("Minimum severity level", SEVERITY_EXAMPLES)),
10
+ limit: z.number().optional().describe("Maximum number of results (default: 100)"),
11
+ columnPreset: z.enum(["minimal", "investigation", "full"]).optional()
12
+ .describe(descWithExamples("Column preset for filtering results", COLUMN_PRESET_EXAMPLES)),
13
+ columns: z.array(z.string()).optional()
14
+ .describe("Custom columns to include (overrides columnPreset)"),
15
+ outputFormat: z.enum(["json", "markdown"]).optional()
16
+ .describe(descWithExamples("Output format (default: json)", OUTPUT_FORMAT_EXAMPLES)),
17
+ }, async ({ resourceId, functionName, timespan, severityLevel, limit, columnPreset, columns, outputFormat }) => {
18
+ try {
19
+ const result = await ctx.logAnalytics.getFunctionLogs(resourceId, functionName, timespan || 'PT1H', severityLevel, limit || 100);
20
+ const columnsToInclude = resolveColumnPreset(columnPreset, columns);
21
+ const filteredTables = result.tables.map((t) => filterColumns(t, columnsToInclude));
22
+ const filteredResult = { ...result, tables: filteredTables };
23
+ if (outputFormat === 'markdown' && filteredTables.length > 0) {
24
+ const markdown = filteredTables.map((t) => formatTableAsMarkdown(t)).join('\n\n');
25
+ return { content: [{ type: "text", text: markdown }] };
26
+ }
27
+ return {
28
+ content: [{ type: "text", text: JSON.stringify(filteredResult, null, 2) }],
29
+ };
30
+ }
31
+ catch (error) {
32
+ console.error("Error getting function logs:", error);
33
+ return {
34
+ content: [{ type: "text", text: `Failed to get function logs: ${error.message}` }],
35
+ isError: true,
36
+ };
37
+ }
38
+ });
39
+ server.tool("la-get-fn-errors", "Get Azure Function error logs with exception details", {
40
+ resourceId: z.string().describe("Resource ID"),
41
+ functionName: z.string().optional().describe(descWithExamples("Function name to filter by (optional)", APP_NAME_EXAMPLES)),
42
+ timespan: z.string().optional().describe(descWithExamples("Time range (default: PT1H)", TIMESPAN_EXAMPLES)),
43
+ limit: z.number().optional().describe("Maximum number of results (default: 100)"),
44
+ columnPreset: z.enum(["minimal", "investigation", "full"]).optional()
45
+ .describe(descWithExamples("Column preset for filtering results", COLUMN_PRESET_EXAMPLES)),
46
+ columns: z.array(z.string()).optional()
47
+ .describe("Custom columns to include (overrides columnPreset)"),
48
+ outputFormat: z.enum(["json", "markdown"]).optional()
49
+ .describe(descWithExamples("Output format (default: json)", OUTPUT_FORMAT_EXAMPLES)),
50
+ }, async ({ resourceId, functionName, timespan, limit, columnPreset, columns, outputFormat }) => {
51
+ try {
52
+ const result = await ctx.logAnalytics.getFunctionErrors(resourceId, functionName, timespan || 'PT1H', limit || 100);
53
+ const columnsToInclude = resolveColumnPreset(columnPreset, columns);
54
+ const filteredTables = result.tables.map((t) => filterColumns(t, columnsToInclude));
55
+ const filteredResult = { ...result, tables: filteredTables };
56
+ if (outputFormat === 'markdown' && filteredTables.length > 0) {
57
+ const markdown = filteredTables.map((t) => formatTableAsMarkdown(t)).join('\n\n');
58
+ return { content: [{ type: "text", text: markdown }] };
59
+ }
60
+ return {
61
+ content: [{ type: "text", text: JSON.stringify(filteredResult, null, 2) }],
62
+ };
63
+ }
64
+ catch (error) {
65
+ console.error("Error getting function errors:", error);
66
+ return {
67
+ content: [{ type: "text", text: `Failed to get function errors: ${error.message}` }],
68
+ isError: true,
69
+ };
70
+ }
71
+ });
72
+ server.tool("la-get-fn-stats", "Get execution statistics for Azure Functions (count, success rate, errors). Returns aggregated data - no column filtering needed.", {
73
+ resourceId: z.string().describe("Resource ID"),
74
+ functionName: z.string().optional().describe(descWithExamples("Function name (optional, returns stats for all functions if not specified)", APP_NAME_EXAMPLES)),
75
+ timespan: z.string().optional().describe(descWithExamples("Time range (default: PT1H)", TIMESPAN_EXAMPLES)),
76
+ outputFormat: z.enum(["json", "markdown"]).optional()
77
+ .describe(descWithExamples("Output format (default: json)", OUTPUT_FORMAT_EXAMPLES)),
78
+ }, async ({ resourceId, functionName, timespan, outputFormat }) => {
79
+ try {
80
+ const result = await ctx.logAnalytics.getFunctionStats(resourceId, functionName, timespan || 'PT1H');
81
+ if (outputFormat === 'markdown' && result.tables && result.tables.length > 0) {
82
+ const markdown = result.tables.map((t) => formatTableAsMarkdown(t)).join('\n\n');
83
+ return { content: [{ type: "text", text: markdown }] };
84
+ }
85
+ return {
86
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
87
+ };
88
+ }
89
+ catch (error) {
90
+ console.error("Error getting function stats:", error);
91
+ return {
92
+ content: [{ type: "text", text: `Failed to get function stats: ${error.message}` }],
93
+ isError: true,
94
+ };
95
+ }
96
+ });
97
+ server.tool("la-get-fn-invocations", "Get Azure Function invocation history from requests/traces tables", {
98
+ resourceId: z.string().describe("Resource ID"),
99
+ functionName: z.string().optional().describe(descWithExamples("Function name to filter by (optional)", APP_NAME_EXAMPLES)),
100
+ timespan: z.string().optional().describe(descWithExamples("Time range (default: PT1H)", TIMESPAN_EXAMPLES)),
101
+ limit: z.number().optional().describe("Maximum number of results (default: 100)"),
102
+ columnPreset: z.enum(["minimal", "investigation", "full"]).optional()
103
+ .describe(descWithExamples("Column preset for filtering results", COLUMN_PRESET_EXAMPLES)),
104
+ columns: z.array(z.string()).optional()
105
+ .describe("Custom columns to include (overrides columnPreset)"),
106
+ outputFormat: z.enum(["json", "markdown"]).optional()
107
+ .describe(descWithExamples("Output format (default: json)", OUTPUT_FORMAT_EXAMPLES)),
108
+ }, async ({ resourceId, functionName, timespan, limit, columnPreset, columns, outputFormat }) => {
109
+ try {
110
+ const result = await ctx.logAnalytics.getFunctionInvocations(resourceId, functionName, timespan || 'PT1H', limit || 100);
111
+ const columnsToInclude = resolveColumnPreset(columnPreset, columns);
112
+ const filteredTables = result.tables.map((t) => filterColumns(t, columnsToInclude));
113
+ const filteredResult = { ...result, tables: filteredTables };
114
+ if (outputFormat === 'markdown' && filteredTables.length > 0) {
115
+ const markdown = filteredTables.map((t) => formatTableAsMarkdown(t)).join('\n\n');
116
+ return { content: [{ type: "text", text: markdown }] };
117
+ }
118
+ return {
119
+ content: [{ type: "text", text: JSON.stringify(filteredResult, null, 2) }],
120
+ };
121
+ }
122
+ catch (error) {
123
+ console.error("Error getting function invocations:", error);
124
+ return {
125
+ content: [{ type: "text", text: `Failed to get function invocations: ${error.message}` }],
126
+ isError: true,
127
+ };
128
+ }
129
+ });
130
+ server.tool("la-get-error-summary", "Get aggregated error summary by type - ideal for starting investigations. Returns counts, first/last seen, and sample messages.", {
131
+ resourceId: z.string().describe("Resource ID"),
132
+ timespan: z.string().optional().describe(descWithExamples("Time range (default: PT1H)", TIMESPAN_EXAMPLES)),
133
+ tableName: z.enum(["AppExceptions", "AppTraces", "FunctionAppLogs"]).optional()
134
+ .describe("Table to analyze (default: AppExceptions)"),
135
+ minCount: z.number().optional().describe("Minimum error count to include (default: 1)"),
136
+ deduplicateRetries: z.boolean().optional()
137
+ .describe("Group by OperationId to deduplicate retry attempts (default: true). Shows UniqueErrors count and total RetryCount."),
138
+ outputFormat: z.enum(["json", "markdown"]).optional()
139
+ .describe(descWithExamples("Output format (default: markdown for readability)", OUTPUT_FORMAT_EXAMPLES)),
140
+ }, async ({ resourceId, timespan, tableName, minCount, deduplicateRetries, outputFormat }) => {
141
+ try {
142
+ const table = tableName || 'AppExceptions';
143
+ const timespanValue = timespan || 'PT1H';
144
+ const minCountValue = minCount || 1;
145
+ const dedupe = deduplicateRetries !== false;
146
+ let query;
147
+ if (table === 'AppExceptions') {
148
+ if (dedupe) {
149
+ query = `
150
+ AppExceptions
151
+ | summarize
152
+ RetryCount = count(),
153
+ FirstSeen = min(TimeGenerated),
154
+ LastSeen = max(TimeGenerated),
155
+ SampleMessage = take_any(OuterMessage)
156
+ by OperationId, ExceptionType, AppRoleName
157
+ | summarize
158
+ UniqueErrors = count(),
159
+ TotalRetries = sum(RetryCount),
160
+ FirstSeen = min(FirstSeen),
161
+ LastSeen = max(LastSeen),
162
+ SampleMessage = take_any(SampleMessage)
163
+ by ExceptionType, AppRoleName
164
+ | where UniqueErrors >= ${minCountValue}
165
+ | order by UniqueErrors desc
166
+ `;
167
+ }
168
+ else {
169
+ query = `
170
+ AppExceptions
171
+ | summarize
172
+ Count = count(),
173
+ FirstSeen = min(TimeGenerated),
174
+ LastSeen = max(TimeGenerated),
175
+ SampleMessage = take_any(OuterMessage)
176
+ by ExceptionType, AppRoleName
177
+ | where Count >= ${minCountValue}
178
+ | order by Count desc
179
+ `;
180
+ }
181
+ }
182
+ else if (table === 'AppTraces') {
183
+ if (dedupe) {
184
+ query = `
185
+ AppTraces
186
+ | where SeverityLevel >= 3
187
+ | summarize
188
+ RetryCount = count(),
189
+ FirstSeen = min(TimeGenerated),
190
+ LastSeen = max(TimeGenerated),
191
+ SampleMessage = take_any(Message)
192
+ by OperationId, AppRoleName, SeverityLevel
193
+ | summarize
194
+ UniqueErrors = count(),
195
+ TotalRetries = sum(RetryCount),
196
+ FirstSeen = min(FirstSeen),
197
+ LastSeen = max(LastSeen),
198
+ SampleMessage = take_any(SampleMessage)
199
+ by AppRoleName, SeverityLevel
200
+ | where UniqueErrors >= ${minCountValue}
201
+ | order by UniqueErrors desc
202
+ `;
203
+ }
204
+ else {
205
+ query = `
206
+ AppTraces
207
+ | where SeverityLevel >= 3
208
+ | summarize
209
+ Count = count(),
210
+ FirstSeen = min(TimeGenerated),
211
+ LastSeen = max(TimeGenerated),
212
+ SampleMessage = take_any(Message)
213
+ by AppRoleName, SeverityLevel
214
+ | where Count >= ${minCountValue}
215
+ | order by Count desc
216
+ `;
217
+ }
218
+ }
219
+ else {
220
+ if (dedupe) {
221
+ query = `
222
+ FunctionAppLogs
223
+ | where ExceptionDetails != ''
224
+ | summarize
225
+ RetryCount = count(),
226
+ FirstSeen = min(TimeGenerated),
227
+ LastSeen = max(TimeGenerated),
228
+ SampleMessage = take_any(Message)
229
+ by InvocationId, FunctionName
230
+ | summarize
231
+ UniqueErrors = count(),
232
+ TotalRetries = sum(RetryCount),
233
+ FirstSeen = min(FirstSeen),
234
+ LastSeen = max(LastSeen),
235
+ SampleMessage = take_any(SampleMessage)
236
+ by FunctionName
237
+ | where UniqueErrors >= ${minCountValue}
238
+ | order by UniqueErrors desc
239
+ `;
240
+ }
241
+ else {
242
+ query = `
243
+ FunctionAppLogs
244
+ | where ExceptionDetails != ''
245
+ | summarize
246
+ Count = count(),
247
+ FirstSeen = min(TimeGenerated),
248
+ LastSeen = max(TimeGenerated),
249
+ SampleMessage = take_any(Message)
250
+ by FunctionName
251
+ | where Count >= ${minCountValue}
252
+ | order by Count desc
253
+ `;
254
+ }
255
+ }
256
+ const result = await ctx.logAnalytics.executeQuery(resourceId, query, timespanValue);
257
+ const format = outputFormat || 'markdown';
258
+ if (format === 'markdown' && result.tables && result.tables.length > 0) {
259
+ const dedupeNote = dedupe ? ' (deduplicated by OperationId)' : '';
260
+ const markdown = `## Error Summary (${table})${dedupeNote}\n\n**Time range:** ${timespanValue}\n\n` +
261
+ result.tables.map((t) => formatTableAsMarkdown(t)).join('\n\n');
262
+ return { content: [{ type: "text", text: markdown }] };
263
+ }
264
+ return {
265
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
266
+ };
267
+ }
268
+ catch (error) {
269
+ console.error("Error getting error summary:", error);
270
+ return {
271
+ content: [{ type: "text", text: `Failed to get error summary: ${error.message}` }],
272
+ isError: true,
273
+ };
274
+ }
275
+ });
276
+ server.tool("la-investigate-app", "Combined investigation tool: searches AppTraces + AppExceptions, returns summary + recent error details. Best starting point for app investigations.", {
277
+ resourceId: z.string().describe("Resource ID"),
278
+ appNamePattern: z.string().optional().describe(descWithExamples("Filter by app name (searches AppRoleName). Partial match supported.", APP_NAME_EXAMPLES)),
279
+ timespan: z.string().optional().describe(descWithExamples("Time range (default: PT1H)", TIMESPAN_EXAMPLES)),
280
+ includeDetails: z.boolean().optional().describe("Include recent error details (default: true)"),
281
+ detailsLimit: z.number().optional().describe("Max recent errors to include (default: 20)"),
282
+ deduplicateRetries: z.boolean().optional()
283
+ .describe("Group by OperationId to deduplicate retry attempts (default: true)"),
284
+ }, async ({ resourceId, appNamePattern, timespan, includeDetails, detailsLimit, deduplicateRetries }) => {
285
+ try {
286
+ const timespanValue = timespan || 'PT1H';
287
+ const showDetails = includeDetails !== false;
288
+ const limit = detailsLimit || 20;
289
+ const dedupe = deduplicateRetries !== false;
290
+ const appFilter = appNamePattern
291
+ ? `| where AppRoleName contains "${appNamePattern}"`
292
+ : '';
293
+ const exceptionSummaryQuery = dedupe ? `
294
+ AppExceptions
295
+ ${appFilter}
296
+ | summarize
297
+ RetryCount = count(),
298
+ FirstSeen = min(TimeGenerated),
299
+ LastSeen = max(TimeGenerated)
300
+ by OperationId, ExceptionType, AppRoleName
301
+ | summarize
302
+ UniqueErrors = count(),
303
+ TotalRetries = sum(RetryCount),
304
+ FirstSeen = min(FirstSeen),
305
+ LastSeen = max(LastSeen)
306
+ by ExceptionType, AppRoleName
307
+ | order by UniqueErrors desc
308
+ | take 20
309
+ ` : `
310
+ AppExceptions
311
+ ${appFilter}
312
+ | summarize
313
+ Count = count(),
314
+ FirstSeen = min(TimeGenerated),
315
+ LastSeen = max(TimeGenerated)
316
+ by ExceptionType, AppRoleName
317
+ | order by Count desc
318
+ | take 20
319
+ `;
320
+ const traceSeverityQuery = dedupe ? `
321
+ AppTraces
322
+ ${appFilter}
323
+ | summarize RetryCount = count() by OperationId, SeverityLevel, AppRoleName
324
+ | summarize UniqueTraces = count(), TotalCount = sum(RetryCount) by SeverityLevel, AppRoleName
325
+ | order by SeverityLevel desc
326
+ ` : `
327
+ AppTraces
328
+ ${appFilter}
329
+ | summarize Count = count() by SeverityLevel, AppRoleName
330
+ | order by SeverityLevel desc
331
+ `;
332
+ const recentErrorsQuery = showDetails ? (dedupe ? `
333
+ AppExceptions
334
+ ${appFilter}
335
+ | summarize
336
+ TimeGenerated = max(TimeGenerated),
337
+ RetryCount = count(),
338
+ OuterMessage = take_any(OuterMessage)
339
+ by OperationId, AppRoleName, ExceptionType
340
+ | project TimeGenerated, AppRoleName, ExceptionType, OuterMessage, RetryCount
341
+ | order by TimeGenerated desc
342
+ | take ${limit}
343
+ ` : `
344
+ AppExceptions
345
+ ${appFilter}
346
+ | project TimeGenerated, AppRoleName, ExceptionType, OuterMessage
347
+ | order by TimeGenerated desc
348
+ | take ${limit}
349
+ `) : null;
350
+ const [exceptionSummary, traceSeverity, recentErrors] = await Promise.all([
351
+ ctx.logAnalytics.executeQuery(resourceId, exceptionSummaryQuery, timespanValue),
352
+ ctx.logAnalytics.executeQuery(resourceId, traceSeverityQuery, timespanValue),
353
+ recentErrorsQuery ? ctx.logAnalytics.executeQuery(resourceId, recentErrorsQuery, timespanValue) : null,
354
+ ]);
355
+ let markdown = `# App Investigation Report\n\n`;
356
+ markdown += `**Filter:** ${appNamePattern || '(all apps)'}\n`;
357
+ markdown += `**Time range:** ${timespanValue}\n`;
358
+ markdown += dedupe ? `**Deduplication:** enabled (grouped by OperationId)\n\n` : '\n';
359
+ markdown += `## Exception Summary\n\n`;
360
+ if (exceptionSummary.tables && exceptionSummary.tables.length > 0 && exceptionSummary.tables[0].rows.length > 0) {
361
+ markdown += formatTableAsMarkdown(exceptionSummary.tables[0]);
362
+ }
363
+ else {
364
+ markdown += '*No exceptions found*';
365
+ }
366
+ markdown += '\n\n';
367
+ markdown += `## Trace Severity Distribution\n\n`;
368
+ if (traceSeverity.tables && traceSeverity.tables.length > 0 && traceSeverity.tables[0].rows.length > 0) {
369
+ markdown += formatTableAsMarkdown(traceSeverity.tables[0]);
370
+ }
371
+ else {
372
+ markdown += '*No traces found*';
373
+ }
374
+ markdown += '\n\n';
375
+ if (showDetails && recentErrors) {
376
+ markdown += `## Recent Errors (${limit} max)\n\n`;
377
+ if (recentErrors.tables && recentErrors.tables.length > 0 && recentErrors.tables[0].rows.length > 0) {
378
+ markdown += formatTableAsMarkdown(recentErrors.tables[0]);
379
+ }
380
+ else {
381
+ markdown += '*No recent errors*';
382
+ }
383
+ }
384
+ return { content: [{ type: "text", text: markdown }] };
385
+ }
386
+ catch (error) {
387
+ console.error("Error investigating app:", error);
388
+ return {
389
+ content: [{ type: "text", text: `Failed to investigate app: ${error.message}` }],
390
+ isError: true,
391
+ };
392
+ }
393
+ });
394
+ server.tool("la-investigate-sync", "Investigate SmartConnectorCloud (SCC) sync failures. Only useful for clients using SmartConnectorCloud. Auto-derives sync app name from workspace ID (log-{env}-{client}-... → func-{env}-{client}-sc-sync-...). Best tool for SCC sync debugging.", {
395
+ resourceId: z.string().describe("Resource ID (e.g., 'log-dev-rtpi-uks-01'). Environment and client are auto-extracted."),
396
+ timespan: z.string().optional().describe(descWithExamples("Time range (default: PT8H - typical work day)", TIMESPAN_EXAMPLES)),
397
+ includeDetails: z.boolean().optional().describe("Include recent error details (default: true)"),
398
+ detailsLimit: z.number().optional().describe("Max recent errors to include (default: 10)"),
399
+ }, async ({ resourceId, timespan, includeDetails, detailsLimit }) => {
400
+ try {
401
+ const timespanValue = timespan || 'PT8H';
402
+ const showDetails = includeDetails !== false;
403
+ const limit = detailsLimit || 10;
404
+ const match = resourceId.match(/^log-([^-]+)-([^-]+)/);
405
+ if (!match) {
406
+ return {
407
+ content: [{
408
+ type: "text",
409
+ text: `Could not parse environment/client from resourceId '${resourceId}'. Expected format: log-{environment}-{client}-...`,
410
+ }],
411
+ isError: true,
412
+ };
413
+ }
414
+ const environment = match[1];
415
+ const client = match[2];
416
+ const syncAppPattern = `func-${environment}-${client}-sc-sync`;
417
+ const errorsByFunctionQuery = `
418
+ AppExceptions
419
+ | where AppRoleName contains "${syncAppPattern}"
420
+ | extend FunctionName = tostring(Properties.AzureFunctions_FunctionName)
421
+ | summarize
422
+ RetryCount = count(),
423
+ FirstSeen = min(TimeGenerated),
424
+ LastSeen = max(TimeGenerated),
425
+ SampleMessage = take_any(OuterMessage)
426
+ by OperationId, FunctionName, ExceptionType
427
+ | summarize
428
+ UniqueErrors = count(),
429
+ TotalRetries = sum(RetryCount),
430
+ FirstSeen = min(FirstSeen),
431
+ LastSeen = max(LastSeen),
432
+ SampleMessage = take_any(SampleMessage)
433
+ by FunctionName, ExceptionType
434
+ | order by UniqueErrors desc
435
+ `;
436
+ const errorCategoryQuery = `
437
+ AppExceptions
438
+ | where AppRoleName contains "${syncAppPattern}"
439
+ | extend ErrorCategory = case(
440
+ ExceptionType contains "FaultException" or ExceptionType contains "OrganizationService", "Dataverse",
441
+ ExceptionType contains "ServiceBus", "ServiceBus",
442
+ ExceptionType contains "Sql", "Database",
443
+ ExceptionType contains "Timeout", "Timeout",
444
+ ExceptionType contains "Socket" or ExceptionType contains "Http", "Network",
445
+ "Other"
446
+ )
447
+ | summarize
448
+ RetryCount = count(),
449
+ UniqueOps = dcount(OperationId)
450
+ by ErrorCategory
451
+ | order by UniqueOps desc
452
+ `;
453
+ const recentErrorsQuery = showDetails ? `
454
+ AppExceptions
455
+ | where AppRoleName contains "${syncAppPattern}"
456
+ | extend FunctionName = tostring(Properties.AzureFunctions_FunctionName)
457
+ | summarize
458
+ TimeGenerated = max(TimeGenerated),
459
+ RetryCount = count(),
460
+ OuterMessage = take_any(OuterMessage)
461
+ by OperationId, FunctionName, ExceptionType
462
+ | project TimeGenerated, FunctionName, ExceptionType, OuterMessage, RetryCount
463
+ | order by TimeGenerated desc
464
+ | take ${limit}
465
+ ` : null;
466
+ const errorTracesQuery = `
467
+ AppTraces
468
+ | where AppRoleName contains "${syncAppPattern}"
469
+ | where SeverityLevel >= 3
470
+ | summarize
471
+ RetryCount = count()
472
+ by OperationId, Message
473
+ | summarize
474
+ UniqueErrors = count(),
475
+ TotalCount = sum(RetryCount)
476
+ by Message
477
+ | order by UniqueErrors desc
478
+ | take 10
479
+ `;
480
+ const [errorsByFunction, errorCategory, recentErrors, errorTraces] = await Promise.all([
481
+ ctx.logAnalytics.executeQuery(resourceId, errorsByFunctionQuery, timespanValue),
482
+ ctx.logAnalytics.executeQuery(resourceId, errorCategoryQuery, timespanValue),
483
+ recentErrorsQuery ? ctx.logAnalytics.executeQuery(resourceId, recentErrorsQuery, timespanValue) : null,
484
+ ctx.logAnalytics.executeQuery(resourceId, errorTracesQuery, timespanValue),
485
+ ]);
486
+ let markdown = `# SmartConnector Sync Investigation\n\n`;
487
+ markdown += `**Environment:** ${environment}\n`;
488
+ markdown += `**Client:** ${client}\n`;
489
+ markdown += `**Sync App:** ${syncAppPattern}-*\n`;
490
+ markdown += `**Time range:** ${timespanValue}\n`;
491
+ markdown += `**Deduplication:** enabled (grouped by OperationId)\n\n`;
492
+ markdown += `## Error Categories\n\n`;
493
+ if (errorCategory.tables?.[0]?.rows?.length > 0) {
494
+ markdown += formatTableAsMarkdown(errorCategory.tables[0]);
495
+ }
496
+ else {
497
+ markdown += '*No errors found* ✅';
498
+ }
499
+ markdown += '\n\n';
500
+ markdown += `## Errors by Sync Operation\n\n`;
501
+ if (errorsByFunction.tables?.[0]?.rows?.length > 0) {
502
+ markdown += formatTableAsMarkdown(errorsByFunction.tables[0]);
503
+ }
504
+ else {
505
+ markdown += '*No errors found* ✅';
506
+ }
507
+ markdown += '\n\n';
508
+ markdown += `## Error Traces (Severity 3+)\n\n`;
509
+ if (errorTraces.tables?.[0]?.rows?.length > 0) {
510
+ markdown += formatTableAsMarkdown(errorTraces.tables[0]);
511
+ }
512
+ else {
513
+ markdown += '*No error traces found*';
514
+ }
515
+ markdown += '\n\n';
516
+ if (showDetails && recentErrors) {
517
+ markdown += `## Recent Errors (${limit} max)\n\n`;
518
+ if (recentErrors.tables?.[0]?.rows?.length > 0) {
519
+ markdown += formatTableAsMarkdown(recentErrors.tables[0]);
520
+ }
521
+ else {
522
+ markdown += '*No recent errors*';
523
+ }
524
+ }
525
+ return { content: [{ type: "text", text: markdown }] };
526
+ }
527
+ catch (error) {
528
+ console.error("Error investigating sync:", error);
529
+ return {
530
+ content: [{ type: "text", text: `Failed to investigate sync: ${error.message}` }],
531
+ isError: true,
532
+ };
533
+ }
534
+ });
535
+ }
536
+ //# sourceMappingURL=function-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function-tools.js","sourceRoot":"","sources":["../../src/tools/function-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Tools barrel export + combined registration
3
+ */
4
+ import type { ServiceContext } from '../types.js';
5
+ export declare function registerAllTools(server: any, ctx: ServiceContext): void;
6
+ export { registerQueryTools } from './query-tools.js';
7
+ export { registerWorkspaceTools } from './workspace-tools.js';
8
+ export { registerFunctionTools } from './function-tools.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAKlD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAIvE;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { registerQueryTools } from './query-tools.js';
2
+ import { registerWorkspaceTools } from './workspace-tools.js';
3
+ import { registerFunctionTools } from './function-tools.js';
4
+ export function registerAllTools(server, ctx) {
5
+ registerWorkspaceTools(server, ctx);
6
+ registerQueryTools(server, ctx);
7
+ registerFunctionTools(server, ctx);
8
+ }
9
+ export { registerQueryTools } from './query-tools.js';
10
+ export { registerWorkspaceTools } from './workspace-tools.js';
11
+ export { registerFunctionTools } from './function-tools.js';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,MAAM,UAAU,gBAAgB,CAAC,MAAW,EAAE,GAAmB;IAC/D,sBAAsB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ServiceContext } from '../types.js';
2
+ export declare function registerQueryTools(server: any, ctx: ServiceContext): void;
3
+ //# sourceMappingURL=query-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-tools.d.ts","sourceRoot":"","sources":["../../src/tools/query-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAelD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAoIzE"}