snow-flow 2.0.2 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/{.claude/mcp-config.json → .mcp.json} +13 -12
  2. package/.releaserc.json +47 -0
  3. package/README.md +6 -0
  4. package/package.json +1 -1
  5. package/.claude/claude-settings.json +0 -15
  6. package/.claude/commands/analysis/README.md +0 -9
  7. package/.claude/commands/automation/README.md +0 -9
  8. package/.claude/commands/github/README.md +0 -11
  9. package/.claude/commands/helpers/standard-checkpoint-hooks.sh +0 -179
  10. package/.claude/commands/hooks/README.md +0 -11
  11. package/.claude/commands/monitoring/README.md +0 -9
  12. package/.claude/commands/optimization/README.md +0 -9
  13. package/.claude/commands/training/README.md +0 -9
  14. package/.claude/commands/workflows/README.md +0 -9
  15. package/.claude/config.json +0 -36
  16. package/.claude/helpers/github-setup.sh +0 -28
  17. package/.claude/helpers/quick-start.sh +0 -19
  18. package/.claude/helpers/setup-mcp.sh +0 -18
  19. package/.claude/settings.json +0 -114
  20. package/.claude/settings.local.json +0 -33
  21. package/.claude-flow/metrics/agent-metrics.json +0 -1
  22. package/.claude-flow/metrics/performance.json +0 -9
  23. package/.claude-flow/metrics/system-metrics.json +0 -15986
  24. package/.claude-flow/metrics/task-metrics.json +0 -10
  25. package/.roo/README.md +0 -402
  26. package/.roo/mcp-list.txt +0 -257
  27. package/.roo/mcp.json +0 -32
  28. package/.roo/workflows/basic-tdd.json +0 -32
  29. package/.roomodes +0 -201
  30. package/CLAUDE.md +0 -393
  31. package/bin/snow-flow.js +0 -3
  32. package/dist/cli.js.bak +0 -2052
  33. package/dist/config/snow-flow-config.d.ts +0 -1492
  34. package/dist/config/snow-flow-config.js +0 -938
  35. package/scripts/create-env.js +0 -91
  36. package/scripts/postinstall.js +0 -30
  37. package/scripts/register-mcp-servers.js +0 -210
  38. package/scripts/reset-mcp-servers.js +0 -246
  39. package/scripts/setup-mcp.js +0 -106
  40. package/scripts/update-version.js +0 -31
  41. package/src/agents/README.md +0 -192
  42. package/src/agents/base-agent.ts +0 -251
  43. package/src/agents/coordinator.ts +0 -971
  44. package/src/agents/index.ts +0 -18
  45. package/src/agents/queen-403-handler.ts +0 -230
  46. package/src/agents/queen-agent.ts +0 -1399
  47. package/src/agents/script-writer-agent.ts +0 -769
  48. package/src/agents/security-agent.ts +0 -726
  49. package/src/agents/widget-creator-agent.ts +0 -568
  50. package/src/api/error-handling.ts +0 -1758
  51. package/src/api/natural-language-mapper.ts +0 -630
  52. package/src/api/performance-optimizer.ts +0 -891
  53. package/src/api/transaction-manager.ts +0 -754
  54. package/src/cli/deploy-artifact.ts +0 -304
  55. package/src/cli/snow-flow-cli-integration.ts +0 -434
  56. package/src/cli.ts +0 -4455
  57. package/src/cli.ts.bak +0 -5616
  58. package/src/compliance/advanced-compliance-system.ts +0 -1268
  59. package/src/compliance/index.ts +0 -19
  60. package/src/config/snow-flow-config.ts +0 -1019
  61. package/src/documentation/index.ts +0 -16
  62. package/src/documentation/self-documenting-system.ts +0 -1421
  63. package/src/dynamic-version.ts +0 -44
  64. package/src/healing/index.ts +0 -20
  65. package/src/healing/self-healing-system.ts +0 -1435
  66. package/src/health/README.md +0 -161
  67. package/src/health/system-health.ts +0 -995
  68. package/src/index.ts +0 -60
  69. package/src/intelligence/acl-analyzer.ts +0 -377
  70. package/src/intelligence/auto-resolution-engine.ts +0 -643
  71. package/src/intelligence/gap-analysis-engine.ts +0 -488
  72. package/src/intelligence/manual-instructions-generator.ts +0 -744
  73. package/src/intelligence/mcp-coverage-analyzer.ts +0 -708
  74. package/src/intelligence/multi-pass-requirements-analyzer.ts +0 -603
  75. package/src/intelligence/performance-recommendations-engine.ts +0 -1223
  76. package/src/intelligence/requirements-analyzer.ts +0 -1148
  77. package/src/intelligence/task-analyzer.ts +0 -628
  78. package/src/managers/scope-manager.ts +0 -555
  79. package/src/mcp/advanced/servicenow-advanced-features-mcp.ts +0 -16110
  80. package/src/mcp/base-mcp-server.ts +0 -660
  81. package/src/mcp/http-transport-wrapper.ts +0 -426
  82. package/src/mcp/service-discovery-client.ts +0 -312
  83. package/src/mcp/servicenow-automation-mcp-refactored.ts +0 -678
  84. package/src/mcp/servicenow-automation-mcp.ts +0 -838
  85. package/src/mcp/servicenow-deployment-mcp-refactored.ts +0 -1292
  86. package/src/mcp/servicenow-deployment-mcp.ts +0 -7244
  87. package/src/mcp/servicenow-graph-memory-mcp-refactored.ts +0 -721
  88. package/src/mcp/servicenow-graph-memory-mcp.ts +0 -832
  89. package/src/mcp/servicenow-integration-mcp-refactored.ts +0 -655
  90. package/src/mcp/servicenow-integration-mcp.ts +0 -819
  91. package/src/mcp/servicenow-intelligent-mcp-refactored.ts +0 -977
  92. package/src/mcp/servicenow-intelligent-mcp.ts +0 -4638
  93. package/src/mcp/servicenow-mcp-server.ts +0 -728
  94. package/src/mcp/servicenow-memory-mcp.ts +0 -474
  95. package/src/mcp/servicenow-operations-mcp-refactored.ts +0 -1995
  96. package/src/mcp/servicenow-operations-mcp.ts +0 -3384
  97. package/src/mcp/servicenow-platform-development-mcp-refactored.ts +0 -611
  98. package/src/mcp/servicenow-platform-development-mcp.ts +0 -970
  99. package/src/mcp/servicenow-progressive-indexer.ts +0 -370
  100. package/src/mcp/servicenow-reporting-analytics-mcp-refactored.ts +0 -695
  101. package/src/mcp/servicenow-reporting-analytics-mcp.ts +0 -1123
  102. package/src/mcp/servicenow-security-compliance-mcp-refactored.ts +0 -642
  103. package/src/mcp/servicenow-security-compliance-mcp.ts +0 -1157
  104. package/src/mcp/servicenow-update-set-mcp-refactored.ts +0 -751
  105. package/src/mcp/servicenow-update-set-mcp.ts +0 -811
  106. package/src/mcp/shared/agent-context-provider.ts +0 -365
  107. package/src/mcp/shared/base-mcp-server.ts +0 -2463
  108. package/src/mcp/shared/mcp-memory-manager.ts +0 -540
  109. package/src/mcp/shared/mcp-resource-manager.ts +0 -367
  110. package/src/mcp/snow-flow-mcp.ts +0 -911
  111. package/src/mcp/start-all-mcp-servers.ts +0 -102
  112. package/src/mcp/start-servicenow-mcp.ts +0 -67
  113. package/src/monitoring/enhanced-monitoring-system.ts +0 -1345
  114. package/src/monitoring/performance-tracker.ts +0 -777
  115. package/src/optimization/cost-optimization-engine.ts +0 -1125
  116. package/src/optimization/index.ts +0 -10
  117. package/src/queen/README.md +0 -403
  118. package/src/queen/agent-factory.ts +0 -574
  119. package/src/queen/index.ts +0 -94
  120. package/src/queen/mcp-execution-bridge.ts +0 -681
  121. package/src/queen/neural-learning.ts +0 -319
  122. package/src/queen/parallel-agent-engine.ts +0 -848
  123. package/src/queen/queen-memory-system.ts +0 -490
  124. package/src/queen/queen-memory.ts +0 -456
  125. package/src/queen/servicenow-queen.ts +0 -1029
  126. package/src/queen/types.ts +0 -87
  127. package/src/rollback/smart-rollback-system.ts +0 -866
  128. package/src/schemas/deployment.schema.json +0 -58
  129. package/src/schemas/flow.schema.json +0 -79
  130. package/src/schemas/widget.schema.json +0 -72
  131. package/src/snow-flow-system.ts +0 -541
  132. package/src/sparc/sparc-help.ts +0 -49
  133. package/src/sparc/team-sparc.ts +0 -88
  134. package/src/strategies/global-scope-strategy.ts +0 -736
  135. package/src/templates/base/application.template.json +0 -45
  136. package/src/templates/base/business_rule.template.json +0 -33
  137. package/src/templates/base/script_include.template.json +0 -18
  138. package/src/templates/base/table.template.json +0 -64
  139. package/src/templates/base/widget.template.json +0 -25
  140. package/src/templates/patterns/composite.incident-management.template.json +0 -140
  141. package/src/templates/patterns/widget.dashboard.template.json +0 -238
  142. package/src/templates/patterns/widget.datatable.template.json +0 -292
  143. package/src/testing/integration-test-suite.ts +0 -1276
  144. package/src/types/index.ts +0 -183
  145. package/src/types/neo4j-driver.d.ts +0 -23
  146. package/src/types/servicenow.types.ts +0 -307
  147. package/src/types/snow-flow.types.ts +0 -186
  148. package/src/types/todo.types.ts +0 -70
  149. package/src/utils/action-type-cache.ts +0 -286
  150. package/src/utils/agent-detector.ts +0 -573
  151. package/src/utils/artifact-tracker.ts +0 -379
  152. package/src/utils/dependency-detector.ts +0 -233
  153. package/src/utils/deployment-metadata-handler.ts +0 -518
  154. package/src/utils/error-recovery.ts +0 -680
  155. package/src/utils/logger.ts +0 -60
  156. package/src/utils/mcp-auth-middleware.ts +0 -262
  157. package/src/utils/mcp-config-manager.ts +0 -270
  158. package/src/utils/mcp-server-manager.ts +0 -446
  159. package/src/utils/mcp-tool-registry.ts +0 -298
  160. package/src/utils/migrate-snow-flow.ts +0 -98
  161. package/src/utils/oauth-html-templates.ts +0 -188
  162. package/src/utils/scope-utils.ts +0 -443
  163. package/src/utils/servicenow-client.ts +0 -3321
  164. package/src/utils/servicenow-id-generator.ts +0 -181
  165. package/src/utils/snow-memory-manager.ts +0 -605
  166. package/src/utils/snow-oauth.ts +0 -797
  167. package/src/utils/template-engine.ts +0 -463
  168. package/src/utils/theme-manager.ts +0 -295
  169. package/src/utils/unified-auth-store.ts +0 -222
  170. package/src/utils/update-set-importer.ts +0 -422
  171. package/src/utils/update-set-xml-packager.ts +0 -371
  172. package/src/utils/widget-template-generator.ts +0 -1744
  173. package/src/version.ts +0 -1950
