snow-flow 8.41.0 → 8.41.2

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 (18) hide show
  1. package/CLAUDE.md +11 -8
  2. package/package.json +1 -1
  3. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_execute_background_script.d.ts +0 -15
  4. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_execute_background_script.d.ts.map +0 -1
  5. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_execute_background_script.js +0 -393
  6. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_execute_background_script.js.map +0 -1
  7. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_execute_script_sync.d.ts +0 -15
  8. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_execute_script_sync.d.ts.map +0 -1
  9. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_execute_script_sync.js +0 -267
  10. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_execute_script_sync.js.map +0 -1
  11. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_execute_script_with_output.d.ts +0 -15
  12. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_execute_script_with_output.d.ts.map +0 -1
  13. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_execute_script_with_output.js +0 -311
  14. package/dist/mcp/servicenow-mcp-unified/tools/automation/snow_execute_script_with_output.js.map +0 -1
  15. package/dist/mcp/servicenow-mcp-unified/tools/deployment/snow_deploy.d.ts +0 -12
  16. package/dist/mcp/servicenow-mcp-unified/tools/deployment/snow_deploy.d.ts.map +0 -1
  17. package/dist/mcp/servicenow-mcp-unified/tools/deployment/snow_deploy.js +0 -375
  18. package/dist/mcp/servicenow-mcp-unified/tools/deployment/snow_deploy.js.map +0 -1
