snow-flow 8.33.31 → 8.33.33

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.
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ /**
3
+ * Sync MCP Configuration Files
4
+ * Ensures .claude/mcp-config.json is always in sync with .mcp.json
5
+ *
6
+ * This is critical for enterprise MCP server availability because:
7
+ * - snow-code auth login updates .mcp.json
8
+ * - But Claude Code reads .claude/mcp-config.json
9
+ * - Without sync, enterprise server won't be available in swarm command
10
+ */
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.syncMcpConfigs = syncMcpConfigs;
16
+ exports.ensureMcpConfigSync = ensureMcpConfigSync;
17
+ const promises_1 = __importDefault(require("fs/promises"));
18
+ const fs_1 = require("fs");
19
+ const path_1 = __importDefault(require("path"));
20
+ const logger_js_1 = require("./logger.js");
21
+ const logger = new logger_js_1.Logger('mcp-config-sync');
22
+ /**
23
+ * Sync .mcp.json to .claude/mcp-config.json
24
+ *
25
+ * This ensures Claude Code always sees the same MCP servers as configured in .mcp.json
26
+ * Particularly important for enterprise server configuration during auth flow
27
+ *
28
+ * @param projectRoot - Project root directory (defaults to current working directory)
29
+ */
30
+ async function syncMcpConfigs(projectRoot = process.cwd()) {
31
+ try {
32
+ const mcpJsonPath = path_1.default.join(projectRoot, '.mcp.json');
33
+ const claudeMcpConfigPath = path_1.default.join(projectRoot, '.claude', 'mcp-config.json');
34
+ // Check if .mcp.json exists
35
+ if (!(0, fs_1.existsSync)(mcpJsonPath)) {
36
+ logger.debug('.mcp.json does not exist, skipping sync');
37
+ return;
38
+ }
39
+ // Read .mcp.json
40
+ const mcpJsonContent = await promises_1.default.readFile(mcpJsonPath, 'utf-8');
41
+ const mcpConfig = JSON.parse(mcpJsonContent);
42
+ // Ensure .claude directory exists
43
+ const claudeDir = path_1.default.dirname(claudeMcpConfigPath);
44
+ if (!(0, fs_1.existsSync)(claudeDir)) {
45
+ await promises_1.default.mkdir(claudeDir, { recursive: true });
46
+ logger.info(`Created .claude directory: ${claudeDir}`);
47
+ }
48
+ // Convert .mcp.json format to .claude/mcp-config.json format
49
+ // .mcp.json uses { mcpServers: { ... } }
50
+ // .claude/mcp-config.json also uses { mcpServers: { ... } }
51
+ // But we need to ensure the format matches what Claude Code expects
52
+ const claudeConfig = {
53
+ mcpServers: {}
54
+ };
55
+ // Copy all servers from .mcp.json to claude config
56
+ if (mcpConfig.mcpServers) {
57
+ for (const [serverName, serverConfig] of Object.entries(mcpConfig.mcpServers)) {
58
+ const config = serverConfig;
59
+ // Convert to Claude Code format
60
+ // Claude Code expects: command, args, env (or environment)
61
+ // New format uses: type, command (array), environment
62
+ if (config.type === 'local') {
63
+ // New format: command is an array like ["node", "/path/to/server.js"]
64
+ const command = Array.isArray(config.command) ? config.command : [config.command];
65
+ claudeConfig.mcpServers[serverName] = {
66
+ command: command[0], // "node"
67
+ args: command.slice(1), // ["/path/to/server.js"]
68
+ description: config.description,
69
+ env: config.environment || config.env || {},
70
+ ...(config.enabled !== undefined && { enabled: config.enabled })
71
+ };
72
+ }
73
+ else if (config.type === 'remote') {
74
+ // Remote servers (SSE)
75
+ claudeConfig.mcpServers[serverName] = {
76
+ url: config.url,
77
+ description: config.description,
78
+ env: config.environment || config.env || {},
79
+ ...(config.enabled !== undefined && { enabled: config.enabled })
80
+ };
81
+ }
82
+ else {
83
+ // Fallback - copy as-is but ensure env key exists
84
+ claudeConfig.mcpServers[serverName] = {
85
+ ...config,
86
+ env: config.environment || config.env || {}
87
+ };
88
+ }
89
+ }
90
+ }
91
+ // Write to .claude/mcp-config.json
92
+ await promises_1.default.writeFile(claudeMcpConfigPath, JSON.stringify(claudeConfig, null, 2), 'utf-8');
93
+ logger.info(`✅ Synced .mcp.json → .claude/mcp-config.json`);
94
+ logger.debug(`Synced ${Object.keys(claudeConfig.mcpServers).length} MCP servers`);
95
+ // Log which servers are enabled
96
+ const enabledServers = Object.entries(claudeConfig.mcpServers)
97
+ .filter(([_, config]) => config.enabled !== false)
98
+ .map(([name]) => name);
99
+ if (enabledServers.length > 0) {
100
+ logger.info(`Enabled servers: ${enabledServers.join(', ')}`);
101
+ }
102
+ }
103
+ catch (error) {
104
+ logger.error(`Failed to sync MCP configs: ${error.message}`);
105
+ throw error;
106
+ }
107
+ }
108
+ /**
109
+ * Ensure .claude/mcp-config.json exists and is synced with .mcp.json
110
+ * This is a convenience wrapper that creates the file if it doesn't exist
111
+ *
112
+ * @param projectRoot - Project root directory (defaults to current working directory)
113
+ */
114
+ async function ensureMcpConfigSync(projectRoot = process.cwd()) {
115
+ try {
116
+ await syncMcpConfigs(projectRoot);
117
+ }
118
+ catch (error) {
119
+ // If sync fails, try to create a minimal config
120
+ const claudeMcpConfigPath = path_1.default.join(projectRoot, '.claude', 'mcp-config.json');
121
+ if (!(0, fs_1.existsSync)(claudeMcpConfigPath)) {
122
+ logger.warn('Creating minimal .claude/mcp-config.json');
123
+ const claudeDir = path_1.default.dirname(claudeMcpConfigPath);
124
+ if (!(0, fs_1.existsSync)(claudeDir)) {
125
+ await promises_1.default.mkdir(claudeDir, { recursive: true });
126
+ }
127
+ await promises_1.default.writeFile(claudeMcpConfigPath, JSON.stringify({ mcpServers: {} }, null, 2), 'utf-8');
128
+ }
129
+ }
130
+ }
131
+ //# sourceMappingURL=sync-mcp-configs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-mcp-configs.js","sourceRoot":"","sources":["../../src/utils/sync-mcp-configs.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "8.33.31";
1
+ export declare const VERSION = "8.33.33";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -2,5 +2,5 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
4
  // Auto-generated by npm version command
5
- exports.VERSION = '8.33.31';
5
+ exports.VERSION = '8.33.33';
6
6
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "snow-flow",
3
- "version": "8.33.31",
3
+ "version": "8.33.33",
4
4
  "description": "ServiceNow development with SnowCode - 75+ LLM providers (Claude, GPT, Gemini, Llama, Mistral, DeepSeek, Groq, Ollama) • 393 Optimized Tools • 2 MCP Servers • Multi-agent orchestration • Use ANY AI coding assistant (ML tools moved to Enterprise)",
5
5
  "main": "dist/index.js",
6
6
  "type": "commonjs",
@@ -498,7 +498,7 @@
498
498
  "@anthropic-ai/claude-agent-sdk": "0.1.1",
499
499
  "@anthropic-ai/sdk": "0.67.0",
500
500
  "@clack/prompts": "^0.11.0",
501
- "@groeimetai/snow-code": "*",
501
+ "@groeimetai/snow-code": "^1.0.65",
502
502
  "@modelcontextprotocol/sdk": "1.20.1",
503
503
  "@tensorflow/tfjs": "^4.22.0",
504
504
  "@types/node-fetch": "^2.6.13",