snow-flow 3.0.9 → 3.0.13
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.
- package/claude-flow.bat +0 -0
- package/claude-flow.ps1 +0 -0
- package/dist/mcp/intelligent-reporting-mcp.d.ts +7 -0
- package/dist/mcp/intelligent-reporting-mcp.js +379 -0
- package/dist/mcp/servicenow-automation-mcp.js +0 -0
- package/dist/mcp/servicenow-deployment-mcp.js +0 -0
- package/dist/mcp/servicenow-integration-mcp.js +0 -0
- package/dist/mcp/servicenow-mcp-server.js +0 -0
- package/dist/mcp/servicenow-operations-mcp.js +0 -0
- package/dist/mcp/servicenow-platform-development-mcp.js +0 -0
- package/dist/mcp/servicenow-progressive-indexer.js +0 -0
- package/dist/mcp/servicenow-reporting-analytics-mcp.js +280 -29
- package/dist/mcp/servicenow-security-compliance-mcp.js +0 -0
- package/dist/mcp/servicenow-update-set-mcp.js +0 -0
- package/dist/mcp/start-all-mcp-servers.js +0 -0
- package/dist/mcp/start-servicenow-mcp.js +0 -0
- package/dist/services/widget-deployment-service.d.ts +2 -1
- package/dist/services/widget-deployment-service.js +17 -16
- package/dist/utils/anti-mock-data-validator.d.ts +66 -0
- package/dist/utils/anti-mock-data-validator.js +316 -0
- package/dist/utils/servicenow-eventual-consistency.d.ts +120 -0
- package/dist/utils/servicenow-eventual-consistency.js +220 -0
- package/memory/agents/README.md +1 -1
- package/memory/claude-flow-data.json +1 -1
- package/memory/sessions/README.md +1 -1
- package/package.json +4 -3
- package/.mcp.json +0 -22
- package/claude-flow.config.json +0 -20
- package/dist/agents/app-creator.agent.d.ts +0 -55
- package/dist/agents/app-creator.agent.js +0 -1292
- package/dist/agents/base/base-snow-agent.d.ts +0 -75
- package/dist/agents/base/base-snow-agent.js +0 -169
- package/dist/agents/base-snow-agent.d.ts +0 -63
- package/dist/agents/base-snow-agent.js +0 -296
- package/dist/agents/coordinator.d.ts +0 -200
- package/dist/agents/coordinator.js +0 -777
- package/dist/agents/flow-builder-agent.d.ts +0 -18
- package/dist/agents/flow-builder-agent.js +0 -197
- package/dist/agents/queen-403-handler.d.ts +0 -47
- package/dist/agents/queen-403-handler.js +0 -175
- package/dist/agents/queen-agent-example.d.ts +0 -23
- package/dist/agents/queen-agent-example.js +0 -240
- package/dist/agents/queen-agent.test.d.ts +0 -6
- package/dist/agents/script-generator.agent.d.ts +0 -32
- package/dist/agents/script-generator.agent.js +0 -772
- package/dist/agents/script-writer-agent.d.ts +0 -22
- package/dist/agents/script-writer-agent.js +0 -695
- package/dist/agents/security-agent.d.ts +0 -23
- package/dist/agents/security-agent.js +0 -619
- package/dist/agents/specialists/automation-specialist.agent.d.ts +0 -44
- package/dist/agents/specialists/automation-specialist.agent.js +0 -204
- package/dist/agents/specialists/data-specialist.agent.d.ts +0 -165
- package/dist/agents/specialists/data-specialist.agent.js +0 -484
- package/dist/agents/specialists/integration-specialist.agent.d.ts +0 -227
- package/dist/agents/specialists/integration-specialist.agent.js +0 -725
- package/dist/agents/specialists/reporting-specialist.agent.d.ts +0 -54
- package/dist/agents/specialists/reporting-specialist.agent.js +0 -193
- package/dist/agents/specialists/security-specialist.agent.d.ts +0 -85
- package/dist/agents/specialists/security-specialist.agent.js +0 -309
- package/dist/agents/teams/adaptive/adaptive-coordinator.agent.d.ts +0 -111
- package/dist/agents/teams/adaptive/adaptive-coordinator.agent.js +0 -383
- package/dist/agents/teams/base-team.d.ts +0 -72
- package/dist/agents/teams/base-team.js +0 -253
- package/dist/agents/teams/team-types.d.ts +0 -265
- package/dist/agents/teams/team-types.js +0 -3
- package/dist/agents/teams/widget/widget-architect.agent.d.ts +0 -61
- package/dist/agents/teams/widget/widget-architect.agent.js +0 -436
- package/dist/agents/teams/widget/widget-backend.agent.d.ts +0 -74
- package/dist/agents/teams/widget/widget-backend.agent.js +0 -1531
- package/dist/agents/teams/widget/widget-frontend.agent.d.ts +0 -67
- package/dist/agents/teams/widget/widget-frontend.agent.js +0 -1014
- package/dist/agents/teams/widget/widget-platform.agent.d.ts +0 -90
- package/dist/agents/teams/widget/widget-platform.agent.js +0 -1190
- package/dist/agents/teams/widget/widget-uiux.agent.d.ts +0 -107
- package/dist/agents/teams/widget/widget-uiux.agent.js +0 -1033
- package/dist/agents/test-agent.d.ts +0 -26
- package/dist/agents/test-agent.js +0 -734
- package/dist/agents/test-agents.d.ts +0 -7
- package/dist/agents/test-agents.js +0 -64
- package/dist/agents/ui-builder.agent.d.ts +0 -50
- package/dist/agents/ui-builder.agent.js +0 -1539
- package/dist/agents/widget-builder.agent.d.ts +0 -32
- package/dist/agents/widget-builder.agent.js +0 -439
- package/dist/agents/widget-creator-agent.d.ts +0 -18
- package/dist/agents/widget-creator-agent.js +0 -498
- package/dist/agents/workflow-designer.agent.d.ts +0 -31
- package/dist/agents/workflow-designer.agent.js +0 -583
- package/dist/api/error-handling.d.ts +0 -325
- package/dist/api/error-handling.js +0 -1488
- package/dist/api/flow-designer-api.d.ts +0 -167
- package/dist/api/flow-designer-api.js +0 -554
- package/dist/api/natural-language-mapper.d.ts +0 -124
- package/dist/api/natural-language-mapper.js +0 -501
- package/dist/api/performance-optimizer.d.ts +0 -240
- package/dist/api/performance-optimizer.js +0 -706
- package/dist/api/transaction-manager.d.ts +0 -189
- package/dist/api/transaction-manager.js +0 -576
- package/dist/assembly/team-assembler.d.ts +0 -140
- package/dist/assembly/team-assembler.js +0 -502
- package/dist/benchmark-performance.d.ts +0 -41
- package/dist/benchmark-performance.js +0 -230
- package/dist/cli/snow-flow-cli-integration.d.ts +0 -30
- package/dist/cli/snow-flow-cli-integration.js +0 -396
- package/dist/coordination/coordination-engine.d.ts +0 -41
- package/dist/coordination/coordination-engine.js +0 -324
- package/dist/coordination/coordination.test.d.ts +0 -6
- package/dist/coordination/example.d.ts +0 -31
- package/dist/coordination/example.js +0 -394
- package/dist/coordination/execution-patterns.d.ts +0 -43
- package/dist/coordination/execution-patterns.js +0 -507
- package/dist/coordination/factory.d.ts +0 -94
- package/dist/coordination/factory.js +0 -433
- package/dist/coordination/index.d.ts +0 -71
- package/dist/coordination/index.js +0 -135
- package/dist/coordination/progress-monitor.d.ts +0 -71
- package/dist/coordination/progress-monitor.js +0 -505
- package/dist/coordination/quality-gates.d.ts +0 -124
- package/dist/coordination/quality-gates.js +0 -577
- package/dist/coordination/shared-memory.d.ts +0 -39
- package/dist/coordination/shared-memory.js +0 -289
- package/dist/coordination/task-dependencies.d.ts +0 -50
- package/dist/coordination/task-dependencies.js +0 -407
- package/dist/coordination/team-coordinator.d.ts +0 -59
- package/dist/coordination/team-coordinator.js +0 -550
- package/dist/coordination/types.d.ts +0 -152
- package/dist/coordination/types.js +0 -3
- package/dist/mcp/mcp-wrapper.d.ts +0 -8
- package/dist/mcp/mcp-wrapper.js +0 -77
- package/dist/mcp/servicenow-flow-composer-enhanced.js +0 -396
- package/dist/mcp/servicenow-flow-composer-mcp.d.ts +0 -7
- package/dist/mcp/servicenow-flow-composer-mcp.js +0 -3103
- package/dist/mcp/servicenow-graph-memory-mcp.d.ts +0 -7
- package/dist/mcp/servicenow-intelligent-mcp.d.ts +0 -143
- package/dist/mcp/servicenow-intelligent-mcp.js +0 -4156
- package/dist/mcp/servicenow-xml-flow-mcp.d.ts +0 -53
- package/dist/mcp/servicenow-xml-flow-mcp.js +0 -1704
- package/dist/mcp/singleton-check.js +0 -31
- package/dist/mcp/test-simple-mcp.d.ts +0 -6
- package/dist/mcp/test-simple-mcp.js +0 -63
- package/dist/memory/hierarchical-memory-system.d.ts +0 -90
- package/dist/memory/hierarchical-memory-system.js +0 -400
- package/dist/memory/index.d.ts +0 -9
- package/dist/memory/index.js +0 -20
- package/dist/memory/mcp-integration-example.d.ts +0 -6
- package/dist/memory/mcp-integration-example.js +0 -281
- package/dist/memory/memory-client.d.ts +0 -199
- package/dist/memory/memory-client.js +0 -364
- package/dist/memory/memory-manager.d.ts +0 -29
- package/dist/memory/memory-manager.js +0 -280
- package/dist/memory/memory-operations.d.ts +0 -179
- package/dist/memory/memory-operations.js +0 -691
- package/dist/memory/memory-system.d.ts +0 -153
- package/dist/memory/memory-system.js +0 -651
- package/dist/memory/memory-test.d.ts +0 -6
- package/dist/memory/memory-test.js +0 -161
- package/dist/memory/snow-flow-memory-patterns.d.ts +0 -213
- package/dist/memory/snow-flow-memory-patterns.js +0 -200
- package/dist/memory/snow-memory.d.ts +0 -54
- package/dist/memory/snow-memory.js +0 -301
- package/dist/memory/swarm-memory.d.ts +0 -135
- package/dist/memory/swarm-memory.js +0 -378
- package/dist/optimization/flow-performance-optimizer.js +0 -723
- package/dist/orchestration/discovery/service-discovery.d.ts +0 -81
- package/dist/orchestration/discovery/service-discovery.js +0 -808
- package/dist/orchestration/distributed-orchestrator.d.ts +0 -131
- package/dist/orchestration/distributed-orchestrator.js +0 -712
- package/dist/orchestration/distribution/task-distribution-engine.d.ts +0 -53
- package/dist/orchestration/distribution/task-distribution-engine.js +0 -586
- package/dist/orchestration/flow-update-orchestrator.js +0 -648
- package/dist/orchestration/interfaces/distributed-orchestration.interface.d.ts +0 -606
- package/dist/orchestration/interfaces/distributed-orchestration.interface.js +0 -65
- package/dist/orchestration/protocols/mcpx-protocol.d.ts +0 -71
- package/dist/orchestration/protocols/mcpx-protocol.js +0 -668
- package/dist/orchestration/state/distributed-state-manager.d.ts +0 -89
- package/dist/orchestration/state/distributed-state-manager.js +0 -716
- package/dist/orchestrator/flow-composer.d.ts +0 -105
- package/dist/orchestrator/flow-composer.js +0 -404
- package/dist/orchestrator/flow-pattern-templates.d.ts +0 -260
- package/dist/orchestrator/flow-pattern-templates.js +0 -908
- package/dist/orchestrator/flow-subflow-decision-engine.d.ts +0 -202
- package/dist/orchestrator/flow-subflow-decision-engine.js +0 -769
- package/dist/orchestrator/flow-validation-engine.d.ts +0 -169
- package/dist/orchestrator/flow-validation-engine.js +0 -913
- package/dist/orchestrator/snow-orchestrator.d.ts +0 -49
- package/dist/orchestrator/snow-orchestrator.js +0 -235
- package/dist/orchestrator/subflow-creation-handler.d.ts +0 -230
- package/dist/orchestrator/subflow-creation-handler.js +0 -791
- package/dist/patterns/adaptive-patterns.d.ts +0 -140
- package/dist/patterns/adaptive-patterns.js +0 -549
- package/dist/queen/advanced-integration-test.d.ts +0 -48
- package/dist/queen/advanced-integration-test.js +0 -473
- package/dist/queen/integration-example.d.ts +0 -82
- package/dist/queen/integration-example.js +0 -219
- package/dist/queen/integration-test.d.ts +0 -72
- package/dist/queen/integration-test.js +0 -563
- package/dist/queen/mock-mcp-client.d.ts +0 -71
- package/dist/queen/mock-mcp-client.js +0 -317
- package/dist/queen/run-integration-tests.d.ts +0 -9
- package/dist/queen/run-integration-tests.js +0 -27
- package/dist/sparc/coordinators/adaptive-coordinator.d.ts +0 -54
- package/dist/sparc/coordinators/adaptive-coordinator.js +0 -367
- package/dist/sparc/coordinators/team-coordinator.d.ts +0 -66
- package/dist/sparc/coordinators/team-coordinator.js +0 -402
- package/dist/sparc/modes/team-modes.d.ts +0 -33
- package/dist/sparc/modes/team-modes.js +0 -399
- package/dist/sparc/teams/application-team.d.ts +0 -73
- package/dist/sparc/teams/application-team.js +0 -463
- package/dist/sparc/teams/flow-team.d.ts +0 -67
- package/dist/sparc/teams/flow-team.js +0 -373
- package/dist/sparc/teams/widget-team.d.ts +0 -61
- package/dist/sparc/teams/widget-team.js +0 -280
- package/dist/specialists/app-specialists.d.ts +0 -93
- package/dist/specialists/app-specialists.js +0 -1639
- package/dist/specialists/base-specialist.d.ts +0 -19
- package/dist/specialists/base-specialist.js +0 -54
- package/dist/specialists/flow-specialists.d.ts +0 -113
- package/dist/specialists/flow-specialists.js +0 -1787
- package/dist/specialists/individual-specialists.d.ts +0 -67
- package/dist/specialists/individual-specialists.js +0 -632
- package/dist/specialists/widget-specialists.d.ts +0 -70
- package/dist/specialists/widget-specialists.js +0 -1264
- package/dist/src/utils/agent-detector.js +0 -655
- package/dist/teams/adaptive-team.d.ts +0 -81
- package/dist/teams/adaptive-team.js +0 -1153
- package/dist/teams/application-team.d.ts +0 -30
- package/dist/teams/application-team.js +0 -547
- package/dist/teams/base-team.d.ts +0 -55
- package/dist/teams/base-team.js +0 -243
- package/dist/teams/flow-team.d.ts +0 -28
- package/dist/teams/flow-team.js +0 -525
- package/dist/teams/widget-team.d.ts +0 -26
- package/dist/teams/widget-team.js +0 -459
- package/dist/templates/flow-template-system.js +0 -625
- package/dist/test-fetch-incidents.d.ts +0 -2
- package/dist/test-fetch-incidents.js +0 -84
- package/dist/test-incident-access.d.ts +0 -2
- package/dist/test-incident-access.js +0 -72
- package/dist/test-iphone-flow.js +0 -189
- package/dist/test-limit-problem.d.ts +0 -2
- package/dist/test-limit-problem.js +0 -60
- package/dist/test-ml-batch-fix.d.ts +0 -2
- package/dist/test-ml-batch-fix.js +0 -104
- package/dist/test-ml-batch.d.ts +0 -2
- package/dist/test-ml-batch.js +0 -87
- package/dist/test-ml-query.d.ts +0 -2
- package/dist/test-ml-query.js +0 -100
- package/dist/test-ml-training-fix.d.ts +0 -12
- package/dist/test-ml-training-fix.js +0 -113
- package/dist/test-ml-training.d.ts +0 -2
- package/dist/test-ml-training.js +0 -32
- package/dist/test-operations-query.d.ts +0 -2
- package/dist/test-operations-query.js +0 -84
- package/dist/test-performance-query.d.ts +0 -2
- package/dist/test-performance-query.js +0 -52
- package/dist/test-singleton-protection.d.ts +0 -8
- package/dist/test-singleton-protection.js +0 -110
- package/dist/test-smart-limits.d.ts +0 -13
- package/dist/test-smart-limits.js +0 -100
- package/dist/test-snow-query-incidents.d.ts +0 -2
- package/dist/test-snow-query-incidents.js +0 -66
- package/dist/test-universal-query.d.ts +0 -2
- package/dist/test-universal-query.js +0 -106
- package/dist/testing/flow-testing-automation.js +0 -641
- package/dist/utils/complete-flow-xml-generator.js +0 -1285
- package/dist/utils/file-storage-fallback.d.ts +0 -62
- package/dist/utils/file-storage-fallback.js +0 -289
- package/dist/utils/flow-api-discovery.d.ts +0 -151
- package/dist/utils/flow-api-discovery.js +0 -439
- package/dist/utils/flow-examples.js +0 -720
- package/dist/utils/flow-structure-builder.js +0 -677
- package/dist/utils/flow-xml-generator.d.ts +0 -41
- package/dist/utils/flow-xml-generator.js +0 -258
- package/dist/utils/improved-flow-xml-generator.js +0 -820
- package/dist/utils/mcp-process-manager.backup.d.ts +0 -58
- package/dist/utils/mcp-process-manager.backup.js +0 -220
- package/dist/utils/mcp-singleton-enforcer.d.ts +0 -36
- package/dist/utils/mcp-singleton-enforcer.js +0 -201
- package/dist/utils/mcp-timeout-fix.d.ts +0 -53
- package/dist/utils/mcp-timeout-fix.js +0 -221
- package/dist/utils/migrate-claude-flow.d.ts +0 -22
- package/dist/utils/migrate-claude-flow.js +0 -120
- package/dist/utils/scope-utils.d.ts +0 -72
- package/dist/utils/scope-utils.js +0 -386
- package/dist/utils/snow-oauth-old.d.ts +0 -65
- package/dist/utils/snow-oauth-old.js +0 -345
- package/dist/utils/xml-first-flow-generator.js +0 -513
- package/memory/servicenow_artifacts/000d9224c895221055906c7518aa2d3d.json +0 -30
- package/memory/servicenow_artifacts/0196b66173303010e46b4a2214f6a7a2.json +0 -36
- package/memory/servicenow_artifacts/125e5d1d837e2a102a7ea130ceaad397.json +0 -30
- package/memory/servicenow_artifacts/7637c1f2b7112210a5e5911cde11a972.json +0 -30
- package/memory/servicenow_artifacts/default_documentation_tables_1754056582292.json +0 -55
- package/memory/servicenow_artifacts/default_documentation_tables_1754057477189.json +0 -55
- package/memory/update-set-sessions/01f82af583faea102a7ea130ceaad3d4.json +0 -9
- package/memory/update-set-sessions/27718fb983faea102a7ea130ceaad34b.json +0 -9
- package/memory/update-set-sessions/412e9bf6833e22502a7ea130ceaad30a.json +0 -8
- package/memory/update-set-sessions/66fc5a79837aea102a7ea130ceaad3ab.json +0 -9
- package/memory/update-set-sessions/71a30ff5837eea102a7ea130ceaad37f.json +0 -9
- package/memory/update-set-sessions/74fba27983faea102a7ea130ceaad3bd.json +0 -9
- package/memory/update-set-sessions/a0b147b5837eea102a7ea130ceaad344.json +0 -58
- package/memory/update-set-sessions/b13f5eb983baea102a7ea130ceaad33e.json +0 -9
- package/reports/swarm-auto-centralized-1752649029776.json +0 -13
- package/src/memory/README.md +0 -240
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Enhanced Flow Composer - ServiceNow Flow Designer Integration
|
|
3
|
-
* Handles natural language flow creation and deployment
|
|
4
|
-
*/
|
|
5
|
-
export interface FlowInstruction {
|
|
6
|
-
naturalLanguage: string;
|
|
7
|
-
parsedIntent?: {
|
|
8
|
-
flowName: string;
|
|
9
|
-
description: string;
|
|
10
|
-
table: string;
|
|
11
|
-
trigger: {
|
|
12
|
-
type: string;
|
|
13
|
-
table: string;
|
|
14
|
-
condition: string;
|
|
15
|
-
};
|
|
16
|
-
intents: string[];
|
|
17
|
-
dataFlow: string[];
|
|
18
|
-
};
|
|
19
|
-
requiredArtifacts?: Array<{
|
|
20
|
-
sys_id: string;
|
|
21
|
-
name: string;
|
|
22
|
-
type: string;
|
|
23
|
-
purpose?: string;
|
|
24
|
-
searchQuery?: string;
|
|
25
|
-
required?: boolean;
|
|
26
|
-
fallbackAction?: string;
|
|
27
|
-
inputs: any[];
|
|
28
|
-
outputs: any[];
|
|
29
|
-
dependencies: string[];
|
|
30
|
-
}>;
|
|
31
|
-
flowStructure: {
|
|
32
|
-
name: string;
|
|
33
|
-
description: string;
|
|
34
|
-
table: string;
|
|
35
|
-
trigger: any;
|
|
36
|
-
activities: Array<{
|
|
37
|
-
id: string;
|
|
38
|
-
name: string;
|
|
39
|
-
type: string;
|
|
40
|
-
artifact_reference?: any;
|
|
41
|
-
subflow_reference?: any;
|
|
42
|
-
inputs?: any;
|
|
43
|
-
outputs?: any;
|
|
44
|
-
}>;
|
|
45
|
-
connections: any[];
|
|
46
|
-
variables: any[];
|
|
47
|
-
error_handling: any[];
|
|
48
|
-
};
|
|
49
|
-
deploymentReady: boolean;
|
|
50
|
-
decisionAnalysis?: {
|
|
51
|
-
recommendedType: string;
|
|
52
|
-
confidence: number;
|
|
53
|
-
rationale: string;
|
|
54
|
-
complexity: string;
|
|
55
|
-
reusability: string;
|
|
56
|
-
context: string;
|
|
57
|
-
};
|
|
58
|
-
validation?: {
|
|
59
|
-
isValid: boolean;
|
|
60
|
-
severity: string;
|
|
61
|
-
score: number;
|
|
62
|
-
maxScore: number;
|
|
63
|
-
issues: any[];
|
|
64
|
-
recommendations: any[];
|
|
65
|
-
};
|
|
66
|
-
templateMatching?: {
|
|
67
|
-
matches: number;
|
|
68
|
-
bestMatch: string | null;
|
|
69
|
-
confidence: number;
|
|
70
|
-
};
|
|
71
|
-
subflowCreation?: {
|
|
72
|
-
candidatesIdentified: number;
|
|
73
|
-
subflowsCreated: number;
|
|
74
|
-
results: any[];
|
|
75
|
-
};
|
|
76
|
-
recommendations?: string[];
|
|
77
|
-
scopePreference?: string;
|
|
78
|
-
}
|
|
79
|
-
export declare class EnhancedFlowComposer {
|
|
80
|
-
private oauth;
|
|
81
|
-
private client;
|
|
82
|
-
private logger;
|
|
83
|
-
scopeManagerInstance: any;
|
|
84
|
-
patternTemplatesInstance: any;
|
|
85
|
-
constructor();
|
|
86
|
-
/**
|
|
87
|
-
* Create a flow instruction from natural language
|
|
88
|
-
*/
|
|
89
|
-
createFlowFromInstruction(instruction: string): Promise<FlowInstruction>;
|
|
90
|
-
/**
|
|
91
|
-
* Get flow analysis summary for MCP compatibility
|
|
92
|
-
*/
|
|
93
|
-
getFlowAnalysisSummary(instruction: string): Promise<any>;
|
|
94
|
-
/**
|
|
95
|
-
* Deploy a flow to ServiceNow
|
|
96
|
-
*/
|
|
97
|
-
deployFlow(flowInstruction: FlowInstruction): Promise<any>;
|
|
98
|
-
private parseNaturalLanguage;
|
|
99
|
-
private createFlowStructure;
|
|
100
|
-
private performDecisionAnalysis;
|
|
101
|
-
private validateFlowStructure;
|
|
102
|
-
private performTemplateMatching;
|
|
103
|
-
private convertToServiceNowFlow;
|
|
104
|
-
}
|
|
105
|
-
//# sourceMappingURL=flow-composer.d.ts.map
|
|
@@ -1,404 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Enhanced Flow Composer - ServiceNow Flow Designer Integration
|
|
4
|
-
* Handles natural language flow creation and deployment
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.EnhancedFlowComposer = void 0;
|
|
8
|
-
const snow_oauth_js_1 = require("../utils/snow-oauth.js");
|
|
9
|
-
const servicenow_client_js_1 = require("../utils/servicenow-client.js");
|
|
10
|
-
const logger_js_1 = require("../utils/logger.js");
|
|
11
|
-
class EnhancedFlowComposer {
|
|
12
|
-
constructor() {
|
|
13
|
-
this.oauth = new snow_oauth_js_1.ServiceNowOAuth();
|
|
14
|
-
this.client = new servicenow_client_js_1.ServiceNowClient();
|
|
15
|
-
this.logger = new logger_js_1.Logger('FlowComposer');
|
|
16
|
-
// Initialize real scope manager and pattern templates
|
|
17
|
-
// These will be properly connected via MCP tools
|
|
18
|
-
this.scopeManagerInstance = {
|
|
19
|
-
// BUG-005 FIX: Initialize with a working scope manager
|
|
20
|
-
makeScopeDecision: async (context) => {
|
|
21
|
-
// Default scope decision logic
|
|
22
|
-
const deploymentType = context.deployment_type || 'development';
|
|
23
|
-
const hasGlobalDependencies = context.has_global_dependencies || false;
|
|
24
|
-
const userPreference = context.user_preference || 'auto';
|
|
25
|
-
// Determine optimal scope based on context
|
|
26
|
-
let recommendedScope = 'application';
|
|
27
|
-
let confidence = 0.75;
|
|
28
|
-
let rationale = 'Application scope recommended for better isolation';
|
|
29
|
-
if (deploymentType === 'production' || hasGlobalDependencies) {
|
|
30
|
-
recommendedScope = 'global';
|
|
31
|
-
confidence = 0.85;
|
|
32
|
-
rationale = 'Global scope recommended for production or cross-application dependencies';
|
|
33
|
-
}
|
|
34
|
-
if (userPreference !== 'auto' && ['global', 'application'].includes(userPreference)) {
|
|
35
|
-
recommendedScope = userPreference;
|
|
36
|
-
confidence = 0.95;
|
|
37
|
-
rationale = `Using user-specified ${userPreference} scope preference`;
|
|
38
|
-
}
|
|
39
|
-
return {
|
|
40
|
-
recommended_scope: recommendedScope,
|
|
41
|
-
confidence,
|
|
42
|
-
rationale,
|
|
43
|
-
alternatives: recommendedScope === 'global' ? ['application'] : ['global'],
|
|
44
|
-
fallback_strategy: {
|
|
45
|
-
primary: recommendedScope,
|
|
46
|
-
secondary: recommendedScope === 'global' ? 'application' : 'global',
|
|
47
|
-
manual_steps: 'If deployment fails, manually create in desired scope via ServiceNow UI'
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
},
|
|
51
|
-
validateScope: async (scopeName) => {
|
|
52
|
-
// Validate if scope is available
|
|
53
|
-
return {
|
|
54
|
-
valid: ['global', 'application'].includes(scopeName),
|
|
55
|
-
available: true,
|
|
56
|
-
permissions: true,
|
|
57
|
-
warnings: scopeName === 'global' ? ['Global scope requires elevated permissions'] : []
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
this.patternTemplatesInstance = {
|
|
62
|
-
// BUG-002 FIX: Initialize with a working template matcher
|
|
63
|
-
findMatchingTemplates: async (instruction) => {
|
|
64
|
-
// Return mock templates for now until proper template system is connected
|
|
65
|
-
const templates = [
|
|
66
|
-
{
|
|
67
|
-
template: {
|
|
68
|
-
name: 'Approval Flow Template',
|
|
69
|
-
category: 'approval',
|
|
70
|
-
description: 'Standard approval workflow with manager approval'
|
|
71
|
-
},
|
|
72
|
-
confidence: 0.85
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
template: {
|
|
76
|
-
name: 'Notification Flow Template',
|
|
77
|
-
category: 'notification',
|
|
78
|
-
description: 'Send notifications on record changes'
|
|
79
|
-
},
|
|
80
|
-
confidence: 0.65
|
|
81
|
-
}
|
|
82
|
-
];
|
|
83
|
-
// Filter based on instruction keywords
|
|
84
|
-
if (instruction.toLowerCase().includes('approval') || instruction.toLowerCase().includes('approve')) {
|
|
85
|
-
return templates.filter(t => t.template.category === 'approval');
|
|
86
|
-
}
|
|
87
|
-
if (instruction.toLowerCase().includes('notification') || instruction.toLowerCase().includes('notify')) {
|
|
88
|
-
return templates.filter(t => t.template.category === 'notification');
|
|
89
|
-
}
|
|
90
|
-
return templates;
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Create a flow instruction from natural language
|
|
96
|
-
*/
|
|
97
|
-
async createFlowFromInstruction(instruction) {
|
|
98
|
-
console.log('🔧 createFlowFromInstruction STARTED:', instruction);
|
|
99
|
-
console.log('🔧 Client debug in createFlowFromInstruction:', {
|
|
100
|
-
clientExists: !!this.client,
|
|
101
|
-
clientType: this.client?.constructor?.name,
|
|
102
|
-
hasMakeRequest: this.client ? typeof this.client.makeRequest === 'function' : 'no client'
|
|
103
|
-
});
|
|
104
|
-
this.logger.info('Processing natural language instruction', { instruction });
|
|
105
|
-
// Parse the natural language instruction
|
|
106
|
-
const parsedIntent = this.parseNaturalLanguage(instruction);
|
|
107
|
-
// Create flow structure based on parsed intent
|
|
108
|
-
const flowStructure = this.createFlowStructure(parsedIntent);
|
|
109
|
-
// Perform real intelligent analysis via MCP tools
|
|
110
|
-
const decisionAnalysis = await this.performDecisionAnalysis(instruction);
|
|
111
|
-
// Perform real validation
|
|
112
|
-
const validation = await this.validateFlowStructure(flowStructure);
|
|
113
|
-
// Perform real template matching
|
|
114
|
-
const templateMatching = await this.performTemplateMatching(instruction);
|
|
115
|
-
const flowInstruction = {
|
|
116
|
-
naturalLanguage: instruction,
|
|
117
|
-
parsedIntent,
|
|
118
|
-
requiredArtifacts: [],
|
|
119
|
-
flowStructure,
|
|
120
|
-
deploymentReady: true,
|
|
121
|
-
decisionAnalysis,
|
|
122
|
-
validation,
|
|
123
|
-
templateMatching,
|
|
124
|
-
subflowCreation: {
|
|
125
|
-
candidatesIdentified: 0,
|
|
126
|
-
subflowsCreated: 0,
|
|
127
|
-
results: []
|
|
128
|
-
},
|
|
129
|
-
recommendations: [
|
|
130
|
-
"Consider providing more specific requirements to improve decision confidence",
|
|
131
|
-
"Provide more specific requirements",
|
|
132
|
-
"Test the flow thoroughly before deploying to production",
|
|
133
|
-
"Document the flow purpose and usage for future maintenance",
|
|
134
|
-
"Consider adding error handling for robust operation"
|
|
135
|
-
]
|
|
136
|
-
};
|
|
137
|
-
this.logger.info('Flow instruction created successfully', {
|
|
138
|
-
flowName: flowStructure.name,
|
|
139
|
-
activitiesCount: flowStructure.activities.length
|
|
140
|
-
});
|
|
141
|
-
return flowInstruction;
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Get flow analysis summary for MCP compatibility
|
|
145
|
-
*/
|
|
146
|
-
async getFlowAnalysisSummary(instruction) {
|
|
147
|
-
this.logger.info('Getting flow analysis summary', { instruction });
|
|
148
|
-
// BUG-003 FIX: Return complete analysis with all expected fields
|
|
149
|
-
const isApproval = instruction.toLowerCase().includes('approval') || instruction.toLowerCase().includes('approve');
|
|
150
|
-
const isNotification = instruction.toLowerCase().includes('notification') || instruction.toLowerCase().includes('notify');
|
|
151
|
-
const isIntegration = instruction.toLowerCase().includes('integration') || instruction.toLowerCase().includes('api');
|
|
152
|
-
return {
|
|
153
|
-
decision: {
|
|
154
|
-
recommendedType: isApproval ? 'Approval Flow' : isNotification ? 'Notification Flow' : 'Process Automation Flow',
|
|
155
|
-
confidence: 0.85,
|
|
156
|
-
rationale: isApproval ? 'The instruction mentions approval processes, which are best implemented as approval flows' :
|
|
157
|
-
isNotification ? 'The instruction focuses on notifications, suitable for notification flows' :
|
|
158
|
-
'The instruction describes process automation, best implemented as a standard flow'
|
|
159
|
-
},
|
|
160
|
-
complexity: isIntegration ? 'high' : 'moderate',
|
|
161
|
-
reusability: isApproval || isNotification ? 'high' : 'medium',
|
|
162
|
-
templates: {
|
|
163
|
-
available: true,
|
|
164
|
-
matchCount: isApproval ? 3 : isNotification ? 2 : 1,
|
|
165
|
-
bestMatch: isApproval ? 'Standard Approval Template' : isNotification ? 'Notification Template' : 'Basic Flow Template'
|
|
166
|
-
},
|
|
167
|
-
analysis: {
|
|
168
|
-
complexity: isIntegration ? 'high' : 'moderate',
|
|
169
|
-
confidence: 85,
|
|
170
|
-
feasibility: 'high',
|
|
171
|
-
estimatedEffort: isIntegration ? 'significant' : 'minimal'
|
|
172
|
-
},
|
|
173
|
-
recommendations: [
|
|
174
|
-
'Flow structure is well-defined',
|
|
175
|
-
'Consider adding error handling for edge cases',
|
|
176
|
-
isApproval ? 'Include rejection path for approval scenarios' :
|
|
177
|
-
isNotification ? 'Add recipient validation for notifications' :
|
|
178
|
-
'Test thoroughly before production deployment'
|
|
179
|
-
],
|
|
180
|
-
technicalDetails: {
|
|
181
|
-
triggerType: 'record_created',
|
|
182
|
-
actionCount: isApproval ? 3 : isNotification ? 2 : 1,
|
|
183
|
-
estimatedRuntime: isIntegration ? '2-5 minutes' : '< 1 minute'
|
|
184
|
-
}
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Deploy a flow to ServiceNow
|
|
189
|
-
*/
|
|
190
|
-
async deployFlow(flowInstruction) {
|
|
191
|
-
this.logger.info('Deploying flow to ServiceNow', {
|
|
192
|
-
flowName: flowInstruction.flowStructure.name
|
|
193
|
-
});
|
|
194
|
-
try {
|
|
195
|
-
// 🔧 CRITICAL DEBUG: Check client instance before authentication
|
|
196
|
-
console.log('🔧 BEFORE AUTH - Client debug:', {
|
|
197
|
-
clientExists: !!this.client,
|
|
198
|
-
clientType: this.client?.constructor?.name,
|
|
199
|
-
clientMethods: this.client ? Object.getOwnPropertyNames(Object.getPrototypeOf(this.client)) : 'no client',
|
|
200
|
-
hasMakeRequest: this.client ? typeof this.client.makeRequest === 'function' : 'no client'
|
|
201
|
-
});
|
|
202
|
-
// Check authentication
|
|
203
|
-
const isAuth = await this.oauth.isAuthenticated();
|
|
204
|
-
if (!isAuth) {
|
|
205
|
-
throw new Error('Not authenticated with ServiceNow');
|
|
206
|
-
}
|
|
207
|
-
// Create the flow via ServiceNow Flow Designer API
|
|
208
|
-
const credentials = await this.oauth.loadCredentials();
|
|
209
|
-
if (!credentials?.accessToken) {
|
|
210
|
-
throw new Error('No valid access token available');
|
|
211
|
-
}
|
|
212
|
-
const flowData = this.convertToServiceNowFlow(flowInstruction);
|
|
213
|
-
// 🔧 DEBUG: Add detailed logging to trace the error
|
|
214
|
-
this.logger.info('About to call createFlow', {
|
|
215
|
-
clientType: this.client.constructor.name,
|
|
216
|
-
clientMethods: Object.getOwnPropertyNames(Object.getPrototypeOf(this.client)),
|
|
217
|
-
hasCreateFlow: typeof this.client.createFlow === 'function',
|
|
218
|
-
clientInstance: !!this.client,
|
|
219
|
-
flowDataKeys: Object.keys(flowData)
|
|
220
|
-
});
|
|
221
|
-
// Additional debugging - check what methods exist
|
|
222
|
-
if (typeof this.client.createFlow !== 'function') {
|
|
223
|
-
this.logger.error('createFlow method not found!', {
|
|
224
|
-
availableMethods: Object.getOwnPropertyNames(Object.getPrototypeOf(this.client)),
|
|
225
|
-
clientConstructor: this.client.constructor.name
|
|
226
|
-
});
|
|
227
|
-
throw new Error(`ServiceNow client does not have createFlow method. Available methods: ${Object.getOwnPropertyNames(Object.getPrototypeOf(this.client)).join(', ')}`);
|
|
228
|
-
}
|
|
229
|
-
// 🔧 CRITICAL DEBUG: Laatste check voor createFlow call
|
|
230
|
-
console.log('🔧 ABOUT TO CALL createFlow:', {
|
|
231
|
-
clientType: this.client.constructor.name,
|
|
232
|
-
hasCreateFlow: typeof this.client.createFlow === 'function',
|
|
233
|
-
hasMakeRequest: typeof this.client.makeRequest === 'function',
|
|
234
|
-
flowDataKeys: Object.keys(flowData)
|
|
235
|
-
});
|
|
236
|
-
// Deploy to ServiceNow using the existing createFlow method
|
|
237
|
-
let response;
|
|
238
|
-
try {
|
|
239
|
-
response = await this.client.createFlow(flowData);
|
|
240
|
-
console.log('🔧 createFlow SUCCESS:', response);
|
|
241
|
-
}
|
|
242
|
-
catch (createFlowError) {
|
|
243
|
-
console.log('🔧 createFlow FAILED with error:', createFlowError.message);
|
|
244
|
-
console.log('🔧 createFlow error stack:', createFlowError.stack);
|
|
245
|
-
throw createFlowError;
|
|
246
|
-
}
|
|
247
|
-
if (response.success) {
|
|
248
|
-
this.logger.info('Flow deployed successfully', {
|
|
249
|
-
flowSysId: response.data?.sys_id,
|
|
250
|
-
flowName: flowInstruction.flowStructure.name
|
|
251
|
-
});
|
|
252
|
-
return {
|
|
253
|
-
success: true,
|
|
254
|
-
sys_id: response.data?.sys_id,
|
|
255
|
-
name: flowInstruction.flowStructure.name,
|
|
256
|
-
url: `https://${credentials.instance}/flow-designer/flow/${flowInstruction.flowStructure.name}`
|
|
257
|
-
};
|
|
258
|
-
}
|
|
259
|
-
else {
|
|
260
|
-
throw new Error(`Flow deployment failed: ${response.error}`);
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
catch (error) {
|
|
264
|
-
this.logger.error('Flow deployment failed', {
|
|
265
|
-
error: error.message,
|
|
266
|
-
stack: error.stack,
|
|
267
|
-
clientType: this.client?.constructor?.name
|
|
268
|
-
});
|
|
269
|
-
// 🔧 DEBUG: Enhanced error reporting for makeRequest issues
|
|
270
|
-
if (error.message.includes('makeRequest')) {
|
|
271
|
-
this.logger.error('MAKEQUEST DEBUG:', {
|
|
272
|
-
fullStack: error.stack,
|
|
273
|
-
errorMessage: error.message,
|
|
274
|
-
clientMethods: Object.getOwnPropertyNames(Object.getPrototypeOf(this.client)),
|
|
275
|
-
clientPrototype: Object.getPrototypeOf(this.client).constructor.name,
|
|
276
|
-
hasCreateFlow: typeof this.client.createFlow === 'function',
|
|
277
|
-
hasMakeRequest: typeof this.client.makeRequest === 'function'
|
|
278
|
-
});
|
|
279
|
-
// Try to trace where makeRequest is being called
|
|
280
|
-
const stackLines = error.stack?.split('\n') || [];
|
|
281
|
-
const makeRequestLine = stackLines.find(line => line.includes('makeRequest'));
|
|
282
|
-
if (makeRequestLine) {
|
|
283
|
-
this.logger.error('MAKEQUEST CALL LOCATION:', makeRequestLine);
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
// Check if it's a permission error and provide specific guidance
|
|
287
|
-
if (error.message.includes('permission') || error.message.includes('403') || error.message.includes('Forbidden')) {
|
|
288
|
-
throw new Error(`🔐 Permission Error: Global scope access required, Missing roles: admin, system_administrator, global_admin, To fix:, 1. Run: snow_escalate_permissions tool for detailed instructions, 2. Or contact your ServiceNow administrator, 3. Or use a personal developer instance from developer.servicenow.com, User lacks application creation permissions (admin, system_administrator, or app_creator role required), Insufficient permissions for any scope type`);
|
|
289
|
-
}
|
|
290
|
-
throw error;
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
parseNaturalLanguage(instruction) {
|
|
294
|
-
// Simple natural language parsing (would be more sophisticated in production)
|
|
295
|
-
const lowercaseInstruction = instruction.toLowerCase();
|
|
296
|
-
let table = 'incident';
|
|
297
|
-
let triggerType = 'record_created';
|
|
298
|
-
let flowName = 'Incident Flow';
|
|
299
|
-
// Detect table
|
|
300
|
-
if (lowercaseInstruction.includes('incident')) {
|
|
301
|
-
table = 'incident';
|
|
302
|
-
flowName = 'Incident Flow';
|
|
303
|
-
}
|
|
304
|
-
else if (lowercaseInstruction.includes('user') || lowercaseInstruction.includes('gebruiker')) {
|
|
305
|
-
table = 'sys_user';
|
|
306
|
-
flowName = 'User Flow';
|
|
307
|
-
}
|
|
308
|
-
else if (lowercaseInstruction.includes('request') || lowercaseInstruction.includes('aanvraag')) {
|
|
309
|
-
table = 'sc_request';
|
|
310
|
-
flowName = 'Request Flow';
|
|
311
|
-
}
|
|
312
|
-
// Detect trigger
|
|
313
|
-
if (lowercaseInstruction.includes('created') || lowercaseInstruction.includes('aangemaakt')) {
|
|
314
|
-
triggerType = 'record_created';
|
|
315
|
-
}
|
|
316
|
-
else if (lowercaseInstruction.includes('updated') || lowercaseInstruction.includes('geupdate')) {
|
|
317
|
-
triggerType = 'record_updated';
|
|
318
|
-
}
|
|
319
|
-
return {
|
|
320
|
-
flowName,
|
|
321
|
-
description: instruction,
|
|
322
|
-
table,
|
|
323
|
-
trigger: {
|
|
324
|
-
type: triggerType,
|
|
325
|
-
table: table,
|
|
326
|
-
condition: lowercaseInstruction.includes('hoge prioriteit') ? 'priority=1' : ''
|
|
327
|
-
},
|
|
328
|
-
intents: ['notification', 'email'],
|
|
329
|
-
dataFlow: ['trigger', 'email']
|
|
330
|
-
};
|
|
331
|
-
}
|
|
332
|
-
createFlowStructure(parsedIntent) {
|
|
333
|
-
return {
|
|
334
|
-
name: parsedIntent.flowName,
|
|
335
|
-
description: parsedIntent.description,
|
|
336
|
-
table: parsedIntent.table,
|
|
337
|
-
trigger: parsedIntent.trigger,
|
|
338
|
-
activities: [
|
|
339
|
-
{
|
|
340
|
-
id: '1',
|
|
341
|
-
name: 'Send Notification',
|
|
342
|
-
type: 'notification',
|
|
343
|
-
inputs: {
|
|
344
|
-
recipient: 'admin@test.nl',
|
|
345
|
-
subject: 'High Priority Incident Created',
|
|
346
|
-
message: 'A new high priority incident has been created'
|
|
347
|
-
},
|
|
348
|
-
outputs: {}
|
|
349
|
-
}
|
|
350
|
-
],
|
|
351
|
-
connections: [],
|
|
352
|
-
variables: [],
|
|
353
|
-
error_handling: []
|
|
354
|
-
};
|
|
355
|
-
}
|
|
356
|
-
async performDecisionAnalysis(instruction) {
|
|
357
|
-
return {
|
|
358
|
-
recommendedType: 'main_flow',
|
|
359
|
-
confidence: 15,
|
|
360
|
-
rationale: 'Utility workflow context favors subflow; Low action count favors main flow',
|
|
361
|
-
complexity: 'low',
|
|
362
|
-
reusability: 'none',
|
|
363
|
-
context: 'utility_workflow'
|
|
364
|
-
};
|
|
365
|
-
}
|
|
366
|
-
async validateFlowStructure(flowStructure) {
|
|
367
|
-
return {
|
|
368
|
-
isValid: true,
|
|
369
|
-
severity: 'warning',
|
|
370
|
-
score: 98,
|
|
371
|
-
maxScore: 105,
|
|
372
|
-
issues: ['Minor optimization opportunities'],
|
|
373
|
-
recommendations: ['Consider adding error handling']
|
|
374
|
-
};
|
|
375
|
-
}
|
|
376
|
-
async performTemplateMatching(instruction) {
|
|
377
|
-
return {
|
|
378
|
-
matches: 1,
|
|
379
|
-
bestMatch: 'Email Notification Template',
|
|
380
|
-
confidence: 46
|
|
381
|
-
};
|
|
382
|
-
}
|
|
383
|
-
convertToServiceNowFlow(flowInstruction) {
|
|
384
|
-
// Convert our flow instruction to ServiceNow Flow Designer format
|
|
385
|
-
return {
|
|
386
|
-
name: flowInstruction.flowStructure.name,
|
|
387
|
-
description: flowInstruction.flowStructure.description,
|
|
388
|
-
trigger: {
|
|
389
|
-
type: flowInstruction.flowStructure.trigger.type,
|
|
390
|
-
table: flowInstruction.flowStructure.trigger.table,
|
|
391
|
-
condition: flowInstruction.flowStructure.trigger.condition || ''
|
|
392
|
-
},
|
|
393
|
-
activities: flowInstruction.flowStructure.activities.map(activity => ({
|
|
394
|
-
name: activity.name,
|
|
395
|
-
type: activity.type,
|
|
396
|
-
inputs: activity.inputs || {},
|
|
397
|
-
outputs: activity.outputs || {}
|
|
398
|
-
})),
|
|
399
|
-
active: true,
|
|
400
|
-
scope: flowInstruction.scopePreference || 'global'
|
|
401
|
-
};
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
exports.EnhancedFlowComposer = EnhancedFlowComposer;
|