snow-flow 8.30.31 → 8.30.32
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/README.md +48 -5
- package/dist/cli/auth.d.ts.map +1 -1
- package/dist/cli/auth.js +225 -3
- package/dist/cli/auth.js.map +1 -1
- package/dist/config/snowcode-config.d.ts +76 -0
- package/dist/config/snowcode-config.d.ts.map +1 -0
- package/dist/config/snowcode-config.js +225 -0
- package/dist/config/snowcode-config.js.map +1 -0
- package/dist/mcp/enterprise-proxy/credentials.d.ts +24 -0
- package/dist/mcp/enterprise-proxy/credentials.d.ts.map +1 -0
- package/dist/mcp/enterprise-proxy/credentials.js +97 -0
- package/dist/mcp/enterprise-proxy/credentials.js.map +1 -0
- package/dist/mcp/enterprise-proxy/index.d.ts +7 -0
- package/dist/mcp/enterprise-proxy/index.d.ts.map +1 -0
- package/dist/mcp/enterprise-proxy/index.js +110 -0
- package/dist/mcp/enterprise-proxy/index.js.map +1 -0
- package/dist/mcp/enterprise-proxy/proxy.d.ts +29 -0
- package/dist/mcp/enterprise-proxy/proxy.d.ts.map +1 -0
- package/dist/mcp/enterprise-proxy/proxy.js +171 -0
- package/dist/mcp/enterprise-proxy/proxy.js.map +1 -0
- package/dist/mcp/enterprise-proxy/types.d.ts +65 -0
- package/dist/mcp/enterprise-proxy/types.d.ts.map +1 -0
- package/dist/mcp/enterprise-proxy/types.js +6 -0
- package/dist/mcp/enterprise-proxy/types.js.map +1 -0
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -452,6 +452,42 @@ snow-flow swarm "create PI solution to predict best assignment group for new inc
|
|
|
452
452
|
|
|
453
453
|
---
|
|
454
454
|
|
|
455
|
+
## 🆚 Snow-Flow vs ServiceNow Build Agent
|
|
456
|
+
|
|
457
|
+
See how Snow-Flow's open, flexible approach compares to ServiceNow's proprietary AI solution:
|
|
458
|
+
|
|
459
|
+
| Feature | Snow-Flow / SnowCode | ServiceNow Build Agent |
|
|
460
|
+
|---------|---------------------|------------------------|
|
|
461
|
+
| **Pricing Model** | Open source + paid enterprise tiers | Proprietary, part of ServiceNow Pro Plus |
|
|
462
|
+
| **Base Cost** | €0 (open source) or €99/dev/month (enterprise) | €100-200/user/month + implementation fees (€150k-€4.5M) |
|
|
463
|
+
| **LLM Choice** | **Any LLM** (Claude, GPT-4, Gemini, Llama, Mistral, DeepSeek, local models) | NowLLM + optional Azure OpenAI |
|
|
464
|
+
| **Development Environment** | **Local + native IDEs** (VS Code, Cursor, Windsurf, terminal) | ServiceNow Studio only (browser-based) |
|
|
465
|
+
| **MCP Tools** | **437 tools** (393 open source + 44 enterprise) | N/A (proprietary API, no MCP) |
|
|
466
|
+
| **Target Users** | Professional developers + technical users | Citizen developers + process owners |
|
|
467
|
+
| **Enterprise Integrations** | **Jira, Azure DevOps, Confluence**, Process Mining, ML tools | ServiceNow ecosystem only |
|
|
468
|
+
| **ML Capabilities** | **TensorFlow.js neural networks** (local training) + Predictive Intelligence integration | RAG-based AI only |
|
|
469
|
+
| **Update Set Management** | **Automated tracking** with intelligent change detection | Manual/limited automated tracking |
|
|
470
|
+
| **ES5 Validation** | **Real-time Rhino checks** (prevents ES6+ syntax errors) | No specific ES5 support |
|
|
471
|
+
| **Open Source** | **Yes** (Elastic-2.0 license) | No (proprietary) |
|
|
472
|
+
| **White-label** | **Yes** (Enterprise tier) | No |
|
|
473
|
+
| **Multi-agent Orchestration** | **Yes** (Queen Agent + 6 specialized agents) | Limited agentic capabilities |
|
|
474
|
+
| **Seat-based Licensing** | **Developer + Stakeholder** roles with granular permissions | Per-user licensing only |
|
|
475
|
+
| **Deployment Options** | **Self-hosted** (local) or **Managed SaaS** (Cloud Run) | ServiceNow Cloud only |
|
|
476
|
+
| **Local Development** | **Yes** (pull artifacts to local files, edit with native tools) | No (browser-only) |
|
|
477
|
+
| **API Integration** | **REST, MCP, stdio** - works with any AI assistant | Proprietary ServiceNow APIs |
|
|
478
|
+
| **Process Mining** | **Included** (enterprise tier) - $100k+/year value | Separate expensive add-on |
|
|
479
|
+
| **Stakeholder Access** | **Free with developer seats** - read-only analytics & dashboards | Full developer license required for all users |
|
|
480
|
+
|
|
481
|
+
### Why Choose Snow-Flow?
|
|
482
|
+
|
|
483
|
+
- **Vendor Independence**: Not locked into ServiceNow's AI ecosystem - use any LLM provider
|
|
484
|
+
- **Cost Efficiency**: Free open-source option + affordable enterprise pricing (10-20x cheaper than ServiceNow)
|
|
485
|
+
- **Developer Experience**: Work in your preferred IDE with local development workflows
|
|
486
|
+
- **Enterprise Grade**: 437 tools, seat management, integrations, 99.9% SLA on managed infrastructure
|
|
487
|
+
- **Future-Proof**: Open standards (MCP), portable integrations, no vendor lock-in
|
|
488
|
+
|
|
489
|
+
---
|
|
490
|
+
|
|
455
491
|
## 📋 Examples
|
|
456
492
|
|
|
457
493
|
### Widget Development
|
|
@@ -934,11 +970,18 @@ snow-flow init
|
|
|
934
970
|
**Core Framework:** Elastic License 2.0 - see [LICENSE](LICENSE) file for details.
|
|
935
971
|
|
|
936
972
|
**What this means:**
|
|
937
|
-
- ✅ Free to use
|
|
938
|
-
- ✅
|
|
939
|
-
- ✅
|
|
940
|
-
-
|
|
941
|
-
- ⚠️ Cannot
|
|
973
|
+
- ✅ **Free to use internally**: Companies can use Snow-Flow for their own ServiceNow development
|
|
974
|
+
- ✅ **Commercial use allowed**: Use for commercial projects, consulting, client work
|
|
975
|
+
- ✅ **Modify and redistribute**: Fork, modify, and share the source code
|
|
976
|
+
- ✅ **Full source code access**: Complete transparency, no hidden code
|
|
977
|
+
- ⚠️ **Cannot resell as SaaS**: You cannot offer "Snow-Flow-as-a-Service" to compete with our managed platform
|
|
978
|
+
- ⚠️ **Keep attribution**: Cannot remove licensing/copyright notices
|
|
979
|
+
|
|
980
|
+
**Examples:**
|
|
981
|
+
- ✅ **OK**: Accenture uses Snow-Flow internally for ServiceNow projects
|
|
982
|
+
- ✅ **OK**: Consultant shares Snow-Flow with client who self-hosts it
|
|
983
|
+
- ✅ **OK**: Fork Snow-Flow and create custom version for your organization
|
|
984
|
+
- ❌ **NOT OK**: Launch "MyCompany Snow-Flow Hosting" as a paid SaaS product
|
|
942
985
|
|
|
943
986
|
**Trademark:** "Snow-Flow" name and logo are protected trademarks - see [TRADEMARK.md](./TRADEMARK.md).
|
|
944
987
|
|
package/dist/cli/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiYpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,QAuJpD"}
|
package/dist/cli/auth.js
CHANGED
|
@@ -44,6 +44,8 @@ const promises_1 = __importDefault(require("fs/promises"));
|
|
|
44
44
|
const os_1 = __importDefault(require("os"));
|
|
45
45
|
const logger_js_1 = require("../utils/logger.js");
|
|
46
46
|
const fs_1 = require("fs");
|
|
47
|
+
const snowcode_config_js_1 = require("../config/snowcode-config.js");
|
|
48
|
+
const proxy_js_1 = require("../mcp/enterprise-proxy/proxy.js");
|
|
47
49
|
const authLogger = new logger_js_1.Logger('auth');
|
|
48
50
|
// Helper function to fix binary permissions (critical for containers/codespaces)
|
|
49
51
|
function fixSnowCodeBinaryPermissions() {
|
|
@@ -79,6 +81,225 @@ function fixSnowCodeBinaryPermissions() {
|
|
|
79
81
|
// Silently continue if permission fixing fails
|
|
80
82
|
}
|
|
81
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Enterprise License Flow
|
|
86
|
+
* Prompts user for enterprise license and configures enterprise MCP server
|
|
87
|
+
*/
|
|
88
|
+
async function enterpriseLicenseFlow() {
|
|
89
|
+
try {
|
|
90
|
+
// Check if already configured
|
|
91
|
+
const alreadyConfigured = await (0, snowcode_config_js_1.isEnterpriseMcpConfigured)();
|
|
92
|
+
if (alreadyConfigured) {
|
|
93
|
+
const reconfigure = await prompts.confirm({
|
|
94
|
+
message: 'Enterprise MCP server is already configured. Reconfigure?',
|
|
95
|
+
initialValue: false,
|
|
96
|
+
});
|
|
97
|
+
if (prompts.isCancel(reconfigure) || !reconfigure) {
|
|
98
|
+
authLogger.debug('Skipping enterprise configuration (already configured)');
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Ask if user has enterprise license
|
|
103
|
+
const hasEnterprise = await prompts.confirm({
|
|
104
|
+
message: 'Do you have a Snow-Flow Enterprise license?',
|
|
105
|
+
initialValue: false,
|
|
106
|
+
});
|
|
107
|
+
if (prompts.isCancel(hasEnterprise) || !hasEnterprise) {
|
|
108
|
+
authLogger.debug('Skipping enterprise configuration (user does not have license)');
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
// Prompt for license key
|
|
112
|
+
const licenseKey = await prompts.text({
|
|
113
|
+
message: 'Enter your Enterprise License Key:',
|
|
114
|
+
placeholder: 'SNOW-ENT-CUST-ABC123',
|
|
115
|
+
validate: (value) => {
|
|
116
|
+
if (!value || value.trim().length === 0) {
|
|
117
|
+
return 'License key is required';
|
|
118
|
+
}
|
|
119
|
+
if (!value.startsWith('SNOW-ENT-') && !value.startsWith('SNOW-SI-')) {
|
|
120
|
+
return 'License key must start with SNOW-ENT- or SNOW-SI-';
|
|
121
|
+
}
|
|
122
|
+
return undefined;
|
|
123
|
+
},
|
|
124
|
+
});
|
|
125
|
+
if (prompts.isCancel(licenseKey)) {
|
|
126
|
+
authLogger.debug('Enterprise configuration cancelled by user');
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
// Validate license key with enterprise server
|
|
130
|
+
prompts.log.step('Validating enterprise license...');
|
|
131
|
+
// Set license key temporarily for validation
|
|
132
|
+
const originalLicenseKey = process.env.SNOW_LICENSE_KEY;
|
|
133
|
+
process.env.SNOW_LICENSE_KEY = licenseKey;
|
|
134
|
+
let validation;
|
|
135
|
+
try {
|
|
136
|
+
validation = await (0, proxy_js_1.validateLicenseKey)(licenseKey);
|
|
137
|
+
if (!validation.valid) {
|
|
138
|
+
prompts.log.error(`License validation failed: ${validation.error || 'Unknown error'}`);
|
|
139
|
+
authLogger.error(`License validation failed: ${validation.error}`);
|
|
140
|
+
// Restore original license key
|
|
141
|
+
if (originalLicenseKey) {
|
|
142
|
+
process.env.SNOW_LICENSE_KEY = originalLicenseKey;
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
delete process.env.SNOW_LICENSE_KEY;
|
|
146
|
+
}
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
prompts.log.success('✅ License validated successfully');
|
|
150
|
+
authLogger.info('Enterprise license validated successfully');
|
|
151
|
+
// Show available features
|
|
152
|
+
if (validation.features && validation.features.length > 0) {
|
|
153
|
+
prompts.log.info(`Available enterprise features: ${validation.features.join(', ')}`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
prompts.log.error(`Failed to validate license: ${error.message}`);
|
|
158
|
+
authLogger.error(`License validation error: ${error.message}`);
|
|
159
|
+
// Restore original license key
|
|
160
|
+
if (originalLicenseKey) {
|
|
161
|
+
process.env.SNOW_LICENSE_KEY = originalLicenseKey;
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
delete process.env.SNOW_LICENSE_KEY;
|
|
165
|
+
}
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
// Ask about credential mode
|
|
169
|
+
const credentialMode = await prompts.select({
|
|
170
|
+
message: 'How would you like to provide enterprise credentials?',
|
|
171
|
+
options: [
|
|
172
|
+
{
|
|
173
|
+
value: 'server',
|
|
174
|
+
label: 'Server-side (credentials stored encrypted on enterprise server)',
|
|
175
|
+
hint: 'Most secure, requires SSO configuration',
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
value: 'local',
|
|
179
|
+
label: 'Local (credentials from environment variables)',
|
|
180
|
+
hint: 'Simple setup, credentials stored locally',
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
value: 'skip',
|
|
184
|
+
label: 'Skip for now (configure later)',
|
|
185
|
+
},
|
|
186
|
+
],
|
|
187
|
+
initialValue: 'server',
|
|
188
|
+
});
|
|
189
|
+
if (prompts.isCancel(credentialMode)) {
|
|
190
|
+
authLogger.debug('Enterprise configuration cancelled by user');
|
|
191
|
+
// Restore original license key
|
|
192
|
+
if (originalLicenseKey) {
|
|
193
|
+
process.env.SNOW_LICENSE_KEY = originalLicenseKey;
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
delete process.env.SNOW_LICENSE_KEY;
|
|
197
|
+
}
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
const enterpriseConfig = {
|
|
201
|
+
licenseKey,
|
|
202
|
+
serverUrl: validation.serverUrl,
|
|
203
|
+
};
|
|
204
|
+
// If local mode, prompt for credentials
|
|
205
|
+
if (credentialMode === 'local') {
|
|
206
|
+
prompts.log.step('Configuring local credentials...');
|
|
207
|
+
// Jira credentials
|
|
208
|
+
const configureJira = await prompts.confirm({
|
|
209
|
+
message: 'Configure Jira integration?',
|
|
210
|
+
initialValue: false,
|
|
211
|
+
});
|
|
212
|
+
if (!prompts.isCancel(configureJira) && configureJira) {
|
|
213
|
+
const jiraHost = await prompts.text({
|
|
214
|
+
message: 'Jira Host:',
|
|
215
|
+
placeholder: 'https://company.atlassian.net',
|
|
216
|
+
validate: (value) => (value.startsWith('https://') ? undefined : 'Must start with https://'),
|
|
217
|
+
});
|
|
218
|
+
const jiraEmail = await prompts.text({
|
|
219
|
+
message: 'Jira Email:',
|
|
220
|
+
placeholder: 'user@company.com',
|
|
221
|
+
});
|
|
222
|
+
const jiraApiToken = await prompts.password({
|
|
223
|
+
message: 'Jira API Token:',
|
|
224
|
+
});
|
|
225
|
+
if (!prompts.isCancel(jiraHost) && !prompts.isCancel(jiraEmail) && !prompts.isCancel(jiraApiToken)) {
|
|
226
|
+
enterpriseConfig.credentials = {
|
|
227
|
+
...enterpriseConfig.credentials,
|
|
228
|
+
jira: {
|
|
229
|
+
host: jiraHost,
|
|
230
|
+
email: jiraEmail,
|
|
231
|
+
apiToken: jiraApiToken,
|
|
232
|
+
},
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
// Azure DevOps credentials
|
|
237
|
+
const configureAzure = await prompts.confirm({
|
|
238
|
+
message: 'Configure Azure DevOps integration?',
|
|
239
|
+
initialValue: false,
|
|
240
|
+
});
|
|
241
|
+
if (!prompts.isCancel(configureAzure) && configureAzure) {
|
|
242
|
+
const azureOrg = await prompts.text({
|
|
243
|
+
message: 'Azure DevOps Organization:',
|
|
244
|
+
placeholder: 'mycompany',
|
|
245
|
+
});
|
|
246
|
+
const azurePat = await prompts.password({
|
|
247
|
+
message: 'Azure DevOps PAT:',
|
|
248
|
+
});
|
|
249
|
+
if (!prompts.isCancel(azureOrg) && !prompts.isCancel(azurePat)) {
|
|
250
|
+
enterpriseConfig.credentials = {
|
|
251
|
+
...enterpriseConfig.credentials,
|
|
252
|
+
azure: {
|
|
253
|
+
organization: azureOrg,
|
|
254
|
+
pat: azurePat,
|
|
255
|
+
},
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
// Confluence credentials
|
|
260
|
+
const configureConfluence = await prompts.confirm({
|
|
261
|
+
message: 'Configure Confluence integration?',
|
|
262
|
+
initialValue: false,
|
|
263
|
+
});
|
|
264
|
+
if (!prompts.isCancel(configureConfluence) && configureConfluence) {
|
|
265
|
+
const confluenceHost = await prompts.text({
|
|
266
|
+
message: 'Confluence Host:',
|
|
267
|
+
placeholder: 'https://company.atlassian.net',
|
|
268
|
+
validate: (value) => (value.startsWith('https://') ? undefined : 'Must start with https://'),
|
|
269
|
+
});
|
|
270
|
+
const confluenceEmail = await prompts.text({
|
|
271
|
+
message: 'Confluence Email:',
|
|
272
|
+
placeholder: 'user@company.com',
|
|
273
|
+
});
|
|
274
|
+
const confluenceApiToken = await prompts.password({
|
|
275
|
+
message: 'Confluence API Token:',
|
|
276
|
+
});
|
|
277
|
+
if (!prompts.isCancel(confluenceHost) &&
|
|
278
|
+
!prompts.isCancel(confluenceEmail) &&
|
|
279
|
+
!prompts.isCancel(confluenceApiToken)) {
|
|
280
|
+
enterpriseConfig.credentials = {
|
|
281
|
+
...enterpriseConfig.credentials,
|
|
282
|
+
confluence: {
|
|
283
|
+
host: confluenceHost,
|
|
284
|
+
email: confluenceEmail,
|
|
285
|
+
apiToken: confluenceApiToken,
|
|
286
|
+
},
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
// Add enterprise MCP server to SnowCode config
|
|
292
|
+
prompts.log.step('Configuring enterprise MCP server...');
|
|
293
|
+
await (0, snowcode_config_js_1.addEnterpriseMcpServer)(enterpriseConfig);
|
|
294
|
+
prompts.log.success('✅ Enterprise MCP server configured');
|
|
295
|
+
prompts.log.info('Enterprise tools are now available in SnowCode CLI');
|
|
296
|
+
authLogger.info('Enterprise MCP server configuration completed');
|
|
297
|
+
}
|
|
298
|
+
catch (error) {
|
|
299
|
+
prompts.log.error(`Enterprise configuration failed: ${error.message}`);
|
|
300
|
+
authLogger.error(`Enterprise configuration error: ${error.message}`);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
82
303
|
/**
|
|
83
304
|
* Update PROJECT-LEVEL MCP server config with ServiceNow credentials from auth.json
|
|
84
305
|
*
|
|
@@ -228,10 +449,11 @@ function registerAuthCommands(program) {
|
|
|
228
449
|
prompts.log.message('');
|
|
229
450
|
// Fix binary permissions before calling snow-code (critical for containers/codespaces)
|
|
230
451
|
fixSnowCodeBinaryPermissions();
|
|
231
|
-
// Call SnowCode auth login
|
|
232
|
-
// SnowCode will handle enterprise setup during its auth flow
|
|
452
|
+
// Call SnowCode auth login for LLM providers and ServiceNow OAuth
|
|
233
453
|
(0, child_process_1.execSync)(`${snowcodeCommand} auth login`, { stdio: 'inherit' });
|
|
234
|
-
// After successful auth,
|
|
454
|
+
// After successful auth, prompt for enterprise license if applicable
|
|
455
|
+
await enterpriseLicenseFlow();
|
|
456
|
+
// Update MCP server config with ServiceNow credentials
|
|
235
457
|
await updateMCPServerConfig();
|
|
236
458
|
}
|
|
237
459
|
catch (error) {
|
package/dist/cli/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SnowCode Configuration Management
|
|
3
|
+
* Manages ~/.snowcode/config.json for MCP server configuration
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* SnowCode MCP Server Configuration
|
|
7
|
+
* Format matches OpenCode/SnowCode MCP server configuration
|
|
8
|
+
*/
|
|
9
|
+
export interface SnowCodeMcpServer {
|
|
10
|
+
command: string;
|
|
11
|
+
args: string[];
|
|
12
|
+
env?: Record<string, string>;
|
|
13
|
+
}
|
|
14
|
+
export interface SnowCodeConfig {
|
|
15
|
+
mcpServers?: Record<string, SnowCodeMcpServer>;
|
|
16
|
+
servers?: Record<string, SnowCodeMcpServer>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Enterprise MCP server configuration options
|
|
20
|
+
*/
|
|
21
|
+
export interface EnterpriseMcpConfig {
|
|
22
|
+
licenseKey: string;
|
|
23
|
+
serverUrl?: string;
|
|
24
|
+
credentials?: {
|
|
25
|
+
jira?: {
|
|
26
|
+
host: string;
|
|
27
|
+
email: string;
|
|
28
|
+
apiToken: string;
|
|
29
|
+
};
|
|
30
|
+
azure?: {
|
|
31
|
+
organization: string;
|
|
32
|
+
pat: string;
|
|
33
|
+
};
|
|
34
|
+
confluence?: {
|
|
35
|
+
host: string;
|
|
36
|
+
email: string;
|
|
37
|
+
apiToken: string;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get the SnowCode config file path
|
|
43
|
+
*/
|
|
44
|
+
export declare function getSnowCodeConfigPath(): string;
|
|
45
|
+
/**
|
|
46
|
+
* Check if SnowCode config file exists
|
|
47
|
+
*/
|
|
48
|
+
export declare function snowCodeConfigExists(): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Read SnowCode configuration file
|
|
51
|
+
* @returns SnowCode configuration or empty object if file doesn't exist
|
|
52
|
+
*/
|
|
53
|
+
export declare function readSnowCodeConfig(): Promise<SnowCodeConfig>;
|
|
54
|
+
/**
|
|
55
|
+
* Write SnowCode configuration file
|
|
56
|
+
* @param config - Configuration to write
|
|
57
|
+
*/
|
|
58
|
+
export declare function writeSnowCodeConfig(config: SnowCodeConfig): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Add or update enterprise MCP server in SnowCode config
|
|
61
|
+
* @param config - Enterprise MCP server configuration
|
|
62
|
+
*/
|
|
63
|
+
export declare function addEnterpriseMcpServer(config: EnterpriseMcpConfig): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Remove enterprise MCP server from SnowCode config
|
|
66
|
+
*/
|
|
67
|
+
export declare function removeEnterpriseMcpServer(): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Check if enterprise MCP server is configured in SnowCode config
|
|
70
|
+
*/
|
|
71
|
+
export declare function isEnterpriseMcpConfigured(): Promise<boolean>;
|
|
72
|
+
/**
|
|
73
|
+
* Get enterprise MCP server configuration from SnowCode config
|
|
74
|
+
*/
|
|
75
|
+
export declare function getEnterpriseMcpConfig(): Promise<SnowCodeMcpServer | null>;
|
|
76
|
+
//# sourceMappingURL=snowcode-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snowcode-config.d.ts","sourceRoot":"","sources":["../../src/config/snowcode-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAE/C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE;QACZ,IAAI,CAAC,EAAE;YACL,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,MAAM,CAAC;YACd,QAAQ,EAAE,MAAM,CAAC;SAClB,CAAC;QACF,KAAK,CAAC,EAAE;YACN,YAAY,EAAE,MAAM,CAAC;YACrB,GAAG,EAAE,MAAM,CAAC;SACb,CAAC;QACF,UAAU,CAAC,EAAE;YACX,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,MAAM,CAAC;YACd,QAAQ,EAAE,MAAM,CAAC;SAClB,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC,CAkBlE;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB/E;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4DvF;AAED;;GAEG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CA2B/D;AAED;;GAEG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC,CAWlE;AA8DD;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAoBhF"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* SnowCode Configuration Management
|
|
4
|
+
* Manages ~/.snowcode/config.json for MCP server configuration
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.getSnowCodeConfigPath = getSnowCodeConfigPath;
|
|
11
|
+
exports.snowCodeConfigExists = snowCodeConfigExists;
|
|
12
|
+
exports.readSnowCodeConfig = readSnowCodeConfig;
|
|
13
|
+
exports.writeSnowCodeConfig = writeSnowCodeConfig;
|
|
14
|
+
exports.addEnterpriseMcpServer = addEnterpriseMcpServer;
|
|
15
|
+
exports.removeEnterpriseMcpServer = removeEnterpriseMcpServer;
|
|
16
|
+
exports.isEnterpriseMcpConfigured = isEnterpriseMcpConfigured;
|
|
17
|
+
exports.getEnterpriseMcpConfig = getEnterpriseMcpConfig;
|
|
18
|
+
const path_1 = __importDefault(require("path"));
|
|
19
|
+
const os_1 = __importDefault(require("os"));
|
|
20
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
21
|
+
const fs_1 = require("fs");
|
|
22
|
+
const logger_js_1 = require("../utils/logger.js");
|
|
23
|
+
const logger = new logger_js_1.Logger('snowcode-config');
|
|
24
|
+
/**
|
|
25
|
+
* Get the SnowCode config file path
|
|
26
|
+
*/
|
|
27
|
+
function getSnowCodeConfigPath() {
|
|
28
|
+
return path_1.default.join(os_1.default.homedir(), '.snowcode', 'config.json');
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Check if SnowCode config file exists
|
|
32
|
+
*/
|
|
33
|
+
function snowCodeConfigExists() {
|
|
34
|
+
return (0, fs_1.existsSync)(getSnowCodeConfigPath());
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Read SnowCode configuration file
|
|
38
|
+
* @returns SnowCode configuration or empty object if file doesn't exist
|
|
39
|
+
*/
|
|
40
|
+
async function readSnowCodeConfig() {
|
|
41
|
+
const configPath = getSnowCodeConfigPath();
|
|
42
|
+
try {
|
|
43
|
+
if (!(0, fs_1.existsSync)(configPath)) {
|
|
44
|
+
logger.debug('SnowCode config file does not exist yet');
|
|
45
|
+
return {};
|
|
46
|
+
}
|
|
47
|
+
const content = await promises_1.default.readFile(configPath, 'utf-8');
|
|
48
|
+
const config = JSON.parse(content);
|
|
49
|
+
logger.debug('Successfully read SnowCode config');
|
|
50
|
+
return config;
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
logger.error(`Failed to read SnowCode config: ${error.message}`);
|
|
54
|
+
return {};
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Write SnowCode configuration file
|
|
59
|
+
* @param config - Configuration to write
|
|
60
|
+
*/
|
|
61
|
+
async function writeSnowCodeConfig(config) {
|
|
62
|
+
const configPath = getSnowCodeConfigPath();
|
|
63
|
+
const configDir = path_1.default.dirname(configPath);
|
|
64
|
+
try {
|
|
65
|
+
// Ensure .snowcode directory exists
|
|
66
|
+
if (!(0, fs_1.existsSync)(configDir)) {
|
|
67
|
+
await promises_1.default.mkdir(configDir, { recursive: true });
|
|
68
|
+
logger.debug('Created .snowcode directory');
|
|
69
|
+
}
|
|
70
|
+
// Write configuration file
|
|
71
|
+
await promises_1.default.writeFile(configPath, JSON.stringify(config, null, 2), 'utf-8');
|
|
72
|
+
logger.info('Successfully wrote SnowCode config');
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
logger.error(`Failed to write SnowCode config: ${error.message}`);
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Add or update enterprise MCP server in SnowCode config
|
|
81
|
+
* @param config - Enterprise MCP server configuration
|
|
82
|
+
*/
|
|
83
|
+
async function addEnterpriseMcpServer(config) {
|
|
84
|
+
try {
|
|
85
|
+
const snowCodeConfig = await readSnowCodeConfig();
|
|
86
|
+
// Determine which key to use (mcpServers is preferred, fallback to servers)
|
|
87
|
+
const serversKey = snowCodeConfig.mcpServers !== undefined ? 'mcpServers' : 'servers';
|
|
88
|
+
if (!snowCodeConfig[serversKey]) {
|
|
89
|
+
snowCodeConfig[serversKey] = {};
|
|
90
|
+
}
|
|
91
|
+
// Get the path to the enterprise proxy entry point
|
|
92
|
+
// This needs to be the compiled dist file
|
|
93
|
+
const enterpriseProxyPath = getEnterpriseProxyPath();
|
|
94
|
+
// Build environment variables
|
|
95
|
+
const env = {
|
|
96
|
+
SNOW_LICENSE_KEY: config.licenseKey,
|
|
97
|
+
};
|
|
98
|
+
// Add server URL if provided
|
|
99
|
+
if (config.serverUrl) {
|
|
100
|
+
env.SNOW_ENTERPRISE_URL = config.serverUrl;
|
|
101
|
+
}
|
|
102
|
+
// Add credentials if provided (local mode)
|
|
103
|
+
if (config.credentials) {
|
|
104
|
+
if (config.credentials.jira) {
|
|
105
|
+
env.JIRA_HOST = config.credentials.jira.host;
|
|
106
|
+
env.JIRA_EMAIL = config.credentials.jira.email;
|
|
107
|
+
env.JIRA_API_TOKEN = config.credentials.jira.apiToken;
|
|
108
|
+
}
|
|
109
|
+
if (config.credentials.azure) {
|
|
110
|
+
env.AZURE_DEVOPS_ORG = config.credentials.azure.organization;
|
|
111
|
+
env.AZURE_DEVOPS_PAT = config.credentials.azure.pat;
|
|
112
|
+
}
|
|
113
|
+
if (config.credentials.confluence) {
|
|
114
|
+
env.CONFLUENCE_HOST = config.credentials.confluence.host;
|
|
115
|
+
env.CONFLUENCE_EMAIL = config.credentials.confluence.email;
|
|
116
|
+
env.CONFLUENCE_API_TOKEN = config.credentials.confluence.apiToken;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// Add or update enterprise MCP server
|
|
120
|
+
snowCodeConfig[serversKey]['snow-flow-enterprise'] = {
|
|
121
|
+
command: 'node',
|
|
122
|
+
args: [enterpriseProxyPath],
|
|
123
|
+
env,
|
|
124
|
+
};
|
|
125
|
+
// Write updated configuration
|
|
126
|
+
await writeSnowCodeConfig(snowCodeConfig);
|
|
127
|
+
logger.info('Successfully added enterprise MCP server to SnowCode config');
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
logger.error(`Failed to add enterprise MCP server: ${error.message}`);
|
|
131
|
+
throw error;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Remove enterprise MCP server from SnowCode config
|
|
136
|
+
*/
|
|
137
|
+
async function removeEnterpriseMcpServer() {
|
|
138
|
+
try {
|
|
139
|
+
const snowCodeConfig = await readSnowCodeConfig();
|
|
140
|
+
// Check both possible keys
|
|
141
|
+
let removed = false;
|
|
142
|
+
if (snowCodeConfig.mcpServers?.['snow-flow-enterprise']) {
|
|
143
|
+
delete snowCodeConfig.mcpServers['snow-flow-enterprise'];
|
|
144
|
+
removed = true;
|
|
145
|
+
}
|
|
146
|
+
if (snowCodeConfig.servers?.['snow-flow-enterprise']) {
|
|
147
|
+
delete snowCodeConfig.servers['snow-flow-enterprise'];
|
|
148
|
+
removed = true;
|
|
149
|
+
}
|
|
150
|
+
if (removed) {
|
|
151
|
+
await writeSnowCodeConfig(snowCodeConfig);
|
|
152
|
+
logger.info('Successfully removed enterprise MCP server from SnowCode config');
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
logger.debug('Enterprise MCP server not found in config');
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
logger.error(`Failed to remove enterprise MCP server: ${error.message}`);
|
|
160
|
+
throw error;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Check if enterprise MCP server is configured in SnowCode config
|
|
165
|
+
*/
|
|
166
|
+
async function isEnterpriseMcpConfigured() {
|
|
167
|
+
try {
|
|
168
|
+
const snowCodeConfig = await readSnowCodeConfig();
|
|
169
|
+
return !!(snowCodeConfig.mcpServers?.['snow-flow-enterprise'] ||
|
|
170
|
+
snowCodeConfig.servers?.['snow-flow-enterprise']);
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Get the path to the enterprise proxy entry point
|
|
178
|
+
* Tries to find the compiled dist file, falls back to source if in development
|
|
179
|
+
*/
|
|
180
|
+
function getEnterpriseProxyPath() {
|
|
181
|
+
// First try to find in node_modules (installed package)
|
|
182
|
+
const nodeModulesPath = path_1.default.join(process.cwd(), 'node_modules', 'snow-flow', 'dist', 'mcp', 'enterprise-proxy', 'index.js');
|
|
183
|
+
if ((0, fs_1.existsSync)(nodeModulesPath)) {
|
|
184
|
+
logger.debug('Using enterprise proxy from node_modules');
|
|
185
|
+
return nodeModulesPath;
|
|
186
|
+
}
|
|
187
|
+
// Try global installation
|
|
188
|
+
const globalNodeModulesPath = path_1.default.join(os_1.default.homedir(), '.npm', 'lib', 'node_modules', 'snow-flow', 'dist', 'mcp', 'enterprise-proxy', 'index.js');
|
|
189
|
+
if ((0, fs_1.existsSync)(globalNodeModulesPath)) {
|
|
190
|
+
logger.debug('Using enterprise proxy from global installation');
|
|
191
|
+
return globalNodeModulesPath;
|
|
192
|
+
}
|
|
193
|
+
// Fallback to development path (when running from source)
|
|
194
|
+
const devPath = path_1.default.join(__dirname, '..', '..', 'dist', 'mcp', 'enterprise-proxy', 'index.js');
|
|
195
|
+
if ((0, fs_1.existsSync)(devPath)) {
|
|
196
|
+
logger.debug('Using enterprise proxy from development build');
|
|
197
|
+
return devPath;
|
|
198
|
+
}
|
|
199
|
+
// Last resort - relative to current file location
|
|
200
|
+
logger.warn('Enterprise proxy not found in standard locations, using relative path');
|
|
201
|
+
return path_1.default.join(__dirname, '..', '..', 'dist', 'mcp', 'enterprise-proxy', 'index.js');
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Get enterprise MCP server configuration from SnowCode config
|
|
205
|
+
*/
|
|
206
|
+
async function getEnterpriseMcpConfig() {
|
|
207
|
+
try {
|
|
208
|
+
const snowCodeConfig = await readSnowCodeConfig();
|
|
209
|
+
const server = snowCodeConfig.mcpServers?.['snow-flow-enterprise'] ||
|
|
210
|
+
snowCodeConfig.servers?.['snow-flow-enterprise'] ||
|
|
211
|
+
null;
|
|
212
|
+
if (server) {
|
|
213
|
+
logger.debug('Found enterprise MCP server configuration');
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
logger.debug('Enterprise MCP server not configured');
|
|
217
|
+
}
|
|
218
|
+
return server;
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
logger.error(`Failed to get enterprise MCP config: ${error.message}`);
|
|
222
|
+
return null;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=snowcode-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snowcode-config.js","sourceRoot":"","sources":["../../src/config/snowcode-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enterprise Credentials Gathering
|
|
3
|
+
* Reads credentials from environment variables based on tool name
|
|
4
|
+
*/
|
|
5
|
+
import { EnterpriseCredentials } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Gather credentials from environment variables based on tool name
|
|
8
|
+
* @param toolName - Name of the tool being called (e.g., snow_jira_create_issue)
|
|
9
|
+
* @returns Credentials object with only relevant credentials populated
|
|
10
|
+
*/
|
|
11
|
+
export declare function gatherCredentials(toolName: string): Partial<EnterpriseCredentials>;
|
|
12
|
+
/**
|
|
13
|
+
* Check if all required credentials are available for a tool
|
|
14
|
+
* @param toolName - Name of the tool
|
|
15
|
+
* @returns true if credentials are available, false otherwise
|
|
16
|
+
*/
|
|
17
|
+
export declare function hasRequiredCredentials(toolName: string): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Get list of missing credential environment variables for a tool
|
|
20
|
+
* @param toolName - Name of the tool
|
|
21
|
+
* @returns Array of missing environment variable names
|
|
22
|
+
*/
|
|
23
|
+
export declare function getMissingCredentials(toolName: string): string[];
|
|
24
|
+
//# sourceMappingURL=credentials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../../src/mcp/enterprise-proxy/credentials.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAoClF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAgBhE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAqBhE"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Enterprise Credentials Gathering
|
|
4
|
+
* Reads credentials from environment variables based on tool name
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.gatherCredentials = gatherCredentials;
|
|
8
|
+
exports.hasRequiredCredentials = hasRequiredCredentials;
|
|
9
|
+
exports.getMissingCredentials = getMissingCredentials;
|
|
10
|
+
/**
|
|
11
|
+
* Gather credentials from environment variables based on tool name
|
|
12
|
+
* @param toolName - Name of the tool being called (e.g., snow_jira_create_issue)
|
|
13
|
+
* @returns Credentials object with only relevant credentials populated
|
|
14
|
+
*/
|
|
15
|
+
function gatherCredentials(toolName) {
|
|
16
|
+
const credentials = {};
|
|
17
|
+
// Jira tools (snow_jira_*)
|
|
18
|
+
if (toolName.startsWith('snow_jira_')) {
|
|
19
|
+
if (process.env.JIRA_HOST && process.env.JIRA_EMAIL && process.env.JIRA_API_TOKEN) {
|
|
20
|
+
credentials.jira = {
|
|
21
|
+
host: process.env.JIRA_HOST,
|
|
22
|
+
email: process.env.JIRA_EMAIL,
|
|
23
|
+
apiToken: process.env.JIRA_API_TOKEN,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// Azure DevOps tools (snow_azure_*)
|
|
28
|
+
if (toolName.startsWith('snow_azure_')) {
|
|
29
|
+
if (process.env.AZURE_DEVOPS_ORG && process.env.AZURE_DEVOPS_PAT) {
|
|
30
|
+
credentials.azure = {
|
|
31
|
+
organization: process.env.AZURE_DEVOPS_ORG,
|
|
32
|
+
pat: process.env.AZURE_DEVOPS_PAT,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// Confluence tools (snow_confluence_*)
|
|
37
|
+
if (toolName.startsWith('snow_confluence_')) {
|
|
38
|
+
if (process.env.CONFLUENCE_HOST && process.env.CONFLUENCE_EMAIL && process.env.CONFLUENCE_API_TOKEN) {
|
|
39
|
+
credentials.confluence = {
|
|
40
|
+
host: process.env.CONFLUENCE_HOST,
|
|
41
|
+
email: process.env.CONFLUENCE_EMAIL,
|
|
42
|
+
apiToken: process.env.CONFLUENCE_API_TOKEN,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return credentials;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Check if all required credentials are available for a tool
|
|
50
|
+
* @param toolName - Name of the tool
|
|
51
|
+
* @returns true if credentials are available, false otherwise
|
|
52
|
+
*/
|
|
53
|
+
function hasRequiredCredentials(toolName) {
|
|
54
|
+
const credentials = gatherCredentials(toolName);
|
|
55
|
+
if (toolName.startsWith('snow_jira_')) {
|
|
56
|
+
return !!credentials.jira;
|
|
57
|
+
}
|
|
58
|
+
if (toolName.startsWith('snow_azure_')) {
|
|
59
|
+
return !!credentials.azure;
|
|
60
|
+
}
|
|
61
|
+
if (toolName.startsWith('snow_confluence_')) {
|
|
62
|
+
return !!credentials.confluence;
|
|
63
|
+
}
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Get list of missing credential environment variables for a tool
|
|
68
|
+
* @param toolName - Name of the tool
|
|
69
|
+
* @returns Array of missing environment variable names
|
|
70
|
+
*/
|
|
71
|
+
function getMissingCredentials(toolName) {
|
|
72
|
+
const missing = [];
|
|
73
|
+
if (toolName.startsWith('snow_jira_')) {
|
|
74
|
+
if (!process.env.JIRA_HOST)
|
|
75
|
+
missing.push('JIRA_HOST');
|
|
76
|
+
if (!process.env.JIRA_EMAIL)
|
|
77
|
+
missing.push('JIRA_EMAIL');
|
|
78
|
+
if (!process.env.JIRA_API_TOKEN)
|
|
79
|
+
missing.push('JIRA_API_TOKEN');
|
|
80
|
+
}
|
|
81
|
+
if (toolName.startsWith('snow_azure_')) {
|
|
82
|
+
if (!process.env.AZURE_DEVOPS_ORG)
|
|
83
|
+
missing.push('AZURE_DEVOPS_ORG');
|
|
84
|
+
if (!process.env.AZURE_DEVOPS_PAT)
|
|
85
|
+
missing.push('AZURE_DEVOPS_PAT');
|
|
86
|
+
}
|
|
87
|
+
if (toolName.startsWith('snow_confluence_')) {
|
|
88
|
+
if (!process.env.CONFLUENCE_HOST)
|
|
89
|
+
missing.push('CONFLUENCE_HOST');
|
|
90
|
+
if (!process.env.CONFLUENCE_EMAIL)
|
|
91
|
+
missing.push('CONFLUENCE_EMAIL');
|
|
92
|
+
if (!process.env.CONFLUENCE_API_TOKEN)
|
|
93
|
+
missing.push('CONFLUENCE_API_TOKEN');
|
|
94
|
+
}
|
|
95
|
+
return missing;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../../src/mcp/enterprise-proxy/credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/enterprise-proxy/index.ts"],"names":[],"mappings":";AACA;;;GAGG"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Snow-Flow Enterprise MCP Proxy
|
|
5
|
+
* Bridges SnowCode CLI (stdio MCP) with Enterprise License Server (HTTPS REST)
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
|
|
9
|
+
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
10
|
+
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
11
|
+
const proxy_js_1 = require("./proxy.js");
|
|
12
|
+
const VERSION = process.env.SNOW_FLOW_VERSION || '8.30.31';
|
|
13
|
+
/**
|
|
14
|
+
* Create MCP Server
|
|
15
|
+
*/
|
|
16
|
+
const server = new index_js_1.Server({
|
|
17
|
+
name: 'snow-flow-enterprise-proxy',
|
|
18
|
+
version: VERSION,
|
|
19
|
+
}, {
|
|
20
|
+
capabilities: {
|
|
21
|
+
tools: {},
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
/**
|
|
25
|
+
* Handle tools/list request
|
|
26
|
+
* Returns list of available enterprise tools from license server
|
|
27
|
+
*/
|
|
28
|
+
server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
|
|
29
|
+
try {
|
|
30
|
+
const tools = await (0, proxy_js_1.listEnterpriseTools)();
|
|
31
|
+
return {
|
|
32
|
+
tools: tools.map((tool) => ({
|
|
33
|
+
name: tool.name,
|
|
34
|
+
description: tool.description || `Enterprise tool: ${tool.name}`,
|
|
35
|
+
inputSchema: tool.inputSchema,
|
|
36
|
+
})),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
// Return empty list on error (allows MCP server to start even if enterprise server is down)
|
|
41
|
+
console.error(`[Enterprise Proxy] Failed to list tools: ${error instanceof Error ? error.message : String(error)}`);
|
|
42
|
+
return { tools: [] };
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
/**
|
|
46
|
+
* Handle tools/call request
|
|
47
|
+
* Proxies tool call to enterprise license server via HTTPS
|
|
48
|
+
*/
|
|
49
|
+
server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
|
|
50
|
+
const { name, arguments: args } = request.params;
|
|
51
|
+
try {
|
|
52
|
+
const result = await (0, proxy_js_1.proxyToolCall)(name, args || {});
|
|
53
|
+
// Format result as MCP response
|
|
54
|
+
return {
|
|
55
|
+
content: [
|
|
56
|
+
{
|
|
57
|
+
type: 'text',
|
|
58
|
+
text: typeof result === 'string' ? result : JSON.stringify(result, null, 2),
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
isError: false,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
// Return error as MCP response
|
|
66
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
67
|
+
return {
|
|
68
|
+
content: [
|
|
69
|
+
{
|
|
70
|
+
type: 'text',
|
|
71
|
+
text: `❌ Enterprise tool error: ${errorMessage}`,
|
|
72
|
+
},
|
|
73
|
+
],
|
|
74
|
+
isError: true,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
/**
|
|
79
|
+
* Start MCP Server with stdio transport
|
|
80
|
+
*/
|
|
81
|
+
async function main() {
|
|
82
|
+
try {
|
|
83
|
+
const transport = new stdio_js_1.StdioServerTransport();
|
|
84
|
+
await server.connect(transport);
|
|
85
|
+
// Log to stderr (stdout is reserved for MCP protocol)
|
|
86
|
+
console.error('[Enterprise Proxy] Snow-Flow Enterprise MCP Proxy started');
|
|
87
|
+
console.error(`[Enterprise Proxy] Version: ${VERSION}`);
|
|
88
|
+
console.error(`[Enterprise Proxy] Enterprise URL: ${process.env.SNOW_ENTERPRISE_URL || 'https://license-server.run.app'}`);
|
|
89
|
+
console.error(`[Enterprise Proxy] License Key: ${process.env.SNOW_LICENSE_KEY ? '✓ Configured' : '✗ Not configured'}`);
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
console.error('[Enterprise Proxy] Fatal error:', error instanceof Error ? error.message : String(error));
|
|
93
|
+
process.exit(1);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Handle process signals
|
|
97
|
+
process.on('SIGINT', () => {
|
|
98
|
+
console.error('[Enterprise Proxy] Received SIGINT, shutting down...');
|
|
99
|
+
process.exit(0);
|
|
100
|
+
});
|
|
101
|
+
process.on('SIGTERM', () => {
|
|
102
|
+
console.error('[Enterprise Proxy] Received SIGTERM, shutting down...');
|
|
103
|
+
process.exit(0);
|
|
104
|
+
});
|
|
105
|
+
// Start server
|
|
106
|
+
main().catch((error) => {
|
|
107
|
+
console.error('[Enterprise Proxy] Startup failed:', error instanceof Error ? error.message : String(error));
|
|
108
|
+
process.exit(1);
|
|
109
|
+
});
|
|
110
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/enterprise-proxy/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enterprise MCP Proxy
|
|
3
|
+
* Handles HTTPS communication with enterprise license server
|
|
4
|
+
*/
|
|
5
|
+
import { EnterpriseTool } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* List available enterprise tools from license server
|
|
8
|
+
* @returns Array of enterprise tools
|
|
9
|
+
*/
|
|
10
|
+
export declare function listEnterpriseTools(): Promise<EnterpriseTool[]>;
|
|
11
|
+
/**
|
|
12
|
+
* Execute an enterprise tool via the license server
|
|
13
|
+
* @param toolName - Name of the tool to execute
|
|
14
|
+
* @param args - Arguments for the tool
|
|
15
|
+
* @returns Tool execution result
|
|
16
|
+
*/
|
|
17
|
+
export declare function proxyToolCall(toolName: string, args: Record<string, any>): Promise<any>;
|
|
18
|
+
/**
|
|
19
|
+
* Validate license key with enterprise server
|
|
20
|
+
* @param licenseKey - License key to validate
|
|
21
|
+
* @returns Validation response
|
|
22
|
+
*/
|
|
23
|
+
export declare function validateLicenseKey(licenseKey: string): Promise<{
|
|
24
|
+
valid: boolean;
|
|
25
|
+
error?: string;
|
|
26
|
+
features?: string[];
|
|
27
|
+
serverUrl?: string;
|
|
28
|
+
}>;
|
|
29
|
+
//# sourceMappingURL=proxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../src/mcp/enterprise-proxy/proxy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAIL,cAAc,EACf,MAAM,YAAY,CAAC;AAgBpB;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CA0CrE;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,OAAO,CAAC,GAAG,CAAC,CA+Fd;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IACT,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC,CAkCD"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Enterprise MCP Proxy
|
|
4
|
+
* Handles HTTPS communication with enterprise license server
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.listEnterpriseTools = listEnterpriseTools;
|
|
11
|
+
exports.proxyToolCall = proxyToolCall;
|
|
12
|
+
exports.validateLicenseKey = validateLicenseKey;
|
|
13
|
+
const axios_1 = __importDefault(require("axios"));
|
|
14
|
+
const node_machine_id_1 = require("node-machine-id");
|
|
15
|
+
const credentials_js_1 = require("./credentials.js");
|
|
16
|
+
// Configuration from environment variables
|
|
17
|
+
const ENTERPRISE_URL = process.env.SNOW_ENTERPRISE_URL || 'https://license-server.run.app';
|
|
18
|
+
const LICENSE_KEY = process.env.SNOW_LICENSE_KEY;
|
|
19
|
+
const VERSION = process.env.SNOW_FLOW_VERSION || '8.30.31';
|
|
20
|
+
// Generate unique machine ID for tracking
|
|
21
|
+
let INSTANCE_ID;
|
|
22
|
+
try {
|
|
23
|
+
INSTANCE_ID = (0, node_machine_id_1.machineIdSync)();
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
// Fallback if machine ID generation fails
|
|
27
|
+
INSTANCE_ID = `fallback-${Date.now()}-${Math.random().toString(36).substring(7)}`;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* List available enterprise tools from license server
|
|
31
|
+
* @returns Array of enterprise tools
|
|
32
|
+
*/
|
|
33
|
+
async function listEnterpriseTools() {
|
|
34
|
+
if (!LICENSE_KEY) {
|
|
35
|
+
throw new Error('SNOW_LICENSE_KEY not configured. Run: snow-flow auth login');
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
const response = await axios_1.default.get(`${ENTERPRISE_URL}/mcp/tools/list`, {
|
|
39
|
+
headers: {
|
|
40
|
+
Authorization: `Bearer ${LICENSE_KEY}`,
|
|
41
|
+
'X-Instance-ID': INSTANCE_ID,
|
|
42
|
+
'X-Snow-Flow-Version': VERSION,
|
|
43
|
+
},
|
|
44
|
+
timeout: 10000, // 10 seconds for listing
|
|
45
|
+
});
|
|
46
|
+
return response.data.tools || [];
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
if (axios_1.default.isAxiosError(error)) {
|
|
50
|
+
const axiosError = error;
|
|
51
|
+
if (axiosError.response?.status === 401) {
|
|
52
|
+
throw new Error('License key invalid or expired. Run: snow-flow auth login');
|
|
53
|
+
}
|
|
54
|
+
if (axiosError.response?.status === 403) {
|
|
55
|
+
throw new Error('Access denied. Please check your enterprise license.');
|
|
56
|
+
}
|
|
57
|
+
if (axiosError.code === 'ECONNREFUSED') {
|
|
58
|
+
throw new Error(`Cannot connect to enterprise server at ${ENTERPRISE_URL}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
throw new Error(`Failed to list enterprise tools: ${error instanceof Error ? error.message : String(error)}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Execute an enterprise tool via the license server
|
|
66
|
+
* @param toolName - Name of the tool to execute
|
|
67
|
+
* @param args - Arguments for the tool
|
|
68
|
+
* @returns Tool execution result
|
|
69
|
+
*/
|
|
70
|
+
async function proxyToolCall(toolName, args) {
|
|
71
|
+
if (!LICENSE_KEY) {
|
|
72
|
+
throw new Error('SNOW_LICENSE_KEY not configured. Run: snow-flow auth login');
|
|
73
|
+
}
|
|
74
|
+
// Gather credentials from environment
|
|
75
|
+
const credentials = (0, credentials_js_1.gatherCredentials)(toolName);
|
|
76
|
+
// Check for missing credentials (warn but don't fail - server might have them)
|
|
77
|
+
const missing = (0, credentials_js_1.getMissingCredentials)(toolName);
|
|
78
|
+
if (missing.length > 0) {
|
|
79
|
+
console.error(`Warning: Missing local credentials: ${missing.join(', ')}. Using server-side credentials if available.`);
|
|
80
|
+
}
|
|
81
|
+
// Prepare request
|
|
82
|
+
const request = {
|
|
83
|
+
tool: toolName,
|
|
84
|
+
arguments: args,
|
|
85
|
+
credentials: Object.keys(credentials).length > 0 ? credentials : undefined,
|
|
86
|
+
};
|
|
87
|
+
try {
|
|
88
|
+
const response = await axios_1.default.post(`${ENTERPRISE_URL}/mcp/tools/call`, request, {
|
|
89
|
+
headers: {
|
|
90
|
+
Authorization: `Bearer ${LICENSE_KEY}`,
|
|
91
|
+
'Content-Type': 'application/json',
|
|
92
|
+
'X-Instance-ID': INSTANCE_ID,
|
|
93
|
+
'X-Snow-Flow-Version': VERSION,
|
|
94
|
+
},
|
|
95
|
+
timeout: 120000, // 2 minutes for tool execution
|
|
96
|
+
});
|
|
97
|
+
if (!response.data.success) {
|
|
98
|
+
throw new Error(response.data.error || 'Tool execution failed');
|
|
99
|
+
}
|
|
100
|
+
return response.data.result;
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
if (axios_1.default.isAxiosError(error)) {
|
|
104
|
+
const axiosError = error;
|
|
105
|
+
// Handle specific HTTP errors
|
|
106
|
+
if (axiosError.response?.status === 401) {
|
|
107
|
+
throw new Error('License key invalid or expired. Run: snow-flow auth login');
|
|
108
|
+
}
|
|
109
|
+
if (axiosError.response?.status === 403) {
|
|
110
|
+
throw new Error('Access denied. Please check your enterprise license.');
|
|
111
|
+
}
|
|
112
|
+
if (axiosError.response?.status === 429) {
|
|
113
|
+
const retryAfter = axiosError.response.headers['retry-after'] || '300';
|
|
114
|
+
throw new Error(`Rate limit exceeded. Try again in ${retryAfter} seconds.`);
|
|
115
|
+
}
|
|
116
|
+
if (axiosError.response?.status === 404) {
|
|
117
|
+
throw new Error(`Tool '${toolName}' not found in enterprise catalog.`);
|
|
118
|
+
}
|
|
119
|
+
if (axiosError.response?.data) {
|
|
120
|
+
const errorData = axiosError.response.data;
|
|
121
|
+
if (errorData.error) {
|
|
122
|
+
throw new Error(`Enterprise server error: ${errorData.error}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (axiosError.code === 'ECONNREFUSED') {
|
|
126
|
+
throw new Error(`Cannot connect to enterprise server at ${ENTERPRISE_URL}`);
|
|
127
|
+
}
|
|
128
|
+
if (axiosError.code === 'ETIMEDOUT') {
|
|
129
|
+
throw new Error('Request to enterprise server timed out. Tool execution may still be in progress.');
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
throw new Error(`Tool execution failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Validate license key with enterprise server
|
|
137
|
+
* @param licenseKey - License key to validate
|
|
138
|
+
* @returns Validation response
|
|
139
|
+
*/
|
|
140
|
+
async function validateLicenseKey(licenseKey) {
|
|
141
|
+
try {
|
|
142
|
+
const response = await axios_1.default.post(`${ENTERPRISE_URL}/api/license/validate`, {}, {
|
|
143
|
+
headers: {
|
|
144
|
+
Authorization: `Bearer ${licenseKey}`,
|
|
145
|
+
'Content-Type': 'application/json',
|
|
146
|
+
},
|
|
147
|
+
timeout: 10000,
|
|
148
|
+
});
|
|
149
|
+
return {
|
|
150
|
+
valid: true,
|
|
151
|
+
features: response.data.features || [],
|
|
152
|
+
serverUrl: ENTERPRISE_URL,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
if (axios_1.default.isAxiosError(error)) {
|
|
157
|
+
const axiosError = error;
|
|
158
|
+
if (axiosError.response?.status === 401) {
|
|
159
|
+
return { valid: false, error: 'Invalid license key' };
|
|
160
|
+
}
|
|
161
|
+
if (axiosError.response?.status === 403) {
|
|
162
|
+
return { valid: false, error: 'License key expired or inactive' };
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return {
|
|
166
|
+
valid: false,
|
|
167
|
+
error: error instanceof Error ? error.message : 'Validation failed',
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../src/mcp/enterprise-proxy/proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enterprise MCP Proxy Types
|
|
3
|
+
*/
|
|
4
|
+
export interface EnterpriseCredentials {
|
|
5
|
+
jira?: {
|
|
6
|
+
host: string;
|
|
7
|
+
email: string;
|
|
8
|
+
apiToken: string;
|
|
9
|
+
};
|
|
10
|
+
azure?: {
|
|
11
|
+
organization: string;
|
|
12
|
+
pat: string;
|
|
13
|
+
};
|
|
14
|
+
confluence?: {
|
|
15
|
+
host: string;
|
|
16
|
+
email: string;
|
|
17
|
+
apiToken: string;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export interface EnterpriseProxyConfig {
|
|
21
|
+
enterpriseUrl: string;
|
|
22
|
+
licenseKey: string;
|
|
23
|
+
credentials?: EnterpriseCredentials;
|
|
24
|
+
instanceId?: string;
|
|
25
|
+
version?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface EnterpriseToolCallRequest {
|
|
28
|
+
tool: string;
|
|
29
|
+
arguments: Record<string, any>;
|
|
30
|
+
credentials?: Partial<EnterpriseCredentials>;
|
|
31
|
+
}
|
|
32
|
+
export interface EnterpriseToolCallResponse {
|
|
33
|
+
success: boolean;
|
|
34
|
+
tool: string;
|
|
35
|
+
result?: any;
|
|
36
|
+
error?: string;
|
|
37
|
+
usage?: {
|
|
38
|
+
duration_ms: number;
|
|
39
|
+
timestamp: string;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export interface EnterpriseTool {
|
|
43
|
+
name: string;
|
|
44
|
+
description?: string;
|
|
45
|
+
inputSchema: {
|
|
46
|
+
type: 'object';
|
|
47
|
+
properties: Record<string, any>;
|
|
48
|
+
required?: string[];
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export interface EnterpriseToolListResponse {
|
|
52
|
+
tools: EnterpriseTool[];
|
|
53
|
+
}
|
|
54
|
+
export interface LicenseValidationResponse {
|
|
55
|
+
valid: boolean;
|
|
56
|
+
error?: string;
|
|
57
|
+
features?: string[];
|
|
58
|
+
serverUrl?: string;
|
|
59
|
+
customer?: {
|
|
60
|
+
id: string;
|
|
61
|
+
name: string;
|
|
62
|
+
status: string;
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/mcp/enterprise-proxy/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,KAAK,CAAC,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE;QACT,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/mcp/enterprise-proxy/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "snow-flow",
|
|
3
|
-
"version": "8.30.
|
|
3
|
+
"version": "8.30.32",
|
|
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",
|
|
@@ -512,6 +512,7 @@
|
|
|
512
512
|
"gradient-string": "^3.0.0",
|
|
513
513
|
"inquirer": "^8.2.7",
|
|
514
514
|
"neo4j-driver": "6.0.0",
|
|
515
|
+
"node-machine-id": "^1.1.12",
|
|
515
516
|
"ora": "^5.4.1",
|
|
516
517
|
"uuid": "13.0.0",
|
|
517
518
|
"winston": "3.18.3",
|
|
@@ -543,7 +544,7 @@
|
|
|
543
544
|
"typescript": "5.9.3"
|
|
544
545
|
},
|
|
545
546
|
"peerDependencies": {
|
|
546
|
-
"@groeimetai/snow-code": "^0.18.
|
|
547
|
+
"@groeimetai/snow-code": "^0.18.27"
|
|
547
548
|
},
|
|
548
549
|
"peerDependenciesMeta": {
|
|
549
550
|
"@groeimetai/snow-code": {
|