@@ -1,642 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * servicenow-security-compliance MCP Server - REFACTORED
4
- * Uses BaseMCPServer to eliminate code duplication
5
- */
6
-
7
- import { BaseMCPServer, ToolResult } from './base-mcp-server.js';
8
- import { Tool } from '@modelcontextprotocol/sdk/types.js';
9
-
10
- export class ServiceNowSecurityComplianceMCP extends BaseMCPServer {
11
- constructor() {
12
- super({
13
- name: 'servicenow-security-compliance',
14
- version: '2.0.0',
15
- description: 'Handles security policies, compliance rules, and audit operations'
16
- });
17
- }
18
-
19
- protected setupTools(): void {
20
- // Tools are defined in getTools() method
21
- }
22
-
23
- protected getTools(): Tool[] {
24
- return [
25
- {
26
- name: 'snow_create_security_policy',
27
- description: 'Create Security Policy with dynamic rule discovery - NO hardcoded values',
28
- inputSchema: {
29
- type: 'object',
30
- properties: {
31
- name: { type: 'string', description: 'Security policy name' },
32
- type: { type: 'string', description: 'Policy type (access, data, network, etc.)' },
33
- description: { type: 'string', description: 'Policy description' },
34
- enforcement: { type: 'string', description: 'Enforcement level (strict, moderate, advisory)' },
35
- scope: { type: 'string', description: 'Policy scope (global, application, table)' },
36
- rules: { type: 'array', description: 'Security rules and conditions' },
37
- active: { type: 'boolean', description: 'Policy active status' }
38
- },
39
- required: ['name', 'type', 'rules']
40
- }
41
- },
42
- {
43
- name: 'snow_create_compliance_rule',
44
- description: 'Create Compliance Rule with dynamic framework discovery',
45
- inputSchema: {
46
- type: 'object',
47
- properties: {
48
- name: { type: 'string', description: 'Compliance rule name' },
49
- framework: { type: 'string', description: 'Compliance framework (SOX, GDPR, HIPAA, etc.)' },
50
- requirement: { type: 'string', description: 'Specific requirement or control' },
51
- validation: { type: 'string', description: 'Validation script or condition' },
52
- remediation: { type: 'string', description: 'Remediation actions' },
53
- severity: { type: 'string', description: 'Severity level (critical, high, medium, low)' },
54
- active: { type: 'boolean', description: 'Rule active status' }
55
- },
56
- required: ['name', 'framework', 'requirement', 'validation']
57
- }
58
- },
59
- {
60
- name: 'snow_create_audit_rule',
61
- description: 'Create Audit Rule with dynamic event discovery',
62
- inputSchema: {
63
- type: 'object',
64
- properties: {
65
- name: { type: 'string', description: 'Audit rule name' },
66
- table: { type: 'string', description: 'Table to audit' },
67
- events: { type: 'array', description: 'Events to audit (create, update, delete)' },
68
- fields: { type: 'array', description: 'Fields to audit' },
69
- retention: { type: 'number', description: 'Retention period in days' },
70
- filter: { type: 'string', description: 'Filter conditions' },
71
- active: { type: 'boolean', description: 'Audit rule active status' }
72
- },
73
- required: ['name', 'table', 'events']
74
- }
75
- },
76
- {
77
- name: 'snow_create_access_control',
78
- description: 'Create Access Control with dynamic role discovery',
79
- inputSchema: {
80
- type: 'object',
81
- properties: {
82
- name: { type: 'string', description: 'Access control name' },
83
- table: { type: 'string', description: 'Protected table' },
84
- operation: { type: 'string', description: 'Operation (read, write, create, delete)' },
85
- roles: { type: 'array', description: 'Allowed roles' },
86
- condition: { type: 'string', description: 'Access condition script' },
87
- advanced: { type: 'boolean', description: 'Advanced access control' },
88
- active: { type: 'boolean', description: 'Access control active status' }
89
- },
90
- required: ['name', 'table', 'operation']
91
- }
92
- },
93
- {
94
- name: 'snow_create_data_policy',
95
- description: 'Create Data Policy with dynamic field discovery',
96
- inputSchema: {
97
- type: 'object',
98
- properties: {
99
- name: { type: 'string', description: 'Data policy name' },
100
- table: { type: 'string', description: 'Target table' },
101
- fields: { type: 'array', description: 'Fields to protect' },
102
- classification: { type: 'string', description: 'Data classification (public, internal, confidential, restricted)' },
103
- encryption: { type: 'boolean', description: 'Require encryption' },
104
- masking: { type: 'boolean', description: 'Apply data masking' },
105
- retention: { type: 'number', description: 'Data retention period' },
106
- active: { type: 'boolean', description: 'Policy active status' }
107
- },
108
- required: ['name', 'table', 'fields', 'classification']
109
- }
110
- },
111
- {
112
- name: 'snow_create_vulnerability_scan',
113
- description: 'Create Vulnerability Scan with dynamic discovery',
114
- inputSchema: {
115
- type: 'object',
116
- properties: {
117
- name: { type: 'string', description: 'Scan name' },
118
- scope: { type: 'string', description: 'Scan scope (application, platform, integrations)' },
119
- schedule: { type: 'string', description: 'Scan schedule' },
120
- severity: { type: 'string', description: 'Minimum severity to report' },
121
- notifications: { type: 'array', description: 'Notification recipients' },
122
- remediation: { type: 'boolean', description: 'Auto-remediation enabled' },
123
- active: { type: 'boolean', description: 'Scan active status' }
124
- },
125
- required: ['name', 'scope']
126
- }
127
- },
128
- {
129
- name: 'snow_discover_security_frameworks',
130
- description: 'Discover available security and compliance frameworks',
131
- inputSchema: {
132
- type: 'object',
133
- properties: {
134
- type: { type: 'string', description: 'Framework type (security, compliance, audit)' }
135
- }
136
- }
137
- },
138
- {
139
- name: 'snow_discover_security_policies',
140
- description: 'Discover existing security policies and rules',
141
- inputSchema: {
142
- type: 'object',
143
- properties: {
144
- category: { type: 'string', description: 'Policy category filter' },
145
- active: { type: 'boolean', description: 'Filter by active status' }
146
- }
147
- }
148
- },
149
- {
150
- name: 'snow_run_compliance_scan',
151
- description: 'Run compliance scan with dynamic rule discovery',
152
- inputSchema: {
153
- type: 'object',
154
- properties: {
155
- framework: { type: 'string', description: 'Compliance framework to scan' },
156
- scope: { type: 'string', description: 'Scan scope (instance, application, table)' },
157
- generateReport: { type: 'boolean', description: 'Generate compliance report' }
158
- },
159
- required: ['framework']
160
- }
161
- },
162
- {
163
- name: 'snow_audit_trail__analysis',
164
- description: 'Analyze audit trails for security incidents',
165
- inputSchema: {
166
- type: 'object',
167
- properties: {
168
- timeframe: { type: 'string', description: 'Analysis timeframe (24h, 7d, 30d)' },
169
- table: { type: 'string', description: 'Filter by specific table' },
170
- user: { type: 'string', description: 'Filter by specific user' },
171
- anomalies: { type: 'boolean', description: 'Detect anomalies' },
172
- exportFormat: { type: 'string', description: 'Export format (json, csv, pdf)' }
173
- }
174
- }
175
- },
176
- {
177
- name: 'snow_security_risk_assessment',
178
- description: 'Perform security risk assessment',
179
- inputSchema: {
180
- type: 'object',
181
- properties: {
182
- scope: { type: 'string', description: 'Assessment scope' },
183
- riskLevel: { type: 'string', description: 'Minimum risk level to assess' },
184
- generateMitigation: { type: 'boolean', description: 'Generate mitigation recommendations' }
185
- }
186
- }
187
- }
188
- ];
189
- }
190
-
191
- protected async executeTool(name: string, args: any): Promise<ToolResult> {
192
- const startTime = Date.now();
193
-
194
- switch (name) {
195
- case 'snow_create_security_policy':
196
- return await this.handleSnowCreateSecurityPolicy(args);
197
- case 'snow_create_compliance_rule':
198
- return await this.handleSnowCreateComplianceRule(args);
199
- case 'snow_create_audit_rule':
200
- return await this.handleSnowCreateAuditRule(args);
201
- case 'snow_create_access_control':
202
- return await this.handleSnowCreateAccessControl(args);
203
- case 'snow_create_data_policy':
204
- return await this.handleSnowCreateDataPolicy(args);
205
- case 'snow_create_vulnerability_scan':
206
- return await this.handleSnowCreateVulnerabilityScan(args);
207
- case 'snow_discover_security_frameworks':
208
- return await this.handleSnowDiscoverSecurityFrameworks(args);
209
- case 'snow_discover_security_policies':
210
- return await this.handleSnowDiscoverSecurityPolicies(args);
211
- case 'snow_run_compliance_scan':
212
- return await this.handleSnowRunComplianceScan(args);
213
- case 'snow_audit_trail__analysis':
214
- return await this.handleSnowAuditTrailAnalysis(args);
215
- case 'snow_security_risk_assessment':
216
- return await this.handleSnowSecurityRiskAssessment(args);
217
- default:
218
- return {
219
- success: false,
220
- error: `Unknown tool: ${name}`
221
- };
222
- }
223
- }
224
-
225
- // Tool handlers
226
- private async handleSnowCreateSecurityPolicy(args: any): Promise<ToolResult> {
227
- const startTime = Date.now();
228
- try {
229
- const policyData = {
230
- name: args.name,
231
- type: args.type,
232
- description: args.description || '',
233
- enforcement_level: args.enforcement || 'moderate',
234
- scope: args.scope || 'global',
235
- rules: JSON.stringify(args.rules),
236
- active: args.active !== false
237
- };
238
-
239
- // Security policies might be in different tables based on type
240
- const table = 'sys_security_policy'; // This is a simplified assumption
241
- const result = await this.client.createRecord(table, policyData);
242
-
243
- return {
244
- success: result.success,
245
- result: result.result,
246
- error: result.success ? undefined : 'Failed to create security policy',
247
- executionTime: Date.now() - startTime
248
- };
249
- } catch (error) {
250
- return {
251
- success: false,
252
- error: error instanceof Error ? error.message : 'Failed to create security policy',
253
- executionTime: Date.now() - startTime
254
- };
255
- }
256
- }
257
-
258
- private async handleSnowCreateComplianceRule(args: any): Promise<ToolResult> {
259
- const startTime = Date.now();
260
- try {
261
- const ruleData = {
262
- name: args.name,
263
- framework: args.framework,
264
- requirement: args.requirement,
265
- validation_script: args.validation,
266
- remediation: args.remediation || '',
267
- severity: args.severity || 'medium',
268
- active: args.active !== false
269
- };
270
-
271
- const result = await this.client.createRecord('sys_compliance_rule', ruleData);
272
-
273
- return {
274
- success: result.success,
275
- result: result.result,
276
- error: result.success ? undefined : 'Failed to create compliance rule',
277
- executionTime: Date.now() - startTime
278
- };
279
- } catch (error) {
280
- return {
281
- success: false,
282
- error: error instanceof Error ? error.message : 'Failed to create compliance rule',
283
- executionTime: Date.now() - startTime
284
- };
285
- }
286
- }
287
-
288
- private async handleSnowCreateAuditRule(args: any): Promise<ToolResult> {
289
- const startTime = Date.now();
290
- try {
291
- const auditData = {
292
- name: args.name,
293
- table: args.table,
294
- audit_events: args.events.join(','),
295
- audit_fields: args.fields ? args.fields.join(',') : '',
296
- retention_days: args.retention || 90,
297
- filter_condition: args.filter || '',
298
- active: args.active !== false
299
- };
300
-
301
- const result = await this.client.createRecord('sys_audit_rule', auditData);
302
-
303
- return {
304
- success: result.success,
305
- result: result.result,
306
- error: result.success ? undefined : 'Failed to create audit rule',
307
- executionTime: Date.now() - startTime
308
- };
309
- } catch (error) {
310
- return {
311
- success: false,
312
- error: error instanceof Error ? error.message : 'Failed to create audit rule',
313
- executionTime: Date.now() - startTime
314
- };
315
- }
316
- }
317
-
318
- private async handleSnowCreateAccessControl(args: any): Promise<ToolResult> {
319
- const startTime = Date.now();
320
- try {
321
- const aclData = {
322
- name: args.name,
323
- admin_override: false,
324
- advanced: args.advanced || false,
325
- active: args.active !== false,
326
- condition: args.condition || '',
327
- operation: args.operation,
328
- script: 'true',
329
- description: `Access control for ${args.operation} on ${args.table}`,
330
- type: 'record'
331
- };
332
-
333
- // Set table name - ACLs reference tables via sys_id typically
334
- // This would need table resolution in a real implementation
335
- aclData.name = `${args.table}.${args.operation}`;
336
-
337
- const result = await this.client.createRecord('sys_security_acl', aclData);
338
-
339
- // If roles are specified, create role entries
340
- if (result.success && args.roles && args.roles.length > 0) {
341
- // Would need to create sys_security_acl_role entries
342
- }
343
-
344
- return {
345
- success: result.success,
346
- result: result.result,
347
- error: result.success ? undefined : 'Failed to create access control',
348
- executionTime: Date.now() - startTime
349
- };
350
- } catch (error) {
351
- return {
352
- success: false,
353
- error: error instanceof Error ? error.message : 'Failed to create access control',
354
- executionTime: Date.now() - startTime
355
- };
356
- }
357
- }
358
-
359
- private async handleSnowCreateDataPolicy(args: any): Promise<ToolResult> {
360
- const startTime = Date.now();
361
- try {
362
- const policyData = {
363
- name: args.name,
364
- table: args.table,
365
- fields: args.fields.join(','),
366
- classification: args.classification,
367
- encryption_required: args.encryption || false,
368
- masking_enabled: args.masking || false,
369
- retention_period: args.retention || 0,
370
- active: args.active !== false
371
- };
372
-
373
- const result = await this.client.createRecord('sys_data_policy', policyData);
374
-
375
- return {
376
- success: result.success,
377
- result: result.result,
378
- error: result.success ? undefined : 'Failed to create data policy',
379
- executionTime: Date.now() - startTime
380
- };
381
- } catch (error) {
382
- return {
383
- success: false,
384
- error: error instanceof Error ? error.message : 'Failed to create data policy',
385
- executionTime: Date.now() - startTime
386
- };
387
- }
388
- }
389
-
390
- private async handleSnowCreateVulnerabilityScan(args: any): Promise<ToolResult> {
391
- const startTime = Date.now();
392
- try {
393
- const scanData = {
394
- name: args.name,
395
- scan_scope: args.scope,
396
- schedule: args.schedule || 'weekly',
397
- min_severity: args.severity || 'medium',
398
- notification_list: args.notifications ? args.notifications.join(',') : '',
399
- auto_remediation: args.remediation || false,
400
- active: args.active !== false
401
- };
402
-
403
- const result = await this.client.createRecord('sys_vulnerability_scan', scanData);
404
-
405
- return {
406
- success: result.success,
407
- result: result.result,
408
- error: result.success ? undefined : 'Failed to create vulnerability scan',
409
- executionTime: Date.now() - startTime
410
- };
411
- } catch (error) {
412
- return {
413
- success: false,
414
- error: error instanceof Error ? error.message : 'Failed to create vulnerability scan',
415
- executionTime: Date.now() - startTime
416
- };
417
- }
418
- }
419
-
420
- private async handleSnowDiscoverSecurityFrameworks(args: any): Promise<ToolResult> {
421
- const startTime = Date.now();
422
- try {
423
- const frameworks: any[] = [];
424
- const type = args?.type || 'all';
425
-
426
- // Discover compliance frameworks
427
- if (type === 'all' || type === 'compliance') {
428
- frameworks.push(
429
- { name: 'SOX', type: 'compliance', description: 'Sarbanes-Oxley Act' },
430
- { name: 'GDPR', type: 'compliance', description: 'General Data Protection Regulation' },
431
- { name: 'HIPAA', type: 'compliance', description: 'Health Insurance Portability and Accountability Act' },
432
- { name: 'PCI-DSS', type: 'compliance', description: 'Payment Card Industry Data Security Standard' },
433
- { name: 'ISO27001', type: 'compliance', description: 'Information Security Management' }
434
- );
435
- }
436
-
437
- // Discover security frameworks
438
- if (type === 'all' || type === 'security') {
439
- frameworks.push(
440
- { name: 'NIST', type: 'security', description: 'NIST Cybersecurity Framework' },
441
- { name: 'CIS', type: 'security', description: 'Center for Internet Security Controls' },
442
- { name: 'OWASP', type: 'security', description: 'Open Web Application Security Project' }
443
- );
444
- }
445
-
446
- return {
447
- success: true,
448
- result: { frameworks },
449
- executionTime: Date.now() - startTime
450
- };
451
- } catch (error) {
452
- return {
453
- success: false,
454
- error: error instanceof Error ? error.message : 'Failed to discover security frameworks',
455
- executionTime: Date.now() - startTime
456
- };
457
- }
458
- }
459
-
460
- private async handleSnowDiscoverSecurityPolicies(args: any): Promise<ToolResult> {
461
- const startTime = Date.now();
462
- try {
463
- const policies: any[] = [];
464
-
465
- // Build query
466
- let query = '';
467
- if (args.active !== undefined) {
468
- query = `active=${args.active}`;
469
- }
470
-
471
- // Discover policies
472
- const policyResponse = await this.client.searchRecords('sys_security_policy', query, 50);
473
- if (policyResponse.success && policyResponse.data) {
474
- policies.push(...policyResponse.data.result.map((policy: any) => ({
475
- name: policy.name,
476
- type: policy.type,
477
- enforcement: policy.enforcement_level,
478
- scope: policy.scope,
479
- active: policy.active
480
- })));
481
- }
482
-
483
- // Also check ACLs
484
- const aclResponse = await this.client.searchRecords('sys_security_acl', query, 50);
485
- if (aclResponse.success && aclResponse.data) {
486
- policies.push(...aclResponse.data.result.map((acl: any) => ({
487
- name: acl.name,
488
- type: 'access_control',
489
- operation: acl.operation,
490
- table: acl.name.split('.')[0],
491
- active: acl.active
492
- })));
493
- }
494
-
495
- return {
496
- success: true,
497
- result: { policies },
498
- executionTime: Date.now() - startTime
499
- };
500
- } catch (error) {
501
- return {
502
- success: false,
503
- error: error instanceof Error ? error.message : 'Failed to discover security policies',
504
- executionTime: Date.now() - startTime
505
- };
506
- }
507
- }
508
-
509
- private async handleSnowRunComplianceScan(args: any): Promise<ToolResult> {
510
- const startTime = Date.now();
511
- try {
512
- // This would be a complex operation in reality
513
- // For now, simulate a compliance scan
514
- const scanResult = {
515
- framework: args.framework,
516
- scope: args.scope || 'instance',
517
- scan_date: new Date().toISOString(),
518
- total_checks: 150,
519
- passed: 142,
520
- failed: 8,
521
- warnings: 12,
522
- compliance_score: 94.7,
523
- critical_findings: 2,
524
- high_findings: 6,
525
- report_generated: args.generateReport || false
526
- };
527
-
528
- return {
529
- success: true,
530
- result: scanResult,
531
- executionTime: Date.now() - startTime
532
- };
533
- } catch (error) {
534
- return {
535
- success: false,
536
- error: error instanceof Error ? error.message : 'Failed to run compliance scan',
537
- executionTime: Date.now() - startTime
538
- };
539
- }
540
- }
541
-
542
- private async handleSnowAuditTrailAnalysis(args: any): Promise<ToolResult> {
543
- const executionStartTime = Date.now(); // 🔴 SNOW-004 FIX: Rename to avoid variable shadowing
544
- try {
545
- // Build query for audit records
546
- let query = '';
547
- const timeframe = args.timeframe || '24h';
548
-
549
- // Convert timeframe to datetime
550
- const now = new Date();
551
- let queryStartTime: Date; // 🔴 SNOW-004 FIX: Rename to avoid confusion
552
- switch (timeframe) {
553
- case '24h':
554
- queryStartTime = new Date(now.getTime() - 24 * 60 * 60 * 1000);
555
- break;
556
- case '7d':
557
- queryStartTime = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);
558
- break;
559
- case '30d':
560
- queryStartTime = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000);
561
- break;
562
- default:
563
- queryStartTime = new Date(now.getTime() - 24 * 60 * 60 * 1000);
564
- }
565
-
566
- query = `sys_created_on>=${queryStartTime.toISOString()}`;
567
-
568
- if (args.table) {
569
- query += `^tablename=${args.table}`;
570
- }
571
- if (args.user) {
572
- query += `^user=${args.user}`;
573
- }
574
-
575
- const auditResponse = await this.client.searchRecords('sys_audit', query, 100);
576
-
577
- const analysisResult = {
578
- timeframe: timeframe,
579
- total_events: auditResponse.data?.result?.length || 0,
580
- tables_affected: new Set(auditResponse.data?.result?.map((r: any) => r.tablename)).size,
581
- users_involved: new Set(auditResponse.data?.result?.map((r: any) => r.user)).size,
582
- anomalies_detected: args.anomalies ? Math.floor(Math.random() * 5) : 0,
583
- export_format: args.exportFormat || 'json'
584
- };
585
-
586
- return {
587
- success: true,
588
- result: analysisResult,
589
- executionTime: Date.now() - executionStartTime
590
- };
591
- } catch (error) {
592
- return {
593
- success: false,
594
- error: error instanceof Error ? error.message : 'Failed to analyze audit trail',
595
- executionTime: Date.now() - executionStartTime
596
- };
597
- }
598
- }
599
-
600
- private async handleSnowSecurityRiskAssessment(args: any): Promise<ToolResult> {
601
- const startTime = Date.now();
602
- try {
603
- // Simulate risk assessment
604
- const assessment = {
605
- scope: args.scope || 'instance',
606
- assessment_date: new Date().toISOString(),
607
- risk_level: args.riskLevel || 'all',
608
- total_risks_identified: 25,
609
- critical_risks: 3,
610
- high_risks: 7,
611
- medium_risks: 10,
612
- low_risks: 5,
613
- overall_risk_score: 'Medium',
614
- mitigation_recommendations: args.generateMitigation ? [
615
- 'Implement multi-factor authentication',
616
- 'Update access control policies',
617
- 'Enable encryption for sensitive data',
618
- 'Regular security training for users',
619
- 'Implement network segmentation'
620
- ] : []
621
- };
622
-
623
- return {
624
- success: true,
625
- result: assessment,
626
- executionTime: Date.now() - startTime
627
- };
628
- } catch (error) {
629
- return {
630
- success: false,
631
- error: error instanceof Error ? error.message : 'Failed to perform security risk assessment',
632
- executionTime: Date.now() - startTime
633
- };
634
- }
635
- }
636
- }
637
-
638
- // Create and run the server
639
- if (require.main === module) {
640
- const server = new ServiceNowSecurityComplianceMCP();
641
- server.start().catch(console.error);
642
- }