snow-flow 8.39.2 → 8.39.4

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 (88) hide show
  1. package/dist/mcp/servicenow-mcp-unified/shared/permission-validator.d.ts.map +1 -1
  2. package/dist/mcp/servicenow-mcp-unified/shared/types.d.ts +1 -1
  3. package/dist/mcp/servicenow-mcp-unified/shared/types.d.ts.map +1 -1
  4. package/dist/mcp/servicenow-mcp-unified/tools/automation/index.d.ts +6 -0
  5. package/dist/mcp/servicenow-mcp-unified/tools/automation/index.d.ts.map +1 -1
  6. package/dist/mcp/servicenow-mcp-unified/tools/automation/index.js +19 -1
  7. package/dist/mcp/servicenow-mcp-unified/tools/automation/index.js.map +1 -1
  8. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_get_email_logs.d.ts +12 -0
  9. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_get_email_logs.d.ts.map +1 -0
  10. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_get_email_logs.js +185 -0
  11. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_get_email_logs.js.map +1 -0
  12. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_get_flow_execution_logs.d.ts +12 -0
  13. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_get_flow_execution_logs.d.ts.map +1 -0
  14. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_get_flow_execution_logs.js +280 -0
  15. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_get_flow_execution_logs.js.map +1 -0
  16. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_get_inbound_http_logs.d.ts +12 -0
  17. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_get_inbound_http_logs.d.ts.map +1 -0
  18. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_get_inbound_http_logs.js +233 -0
  19. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_get_inbound_http_logs.js.map +1 -0
  20. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_get_outbound_http_logs.d.ts +12 -0
  21. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_get_outbound_http_logs.d.ts.map +1 -0
  22. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_get_outbound_http_logs.js +218 -0
  23. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_get_outbound_http_logs.js.map +1 -0
  24. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_get_scheduled_job_logs.d.ts +12 -0
  25. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_get_scheduled_job_logs.d.ts.map +1 -0
  26. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_get_scheduled_job_logs.js +276 -0
  27. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_get_scheduled_job_logs.js.map +1 -0
  28. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_get_slow_queries.d.ts +12 -0
  29. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_get_slow_queries.d.ts.map +1 -0
  30. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_get_slow_queries.js +340 -0
  31. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_get_slow_queries.js.map +1 -0
  32. package/dist/mcp/servicenow-mcp-unified/tools/integration/index.d.ts +10 -0
  33. package/dist/mcp/servicenow-mcp-unified/tools/integration/index.d.ts.map +1 -1
  34. package/dist/mcp/servicenow-mcp-unified/tools/integration/index.js +34 -1
  35. package/dist/mcp/servicenow-mcp-unified/tools/integration/index.js.map +1 -1
  36. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_configure_mid_server.d.ts +12 -0
  37. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_configure_mid_server.d.ts.map +1 -0
  38. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_configure_mid_server.js +397 -0
  39. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_configure_mid_server.js.map +1 -0
  40. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_create_connection_alias.d.ts +12 -0
  41. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_create_connection_alias.d.ts.map +1 -0
  42. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_create_connection_alias.js +234 -0
  43. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_create_connection_alias.js.map +1 -0
  44. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_create_credential_alias.d.ts +12 -0
  45. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_create_credential_alias.d.ts.map +1 -0
  46. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_create_credential_alias.js +280 -0
  47. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_create_credential_alias.js.map +1 -0
  48. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_create_flow_action.d.ts +12 -0
  49. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_create_flow_action.d.ts.map +1 -0
  50. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_create_flow_action.js +358 -0
  51. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_create_flow_action.js.map +1 -0
  52. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_create_oauth_profile.d.ts +12 -0
  53. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_create_oauth_profile.d.ts.map +1 -0
  54. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_create_oauth_profile.js +237 -0
  55. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_create_oauth_profile.js.map +1 -0
  56. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_install_spoke.d.ts +12 -0
  57. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_install_spoke.d.ts.map +1 -0
  58. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_install_spoke.js +326 -0
  59. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_install_spoke.js.map +1 -0
  60. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_manage_mid_capabilities.d.ts +12 -0
  61. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_manage_mid_capabilities.d.ts.map +1 -0
  62. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_manage_mid_capabilities.js +442 -0
  63. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_manage_mid_capabilities.js.map +1 -0
  64. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_manage_oauth_tokens.d.ts +12 -0
  65. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_manage_oauth_tokens.d.ts.map +1 -0
  66. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_manage_oauth_tokens.js +348 -0
  67. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_manage_oauth_tokens.js.map +1 -0
  68. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_manage_spoke_connection.d.ts +12 -0
  69. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_manage_spoke_connection.d.ts.map +1 -0
  70. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_manage_spoke_connection.js +427 -0
  71. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_manage_spoke_connection.js.map +1 -0
  72. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_test_mid_connectivity.d.ts +12 -0
  73. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_test_mid_connectivity.d.ts.map +1 -0
  74. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_test_mid_connectivity.js +432 -0
  75. package/dist/mcp/servicenow-mcp-unified/tools/integration/snow_test_mid_connectivity.js.map +1 -0
  76. package/dist/templates/agents-md-template.d.ts +2 -2
  77. package/dist/templates/agents-md-template.d.ts.map +1 -1
  78. package/dist/templates/agents-md-template.js +57 -2
  79. package/dist/templates/agents-md-template.js.map +1 -1
  80. package/dist/templates/claude-md-template.d.ts +2 -2
  81. package/dist/templates/claude-md-template.d.ts.map +1 -1
  82. package/dist/templates/claude-md-template.js +17 -1
  83. package/dist/templates/claude-md-template.js.map +1 -1
  84. package/dist/version.d.ts +1 -1
  85. package/dist/version.d.ts.map +1 -1
  86. package/dist/version.js +1 -1
  87. package/dist/version.js.map +1 -1
  88. package/package.json +2 -2