@@ -1,375 +0,0 @@
1
- "use strict";
2
- /**
3
- * snow_deploy - Deploy ServiceNow artifacts with validation
4
- *
5
- * Deploys widgets, pages, flows, and other artifacts to ServiceNow
6
- * with automatic ES5 validation, coherence checking, and Update Set management.
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_deploy',
15
- description: 'Deploy ServiceNow artifacts (widgets, pages, flows) with automatic validation and Update Set management',
16
- // Metadata for tool discovery (not sent to LLM)
17
- category: 'development',
18
- subcategory: 'deployment',
19
- use_cases: ['deployment', 'validation', 'artifacts'],
20
- complexity: 'intermediate',
21
- frequency: 'high',
22
- // Permission enforcement
23
- // Classification: WRITE - Create/update/delete operation
24
- permission: 'write',
25
- allowedRoles: ['developer', 'admin'],
26
- inputSchema: {
27
- type: 'object',
28
- properties: {
29
- type: {
30
- type: 'string',
31
- enum: ['widget', 'page', 'flow', 'application', 'component'],
32
- description: 'Type of artifact to deploy'
33
- },
34
- config: {
35
- type: 'object',
36
- description: 'Artifact configuration (fields depend on type)',
37
- properties: {
38
- name: { type: 'string', description: 'Artifact name' },
39
- title: { type: 'string', description: 'Display title' },
40
- description: { type: 'string', description: 'Artifact description' },
41
- template: { type: 'string', description: 'HTML template (for widgets)' },
42
- script: { type: 'string', description: 'Server script (for widgets)' },
43
- client_script: { type: 'string', description: 'Client script (for widgets)' },
44
- css: { type: 'string', description: 'CSS styles (for widgets)' },
45
- option_schema: { type: 'string', description: 'Option schema JSON (for widgets)' }
46
- }
47
- },
48
- validate_coherence: {
49
- type: 'boolean',
50
- description: 'Validate widget coherence (HTML/Client/Server communication)',
51
- default: true
52
- },
53
- skip_coherence_check: {
54
- type: 'boolean',
55
- description: 'Skip coherence validation entirely (use when validator reports false positives)',
56
- default: false
57
- },
58
- validate_es5: {
59
- type: 'boolean',
60
- description: 'Validate ES5 syntax in server scripts',
61
- default: true
62
- },
63
- create_update_set: {
64
- type: 'boolean',
65
- description: 'Create new Update Set for this deployment',
66
- default: false
67
- },
68
- update_set_name: {
69
- type: 'string',
70
- description: 'Name for new Update Set (if create_update_set=true)'
71
- }
72
- },
73
- required: ['type', 'config']
74
- }
75
- };
76
- async function execute(args, context) {
77
- const { type, config, validate_coherence = true, skip_coherence_check = false, validate_es5 = true, create_update_set = false, update_set_name } = args;
78
- try {
79
- const client = await (0, auth_js_1.getAuthenticatedClient)(context);
80
- // Step 1: Pre-deployment validation
81
- if (type === 'widget') {
82
- // ES5 validation for server script
83
- if (validate_es5 && config.script) {
84
- const es5Validation = validateES5Syntax(config.script);
85
- if (!es5Validation.valid) {
86
- throw new error_handler_js_1.SnowFlowError(error_handler_js_1.ErrorType.ES5_SYNTAX_ERROR, 'Server script contains non-ES5 syntax', {
87
- retryable: false,
88
- details: {
89
- violations: es5Validation.violations.map(v => ({
90
- type: v.type,
91
- line: v.line,
92
- code: v.code,
93
- fix: v.fix
94
- }))
95
- }
96
- });
97
- }
98
- }
99
- // Widget coherence validation
100
- if (validate_coherence && !skip_coherence_check) {
101
- const coherenceResult = validateWidgetCoherence(config);
102
- if (!coherenceResult.coherent) {
103
- const criticalIssues = coherenceResult.issues.filter(i => i.severity === 'critical');
104
- if (criticalIssues.length > 0) {
105
- throw new error_handler_js_1.SnowFlowError(error_handler_js_1.ErrorType.WIDGET_COHERENCE_ERROR, 'Widget coherence validation failed. Use skip_coherence_check: true to bypass this validation.', {
106
- retryable: false,
107
- details: {
108
- critical: criticalIssues,
109
- warnings: coherenceResult.issues.filter(i => i.severity === 'warning'),
110
- analysis: coherenceResult.analysis,
111
- suggestion: 'If these properties are initialized conditionally (e.g., inside if blocks), use skip_coherence_check: true'
112
- }
113
- });
114
- }
115
- }
116
- }
117
- }
118
- // Step 2: Create/ensure Update Set if needed
119
- let updateSetId;
120
- if (create_update_set && update_set_name) {
121
- const updateSetResponse = await client.post('/api/now/table/sys_update_set', {
122
- name: update_set_name,
123
- description: `Deployment: ${config.name || 'Artifact'}`,
124
- state: 'in progress'
125
- });
126
- updateSetId = updateSetResponse.data.result.sys_id;
127
- // Set as current Update Set
128
- await client.put(`/api/now/table/sys_update_set/${updateSetId}`, {
129
- is_current: true
130
- });
131
- }
132
- // Step 3: Deploy artifact based on type
133
- let deploymentResult;
134
- switch (type) {
135
- case 'widget':
136
- deploymentResult = await deployWidget(client, config);
137
- break;
138
- case 'page':
139
- deploymentResult = await deployPage(client, config);
140
- break;
141
- case 'flow':
142
- deploymentResult = await deployFlow(client, config);
143
- break;
144
- default:
145
- throw new error_handler_js_1.SnowFlowError(error_handler_js_1.ErrorType.INVALID_REQUEST, `Unsupported artifact type: ${type}`, { retryable: false });
146
- }
147
- // Step 4: Return success result
148
- return (0, error_handler_js_1.createSuccessResult)({
149
- sys_id: deploymentResult.sys_id,
150
- table: deploymentResult.table,
151
- name: config.name,
152
- type,
153
- url: `${context.instanceUrl}/nav_to.do?uri=${deploymentResult.table}.do?sys_id=${deploymentResult.sys_id}`
154
- }, {
155
- updateSetId,
156
- validations: {
157
- es5: validate_es5 ? 'passed' : 'skipped',
158
- coherence: validate_coherence ? 'passed' : 'skipped'
159
- }
160
- });
161
- }
162
- catch (error) {
163
- return (0, error_handler_js_1.createErrorResult)(error instanceof error_handler_js_1.SnowFlowError
164
- ? error
165
- : new error_handler_js_1.SnowFlowError(error_handler_js_1.ErrorType.DEPLOYMENT_FAILED, error.message, { originalError: error }));
166
- }
167
- }
168
- /**
169
- * Deploy Service Portal widget
170
- */
171
- async function deployWidget(client, config) {
172
- const widgetData = {
173
- id: config.name,
174
- name: config.title || config.name,
175
- description: config.description || '',
176
- template: config.template || '',
177
- script: config.script || '',
178
- client_script: config.client_script || '',
179
- css: config.css || '',
180
- option_schema: config.option_schema || ''
181
- };
182
- // Check if widget exists
183
- const existingResponse = await client.get('/api/now/table/sp_widget', {
184
- params: {
185
- sysparm_query: `id=${config.name}`,
186
- sysparm_limit: 1
187
- }
188
- });
189
- let result;
190
- if (existingResponse.data.result.length > 0) {
191
- // Update existing widget
192
- const sys_id = existingResponse.data.result[0].sys_id;
193
- const updateResponse = await client.put(`/api/now/table/sp_widget/${sys_id}`, widgetData);
194
- result = updateResponse.data.result;
195
- }
196
- else {
197
- // Create new widget
198
- const createResponse = await client.post('/api/now/table/sp_widget', widgetData);
199
- result = createResponse.data.result;
200
- }
201
- return {
202
- sys_id: result.sys_id,
203
- table: 'sp_widget'
204
- };
205
- }
206
- /**
207
- * Deploy UI Builder page
208
- */
209
- async function deployPage(client, config) {
210
- const pageData = {
211
- name: config.name,
212
- title: config.title || config.name,
213
- description: config.description || ''
214
- };
215
- const response = await client.post('/api/now/table/sys_ux_page', pageData);
216
- return {
217
- sys_id: response.data.result.sys_id,
218
- table: 'sys_ux_page'
219
- };
220
- }
221
- /**
222
- * Deploy Flow Designer flow (via XML import only)
223
- */
224
- async function deployFlow(client, config) {
225
- throw new error_handler_js_1.SnowFlowError(error_handler_js_1.ErrorType.INVALID_REQUEST, 'Flow deployment requires XML import via snow_import_flow_from_xml', { retryable: false });
226
- }
227
- /**
228
- * Validate ES5 syntax in JavaScript code
229
- */
230
- function validateES5Syntax(code) {
231
- const violations = [];
232
- // Check for const/let
233
- const constLetPattern = /\b(const|let)\s+/g;
234
- let match;
235
- while ((match = constLetPattern.exec(code)) !== null) {
236
- violations.push({
237
- type: match[1] === 'const' ? 'const' : 'let',
238
- line: code.substring(0, match.index).split('\n').length,
239
- code: match[0],
240
- fix: `Use 'var' instead of '${match[1]}'`
241
- });
242
- }
243
- // Check for arrow functions
244
- const arrowPattern = /\([^)]*\)\s*=>/g;
245
- while ((match = arrowPattern.exec(code)) !== null) {
246
- violations.push({
247
- type: 'arrow_function',
248
- line: code.substring(0, match.index).split('\n').length,
249
- code: match[0],
250
- fix: 'Use function() {} instead of arrow function'
251
- });
252
- }
253
- // Check for template literals
254
- const templatePattern = /`[^`]*`/g;
255
- while ((match = templatePattern.exec(code)) !== null) {
256
- violations.push({
257
- type: 'template_literal',
258
- line: code.substring(0, match.index).split('\n').length,
259
- code: match[0],
260
- fix: 'Use string concatenation with + instead of template literals'
261
- });
262
- }
263
- return {
264
- valid: violations.length === 0,
265
- violations
266
- };
267
- }
268
- /**
269
- * Validate widget coherence (HTML/Client/Server communication)
270
- */
271
- function validateWidgetCoherence(config) {
272
- const issues = [];
273
- const analysis = {
274
- serverInitializedData: [],
275
- conditionalData: [],
276
- clientMethods: [],
277
- htmlReferences: [],
278
- inputActions: []
279
- };
280
- // Extract data properties from server script
281
- if (config.script) {
282
- // Find all data assignments (both conditional and unconditional)
283
- const dataPattern = /data\.(\w+)\s*=/g;
284
- let match;
285
- const script = config.script;
286
- while ((match = dataPattern.exec(script)) !== null) {
287
- const propertyName = match[1];
288
- const assignmentIndex = match.index;
289
- // Check if this assignment is inside a conditional block
290
- // Look backwards from the assignment to find if/else/switch statements
291
- const beforeAssignment = script.substring(0, assignmentIndex);
292
- const linesBeforeAssignment = beforeAssignment.split('\n');
293
- // Simple heuristic: check if within an if/else/switch block
294
- // Count opening and closing braces to determine depth
295
- let braceDepth = 0;
296
- let inConditional = false;
297
- for (let i = linesBeforeAssignment.length - 1; i >= 0; i--) {
298
- const line = linesBeforeAssignment[i];
299
- // Count braces
300
- const openBraces = (line.match(/\{/g) || []).length;
301
- const closeBraces = (line.match(/\}/g) || []).length;
302
- braceDepth += closeBraces - openBraces;
303
- // Check for conditional keywords
304
- if (/\b(if|else|switch|case)\b/.test(line) && braceDepth > 0) {
305
- inConditional = true;
306
- break;
307
- }
308
- // If we've reached the top level, stop looking
309
- if (braceDepth <= 0) {
310
- break;
311
- }
312
- }
313
- if (inConditional) {
314
- analysis.conditionalData.push(propertyName);
315
- }
316
- else {
317
- analysis.serverInitializedData.push(propertyName);
318
- }
319
- }
320
- // Extract input.action handlers
321
- const actionPattern = /input\.action\s*===?\s*['"](\w+)['"]/g;
322
- while ((match = actionPattern.exec(config.script)) !== null) {
323
- analysis.inputActions.push(match[1]);
324
- }
325
- }
326
- // Extract data references from HTML
327
- if (config.template) {
328
- const htmlDataPattern = /\{\{data\.(\w+)\}\}/g;
329
- let match;
330
- while ((match = htmlDataPattern.exec(config.template)) !== null) {
331
- analysis.htmlReferences.push(match[1]);
332
- }
333
- // Check if HTML references exist in server data
334
- analysis.htmlReferences.forEach(ref => {
335
- const isUnconditional = analysis.serverInitializedData.includes(ref);
336
- const isConditional = analysis.conditionalData.includes(ref);
337
- if (!isUnconditional && !isConditional) {
338
- // Not found at all - critical error
339
- issues.push({
340
- type: 'missing_data',
341
- severity: 'critical',
342
- description: `HTML references data.${ref} but server doesn't initialize it`,
343
- location: 'template',
344
- fix: `Add 'data.${ref} = ...;' to server script`
345
- });
346
- }
347
- else if (!isUnconditional && isConditional) {
348
- // Found but only conditionally - warning
349
- issues.push({
350
- type: 'conditional_data',
351
- severity: 'warning',
352
- description: `HTML references data.${ref} which is only initialized conditionally (e.g., inside if blocks)`,
353
- location: 'template',
354
- fix: `Consider initializing data.${ref} unconditionally or using ng-if in template to handle undefined state`
355
- });
356
- }
357
- });
358
- }
359
- // Extract methods from client script
360
- if (config.client_script) {
361
- const methodPattern = /(?:c|$scope)\.(\w+)\s*=\s*function/g;
362
- let match;
363
- while ((match = methodPattern.exec(config.client_script)) !== null) {
364
- analysis.clientMethods.push(match[1]);
365
- }
366
- }
367
- return {
368
- coherent: issues.filter(i => i.severity === 'critical').length === 0,
369
- issues,
370
- analysis
371
- };
372
- }
373
- exports.version = '1.0.0';
374
- exports.author = 'Snow-Flow SDK Migration';
375
- //# sourceMappingURL=snow_deploy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"snow_deploy.js","sourceRoot":"","sources":["../../../../../src/mcp/servicenow-mcp-unified/tools/deployment/snow_deploy.ts"],"names":[],"mappings":"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"}