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.
- package/{.claude/mcp-config.json → .mcp.json} +13 -12
- package/.releaserc.json +47 -0
- package/README.md +6 -0
- package/package.json +1 -1
- package/.claude/claude-settings.json +0 -15
- package/.claude/commands/analysis/README.md +0 -9
- package/.claude/commands/automation/README.md +0 -9
- package/.claude/commands/github/README.md +0 -11
- package/.claude/commands/helpers/standard-checkpoint-hooks.sh +0 -179
- package/.claude/commands/hooks/README.md +0 -11
- package/.claude/commands/monitoring/README.md +0 -9
- package/.claude/commands/optimization/README.md +0 -9
- package/.claude/commands/training/README.md +0 -9
- package/.claude/commands/workflows/README.md +0 -9
- package/.claude/config.json +0 -36
- package/.claude/helpers/github-setup.sh +0 -28
- package/.claude/helpers/quick-start.sh +0 -19
- package/.claude/helpers/setup-mcp.sh +0 -18
- package/.claude/settings.json +0 -114
- package/.claude/settings.local.json +0 -33
- package/.claude-flow/metrics/agent-metrics.json +0 -1
- package/.claude-flow/metrics/performance.json +0 -9
- package/.claude-flow/metrics/system-metrics.json +0 -15986
- package/.claude-flow/metrics/task-metrics.json +0 -10
- package/.roo/README.md +0 -402
- package/.roo/mcp-list.txt +0 -257
- package/.roo/mcp.json +0 -32
- package/.roo/workflows/basic-tdd.json +0 -32
- package/.roomodes +0 -201
- package/CLAUDE.md +0 -393
- package/bin/snow-flow.js +0 -3
- package/dist/cli.js.bak +0 -2052
- package/dist/config/snow-flow-config.d.ts +0 -1492
- package/dist/config/snow-flow-config.js +0 -938
- package/scripts/create-env.js +0 -91
- package/scripts/postinstall.js +0 -30
- package/scripts/register-mcp-servers.js +0 -210
- package/scripts/reset-mcp-servers.js +0 -246
- package/scripts/setup-mcp.js +0 -106
- package/scripts/update-version.js +0 -31
- package/src/agents/README.md +0 -192
- package/src/agents/base-agent.ts +0 -251
- package/src/agents/coordinator.ts +0 -971
- package/src/agents/index.ts +0 -18
- package/src/agents/queen-403-handler.ts +0 -230
- package/src/agents/queen-agent.ts +0 -1399
- package/src/agents/script-writer-agent.ts +0 -769
- package/src/agents/security-agent.ts +0 -726
- package/src/agents/widget-creator-agent.ts +0 -568
- package/src/api/error-handling.ts +0 -1758
- package/src/api/natural-language-mapper.ts +0 -630
- package/src/api/performance-optimizer.ts +0 -891
- package/src/api/transaction-manager.ts +0 -754
- package/src/cli/deploy-artifact.ts +0 -304
- package/src/cli/snow-flow-cli-integration.ts +0 -434
- package/src/cli.ts +0 -4455
- package/src/cli.ts.bak +0 -5616
- package/src/compliance/advanced-compliance-system.ts +0 -1268
- package/src/compliance/index.ts +0 -19
- package/src/config/snow-flow-config.ts +0 -1019
- package/src/documentation/index.ts +0 -16
- package/src/documentation/self-documenting-system.ts +0 -1421
- package/src/dynamic-version.ts +0 -44
- package/src/healing/index.ts +0 -20
- package/src/healing/self-healing-system.ts +0 -1435
- package/src/health/README.md +0 -161
- package/src/health/system-health.ts +0 -995
- package/src/index.ts +0 -60
- package/src/intelligence/acl-analyzer.ts +0 -377
- package/src/intelligence/auto-resolution-engine.ts +0 -643
- package/src/intelligence/gap-analysis-engine.ts +0 -488
- package/src/intelligence/manual-instructions-generator.ts +0 -744
- package/src/intelligence/mcp-coverage-analyzer.ts +0 -708
- package/src/intelligence/multi-pass-requirements-analyzer.ts +0 -603
- package/src/intelligence/performance-recommendations-engine.ts +0 -1223
- package/src/intelligence/requirements-analyzer.ts +0 -1148
- package/src/intelligence/task-analyzer.ts +0 -628
- package/src/managers/scope-manager.ts +0 -555
- package/src/mcp/advanced/servicenow-advanced-features-mcp.ts +0 -16110
- package/src/mcp/base-mcp-server.ts +0 -660
- package/src/mcp/http-transport-wrapper.ts +0 -426
- package/src/mcp/service-discovery-client.ts +0 -312
- package/src/mcp/servicenow-automation-mcp-refactored.ts +0 -678
- package/src/mcp/servicenow-automation-mcp.ts +0 -838
- package/src/mcp/servicenow-deployment-mcp-refactored.ts +0 -1292
- package/src/mcp/servicenow-deployment-mcp.ts +0 -7244
- package/src/mcp/servicenow-graph-memory-mcp-refactored.ts +0 -721
- package/src/mcp/servicenow-graph-memory-mcp.ts +0 -832
- package/src/mcp/servicenow-integration-mcp-refactored.ts +0 -655
- package/src/mcp/servicenow-integration-mcp.ts +0 -819
- package/src/mcp/servicenow-intelligent-mcp-refactored.ts +0 -977
- package/src/mcp/servicenow-intelligent-mcp.ts +0 -4638
- package/src/mcp/servicenow-mcp-server.ts +0 -728
- package/src/mcp/servicenow-memory-mcp.ts +0 -474
- package/src/mcp/servicenow-operations-mcp-refactored.ts +0 -1995
- package/src/mcp/servicenow-operations-mcp.ts +0 -3384
- package/src/mcp/servicenow-platform-development-mcp-refactored.ts +0 -611
- package/src/mcp/servicenow-platform-development-mcp.ts +0 -970
- package/src/mcp/servicenow-progressive-indexer.ts +0 -370
- package/src/mcp/servicenow-reporting-analytics-mcp-refactored.ts +0 -695
- package/src/mcp/servicenow-reporting-analytics-mcp.ts +0 -1123
- package/src/mcp/servicenow-security-compliance-mcp-refactored.ts +0 -642
- package/src/mcp/servicenow-security-compliance-mcp.ts +0 -1157
- package/src/mcp/servicenow-update-set-mcp-refactored.ts +0 -751
- package/src/mcp/servicenow-update-set-mcp.ts +0 -811
- package/src/mcp/shared/agent-context-provider.ts +0 -365
- package/src/mcp/shared/base-mcp-server.ts +0 -2463
- package/src/mcp/shared/mcp-memory-manager.ts +0 -540
- package/src/mcp/shared/mcp-resource-manager.ts +0 -367
- package/src/mcp/snow-flow-mcp.ts +0 -911
- package/src/mcp/start-all-mcp-servers.ts +0 -102
- package/src/mcp/start-servicenow-mcp.ts +0 -67
- package/src/monitoring/enhanced-monitoring-system.ts +0 -1345
- package/src/monitoring/performance-tracker.ts +0 -777
- package/src/optimization/cost-optimization-engine.ts +0 -1125
- package/src/optimization/index.ts +0 -10
- package/src/queen/README.md +0 -403
- package/src/queen/agent-factory.ts +0 -574
- package/src/queen/index.ts +0 -94
- package/src/queen/mcp-execution-bridge.ts +0 -681
- package/src/queen/neural-learning.ts +0 -319
- package/src/queen/parallel-agent-engine.ts +0 -848
- package/src/queen/queen-memory-system.ts +0 -490
- package/src/queen/queen-memory.ts +0 -456
- package/src/queen/servicenow-queen.ts +0 -1029
- package/src/queen/types.ts +0 -87
- package/src/rollback/smart-rollback-system.ts +0 -866
- package/src/schemas/deployment.schema.json +0 -58
- package/src/schemas/flow.schema.json +0 -79
- package/src/schemas/widget.schema.json +0 -72
- package/src/snow-flow-system.ts +0 -541
- package/src/sparc/sparc-help.ts +0 -49
- package/src/sparc/team-sparc.ts +0 -88
- package/src/strategies/global-scope-strategy.ts +0 -736
- package/src/templates/base/application.template.json +0 -45
- package/src/templates/base/business_rule.template.json +0 -33
- package/src/templates/base/script_include.template.json +0 -18
- package/src/templates/base/table.template.json +0 -64
- package/src/templates/base/widget.template.json +0 -25
- package/src/templates/patterns/composite.incident-management.template.json +0 -140
- package/src/templates/patterns/widget.dashboard.template.json +0 -238
- package/src/templates/patterns/widget.datatable.template.json +0 -292
- package/src/testing/integration-test-suite.ts +0 -1276
- package/src/types/index.ts +0 -183
- package/src/types/neo4j-driver.d.ts +0 -23
- package/src/types/servicenow.types.ts +0 -307
- package/src/types/snow-flow.types.ts +0 -186
- package/src/types/todo.types.ts +0 -70
- package/src/utils/action-type-cache.ts +0 -286
- package/src/utils/agent-detector.ts +0 -573
- package/src/utils/artifact-tracker.ts +0 -379
- package/src/utils/dependency-detector.ts +0 -233
- package/src/utils/deployment-metadata-handler.ts +0 -518
- package/src/utils/error-recovery.ts +0 -680
- package/src/utils/logger.ts +0 -60
- package/src/utils/mcp-auth-middleware.ts +0 -262
- package/src/utils/mcp-config-manager.ts +0 -270
- package/src/utils/mcp-server-manager.ts +0 -446
- package/src/utils/mcp-tool-registry.ts +0 -298
- package/src/utils/migrate-snow-flow.ts +0 -98
- package/src/utils/oauth-html-templates.ts +0 -188
- package/src/utils/scope-utils.ts +0 -443
- package/src/utils/servicenow-client.ts +0 -3321
- package/src/utils/servicenow-id-generator.ts +0 -181
- package/src/utils/snow-memory-manager.ts +0 -605
- package/src/utils/snow-oauth.ts +0 -797
- package/src/utils/template-engine.ts +0 -463
- package/src/utils/theme-manager.ts +0 -295
- package/src/utils/unified-auth-store.ts +0 -222
- package/src/utils/update-set-importer.ts +0 -422
- package/src/utils/update-set-xml-packager.ts +0 -371
- package/src/utils/widget-template-generator.ts +0 -1744
- package/src/version.ts +0 -1950
|
@@ -1,298 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* MCP Tool Registry Mapper
|
|
4
|
-
*
|
|
5
|
-
* Solves Issue #2: Tool Registry Mapping Failures
|
|
6
|
-
* Provides robust tool name resolution between different MCP providers
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import { Logger } from './logger.js';
|
|
10
|
-
|
|
11
|
-
export interface ToolMapping {
|
|
12
|
-
canonicalName: string;
|
|
13
|
-
aliases: string[];
|
|
14
|
-
provider: string;
|
|
15
|
-
actualTool: string;
|
|
16
|
-
description?: string;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export class MCPToolRegistry {
|
|
20
|
-
private toolMappings: Map<string, ToolMapping> = new Map();
|
|
21
|
-
private logger: Logger;
|
|
22
|
-
|
|
23
|
-
constructor() {
|
|
24
|
-
this.logger = new Logger('MCPToolRegistry');
|
|
25
|
-
this.initializeDefaultMappings();
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Initialize default tool mappings
|
|
30
|
-
*/
|
|
31
|
-
private initializeDefaultMappings(): void {
|
|
32
|
-
// ServiceNow table schema discovery - common confusion point
|
|
33
|
-
this.registerTool({
|
|
34
|
-
canonicalName: 'table_schema_discovery',
|
|
35
|
-
aliases: [
|
|
36
|
-
'mcp__servicenow-operations__snow_table_schema_discovery',
|
|
37
|
-
'snow_table_schema_discovery',
|
|
38
|
-
'table_schema',
|
|
39
|
-
'schema_discovery'
|
|
40
|
-
],
|
|
41
|
-
provider: 'servicenow-platform-development',
|
|
42
|
-
actualTool: 'mcp__servicenow-platform-development__snow_table_schema_discovery',
|
|
43
|
-
description: 'Comprehensive table schema discovery'
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
// Flow deployment tools
|
|
47
|
-
this.registerTool({
|
|
48
|
-
canonicalName: 'deploy_flow',
|
|
49
|
-
aliases: [
|
|
50
|
-
'mcp__servicenow-deployment__snow_deploy_flow',
|
|
51
|
-
'snow_deploy_flow',
|
|
52
|
-
'deploy_flow',
|
|
53
|
-
'flow_deploy'
|
|
54
|
-
],
|
|
55
|
-
provider: 'servicenow-deployment',
|
|
56
|
-
actualTool: 'mcp__servicenow-deployment__snow_deploy',
|
|
57
|
-
description: 'Deploy flows to ServiceNow'
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
// Widget deployment
|
|
61
|
-
this.registerTool({
|
|
62
|
-
canonicalName: 'deploy_widget',
|
|
63
|
-
aliases: [
|
|
64
|
-
'mcp__servicenow-deployment__snow_deploy_widget',
|
|
65
|
-
'snow_deploy_widget',
|
|
66
|
-
'deploy_widget',
|
|
67
|
-
'widget_deploy'
|
|
68
|
-
],
|
|
69
|
-
provider: 'servicenow-deployment',
|
|
70
|
-
actualTool: 'mcp__servicenow-deployment__snow_deploy',
|
|
71
|
-
description: 'Deploy widgets to ServiceNow'
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
// Update Set management
|
|
76
|
-
this.registerTool({
|
|
77
|
-
canonicalName: 'update_set_create',
|
|
78
|
-
aliases: [
|
|
79
|
-
'mcp__servicenow-update-set__snow_update_set_create',
|
|
80
|
-
'snow_update_set_create',
|
|
81
|
-
'create_update_set',
|
|
82
|
-
'update_set_new'
|
|
83
|
-
],
|
|
84
|
-
provider: 'servicenow-update-set',
|
|
85
|
-
actualTool: 'mcp__servicenow-update-set__snow_update_set_create',
|
|
86
|
-
description: 'Create Update Sets'
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
// Authentication diagnostics
|
|
90
|
-
this.registerTool({
|
|
91
|
-
canonicalName: 'auth_diagnostics',
|
|
92
|
-
aliases: [
|
|
93
|
-
'mcp__servicenow-deployment__snow_auth_diagnostics',
|
|
94
|
-
'snow_auth_diagnostics',
|
|
95
|
-
'auth_check',
|
|
96
|
-
'permission_check'
|
|
97
|
-
],
|
|
98
|
-
provider: 'servicenow-deployment',
|
|
99
|
-
actualTool: 'mcp__servicenow-deployment__snow_auth_diagnostics',
|
|
100
|
-
description: 'Authentication and permission diagnostics'
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
// Catalog item management
|
|
104
|
-
this.registerTool({
|
|
105
|
-
canonicalName: 'catalog_item_manager',
|
|
106
|
-
aliases: [
|
|
107
|
-
'mcp__servicenow-operations__snow_catalog_item_manager',
|
|
108
|
-
'snow_catalog_item_manager',
|
|
109
|
-
'catalog_manager',
|
|
110
|
-
'manage_catalog'
|
|
111
|
-
],
|
|
112
|
-
provider: 'servicenow-operations',
|
|
113
|
-
actualTool: 'mcp__servicenow-operations__snow_catalog_item_manager',
|
|
114
|
-
description: 'Manage service catalog items'
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
// Platform development tools
|
|
118
|
-
this.registerTool({
|
|
119
|
-
canonicalName: 'discover_table_fields',
|
|
120
|
-
aliases: [
|
|
121
|
-
'mcp__servicenow-platform-development__snow_discover_table_fields',
|
|
122
|
-
'snow_discover_table_fields',
|
|
123
|
-
'discover_fields',
|
|
124
|
-
'table_fields'
|
|
125
|
-
],
|
|
126
|
-
provider: 'servicenow-platform-development',
|
|
127
|
-
actualTool: 'mcp__servicenow-platform-development__snow_discover_table_fields',
|
|
128
|
-
description: 'Discover table fields'
|
|
129
|
-
});
|
|
130
|
-
|
|
131
|
-
// Add more mappings as needed...
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* Register a tool mapping
|
|
136
|
-
*/
|
|
137
|
-
registerTool(mapping: ToolMapping): void {
|
|
138
|
-
// Register by canonical name
|
|
139
|
-
this.toolMappings.set(mapping.canonicalName, mapping);
|
|
140
|
-
|
|
141
|
-
// Register by actual tool name
|
|
142
|
-
this.toolMappings.set(mapping.actualTool, mapping);
|
|
143
|
-
|
|
144
|
-
// Register by all aliases
|
|
145
|
-
mapping.aliases.forEach(alias => {
|
|
146
|
-
this.toolMappings.set(alias.toLowerCase(), mapping);
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
this.logger.debug(`Registered tool: ${mapping.canonicalName} with ${mapping.aliases.length} aliases`);
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* Resolve a tool name to its actual MCP tool
|
|
154
|
-
*/
|
|
155
|
-
resolveTool(toolName: string): string | null {
|
|
156
|
-
// Try exact match first
|
|
157
|
-
let mapping = this.toolMappings.get(toolName);
|
|
158
|
-
|
|
159
|
-
// Try lowercase match
|
|
160
|
-
if (!mapping) {
|
|
161
|
-
mapping = this.toolMappings.get(toolName.toLowerCase());
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
// Try partial matches
|
|
165
|
-
if (!mapping) {
|
|
166
|
-
const searchKey = toolName.toLowerCase();
|
|
167
|
-
for (const [key, value] of this.toolMappings.entries()) {
|
|
168
|
-
if (key.includes(searchKey) || searchKey.includes(key)) {
|
|
169
|
-
mapping = value;
|
|
170
|
-
break;
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
if (mapping) {
|
|
176
|
-
this.logger.debug(`Resolved '${toolName}' to '${mapping.actualTool}'`);
|
|
177
|
-
return mapping.actualTool;
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
this.logger.warn(`Could not resolve tool: ${toolName}`);
|
|
181
|
-
return null;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
/**
|
|
185
|
-
* Get all tools for a provider
|
|
186
|
-
*/
|
|
187
|
-
getProviderTools(provider: string): ToolMapping[] {
|
|
188
|
-
const tools: ToolMapping[] = [];
|
|
189
|
-
const seen = new Set<string>();
|
|
190
|
-
|
|
191
|
-
for (const mapping of this.toolMappings.values()) {
|
|
192
|
-
if (mapping.provider === provider && !seen.has(mapping.canonicalName)) {
|
|
193
|
-
tools.push(mapping);
|
|
194
|
-
seen.add(mapping.canonicalName);
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
return tools;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
/**
|
|
202
|
-
* Search tools by keyword
|
|
203
|
-
*/
|
|
204
|
-
searchTools(keyword: string): ToolMapping[] {
|
|
205
|
-
const results: ToolMapping[] = [];
|
|
206
|
-
const seen = new Set<string>();
|
|
207
|
-
const searchKey = keyword.toLowerCase();
|
|
208
|
-
|
|
209
|
-
for (const mapping of this.toolMappings.values()) {
|
|
210
|
-
if (seen.has(mapping.canonicalName)) continue;
|
|
211
|
-
|
|
212
|
-
if (
|
|
213
|
-
mapping.canonicalName.includes(searchKey) ||
|
|
214
|
-
mapping.description?.toLowerCase().includes(searchKey) ||
|
|
215
|
-
mapping.aliases.some(alias => alias.toLowerCase().includes(searchKey))
|
|
216
|
-
) {
|
|
217
|
-
results.push(mapping);
|
|
218
|
-
seen.add(mapping.canonicalName);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
return results;
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
/**
|
|
226
|
-
* Check if a tool exists
|
|
227
|
-
*/
|
|
228
|
-
toolExists(toolName: string): boolean {
|
|
229
|
-
return this.resolveTool(toolName) !== null;
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
/**
|
|
233
|
-
* Get tool info
|
|
234
|
-
*/
|
|
235
|
-
getToolInfo(toolName: string): ToolMapping | null {
|
|
236
|
-
const resolved = this.resolveTool(toolName);
|
|
237
|
-
if (!resolved) return null;
|
|
238
|
-
|
|
239
|
-
return this.toolMappings.get(resolved) || null;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
/**
|
|
243
|
-
* Export all mappings for documentation
|
|
244
|
-
*/
|
|
245
|
-
exportMappings(): Record<string, ToolMapping> {
|
|
246
|
-
const exports: Record<string, ToolMapping> = {};
|
|
247
|
-
const seen = new Set<string>();
|
|
248
|
-
|
|
249
|
-
for (const mapping of this.toolMappings.values()) {
|
|
250
|
-
if (!seen.has(mapping.canonicalName)) {
|
|
251
|
-
exports[mapping.canonicalName] = mapping;
|
|
252
|
-
seen.add(mapping.canonicalName);
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
return exports;
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
// Singleton instance
|
|
261
|
-
let registryInstance: MCPToolRegistry | null = null;
|
|
262
|
-
|
|
263
|
-
/**
|
|
264
|
-
* Get or create registry instance
|
|
265
|
-
*/
|
|
266
|
-
export function getToolRegistry(): MCPToolRegistry {
|
|
267
|
-
if (!registryInstance) {
|
|
268
|
-
registryInstance = new MCPToolRegistry();
|
|
269
|
-
}
|
|
270
|
-
return registryInstance;
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
/**
|
|
274
|
-
* Helper function to resolve tool names
|
|
275
|
-
*/
|
|
276
|
-
export function resolveToolName(toolName: string): string {
|
|
277
|
-
const registry = getToolRegistry();
|
|
278
|
-
return registry.resolveTool(toolName) || toolName;
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
/**
|
|
282
|
-
* Helper to check if tool exists
|
|
283
|
-
*/
|
|
284
|
-
export function isValidTool(toolName: string): boolean {
|
|
285
|
-
const registry = getToolRegistry();
|
|
286
|
-
return registry.toolExists(toolName);
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
/**
|
|
290
|
-
* Helper to get tool suggestions
|
|
291
|
-
*/
|
|
292
|
-
export function suggestTools(partial: string): ToolMapping[] {
|
|
293
|
-
const registry = getToolRegistry();
|
|
294
|
-
return registry.searchTools(partial);
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
// Export types and default instance
|
|
298
|
-
export default MCPToolRegistry;
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Migration utility to move from .snow-flow to .snow-flow directories
|
|
3
|
-
*/
|
|
4
|
-
import * as fs from 'fs';
|
|
5
|
-
import * as path from 'path';
|
|
6
|
-
import { Logger } from './logger.js';
|
|
7
|
-
|
|
8
|
-
export class ClaudeFlowMigration {
|
|
9
|
-
private logger: Logger;
|
|
10
|
-
|
|
11
|
-
constructor() {
|
|
12
|
-
this.logger = new Logger('Migration');
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Check if migration is needed
|
|
17
|
-
*/
|
|
18
|
-
async checkMigrationNeeded(): Promise<boolean> {
|
|
19
|
-
const oldDir = path.join(process.cwd(), '.snow-flow');
|
|
20
|
-
const newDir = path.join(process.cwd(), '.snow-flow');
|
|
21
|
-
|
|
22
|
-
return fs.existsSync(oldDir) && !fs.existsSync(newDir);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Perform migration from .snow-flow to .snow-flow
|
|
27
|
-
*/
|
|
28
|
-
async migrate(): Promise<void> {
|
|
29
|
-
const oldDir = path.join(process.cwd(), '.snow-flow');
|
|
30
|
-
const newDir = path.join(process.cwd(), '.snow-flow');
|
|
31
|
-
|
|
32
|
-
if (!fs.existsSync(oldDir)) {
|
|
33
|
-
this.logger.debug('No .snow-flow directory found, skipping migration');
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
if (fs.existsSync(newDir)) {
|
|
38
|
-
this.logger.warn('.snow-flow directory already exists, skipping migration');
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
this.logger.info('🔄 Migrating from .snow-flow to .snow-flow...');
|
|
43
|
-
|
|
44
|
-
try {
|
|
45
|
-
// Create new directory structure
|
|
46
|
-
await this.copyDirectory(oldDir, newDir);
|
|
47
|
-
|
|
48
|
-
this.logger.info('✅ Migration completed successfully!');
|
|
49
|
-
this.logger.info('💡 Old .snow-flow directory preserved for safety');
|
|
50
|
-
this.logger.info('🔍 You can manually delete .snow-flow after verifying everything works');
|
|
51
|
-
} catch (error) {
|
|
52
|
-
this.logger.error('❌ Migration failed:', error);
|
|
53
|
-
throw error;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Recursively copy directory
|
|
59
|
-
*/
|
|
60
|
-
private async copyDirectory(src: string, dest: string): Promise<void> {
|
|
61
|
-
// Create destination directory
|
|
62
|
-
if (!fs.existsSync(dest)) {
|
|
63
|
-
fs.mkdirSync(dest, { recursive: true });
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// Read source directory
|
|
67
|
-
const entries = fs.readdirSync(src, { withFileTypes: true });
|
|
68
|
-
|
|
69
|
-
for (const entry of entries) {
|
|
70
|
-
const srcPath = path.join(src, entry.name);
|
|
71
|
-
const destPath = path.join(dest, entry.name);
|
|
72
|
-
|
|
73
|
-
if (entry.isDirectory()) {
|
|
74
|
-
// Recursively copy subdirectory
|
|
75
|
-
await this.copyDirectory(srcPath, destPath);
|
|
76
|
-
} else {
|
|
77
|
-
// Copy file
|
|
78
|
-
fs.copyFileSync(srcPath, destPath);
|
|
79
|
-
this.logger.debug(`Copied: ${entry.name}`);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Clean up old .snow-flow directory (only after user confirmation)
|
|
86
|
-
*/
|
|
87
|
-
async cleanup(): Promise<void> {
|
|
88
|
-
const oldDir = path.join(process.cwd(), '.snow-flow');
|
|
89
|
-
|
|
90
|
-
if (fs.existsSync(oldDir)) {
|
|
91
|
-
this.logger.warn('⚠️ Removing old .snow-flow directory...');
|
|
92
|
-
fs.rmSync(oldDir, { recursive: true, force: true });
|
|
93
|
-
this.logger.info('✅ Cleanup completed');
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
export const migrationUtil = new ClaudeFlowMigration();
|
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OAuth HTML Templates with Snow-Flow branding
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
const baseStyles = `
|
|
6
|
-
<style>
|
|
7
|
-
body {
|
|
8
|
-
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
|
|
9
|
-
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
|
|
10
|
-
min-height: 100vh;
|
|
11
|
-
display: flex;
|
|
12
|
-
align-items: center;
|
|
13
|
-
justify-content: center;
|
|
14
|
-
margin: 0;
|
|
15
|
-
padding: 20px;
|
|
16
|
-
}
|
|
17
|
-
.container {
|
|
18
|
-
background: white;
|
|
19
|
-
border-radius: 12px;
|
|
20
|
-
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
|
|
21
|
-
padding: 40px;
|
|
22
|
-
text-align: center;
|
|
23
|
-
max-width: 500px;
|
|
24
|
-
width: 100%;
|
|
25
|
-
}
|
|
26
|
-
.logo {
|
|
27
|
-
margin-bottom: 30px;
|
|
28
|
-
}
|
|
29
|
-
.logo-ascii {
|
|
30
|
-
font-family: 'Courier New', monospace;
|
|
31
|
-
white-space: pre;
|
|
32
|
-
line-height: 1.2;
|
|
33
|
-
color: #4A90E2;
|
|
34
|
-
font-size: 14px;
|
|
35
|
-
margin-bottom: 20px;
|
|
36
|
-
}
|
|
37
|
-
h1 {
|
|
38
|
-
color: #2E5C8A;
|
|
39
|
-
margin-bottom: 20px;
|
|
40
|
-
font-size: 28px;
|
|
41
|
-
}
|
|
42
|
-
p {
|
|
43
|
-
color: #666;
|
|
44
|
-
line-height: 1.6;
|
|
45
|
-
margin-bottom: 15px;
|
|
46
|
-
}
|
|
47
|
-
.success { color: #52c41a; }
|
|
48
|
-
.error { color: #f5222d; }
|
|
49
|
-
.brand {
|
|
50
|
-
color: #4A90E2;
|
|
51
|
-
font-weight: bold;
|
|
52
|
-
}
|
|
53
|
-
.snowflake {
|
|
54
|
-
display: inline-block;
|
|
55
|
-
animation: fall 3s ease-in-out infinite;
|
|
56
|
-
}
|
|
57
|
-
@keyframes fall {
|
|
58
|
-
0% { transform: translateY(0) rotate(0deg); }
|
|
59
|
-
100% { transform: translateY(20px) rotate(360deg); }
|
|
60
|
-
}
|
|
61
|
-
</style>
|
|
62
|
-
`;
|
|
63
|
-
|
|
64
|
-
const logoASCII = `
|
|
65
|
-
/\\ <span class="snowflake">❄</span>
|
|
66
|
-
/ \\ <span class="snowflake" style="animation-delay: 0.5s">❄</span>
|
|
67
|
-
/ \\ <span class="snowflake" style="animation-delay: 1s">❄</span>
|
|
68
|
-
/ \\ <span class="snowflake" style="animation-delay: 1.5s">❄</span>
|
|
69
|
-
/________\\
|
|
70
|
-
||||
|
|
71
|
-
`;
|
|
72
|
-
|
|
73
|
-
export const OAuthTemplates = {
|
|
74
|
-
success: `
|
|
75
|
-
<html>
|
|
76
|
-
<head>
|
|
77
|
-
<title>Snow-Flow - Authentication Successful</title>
|
|
78
|
-
${baseStyles}
|
|
79
|
-
</head>
|
|
80
|
-
<body>
|
|
81
|
-
<div class="container">
|
|
82
|
-
<div class="logo">
|
|
83
|
-
<div class="logo-ascii">${logoASCII}</div>
|
|
84
|
-
<h2 class="brand">Snow-Flow</h2>
|
|
85
|
-
</div>
|
|
86
|
-
<h1><span class="success">✅</span> Authentication Successful!</h1>
|
|
87
|
-
<p>You are now connected to ServiceNow!</p>
|
|
88
|
-
<p>You can close this window and return to the terminal.</p>
|
|
89
|
-
<p style="margin-top: 30px; font-size: 14px; color: #999;">
|
|
90
|
-
Snow-Flow: ServiceNow Multi-Agent Development Framework
|
|
91
|
-
</p>
|
|
92
|
-
</div>
|
|
93
|
-
</body>
|
|
94
|
-
</html>
|
|
95
|
-
`,
|
|
96
|
-
|
|
97
|
-
error: (error: string) => `
|
|
98
|
-
<html>
|
|
99
|
-
<head>
|
|
100
|
-
<title>Snow-Flow - Authentication Error</title>
|
|
101
|
-
${baseStyles}
|
|
102
|
-
</head>
|
|
103
|
-
<body>
|
|
104
|
-
<div class="container">
|
|
105
|
-
<div class="logo">
|
|
106
|
-
<div class="logo-ascii">${logoASCII}</div>
|
|
107
|
-
<h2 class="brand">Snow-Flow</h2>
|
|
108
|
-
</div>
|
|
109
|
-
<h1><span class="error">❌</span> OAuth Error</h1>
|
|
110
|
-
<p>Error: ${error}</p>
|
|
111
|
-
<p>Please close this window and try again.</p>
|
|
112
|
-
<p style="margin-top: 30px; font-size: 14px; color: #999;">
|
|
113
|
-
Need help? Check the Snow-Flow documentation.
|
|
114
|
-
</p>
|
|
115
|
-
</div>
|
|
116
|
-
</body>
|
|
117
|
-
</html>
|
|
118
|
-
`,
|
|
119
|
-
|
|
120
|
-
securityError: `
|
|
121
|
-
<html>
|
|
122
|
-
<head>
|
|
123
|
-
<title>Snow-Flow - Security Error</title>
|
|
124
|
-
${baseStyles}
|
|
125
|
-
</head>
|
|
126
|
-
<body>
|
|
127
|
-
<div class="container">
|
|
128
|
-
<div class="logo">
|
|
129
|
-
<div class="logo-ascii">${logoASCII}</div>
|
|
130
|
-
<h2 class="brand">Snow-Flow</h2>
|
|
131
|
-
</div>
|
|
132
|
-
<h1><span class="error">❌</span> Security Error</h1>
|
|
133
|
-
<p>Invalid state parameter - possible CSRF attack detected.</p>
|
|
134
|
-
<p>Please close this window and start the authentication process again.</p>
|
|
135
|
-
<p style="margin-top: 30px; font-size: 14px; color: #999;">
|
|
136
|
-
Your security is our priority.
|
|
137
|
-
</p>
|
|
138
|
-
</div>
|
|
139
|
-
</body>
|
|
140
|
-
</html>
|
|
141
|
-
`,
|
|
142
|
-
|
|
143
|
-
missingCode: `
|
|
144
|
-
<html>
|
|
145
|
-
<head>
|
|
146
|
-
<title>Snow-Flow - Missing Authorization Code</title>
|
|
147
|
-
${baseStyles}
|
|
148
|
-
</head>
|
|
149
|
-
<body>
|
|
150
|
-
<div class="container">
|
|
151
|
-
<div class="logo">
|
|
152
|
-
<div class="logo-ascii">${logoASCII}</div>
|
|
153
|
-
<h2 class="brand">Snow-Flow</h2>
|
|
154
|
-
</div>
|
|
155
|
-
<h1><span class="error">❌</span> Missing Authorization Code</h1>
|
|
156
|
-
<p>No authorization code was received from ServiceNow.</p>
|
|
157
|
-
<p>Please close this window and try again.</p>
|
|
158
|
-
<p style="margin-top: 30px; font-size: 14px; color: #999;">
|
|
159
|
-
Make sure you approve the authorization request in ServiceNow.
|
|
160
|
-
</p>
|
|
161
|
-
</div>
|
|
162
|
-
</body>
|
|
163
|
-
</html>
|
|
164
|
-
`,
|
|
165
|
-
|
|
166
|
-
tokenExchangeFailed: (error: string) => `
|
|
167
|
-
<html>
|
|
168
|
-
<head>
|
|
169
|
-
<title>Snow-Flow - Token Exchange Failed</title>
|
|
170
|
-
${baseStyles}
|
|
171
|
-
</head>
|
|
172
|
-
<body>
|
|
173
|
-
<div class="container">
|
|
174
|
-
<div class="logo">
|
|
175
|
-
<div class="logo-ascii">${logoASCII}</div>
|
|
176
|
-
<h2 class="brand">Snow-Flow</h2>
|
|
177
|
-
</div>
|
|
178
|
-
<h1><span class="error">❌</span> Token Exchange Failed</h1>
|
|
179
|
-
<p>Error: ${error}</p>
|
|
180
|
-
<p>Please close this window and check your OAuth configuration.</p>
|
|
181
|
-
<p style="margin-top: 30px; font-size: 14px; color: #999;">
|
|
182
|
-
Ensure your Client ID and Client Secret are correct.
|
|
183
|
-
</p>
|
|
184
|
-
</div>
|
|
185
|
-
</body>
|
|
186
|
-
</html>
|
|
187
|
-
`
|
|
188
|
-
};
|