@@ -0,0 +1,276 @@
1
+ "use strict";
2
+ /**
3
+ * snow_get_scheduled_job_logs - View Scheduled Job execution history
4
+ *
5
+ * Retrieve scheduled job execution logs to monitor job runs,
6
+ * identify failures, and track job performance.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.author = exports.version = exports.toolDefinition = void 0;
10
+ exports.execute = execute;
11
+ const auth_js_1 = require("../../shared/auth.js");
12
+ const error_handler_js_1 = require("../../shared/error-handler.js");
13
+ exports.toolDefinition = {
14
+ name: 'snow_get_scheduled_job_logs',
15
+ description: 'Retrieve scheduled job execution history and logs for monitoring automation, identifying failures, and tracking performance',
16
+ // Metadata for tool discovery (not sent to LLM)
17
+ category: 'automation',
18
+ subcategory: 'monitoring',
19
+ use_cases: ['scheduled-jobs', 'automation', 'monitoring', 'debugging'],
20
+ complexity: 'beginner',
21
+ frequency: 'high',
22
+ // Permission enforcement
23
+ // Classification: READ - Get operation - retrieves data
24
+ permission: 'read',
25
+ allowedRoles: ['developer', 'stakeholder', 'admin'],
26
+ inputSchema: {
27
+ type: 'object',
28
+ properties: {
29
+ job_name: {
30
+ type: 'string',
31
+ description: 'Filter by job name (partial match)'
32
+ },
33
+ state: {
34
+ type: 'string',
35
+ enum: ['ready', 'running', 'complete', 'error', 'cancelled', 'all'],
36
+ description: 'Filter by job state',
37
+ default: 'all'
38
+ },
39
+ job_type: {
40
+ type: 'string',
41
+ enum: ['scheduled', 'run_once', 'on_demand', 'all'],
42
+ description: 'Filter by job type',
43
+ default: 'all'
44
+ },
45
+ include_inactive: {
46
+ type: 'boolean',
47
+ description: 'Include inactive/disabled jobs',
48
+ default: false
49
+ },
50
+ limit: {
51
+ type: 'number',
52
+ description: 'Maximum number of jobs to return',
53
+ default: 50,
54
+ minimum: 1,
55
+ maximum: 200
56
+ },
57
+ since: {
58
+ type: 'string',
59
+ description: 'Get jobs that ran since this timestamp (ISO 8601 or relative like "1h", "30m", "7d")'
60
+ },
61
+ failed_only: {
62
+ type: 'boolean',
63
+ description: 'Only show jobs that had errors in their last run',
64
+ default: false
65
+ },
66
+ include_logs: {
67
+ type: 'boolean',
68
+ description: 'Include recent syslog entries for each job',
69
+ default: false
70
+ }
71
+ }
72
+ }
73
+ };
74
+ async function execute(args, context) {
75
+ var job_name = args.job_name;
76
+ var state = args.state || 'all';
77
+ var job_type = args.job_type || 'all';
78
+ var include_inactive = args.include_inactive || false;
79
+ var limit = args.limit || 50;
80
+ var since = args.since;
81
+ var failed_only = args.failed_only || false;
82
+ var include_logs = args.include_logs || false;
83
+ try {
84
+ var client = await (0, auth_js_1.getAuthenticatedClient)(context);
85
+ // Build query for sys_trigger (scheduled jobs)
86
+ var queryParts = [];
87
+ // Job name filter
88
+ if (job_name) {
89
+ queryParts.push('nameLIKE' + job_name);
90
+ }
91
+ // State filter
92
+ if (state !== 'all') {
93
+ queryParts.push('state=' + state);
94
+ }
95
+ // Active filter
96
+ if (!include_inactive) {
97
+ queryParts.push('active=true');
98
+ }
99
+ // Time range filter - jobs that ran since
100
+ if (since) {
101
+ var sinceTimestamp = parseRelativeTime(since);
102
+ queryParts.push('last_run>' + sinceTimestamp);
103
+ }
104
+ // Job type filter (based on trigger_type or run pattern)
105
+ if (job_type === 'run_once') {
106
+ queryParts.push('run_type=once');
107
+ }
108
+ else if (job_type === 'on_demand') {
109
+ queryParts.push('run_type=on_demand');
110
+ }
111
+ else if (job_type === 'scheduled') {
112
+ queryParts.push('run_type=periodic');
113
+ }
114
+ var query = queryParts.join('^');
115
+ // Get scheduled jobs from sys_trigger
116
+ var response = await client.get('/api/now/table/sys_trigger', {
117
+ params: {
118
+ sysparm_query: query + '^ORDERBYDESClast_run',
119
+ sysparm_limit: limit,
120
+ sysparm_fields: 'sys_id,name,state,active,last_run,next_run,run_type,run_count,run_as,script,claimed_by,error_count,run_dayofweek,run_time',
121
+ sysparm_display_value: 'all'
122
+ }
123
+ });
124
+ var jobs = response.data.result;
125
+ // Map to clean format
126
+ var jobLogs = jobs.map(function (job) {
127
+ return {
128
+ sys_id: job.sys_id,
129
+ name: job.name,
130
+ state: job.state && job.state.display_value ? job.state.display_value : job.state,
131
+ active: job.active === 'true' || job.active === true,
132
+ last_run: job.last_run && job.last_run.display_value ? job.last_run.display_value : job.last_run,
133
+ next_run: job.next_run && job.next_run.display_value ? job.next_run.display_value : job.next_run,
134
+ run_type: job.run_type,
135
+ run_count: parseInt(job.run_count) || 0,
136
+ error_count: parseInt(job.error_count) || 0,
137
+ run_as: job.run_as && job.run_as.display_value ? job.run_as.display_value : job.run_as,
138
+ schedule: formatSchedule(job),
139
+ claimed_by: job.claimed_by && job.claimed_by.display_value ? job.claimed_by.display_value : null,
140
+ has_errors: (parseInt(job.error_count) || 0) > 0
141
+ };
142
+ });
143
+ // Filter by failed_only if requested
144
+ if (failed_only) {
145
+ jobLogs = jobLogs.filter(function (job) {
146
+ return job.has_errors || job.state === 'error';
147
+ });
148
+ }
149
+ // Optionally fetch recent logs for each job
150
+ if (include_logs && jobLogs.length > 0 && jobLogs.length <= 10) {
151
+ for (var i = 0; i < jobLogs.length; i++) {
152
+ var logResponse = await client.get('/api/now/table/syslog', {
153
+ params: {
154
+ sysparm_query: 'sourceLIKE' + jobLogs[i].name + '^ORDERBYDESCsys_created_on',
155
+ sysparm_limit: 10,
156
+ sysparm_fields: 'sys_created_on,level,message,source'
157
+ }
158
+ });
159
+ jobLogs[i].recent_logs = logResponse.data.result.map(function (log) {
160
+ return {
161
+ timestamp: log.sys_created_on,
162
+ level: log.level,
163
+ message: log.message
164
+ };
165
+ });
166
+ }
167
+ }
168
+ // Calculate statistics
169
+ var stats = {
170
+ total: jobLogs.length,
171
+ active: 0,
172
+ inactive: 0,
173
+ running: 0,
174
+ ready: 0,
175
+ with_errors: 0,
176
+ total_runs: 0,
177
+ total_errors: 0
178
+ };
179
+ jobLogs.forEach(function (job) {
180
+ if (job.active)
181
+ stats.active++;
182
+ else
183
+ stats.inactive++;
184
+ if (job.state === 'Running')
185
+ stats.running++;
186
+ if (job.state === 'Ready')
187
+ stats.ready++;
188
+ if (job.has_errors)
189
+ stats.with_errors++;
190
+ stats.total_runs += job.run_count;
191
+ stats.total_errors += job.error_count;
192
+ });
193
+ // Group by state
194
+ var byState = {};
195
+ jobLogs.forEach(function (job) {
196
+ var jobState = job.state || 'Unknown';
197
+ byState[jobState] = (byState[jobState] || 0) + 1;
198
+ });
199
+ // Get jobs with most errors
200
+ var errorProne = jobLogs
201
+ .filter(function (job) { return job.error_count > 0; })
202
+ .sort(function (a, b) { return b.error_count - a.error_count; })
203
+ .slice(0, 5)
204
+ .map(function (job) {
205
+ return {
206
+ name: job.name,
207
+ error_count: job.error_count,
208
+ run_count: job.run_count,
209
+ error_rate: job.run_count > 0 ? Math.round((job.error_count / job.run_count) * 100) + '%' : 'N/A'
210
+ };
211
+ });
212
+ return (0, error_handler_js_1.createSuccessResult)({
213
+ jobs: jobLogs,
214
+ count: jobLogs.length,
215
+ statistics: stats,
216
+ by_state: byState,
217
+ error_prone_jobs: errorProne,
218
+ filters: {
219
+ job_name: job_name,
220
+ state: state,
221
+ job_type: job_type,
222
+ include_inactive: include_inactive,
223
+ since: since,
224
+ failed_only: failed_only
225
+ }
226
+ });
227
+ }
228
+ catch (error) {
229
+ return (0, error_handler_js_1.createErrorResult)(error.message);
230
+ }
231
+ }
232
+ function formatSchedule(job) {
233
+ if (job.run_type === 'once') {
234
+ return 'Run once';
235
+ }
236
+ else if (job.run_type === 'on_demand') {
237
+ return 'On demand';
238
+ }
239
+ var schedule = '';
240
+ if (job.run_dayofweek) {
241
+ var days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
242
+ var dayNums = job.run_dayofweek.split(',');
243
+ var dayNames = dayNums.map(function (d) { return days[parseInt(d) - 1] || d; });
244
+ schedule = dayNames.join(', ');
245
+ }
246
+ if (job.run_time) {
247
+ schedule += (schedule ? ' at ' : '') + job.run_time;
248
+ }
249
+ return schedule || 'Periodic';
250
+ }
251
+ function parseRelativeTime(relative) {
252
+ var now = new Date();
253
+ var match = relative.match(/^(\d+)([mhd])$/);
254
+ if (!match) {
255
+ return relative;
256
+ }
257
+ var value = parseInt(match[1]);
258
+ var unit = match[2];
259
+ var milliseconds = 0;
260
+ switch (unit) {
261
+ case 'm':
262
+ milliseconds = value * 60 * 1000;
263
+ break;
264
+ case 'h':
265
+ milliseconds = value * 60 * 60 * 1000;
266
+ break;
267
+ case 'd':
268
+ milliseconds = value * 24 * 60 * 60 * 1000;
269
+ break;
270
+ }
271
+ var sinceDate = new Date(now.getTime() - milliseconds);
272
+ return sinceDate.toISOString();
273
+ }
274
+ exports.version = '1.0.0';
275
+ exports.author = 'Snow-Flow Team';
276
+ //# sourceMappingURL=snow_get_scheduled_job_logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snow_get_scheduled_job_logs.js","sourceRoot":"","sources":["../../../../../src/mcp/servicenow-mcp-unified/tools/automation/snow_get_scheduled_job_logs.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAqEH,0BA2KC;AA7OD,kDAA8D;AAC9D,oEAAuF;AAE1E,QAAA,cAAc,GAAsB;IAC/C,IAAI,EAAE,6BAA6B;IACnC,WAAW,EAAE,6HAA6H;IAC1I,gDAAgD;IAChD,QAAQ,EAAE,YAAY;IACtB,WAAW,EAAE,YAAY;IACzB,SAAS,EAAE,CAAC,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,CAAC;IACtE,UAAU,EAAE,UAAU;IACtB,SAAS,EAAE,MAAM;IAEjB,yBAAyB;IACzB,wDAAwD;IACxD,UAAU,EAAE,MAAM;IAClB,YAAY,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,OAAO,CAAC;IACnD,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,oCAAoC;aAClD;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC;gBACnE,WAAW,EAAE,qBAAqB;gBAClC,OAAO,EAAE,KAAK;aACf;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,CAAC;gBACnD,WAAW,EAAE,oBAAoB;gBACjC,OAAO,EAAE,KAAK;aACf;YACD,gBAAgB,EAAE;gBAChB,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,gCAAgC;gBAC7C,OAAO,EAAE,KAAK;aACf;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,kCAAkC;gBAC/C,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,GAAG;aACb;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,sFAAsF;aACpG;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,kDAAkD;gBAC/D,OAAO,EAAE,KAAK;aACf;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,4CAA4C;gBACzD,OAAO,EAAE,KAAK;aACf;SACF;KACF;CACF,CAAC;AAEK,KAAK,UAAU,OAAO,CAAC,IAAS,EAAE,OAA0B;IACjE,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC7B,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;IAChC,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC;IACtC,IAAI,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,KAAK,CAAC;IACtD,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAC7B,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACvB,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;IAC5C,IAAI,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC;IAE9C,IAAI,CAAC;QACH,IAAI,MAAM,GAAG,MAAM,IAAA,gCAAsB,EAAC,OAAO,CAAC,CAAC;QAEnD,+CAA+C;QAC/C,IAAI,UAAU,GAAa,EAAE,CAAC;QAE9B,kBAAkB;QAClB,IAAI,QAAQ,EAAE,CAAC;YACb,UAAU,CAAC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC;QACzC,CAAC;QAED,eAAe;QACf,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YACpB,UAAU,CAAC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;QACpC,CAAC;QAED,gBAAgB;QAChB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACjC,CAAC;QAED,0CAA0C;QAC1C,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,cAAc,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC9C,UAAU,CAAC,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,CAAC;QAChD,CAAC;QAED,yDAAyD;QACzD,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC5B,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnC,CAAC;aAAM,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;YACpC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACxC,CAAC;aAAM,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;YACpC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEjC,sCAAsC;QACtC,IAAI,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,4BAA4B,EAAE;YAC5D,MAAM,EAAE;gBACN,aAAa,EAAE,KAAK,GAAG,sBAAsB;gBAC7C,aAAa,EAAE,KAAK;gBACpB,cAAc,EAAE,2HAA2H;gBAC3I,qBAAqB,EAAE,KAAK;aAC7B;SACF,CAAC,CAAC;QAEH,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;QAEhC,sBAAsB;QACtB,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,UAAS,GAAQ;YACtC,OAAO;gBACL,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK;gBACjF,MAAM,EAAE,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI;gBACpD,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ;gBAChG,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ;gBAChG,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;gBACvC,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;gBAC3C,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM;gBACtF,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC;gBAC7B,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI;gBAChG,UAAU,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;aACjD,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,qCAAqC;QACrC,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,UAAS,GAAQ;gBACxC,OAAO,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,KAAK,KAAK,OAAO,CAAC;YACjD,CAAC,CAAC,CAAC;QACL,CAAC;QAED,4CAA4C;QAC5C,IAAI,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,IAAI,WAAW,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,uBAAuB,EAAE;oBAC1D,MAAM,EAAE;wBACN,aAAa,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,4BAA4B;wBAC5E,aAAa,EAAE,EAAE;wBACjB,cAAc,EAAE,qCAAqC;qBACtD;iBACF,CAAC,CAAC;gBAEH,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAS,GAAQ;oBACpE,OAAO;wBACL,SAAS,EAAE,GAAG,CAAC,cAAc;wBAC7B,KAAK,EAAE,GAAG,CAAC,KAAK;wBAChB,OAAO,EAAE,GAAG,CAAC,OAAO;qBACrB,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,IAAI,KAAK,GAAG;YACV,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,MAAM,EAAE,CAAC;YACT,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;YACV,KAAK,EAAE,CAAC;YACR,WAAW,EAAE,CAAC;YACd,UAAU,EAAE,CAAC;YACb,YAAY,EAAE,CAAC;SAChB,CAAC;QAEF,OAAO,CAAC,OAAO,CAAC,UAAS,GAAQ;YAC/B,IAAI,GAAG,CAAC,MAAM;gBAAE,KAAK,CAAC,MAAM,EAAE,CAAC;;gBAC1B,KAAK,CAAC,QAAQ,EAAE,CAAC;YAEtB,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;gBAAE,KAAK,CAAC,OAAO,EAAE,CAAC;YAC7C,IAAI,GAAG,CAAC,KAAK,KAAK,OAAO;gBAAE,KAAK,CAAC,KAAK,EAAE,CAAC;YACzC,IAAI,GAAG,CAAC,UAAU;gBAAE,KAAK,CAAC,WAAW,EAAE,CAAC;YAExC,KAAK,CAAC,UAAU,IAAI,GAAG,CAAC,SAAS,CAAC;YAClC,KAAK,CAAC,YAAY,IAAI,GAAG,CAAC,WAAW,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,iBAAiB;QACjB,IAAI,OAAO,GAAQ,EAAE,CAAC;QACtB,OAAO,CAAC,OAAO,CAAC,UAAS,GAAQ;YAC/B,IAAI,QAAQ,GAAG,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC;YACtC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,4BAA4B;QAC5B,IAAI,UAAU,GAAG,OAAO;aACrB,MAAM,CAAC,UAAS,GAAQ,IAAI,OAAO,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1D,IAAI,CAAC,UAAS,CAAM,EAAE,CAAM,IAAI,OAAO,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;aACxE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,GAAG,CAAC,UAAS,GAAQ;YACpB,OAAO;gBACL,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,UAAU,EAAE,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK;aAClG,CAAC;QACJ,CAAC,CAAC,CAAC;QAEL,OAAO,IAAA,sCAAmB,EAAC;YACzB,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,OAAO;YACjB,gBAAgB,EAAE,UAAU;YAC5B,OAAO,EAAE;gBACP,QAAQ,EAAE,QAAQ;gBAClB,KAAK,EAAE,KAAK;gBACZ,QAAQ,EAAE,QAAQ;gBAClB,gBAAgB,EAAE,gBAAgB;gBAClC,KAAK,EAAE,KAAK;gBACZ,WAAW,EAAE,WAAW;aACzB;SACF,CAAC,CAAC;IAEL,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,IAAA,oCAAiB,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,GAAQ;IAC9B,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO,UAAU,CAAC;IACpB,CAAC;SAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;QACxC,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;QACtB,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC7D,IAAI,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAS,CAAS,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvF,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjB,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC;IACtD,CAAC;IACD,OAAO,QAAQ,IAAI,UAAU,CAAC;AAChC,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB;IACzC,IAAI,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACrB,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAE7C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAEpB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,GAAG;YAAE,YAAY,GAAG,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC;YAAC,MAAM;QAClD,KAAK,GAAG;YAAE,YAAY,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YAAC,MAAM;QACvD,KAAK,GAAG;YAAE,YAAY,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YAAC,MAAM;IAC9D,CAAC;IAED,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,YAAY,CAAC,CAAC;IACvD,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC;AACjC,CAAC;AAEY,QAAA,OAAO,GAAG,OAAO,CAAC;AAClB,QAAA,MAAM,GAAG,gBAAgB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * snow_get_slow_queries - View slow database queries
3
+ *
4
+ * Retrieve slow query logs to identify performance issues,
5
+ * optimize GlideRecord queries, and improve system responsiveness.
6
+ */
7
+ import { MCPToolDefinition, ServiceNowContext, ToolResult } from '../../shared/types.js';
8
+ export declare const toolDefinition: MCPToolDefinition;
9
+ export declare function execute(args: any, context: ServiceNowContext): Promise<ToolResult>;
10
+ export declare const version = "1.0.0";
11
+ export declare const author = "Snow-Flow Team";
12
+ //# sourceMappingURL=snow_get_slow_queries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snow_get_slow_queries.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/servicenow-mcp-unified/tools/automation/snow_get_slow_queries.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAIzF,eAAO,MAAM,cAAc,EAAE,iBAoD5B,CAAC;AAEF,wBAAsB,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAgOxF;AAqFD,eAAO,MAAM,OAAO,UAAU,CAAC;AAC/B,eAAO,MAAM,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,340 @@
1
+ "use strict";
2
+ /**
3
+ * snow_get_slow_queries - View slow database queries
4
+ *
5
+ * Retrieve slow query logs to identify performance issues,
6
+ * optimize GlideRecord queries, and improve system responsiveness.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.author = exports.version = exports.toolDefinition = void 0;
10
+ exports.execute = execute;
11
+ const auth_js_1 = require("../../shared/auth.js");
12
+ const error_handler_js_1 = require("../../shared/error-handler.js");
13
+ exports.toolDefinition = {
14
+ name: 'snow_get_slow_queries',
15
+ description: 'Retrieve slow database query logs for identifying performance issues, optimizing GlideRecord queries, and improving system responsiveness',
16
+ // Metadata for tool discovery (not sent to LLM)
17
+ category: 'automation',
18
+ subcategory: 'monitoring',
19
+ use_cases: ['performance', 'optimization', 'monitoring', 'debugging'],
20
+ complexity: 'intermediate',
21
+ frequency: 'medium',
22
+ // Permission enforcement
23
+ // Classification: READ - Get operation - retrieves data
24
+ permission: 'read',
25
+ allowedRoles: ['developer', 'admin'],
26
+ inputSchema: {
27
+ type: 'object',
28
+ properties: {
29
+ table: {
30
+ type: 'string',
31
+ description: 'Filter by table name (e.g., incident, task, cmdb_ci)'
32
+ },
33
+ min_duration: {
34
+ type: 'number',
35
+ description: 'Minimum query duration in milliseconds to include',
36
+ default: 1000
37
+ },
38
+ source: {
39
+ type: 'string',
40
+ description: 'Filter by source (script name, business rule, etc.)'
41
+ },
42
+ user: {
43
+ type: 'string',
44
+ description: 'Filter by user who executed the query'
45
+ },
46
+ limit: {
47
+ type: 'number',
48
+ description: 'Maximum number of slow queries to return',
49
+ default: 50,
50
+ minimum: 1,
51
+ maximum: 500
52
+ },
53
+ since: {
54
+ type: 'string',
55
+ description: 'Get queries since this timestamp (ISO 8601 or relative like "1h", "30m", "7d")'
56
+ },
57
+ include_query_text: {
58
+ type: 'boolean',
59
+ description: 'Include the actual query/encoded query text',
60
+ default: true
61
+ }
62
+ }
63
+ }
64
+ };
65
+ async function execute(args, context) {
66
+ var table = args.table;
67
+ var min_duration = args.min_duration || 1000;
68
+ var source = args.source;
69
+ var user = args.user;
70
+ var limit = args.limit || 50;
71
+ var since = args.since;
72
+ var include_query_text = args.include_query_text !== false;
73
+ try {
74
+ var client = await (0, auth_js_1.getAuthenticatedClient)(context);
75
+ // Try to get slow queries from syslog (where slow query warnings are logged)
76
+ var queryParts = [];
77
+ // Look for slow query messages
78
+ queryParts.push('messageLIKESlow');
79
+ queryParts.push('messageLIKEquery');
80
+ // Or look for query performance entries
81
+ // queryParts.push('sourceLIKEquery');
82
+ // Time range filter
83
+ if (since) {
84
+ var sinceTimestamp = parseRelativeTime(since);
85
+ queryParts.push('sys_created_on>' + sinceTimestamp);
86
+ }
87
+ // Source filter
88
+ if (source) {
89
+ queryParts.push('sourceLIKE' + source);
90
+ }
91
+ // Table filter (in message)
92
+ if (table) {
93
+ queryParts.push('messageLIKE' + table);
94
+ }
95
+ var query = queryParts.join('^');
96
+ // Get slow query logs from syslog
97
+ var syslogResponse = await client.get('/api/now/table/syslog', {
98
+ params: {
99
+ sysparm_query: query + '^ORDERBYDESCsys_created_on',
100
+ sysparm_limit: limit,
101
+ sysparm_fields: 'sys_id,sys_created_on,source,message,level,sys_created_by'
102
+ }
103
+ });
104
+ // Also try to get from sys_slow_query_log if it exists
105
+ var slowQueryLogs = [];
106
+ try {
107
+ var slowQueryResponse = await client.get('/api/now/table/sys_slow_query_log', {
108
+ params: {
109
+ sysparm_query: (since ? 'sys_created_on>' + sinceTimestamp : '') + '^ORDERBYDESCsys_created_on',
110
+ sysparm_limit: limit,
111
+ sysparm_fields: 'sys_id,sys_created_on,table,query,duration,source,user,stack_trace'
112
+ }
113
+ });
114
+ slowQueryLogs = slowQueryResponse.data.result || [];
115
+ }
116
+ catch (e) {
117
+ // Table might not exist, that's okay
118
+ }
119
+ // Also try syslog_transaction for slow API calls
120
+ var slowTransactions = [];
121
+ try {
122
+ var transQuery = 'response_time>' + min_duration;
123
+ if (since) {
124
+ transQuery += '^sys_created_on>' + sinceTimestamp;
125
+ }
126
+ if (user) {
127
+ transQuery += '^user.user_nameLIKE' + user;
128
+ }
129
+ var transResponse = await client.get('/api/now/table/syslog_transaction', {
130
+ params: {
131
+ sysparm_query: transQuery + '^ORDERBYDESCresponse_time',
132
+ sysparm_limit: Math.min(limit, 100),
133
+ sysparm_fields: 'sys_id,sys_created_on,url,http_method,response_time,user,status_code'
134
+ }
135
+ });
136
+ slowTransactions = transResponse.data.result || [];
137
+ }
138
+ catch (e) {
139
+ // Table might not be accessible
140
+ }
141
+ // Process syslog entries
142
+ var syslogQueries = (syslogResponse.data.result || []).map(function (log) {
143
+ var duration = extractDuration(log.message);
144
+ return {
145
+ sys_id: log.sys_id,
146
+ type: 'syslog',
147
+ timestamp: log.sys_created_on,
148
+ source: log.source,
149
+ message: include_query_text ? log.message : truncateMessage(log.message),
150
+ level: log.level,
151
+ user: log.sys_created_by,
152
+ duration_ms: duration,
153
+ table: extractTable(log.message)
154
+ };
155
+ }).filter(function (q) {
156
+ return q.duration_ms === null || q.duration_ms >= min_duration;
157
+ });
158
+ // Process slow query log entries
159
+ var formattedSlowQueries = slowQueryLogs.map(function (log) {
160
+ return {
161
+ sys_id: log.sys_id,
162
+ type: 'slow_query_log',
163
+ timestamp: log.sys_created_on,
164
+ table: log.table,
165
+ query: include_query_text ? log.query : '[query hidden]',
166
+ duration_ms: parseInt(log.duration) || 0,
167
+ source: log.source,
168
+ user: log.user,
169
+ has_stack_trace: !!log.stack_trace
170
+ };
171
+ }).filter(function (q) {
172
+ return q.duration_ms >= min_duration;
173
+ });
174
+ // Process slow transactions
175
+ var formattedTransactions = slowTransactions.map(function (log) {
176
+ return {
177
+ sys_id: log.sys_id,
178
+ type: 'slow_transaction',
179
+ timestamp: log.sys_created_on,
180
+ url: log.url,
181
+ http_method: log.http_method,
182
+ duration_ms: parseInt(log.response_time) || 0,
183
+ user: log.user,
184
+ status_code: log.status_code
185
+ };
186
+ });
187
+ // Combine all results
188
+ var allQueries = syslogQueries.concat(formattedSlowQueries).concat(formattedTransactions);
189
+ // Sort by duration (slowest first)
190
+ allQueries.sort(function (a, b) {
191
+ return (b.duration_ms || 0) - (a.duration_ms || 0);
192
+ });
193
+ // Limit total results
194
+ allQueries = allQueries.slice(0, limit);
195
+ // Calculate statistics
196
+ var stats = {
197
+ total: allQueries.length,
198
+ from_syslog: syslogQueries.length,
199
+ from_slow_query_log: formattedSlowQueries.length,
200
+ from_transactions: formattedTransactions.length,
201
+ avg_duration_ms: 0,
202
+ max_duration_ms: 0,
203
+ min_duration_ms: 0
204
+ };
205
+ var durations = allQueries
206
+ .filter(function (q) { return q.duration_ms !== null && q.duration_ms > 0; })
207
+ .map(function (q) { return q.duration_ms; });
208
+ if (durations.length > 0) {
209
+ durations.sort(function (a, b) { return a - b; });
210
+ var sum = durations.reduce(function (a, b) { return a + b; }, 0);
211
+ stats.avg_duration_ms = Math.round(sum / durations.length);
212
+ stats.max_duration_ms = durations[durations.length - 1];
213
+ stats.min_duration_ms = durations[0];
214
+ }
215
+ // Group by table
216
+ var byTable = {};
217
+ allQueries.forEach(function (q) {
218
+ var tableName = q.table || 'Unknown';
219
+ if (!byTable[tableName]) {
220
+ byTable[tableName] = { count: 0, total_duration_ms: 0 };
221
+ }
222
+ byTable[tableName].count++;
223
+ byTable[tableName].total_duration_ms += (q.duration_ms || 0);
224
+ });
225
+ // Calculate average per table
226
+ Object.keys(byTable).forEach(function (t) {
227
+ byTable[t].avg_duration_ms = Math.round(byTable[t].total_duration_ms / byTable[t].count);
228
+ });
229
+ // Group by source
230
+ var bySource = {};
231
+ allQueries.forEach(function (q) {
232
+ var sourceName = q.source || 'Unknown';
233
+ bySource[sourceName] = (bySource[sourceName] || 0) + 1;
234
+ });
235
+ // Top slowest queries
236
+ var topSlowest = allQueries.slice(0, 10).map(function (q) {
237
+ return {
238
+ duration_ms: q.duration_ms,
239
+ table: q.table,
240
+ source: q.source,
241
+ type: q.type,
242
+ timestamp: q.timestamp
243
+ };
244
+ });
245
+ return (0, error_handler_js_1.createSuccessResult)({
246
+ slow_queries: allQueries,
247
+ count: allQueries.length,
248
+ statistics: stats,
249
+ by_table: byTable,
250
+ by_source: bySource,
251
+ top_slowest: topSlowest,
252
+ filters: {
253
+ table: table,
254
+ min_duration: min_duration,
255
+ source: source,
256
+ user: user,
257
+ since: since
258
+ },
259
+ recommendations: generateRecommendations(byTable, topSlowest)
260
+ });
261
+ }
262
+ catch (error) {
263
+ return (0, error_handler_js_1.createErrorResult)(error.message);
264
+ }
265
+ }
266
+ function extractDuration(message) {
267
+ // Try to extract duration from message like "Query took 5234ms" or "Slow query: 5.2s"
268
+ var msMatch = message.match(/(\d+)\s*ms/i);
269
+ if (msMatch) {
270
+ return parseInt(msMatch[1]);
271
+ }
272
+ var secMatch = message.match(/(\d+\.?\d*)\s*s(?:ec)?/i);
273
+ if (secMatch) {
274
+ return Math.round(parseFloat(secMatch[1]) * 1000);
275
+ }
276
+ return null;
277
+ }
278
+ function extractTable(message) {
279
+ // Try to extract table name from message
280
+ var tableMatch = message.match(/table[:\s]+(\w+)/i);
281
+ if (tableMatch) {
282
+ return tableMatch[1];
283
+ }
284
+ var fromMatch = message.match(/from\s+(\w+)/i);
285
+ if (fromMatch) {
286
+ return fromMatch[1];
287
+ }
288
+ return null;
289
+ }
290
+ function truncateMessage(message) {
291
+ if (message.length > 200) {
292
+ return message.substring(0, 200) + '...';
293
+ }
294
+ return message;
295
+ }
296
+ function generateRecommendations(byTable, topSlowest) {
297
+ var recommendations = [];
298
+ // Find tables with many slow queries
299
+ Object.keys(byTable).forEach(function (table) {
300
+ if (byTable[table].count > 5 && byTable[table].avg_duration_ms > 2000) {
301
+ recommendations.push('Table "' + table + '" has ' + byTable[table].count + ' slow queries (avg ' + byTable[table].avg_duration_ms + 'ms). Consider adding indexes or optimizing queries.');
302
+ }
303
+ });
304
+ // Check for very slow queries
305
+ topSlowest.forEach(function (q) {
306
+ if (q.duration_ms > 10000) {
307
+ recommendations.push('Query on "' + (q.table || 'unknown') + '" took ' + q.duration_ms + 'ms. Review for missing indexes or inefficient filters.');
308
+ }
309
+ });
310
+ if (recommendations.length === 0) {
311
+ recommendations.push('No major performance issues detected in the analyzed queries.');
312
+ }
313
+ return recommendations;
314
+ }
315
+ function parseRelativeTime(relative) {
316
+ var now = new Date();
317
+ var match = relative.match(/^(\d+)([mhd])$/);
318
+ if (!match) {
319
+ return relative;
320
+ }
321
+ var value = parseInt(match[1]);
322
+ var unit = match[2];
323
+ var milliseconds = 0;
324
+ switch (unit) {
325
+ case 'm':
326
+ milliseconds = value * 60 * 1000;
327
+ break;
328
+ case 'h':
329
+ milliseconds = value * 60 * 60 * 1000;
330
+ break;
331
+ case 'd':
332
+ milliseconds = value * 24 * 60 * 60 * 1000;
333
+ break;
334
+ }
335
+ var sinceDate = new Date(now.getTime() - milliseconds);
336
+ return sinceDate.toISOString();
337
+ }
338
+ exports.version = '1.0.0';
339
+ exports.author = 'Snow-Flow Team';
340
+ //# sourceMappingURL=snow_get_slow_queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snow_get_slow_queries.js","sourceRoot":"","sources":["../../../../../src/mcp/servicenow-mcp-unified/tools/automation/snow_get_slow_queries.ts"],"names":[],"mappings":"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"}