snow-flow 8.6.66 → 8.7.2
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/dist/cli/auth.d.ts.map +1 -1
- package/dist/cli/auth.js +45 -631
- package/dist/cli/auth.js.map +1 -1
- package/package.json +2 -2
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;AAQpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,QAgIpD"}
|
package/dist/cli/auth.js
CHANGED
|
@@ -38,13 +38,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.registerAuthCommands = registerAuthCommands;
|
|
40
40
|
const prompts = __importStar(require("@clack/prompts"));
|
|
41
|
-
const
|
|
42
|
-
const
|
|
43
|
-
const servicenow_client_js_1 = require("../utils/servicenow-client.js");
|
|
41
|
+
const child_process_1 = require("child_process");
|
|
42
|
+
const path_1 = __importDefault(require("path"));
|
|
44
43
|
const logger_js_1 = require("../utils/logger.js");
|
|
45
44
|
const authLogger = new logger_js_1.Logger('auth');
|
|
46
45
|
function registerAuthCommands(program) {
|
|
47
|
-
const auth = program.command('auth').description('
|
|
46
|
+
const auth = program.command('auth').description('Authentication management (powered by SnowCode)');
|
|
48
47
|
// List available models for a provider
|
|
49
48
|
auth
|
|
50
49
|
.command('models')
|
|
@@ -91,662 +90,77 @@ function registerAuthCommands(program) {
|
|
|
91
90
|
prompts.log.message('Tip: Use --provider to see models for a specific provider');
|
|
92
91
|
prompts.log.message('Example: snow-flow auth models --provider anthropic');
|
|
93
92
|
});
|
|
93
|
+
// Login - delegate to SnowCode
|
|
94
94
|
auth
|
|
95
95
|
.command('login')
|
|
96
|
-
.description('Authenticate with LLM
|
|
96
|
+
.description('Authenticate with LLM providers, ServiceNow, and Enterprise (via SnowCode)')
|
|
97
97
|
.action(async () => {
|
|
98
|
-
|
|
99
|
-
const fs = require('fs');
|
|
100
|
-
const path = require('path');
|
|
101
|
-
const inquirer = require('inquirer');
|
|
102
|
-
prompts.log.message(''); // Empty line for spacing
|
|
103
|
-
// Step 0: Check if we need LLM authentication
|
|
104
|
-
let provider = process.env.DEFAULT_LLM_PROVIDER;
|
|
105
|
-
// Check if ANY provider API key is configured
|
|
106
|
-
const hasApiKey = (process.env.ANTHROPIC_API_KEY && process.env.ANTHROPIC_API_KEY.trim() !== '') ||
|
|
107
|
-
(process.env.OPENAI_API_KEY && process.env.OPENAI_API_KEY.trim() !== '') ||
|
|
108
|
-
(process.env.GOOGLE_API_KEY && process.env.GOOGLE_API_KEY.trim() !== '') ||
|
|
109
|
-
(process.env.GROQ_API_KEY && process.env.GROQ_API_KEY.trim() !== '') ||
|
|
110
|
-
(process.env.MISTRAL_API_KEY && process.env.MISTRAL_API_KEY.trim() !== '');
|
|
111
|
-
// Only do SnowCode auth if no API key is configured
|
|
112
|
-
if (!hasApiKey) {
|
|
98
|
+
try {
|
|
113
99
|
// Check if snowcode is installed
|
|
114
100
|
try {
|
|
115
|
-
execSync('which snowcode', { stdio: 'ignore' });
|
|
101
|
+
(0, child_process_1.execSync)('which snowcode', { stdio: 'ignore' });
|
|
116
102
|
}
|
|
117
103
|
catch {
|
|
118
104
|
prompts.log.error('SnowCode is not installed');
|
|
119
|
-
prompts.log.warn('Please
|
|
120
|
-
prompts.log.info('
|
|
105
|
+
prompts.log.warn('Please run: npm install -g snow-flow');
|
|
106
|
+
prompts.log.info('This will install both snow-flow and snowcode');
|
|
121
107
|
return;
|
|
122
108
|
}
|
|
123
109
|
// Determine which SnowCode to use: prefer local, fallback to global
|
|
124
|
-
const localSnowCode =
|
|
110
|
+
const localSnowCode = path_1.default.join(process.cwd(), 'node_modules', '@groeimetai', 'snowcode', 'bin', 'snowcode');
|
|
125
111
|
let snowcodeCommand = 'snowcode'; // fallback to global
|
|
126
|
-
if (fs.existsSync(localSnowCode)) {
|
|
127
|
-
snowcodeCommand = `"${localSnowCode}"`;
|
|
128
|
-
}
|
|
129
|
-
prompts.intro('Starting authentication');
|
|
130
|
-
// Fix common SnowCode directory issue (agents vs agent) in ALL possible directories
|
|
131
112
|
try {
|
|
132
113
|
const fs = require('fs');
|
|
133
|
-
const path = require('path');
|
|
134
|
-
const directoriesToFix = [
|
|
135
|
-
// Fix 1: Global ~/.snowcode directory
|
|
136
|
-
process.env.HOME + '/.snowcode',
|
|
137
|
-
// Fix 2: Current working directory
|
|
138
|
-
path.join(process.cwd(), '.snowcode'),
|
|
139
|
-
// Fix 3: Parent directory (in case we're in a subdirectory)
|
|
140
|
-
path.join(process.cwd(), '..', '.snowcode'),
|
|
141
|
-
// Fix 4: Snow-flow package directory (for development)
|
|
142
|
-
path.join(__dirname, '..', '..', '.snowcode')
|
|
143
|
-
];
|
|
144
|
-
for (const snowcodeDir of directoriesToFix) {
|
|
145
|
-
const agentsDir = path.join(snowcodeDir, 'agents');
|
|
146
|
-
const agentDir = path.join(snowcodeDir, 'agent');
|
|
147
|
-
if (fs.existsSync(agentsDir) && !fs.existsSync(agentDir)) {
|
|
148
|
-
prompts.log.message(` Fixing SnowCode directory structure in ${snowcodeDir}...`);
|
|
149
|
-
try {
|
|
150
|
-
fs.renameSync(agentsDir, agentDir);
|
|
151
|
-
}
|
|
152
|
-
catch (e) {
|
|
153
|
-
// Ignore individual rename errors
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
catch (dirError) {
|
|
159
|
-
// Ignore directory fix errors - SnowCode will handle it
|
|
160
|
-
prompts.log.message(' (Directory fix skipped - will auto-correct)');
|
|
161
|
-
}
|
|
162
|
-
try {
|
|
163
|
-
// Run SnowCode auth login - reuse snowcodeCommand from version check
|
|
164
114
|
if (fs.existsSync(localSnowCode)) {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
else {
|
|
168
|
-
prompts.log.message(' Using global SnowCode installation');
|
|
169
|
-
}
|
|
170
|
-
// Run SnowCode auth (use inherit for interactive prompt)
|
|
171
|
-
try {
|
|
172
|
-
execSync(`${snowcodeCommand} auth login`, { stdio: 'inherit' });
|
|
173
|
-
// Success - now continue to ServiceNow setup
|
|
174
|
-
// Add immediate clarification after SnowCode's "Done" message
|
|
175
|
-
console.log('\n✓ LLM provider setup complete! Now configuring ServiceNow...\n');
|
|
176
|
-
prompts.log.step('ServiceNow Authentication');
|
|
177
|
-
}
|
|
178
|
-
catch (authError) {
|
|
179
|
-
// User cancelled (Ctrl+C) or auth failed
|
|
180
|
-
if (authError.signal === 'SIGINT' || authError.status === 130) {
|
|
181
|
-
// User pressed Ctrl+C - they might have completed SnowCode auth already
|
|
182
|
-
prompts.log.message(''); // Empty line
|
|
183
|
-
prompts.log.info('Authentication interrupted');
|
|
184
|
-
prompts.log.message(''); // Empty line
|
|
185
|
-
prompts.log.message('If you completed the LLM provider setup:');
|
|
186
|
-
prompts.log.message(' → Just run ' + chalk_1.default.cyan('snow-flow auth login') + ' again');
|
|
187
|
-
prompts.log.message(' → It will skip provider setup and go directly to ServiceNow');
|
|
188
|
-
prompts.log.message(''); // Empty line
|
|
189
|
-
return;
|
|
190
|
-
}
|
|
191
|
-
// Other auth error
|
|
192
|
-
prompts.log.message(''); // Empty line
|
|
193
|
-
prompts.log.warn('SnowCode authentication was not completed');
|
|
194
|
-
prompts.log.message(''); // Empty line
|
|
195
|
-
prompts.log.message('You can continue with API keys instead:');
|
|
196
|
-
prompts.log.message(' 1. Get an Anthropic API key from https://console.anthropic.com');
|
|
197
|
-
prompts.log.message(' 2. Add to .env: ANTHROPIC_API_KEY=your-api-key');
|
|
198
|
-
prompts.log.message(' 3. Run: snow-flow auth login');
|
|
199
|
-
prompts.log.message(''); // Empty line
|
|
200
|
-
return;
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
catch (error) {
|
|
204
|
-
// Unexpected error (not from execSync)
|
|
205
|
-
prompts.log.error('Unexpected error during authentication');
|
|
206
|
-
prompts.log.message(error?.message || String(error));
|
|
207
|
-
return;
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
// ServiceNow setup - continue the flow (intro already shown above after SnowCode auth)
|
|
211
|
-
// Read credentials from .env file
|
|
212
|
-
let instance = process.env.SNOW_INSTANCE;
|
|
213
|
-
let authMethod = process.env.SNOW_AUTH_METHOD;
|
|
214
|
-
// Check if we have complete credentials for either method
|
|
215
|
-
const hasOAuthCreds = process.env.SNOW_CLIENT_ID && process.env.SNOW_CLIENT_SECRET;
|
|
216
|
-
const hasBasicCreds = process.env.SNOW_USERNAME && process.env.SNOW_PASSWORD;
|
|
217
|
-
const hasCompleteCredentials = instance && instance.includes('.service-now.com') &&
|
|
218
|
-
((authMethod === 'oauth' && hasOAuthCreds) || (authMethod === 'basic' && hasBasicCreds));
|
|
219
|
-
// If no complete credentials, ask for auth method FIRST
|
|
220
|
-
if (!hasCompleteCredentials) {
|
|
221
|
-
const method = await prompts.select({
|
|
222
|
-
message: 'Choose authentication method',
|
|
223
|
-
options: [
|
|
224
|
-
{ value: 'oauth', label: 'OAuth 2.0', hint: 'recommended' },
|
|
225
|
-
{ value: 'basic', label: 'Basic Auth', hint: 'username/password' }
|
|
226
|
-
]
|
|
227
|
-
});
|
|
228
|
-
if (prompts.isCancel(method)) {
|
|
229
|
-
prompts.cancel('Setup cancelled');
|
|
230
|
-
process.exit(0);
|
|
231
|
-
}
|
|
232
|
-
authMethod = method;
|
|
233
|
-
// Ask for ServiceNow instance (common for both methods)
|
|
234
|
-
instance = await prompts.text({
|
|
235
|
-
message: 'ServiceNow instance',
|
|
236
|
-
placeholder: 'dev12345.service-now.com',
|
|
237
|
-
defaultValue: instance || '',
|
|
238
|
-
validate: (value) => {
|
|
239
|
-
if (!value || value.trim() === '')
|
|
240
|
-
return 'Instance URL is required';
|
|
241
|
-
const cleaned = value.replace(/^https?:\/\//, '').replace(/\/$/, '');
|
|
242
|
-
if (!cleaned.includes('.service-now.com')) {
|
|
243
|
-
return 'Must be a ServiceNow domain (e.g., dev12345.service-now.com)';
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
});
|
|
247
|
-
if (prompts.isCancel(instance)) {
|
|
248
|
-
prompts.cancel('Setup cancelled');
|
|
249
|
-
process.exit(0);
|
|
250
|
-
}
|
|
251
|
-
instance = instance.replace(/^https?:\/\//, '').replace(/\/$/, '');
|
|
252
|
-
}
|
|
253
|
-
// OAuth 2.0 Flow
|
|
254
|
-
if (authMethod === 'oauth') {
|
|
255
|
-
const oauth = new snow_oauth_js_1.ServiceNowOAuth();
|
|
256
|
-
let clientId = process.env.SNOW_CLIENT_ID;
|
|
257
|
-
let clientSecret = process.env.SNOW_CLIENT_SECRET;
|
|
258
|
-
// Check if OAuth credentials need to be collected
|
|
259
|
-
const needsCredentials = !clientId || !clientSecret || clientId.length < 32 || clientSecret.length < 32;
|
|
260
|
-
// If credentials are missing, prompt for them
|
|
261
|
-
if (needsCredentials) {
|
|
262
|
-
// OAuth Client ID
|
|
263
|
-
clientId = await prompts.text({
|
|
264
|
-
message: 'OAuth Client ID',
|
|
265
|
-
placeholder: '32-character hex string from ServiceNow',
|
|
266
|
-
defaultValue: clientId || '',
|
|
267
|
-
validate: (value) => {
|
|
268
|
-
if (!value || value.trim() === '')
|
|
269
|
-
return 'Client ID is required';
|
|
270
|
-
if (value.length < 32)
|
|
271
|
-
return 'Client ID too short (expected 32+ characters)';
|
|
272
|
-
}
|
|
273
|
-
});
|
|
274
|
-
if (prompts.isCancel(clientId)) {
|
|
275
|
-
prompts.cancel('Setup cancelled');
|
|
276
|
-
process.exit(0);
|
|
277
|
-
}
|
|
278
|
-
// OAuth Client Secret
|
|
279
|
-
clientSecret = await prompts.password({
|
|
280
|
-
message: 'OAuth Client Secret',
|
|
281
|
-
validate: (value) => {
|
|
282
|
-
if (!value || value.trim() === '')
|
|
283
|
-
return 'Client Secret is required';
|
|
284
|
-
if (value.length < 32)
|
|
285
|
-
return 'Client Secret too short (expected 32+ characters)';
|
|
286
|
-
}
|
|
287
|
-
});
|
|
288
|
-
if (prompts.isCancel(clientSecret)) {
|
|
289
|
-
prompts.cancel('Setup cancelled');
|
|
290
|
-
process.exit(0);
|
|
291
|
-
}
|
|
292
|
-
// Save to .env file
|
|
293
|
-
const envPath = path.join(process.cwd(), '.env');
|
|
294
|
-
let envContent = '';
|
|
295
|
-
try {
|
|
296
|
-
envContent = fs.readFileSync(envPath, 'utf8');
|
|
297
|
-
}
|
|
298
|
-
catch {
|
|
299
|
-
const examplePath = path.join(process.cwd(), '.env.example');
|
|
300
|
-
if (fs.existsSync(examplePath)) {
|
|
301
|
-
envContent = fs.readFileSync(examplePath, 'utf8');
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
// Update credentials
|
|
305
|
-
const updates = [
|
|
306
|
-
{ key: 'SNOW_INSTANCE', value: instance },
|
|
307
|
-
{ key: 'SNOW_AUTH_METHOD', value: 'oauth' },
|
|
308
|
-
{ key: 'SNOW_CLIENT_ID', value: clientId },
|
|
309
|
-
{ key: 'SNOW_CLIENT_SECRET', value: clientSecret }
|
|
310
|
-
];
|
|
311
|
-
for (const { key, value } of updates) {
|
|
312
|
-
if (envContent.includes(`${key}=`)) {
|
|
313
|
-
envContent = envContent.replace(new RegExp(`${key}=.*`, 'g'), `${key}=${value}`);
|
|
314
|
-
}
|
|
315
|
-
else {
|
|
316
|
-
envContent += `\n${key}=${value}\n`;
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
fs.writeFileSync(envPath, envContent);
|
|
320
|
-
process.env.SNOW_INSTANCE = instance;
|
|
321
|
-
process.env.SNOW_AUTH_METHOD = 'oauth';
|
|
322
|
-
process.env.SNOW_CLIENT_ID = clientId;
|
|
323
|
-
process.env.SNOW_CLIENT_SECRET = clientSecret;
|
|
324
|
-
}
|
|
325
|
-
// Start OAuth flow with localhost callback server
|
|
326
|
-
const result = await oauth.authenticate(instance, clientId, clientSecret);
|
|
327
|
-
if (result.success) {
|
|
328
|
-
prompts.log.success('ServiceNow authentication successful');
|
|
329
|
-
// Test connection
|
|
330
|
-
const client = new servicenow_client_js_1.ServiceNowClient();
|
|
331
|
-
const testResult = await client.testConnection();
|
|
332
|
-
if (testResult.success) {
|
|
333
|
-
prompts.log.success(`Logged in as: ${testResult.data.name} (${testResult.data.user_name})`);
|
|
334
|
-
}
|
|
335
|
-
// 🔧 Auto-refresh MCP configuration with new credentials
|
|
336
|
-
const spinner2 = prompts.spinner();
|
|
337
|
-
try {
|
|
338
|
-
const { setupMCPConfig } = await Promise.resolve().then(() => __importStar(require('../cli.js')));
|
|
339
|
-
spinner2.start('Updating MCP configuration');
|
|
340
|
-
await setupMCPConfig(process.cwd(), instance, clientId, clientSecret, true);
|
|
341
|
-
spinner2.stop('MCP servers ready for SnowCode/Claude Code');
|
|
342
|
-
}
|
|
343
|
-
catch (error) {
|
|
344
|
-
spinner2.stop('MCP configuration update failed');
|
|
345
|
-
prompts.log.warn('Could not update MCP config - run "snow-flow init" to set up');
|
|
346
|
-
}
|
|
347
|
-
prompts.outro('Setup complete!');
|
|
348
|
-
}
|
|
349
|
-
else {
|
|
350
|
-
prompts.cancel(result.error || 'Unknown error');
|
|
351
|
-
process.exit(1);
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
// Basic Auth Flow
|
|
355
|
-
else if (authMethod === 'basic') {
|
|
356
|
-
let username = process.env.SNOW_USERNAME;
|
|
357
|
-
let password = process.env.SNOW_PASSWORD;
|
|
358
|
-
// Check if Basic Auth credentials need to be collected
|
|
359
|
-
const needsCredentials = !username || !password || username.trim() === '' || password.trim() === '';
|
|
360
|
-
if (needsCredentials) {
|
|
361
|
-
// Username
|
|
362
|
-
username = await prompts.text({
|
|
363
|
-
message: 'ServiceNow username',
|
|
364
|
-
placeholder: 'admin',
|
|
365
|
-
defaultValue: username || '',
|
|
366
|
-
validate: (value) => {
|
|
367
|
-
if (!value || value.trim() === '')
|
|
368
|
-
return 'Username is required';
|
|
369
|
-
}
|
|
370
|
-
});
|
|
371
|
-
if (prompts.isCancel(username)) {
|
|
372
|
-
prompts.cancel('Setup cancelled');
|
|
373
|
-
process.exit(0);
|
|
374
|
-
}
|
|
375
|
-
// Password
|
|
376
|
-
password = await prompts.password({
|
|
377
|
-
message: 'ServiceNow password',
|
|
378
|
-
validate: (value) => {
|
|
379
|
-
if (!value || value.trim() === '')
|
|
380
|
-
return 'Password is required';
|
|
381
|
-
}
|
|
382
|
-
});
|
|
383
|
-
if (prompts.isCancel(password)) {
|
|
384
|
-
prompts.cancel('Setup cancelled');
|
|
385
|
-
process.exit(0);
|
|
386
|
-
}
|
|
387
|
-
// Save to .env file
|
|
388
|
-
const envPath = path.join(process.cwd(), '.env');
|
|
389
|
-
let envContent = '';
|
|
390
|
-
try {
|
|
391
|
-
envContent = fs.readFileSync(envPath, 'utf8');
|
|
392
|
-
}
|
|
393
|
-
catch {
|
|
394
|
-
const examplePath = path.join(process.cwd(), '.env.example');
|
|
395
|
-
if (fs.existsSync(examplePath)) {
|
|
396
|
-
envContent = fs.readFileSync(examplePath, 'utf8');
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
// Update credentials
|
|
400
|
-
const updates = [
|
|
401
|
-
{ key: 'SNOW_INSTANCE', value: instance },
|
|
402
|
-
{ key: 'SNOW_AUTH_METHOD', value: 'basic' },
|
|
403
|
-
{ key: 'SNOW_USERNAME', value: username },
|
|
404
|
-
{ key: 'SNOW_PASSWORD', value: password }
|
|
405
|
-
];
|
|
406
|
-
for (const { key, value } of updates) {
|
|
407
|
-
if (envContent.includes(`${key}=`)) {
|
|
408
|
-
envContent = envContent.replace(new RegExp(`${key}=.*`, 'g'), `${key}=${value}`);
|
|
409
|
-
}
|
|
410
|
-
else {
|
|
411
|
-
envContent += `\n${key}=${value}\n`;
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
|
-
fs.writeFileSync(envPath, envContent);
|
|
415
|
-
process.env.SNOW_INSTANCE = instance;
|
|
416
|
-
process.env.SNOW_AUTH_METHOD = 'basic';
|
|
417
|
-
process.env.SNOW_USERNAME = username;
|
|
418
|
-
process.env.SNOW_PASSWORD = password;
|
|
419
|
-
}
|
|
420
|
-
// Test Basic Auth connection
|
|
421
|
-
const spinner = prompts.spinner();
|
|
422
|
-
spinner.start('Authenticating with ServiceNow');
|
|
423
|
-
const client = new servicenow_client_js_1.ServiceNowClient();
|
|
424
|
-
const testResult = await client.testConnection();
|
|
425
|
-
if (testResult.success) {
|
|
426
|
-
spinner.stop('ServiceNow authentication successful');
|
|
427
|
-
prompts.log.success(`Logged in as: ${testResult.data.name} (${testResult.data.user_name})`);
|
|
428
|
-
// 🔧 Auto-refresh MCP configuration with new credentials
|
|
429
|
-
const spinner2 = prompts.spinner();
|
|
430
|
-
try {
|
|
431
|
-
const { setupMCPConfig } = await Promise.resolve().then(() => __importStar(require('../cli.js')));
|
|
432
|
-
spinner2.start('Updating MCP configuration');
|
|
433
|
-
await setupMCPConfig(process.cwd(), instance, username, password, true);
|
|
434
|
-
spinner2.stop('MCP servers ready for SnowCode/Claude Code');
|
|
435
|
-
}
|
|
436
|
-
catch (error) {
|
|
437
|
-
spinner2.stop('MCP configuration update failed');
|
|
438
|
-
prompts.log.warn('Could not update MCP config - run "snow-flow init" to set up');
|
|
439
|
-
}
|
|
440
|
-
prompts.outro('Setup complete!');
|
|
441
|
-
}
|
|
442
|
-
else {
|
|
443
|
-
spinner.stop('Authentication failed');
|
|
444
|
-
prompts.cancel(testResult.error || 'Invalid credentials');
|
|
445
|
-
process.exit(1);
|
|
446
|
-
}
|
|
447
|
-
}
|
|
448
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
449
|
-
// 🚀 ENTERPRISE FEATURES SETUP (Optional)
|
|
450
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
451
|
-
prompts.log.message(''); // Spacing
|
|
452
|
-
prompts.log.step('Enterprise Features (Optional)');
|
|
453
|
-
const hasEnterprise = await prompts.confirm({
|
|
454
|
-
message: 'Do you have a Snow-Flow Enterprise license?',
|
|
455
|
-
initialValue: false
|
|
456
|
-
});
|
|
457
|
-
if (prompts.isCancel(hasEnterprise) || !hasEnterprise) {
|
|
458
|
-
prompts.log.info('Skipping enterprise setup - you can add it later with "snow-flow auth login"');
|
|
459
|
-
prompts.outro('Setup complete!');
|
|
460
|
-
return;
|
|
461
|
-
}
|
|
462
|
-
// Enterprise license key
|
|
463
|
-
const licenseKey = await prompts.text({
|
|
464
|
-
message: 'Enterprise license key',
|
|
465
|
-
placeholder: 'SNOW-ENT-1-ABC123 or SNOW-ENT-SI-ABC123',
|
|
466
|
-
validate: (value) => {
|
|
467
|
-
if (!value || value.trim() === '')
|
|
468
|
-
return 'License key is required';
|
|
469
|
-
if (!value.startsWith('SNOW-'))
|
|
470
|
-
return 'Invalid format (should start with SNOW-)';
|
|
471
|
-
const parts = value.split('-');
|
|
472
|
-
// Accept both formats:
|
|
473
|
-
// Old: SNOW-TIER-ORG-DATE-HASH (5 parts)
|
|
474
|
-
// New: SNOW-ENT-CUST-HASH or SNOW-ENT-SI-HASH (4 parts)
|
|
475
|
-
if (parts.length !== 4 && parts.length !== 5) {
|
|
476
|
-
return 'Invalid format (expected: SNOW-ENT-1-HASH or SNOW-ENT-SI-HASH)';
|
|
477
|
-
}
|
|
478
|
-
// For 4-part format, ensure it's ENT type
|
|
479
|
-
if (parts.length === 4 && parts[1] !== 'ENT') {
|
|
480
|
-
return 'Invalid format (second part must be ENT)';
|
|
481
|
-
}
|
|
482
|
-
}
|
|
483
|
-
});
|
|
484
|
-
if (prompts.isCancel(licenseKey)) {
|
|
485
|
-
prompts.log.info('Enterprise setup skipped');
|
|
486
|
-
prompts.outro('Setup complete!');
|
|
487
|
-
return;
|
|
488
|
-
}
|
|
489
|
-
// License server URL (with sensible default)
|
|
490
|
-
let licenseServerUrl = await prompts.text({
|
|
491
|
-
message: 'Enterprise license server URL',
|
|
492
|
-
placeholder: 'https://license.snow-flow.dev (default)',
|
|
493
|
-
defaultValue: 'https://license.snow-flow.dev',
|
|
494
|
-
validate: (value) => {
|
|
495
|
-
// Allow empty - will use default
|
|
496
|
-
if (!value || value.trim() === '')
|
|
497
|
-
return undefined;
|
|
498
|
-
if (!value.startsWith('https://'))
|
|
499
|
-
return 'Must be HTTPS URL';
|
|
500
|
-
}
|
|
501
|
-
});
|
|
502
|
-
// Apply default if empty
|
|
503
|
-
if (!licenseServerUrl || licenseServerUrl.trim() === '') {
|
|
504
|
-
licenseServerUrl = 'https://license.snow-flow.dev';
|
|
505
|
-
}
|
|
506
|
-
if (prompts.isCancel(licenseServerUrl)) {
|
|
507
|
-
prompts.log.info('Enterprise setup skipped');
|
|
508
|
-
prompts.outro('Setup complete!');
|
|
509
|
-
return;
|
|
510
|
-
}
|
|
511
|
-
// Ask which integrations to configure
|
|
512
|
-
const integrations = await prompts.multiselect({
|
|
513
|
-
message: 'Configure integrations (optional)',
|
|
514
|
-
options: [
|
|
515
|
-
{ value: 'jira', label: 'Jira', hint: 'Atlassian Jira Cloud' },
|
|
516
|
-
{ value: 'azdo', label: 'Azure DevOps', hint: 'Microsoft Azure DevOps' },
|
|
517
|
-
{ value: 'confluence', label: 'Confluence', hint: 'Atlassian Confluence' }
|
|
518
|
-
],
|
|
519
|
-
required: false
|
|
520
|
-
});
|
|
521
|
-
const enterpriseEnv = {
|
|
522
|
-
SNOW_LICENSE_KEY: licenseKey,
|
|
523
|
-
SNOW_ENTERPRISE_URL: licenseServerUrl
|
|
524
|
-
};
|
|
525
|
-
// Jira credentials
|
|
526
|
-
if (integrations && integrations.includes('jira')) {
|
|
527
|
-
prompts.log.message('Jira Configuration');
|
|
528
|
-
const jiraHost = await prompts.text({
|
|
529
|
-
message: 'Jira host',
|
|
530
|
-
placeholder: 'yourcompany.atlassian.net',
|
|
531
|
-
validate: (v) => v && v.includes('.') ? undefined : 'Invalid host'
|
|
532
|
-
});
|
|
533
|
-
if (!prompts.isCancel(jiraHost)) {
|
|
534
|
-
const jiraEmail = await prompts.text({
|
|
535
|
-
message: 'Jira email',
|
|
536
|
-
placeholder: 'you@company.com',
|
|
537
|
-
validate: (v) => v && v.includes('@') ? undefined : 'Invalid email'
|
|
538
|
-
});
|
|
539
|
-
if (!prompts.isCancel(jiraEmail)) {
|
|
540
|
-
const jiraToken = await prompts.password({
|
|
541
|
-
message: 'Jira API token',
|
|
542
|
-
validate: (v) => v && v.length > 10 ? undefined : 'Token required'
|
|
543
|
-
});
|
|
544
|
-
if (!prompts.isCancel(jiraToken)) {
|
|
545
|
-
enterpriseEnv.JIRA_BASE_URL = `https://${jiraHost}`;
|
|
546
|
-
enterpriseEnv.JIRA_EMAIL = jiraEmail;
|
|
547
|
-
enterpriseEnv.JIRA_API_TOKEN = jiraToken;
|
|
548
|
-
prompts.log.success('Jira configured');
|
|
549
|
-
}
|
|
115
|
+
snowcodeCommand = localSnowCode;
|
|
116
|
+
authLogger.debug('Using local SnowCode installation');
|
|
550
117
|
}
|
|
551
118
|
}
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
if (integrations && integrations.includes('azdo')) {
|
|
555
|
-
prompts.log.message('Azure DevOps Configuration');
|
|
556
|
-
const azdoOrg = await prompts.text({
|
|
557
|
-
message: 'Azure DevOps organization',
|
|
558
|
-
placeholder: 'yourcompany',
|
|
559
|
-
validate: (v) => v && v.length > 0 ? undefined : 'Organization required'
|
|
560
|
-
});
|
|
561
|
-
if (!prompts.isCancel(azdoOrg)) {
|
|
562
|
-
const azdoPat = await prompts.password({
|
|
563
|
-
message: 'Azure DevOps Personal Access Token (PAT)',
|
|
564
|
-
validate: (v) => v && v.length > 20 ? undefined : 'PAT required'
|
|
565
|
-
});
|
|
566
|
-
if (!prompts.isCancel(azdoPat)) {
|
|
567
|
-
enterpriseEnv.AZDO_ORG_URL = `https://dev.azure.com/${azdoOrg}`;
|
|
568
|
-
enterpriseEnv.AZDO_PAT = azdoPat;
|
|
569
|
-
prompts.log.success('Azure DevOps configured');
|
|
570
|
-
}
|
|
119
|
+
catch {
|
|
120
|
+
authLogger.debug('Using global SnowCode installation');
|
|
571
121
|
}
|
|
122
|
+
prompts.log.message('');
|
|
123
|
+
prompts.log.step('🚀 Starting authentication flow (powered by SnowCode)');
|
|
124
|
+
prompts.log.message('');
|
|
125
|
+
// Call SnowCode auth login - it handles everything now!
|
|
126
|
+
(0, child_process_1.execSync)(`${snowcodeCommand} auth login`, { stdio: 'inherit' });
|
|
127
|
+
prompts.log.message('');
|
|
128
|
+
prompts.log.success('✅ Authentication complete!');
|
|
129
|
+
prompts.log.message('');
|
|
130
|
+
prompts.log.info('Next steps:');
|
|
131
|
+
prompts.log.message(' • Run: snow-flow swarm "<objective>" to start developing');
|
|
132
|
+
prompts.log.message(' • Run: snow-flow auth list to see configured credentials');
|
|
133
|
+
prompts.log.message('');
|
|
572
134
|
}
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
const confluenceHost = await prompts.text({
|
|
577
|
-
message: 'Confluence host',
|
|
578
|
-
placeholder: 'yourcompany.atlassian.net',
|
|
579
|
-
validate: (v) => v && v.includes('.') ? undefined : 'Invalid host'
|
|
580
|
-
});
|
|
581
|
-
if (!prompts.isCancel(confluenceHost)) {
|
|
582
|
-
const confluenceEmail = await prompts.text({
|
|
583
|
-
message: 'Confluence email',
|
|
584
|
-
placeholder: 'you@company.com',
|
|
585
|
-
validate: (v) => v && v.includes('@') ? undefined : 'Invalid email'
|
|
586
|
-
});
|
|
587
|
-
if (!prompts.isCancel(confluenceEmail)) {
|
|
588
|
-
const confluenceToken = await prompts.password({
|
|
589
|
-
message: 'Confluence API token',
|
|
590
|
-
validate: (v) => v && v.length > 10 ? undefined : 'Token required'
|
|
591
|
-
});
|
|
592
|
-
if (!prompts.isCancel(confluenceToken)) {
|
|
593
|
-
enterpriseEnv.CONFLUENCE_BASE_URL = `https://${confluenceHost}`;
|
|
594
|
-
enterpriseEnv.CONFLUENCE_EMAIL = confluenceEmail;
|
|
595
|
-
enterpriseEnv.CONFLUENCE_API_TOKEN = confluenceToken;
|
|
596
|
-
prompts.log.success('Confluence configured');
|
|
597
|
-
}
|
|
598
|
-
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
if (error.code !== 'ENOENT') {
|
|
137
|
+
prompts.log.error(`Authentication failed: ${error.message}`);
|
|
599
138
|
}
|
|
600
139
|
}
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
140
|
+
});
|
|
141
|
+
// List credentials
|
|
142
|
+
auth
|
|
143
|
+
.command('list')
|
|
144
|
+
.alias('ls')
|
|
145
|
+
.description('List configured credentials (via SnowCode)')
|
|
146
|
+
.action(async () => {
|
|
604
147
|
try {
|
|
605
|
-
|
|
606
|
-
}
|
|
607
|
-
catch {
|
|
608
|
-
// File doesn't exist, will create
|
|
609
|
-
}
|
|
610
|
-
for (const [key, value] of Object.entries(enterpriseEnv)) {
|
|
611
|
-
if (envContent.includes(`${key}=`)) {
|
|
612
|
-
envContent = envContent.replace(new RegExp(`${key}=.*`, 'g'), `${key}=${value}`);
|
|
613
|
-
}
|
|
614
|
-
else {
|
|
615
|
-
envContent += `\n${key}=${value}\n`;
|
|
616
|
-
}
|
|
617
|
-
process.env[key] = value;
|
|
148
|
+
(0, child_process_1.execSync)('snowcode auth list', { stdio: 'inherit' });
|
|
618
149
|
}
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
// Configure enterprise MCP proxy (only for Service Integrators)
|
|
622
|
-
const isServiceIntegrator = licenseKey.includes('-SI-');
|
|
623
|
-
const isCustomer = !isServiceIntegrator;
|
|
624
|
-
if (isCustomer) {
|
|
625
|
-
// Customers use remote server only - no proxy needed
|
|
626
|
-
prompts.log.success('Enterprise configuration complete');
|
|
627
|
-
prompts.log.info('Using remote enterprise server: ' + licenseServerUrl);
|
|
150
|
+
catch (error) {
|
|
151
|
+
prompts.log.error('SnowCode is not installed. Run: npm install -g snow-flow');
|
|
628
152
|
}
|
|
629
|
-
else {
|
|
630
|
-
// Service Integrators can use local proxy OR remote server
|
|
631
|
-
const spinner3 = prompts.spinner();
|
|
632
|
-
spinner3.start('Configuring enterprise MCP proxy');
|
|
633
|
-
try {
|
|
634
|
-
// Find the enterprise proxy path
|
|
635
|
-
const enterpriseProxyPath = path.join(process.cwd(), '..', 'snow-flow-enterprise', 'mcp-proxy', 'dist', 'enterprise-proxy.js');
|
|
636
|
-
// Check if proxy exists
|
|
637
|
-
if (!fs.existsSync(enterpriseProxyPath)) {
|
|
638
|
-
spinner3.stop('Local proxy not found - will use remote server');
|
|
639
|
-
prompts.log.message(' (Optional) To use local proxy: cd ../snow-flow-enterprise/mcp-proxy && npm run build');
|
|
640
|
-
}
|
|
641
|
-
else {
|
|
642
|
-
// Configure for SnowCode (prioritize SnowCode config)
|
|
643
|
-
const snowcodeConfigPath = path.join(process.env.HOME || '', '.snowcode', 'config.json');
|
|
644
|
-
const snowcodeConfigDirPath = path.join(process.env.HOME || '', '.snowcode');
|
|
645
|
-
if (!fs.existsSync(snowcodeConfigDirPath)) {
|
|
646
|
-
fs.mkdirSync(snowcodeConfigDirPath, { recursive: true });
|
|
647
|
-
}
|
|
648
|
-
let snowcodeConfig = { mcpServers: {} };
|
|
649
|
-
if (fs.existsSync(snowcodeConfigPath)) {
|
|
650
|
-
try {
|
|
651
|
-
snowcodeConfig = JSON.parse(fs.readFileSync(snowcodeConfigPath, 'utf8'));
|
|
652
|
-
}
|
|
653
|
-
catch {
|
|
654
|
-
snowcodeConfig = { mcpServers: {} };
|
|
655
|
-
}
|
|
656
|
-
}
|
|
657
|
-
if (!snowcodeConfig.mcpServers) {
|
|
658
|
-
snowcodeConfig.mcpServers = {};
|
|
659
|
-
}
|
|
660
|
-
// Add enterprise MCP server
|
|
661
|
-
snowcodeConfig.mcpServers['snow-flow-enterprise'] = {
|
|
662
|
-
command: 'node',
|
|
663
|
-
args: [enterpriseProxyPath],
|
|
664
|
-
env: enterpriseEnv
|
|
665
|
-
};
|
|
666
|
-
fs.writeFileSync(snowcodeConfigPath, JSON.stringify(snowcodeConfig, null, 2));
|
|
667
|
-
spinner3.stop('Enterprise MCP proxy configured for SnowCode');
|
|
668
|
-
prompts.log.success(`Config saved: ${snowcodeConfigPath}`);
|
|
669
|
-
// Also try Claude Code config
|
|
670
|
-
const claudeConfigPath = path.join(process.env.HOME || '', '.claude', 'settings.json');
|
|
671
|
-
if (fs.existsSync(path.dirname(claudeConfigPath))) {
|
|
672
|
-
try {
|
|
673
|
-
let claudeConfig = { mcpServers: {} };
|
|
674
|
-
if (fs.existsSync(claudeConfigPath)) {
|
|
675
|
-
claudeConfig = JSON.parse(fs.readFileSync(claudeConfigPath, 'utf8'));
|
|
676
|
-
}
|
|
677
|
-
if (!claudeConfig.mcpServers) {
|
|
678
|
-
claudeConfig.mcpServers = {};
|
|
679
|
-
}
|
|
680
|
-
claudeConfig.mcpServers['snow-flow-enterprise'] = {
|
|
681
|
-
command: 'node',
|
|
682
|
-
args: [enterpriseProxyPath],
|
|
683
|
-
env: enterpriseEnv
|
|
684
|
-
};
|
|
685
|
-
fs.writeFileSync(claudeConfigPath, JSON.stringify(claudeConfig, null, 2));
|
|
686
|
-
prompts.log.success('Also configured for Claude Code');
|
|
687
|
-
}
|
|
688
|
-
catch {
|
|
689
|
-
// Claude Code config optional
|
|
690
|
-
}
|
|
691
|
-
}
|
|
692
|
-
}
|
|
693
|
-
}
|
|
694
|
-
catch (error) {
|
|
695
|
-
spinner3.stop('Enterprise proxy configuration failed');
|
|
696
|
-
prompts.log.warn(`Error: ${error.message}`);
|
|
697
|
-
prompts.log.message('You can configure manually later');
|
|
698
|
-
}
|
|
699
|
-
} // Close Service Integrator else block
|
|
700
|
-
prompts.outro('🎉 Enterprise setup complete! Restart your AI coding assistant to use enterprise features.');
|
|
701
153
|
});
|
|
154
|
+
// Logout
|
|
702
155
|
auth
|
|
703
156
|
.command('logout')
|
|
704
|
-
.description('
|
|
157
|
+
.description('Log out from a configured provider (via SnowCode)')
|
|
705
158
|
.action(async () => {
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
prompts.log.success('Logged out successfully');
|
|
709
|
-
});
|
|
710
|
-
auth
|
|
711
|
-
.command('status')
|
|
712
|
-
.description('Show ServiceNow authentication status')
|
|
713
|
-
.action(async () => {
|
|
714
|
-
const oauth = new snow_oauth_js_1.ServiceNowOAuth();
|
|
715
|
-
prompts.log.step('ServiceNow Authentication Status');
|
|
716
|
-
const isAuthenticated = await oauth.isAuthenticated();
|
|
717
|
-
const credentials = await oauth.loadCredentials();
|
|
718
|
-
if (isAuthenticated && credentials) {
|
|
719
|
-
prompts.log.success('Status: Authenticated');
|
|
720
|
-
prompts.log.info(`Instance: ${credentials.instance}`);
|
|
721
|
-
prompts.log.info('Method: OAuth 2.0');
|
|
722
|
-
prompts.log.info(`Client ID: ${credentials.clientId}`);
|
|
723
|
-
if (credentials.expiresAt) {
|
|
724
|
-
const expiresAt = new Date(credentials.expiresAt);
|
|
725
|
-
prompts.log.info(`Token expires: ${expiresAt.toLocaleString()}`);
|
|
726
|
-
}
|
|
727
|
-
// Test connection
|
|
728
|
-
const spinner = prompts.spinner();
|
|
729
|
-
spinner.start('Testing connection');
|
|
730
|
-
const client = new servicenow_client_js_1.ServiceNowClient();
|
|
731
|
-
const testResult = await client.testConnection();
|
|
732
|
-
if (testResult.success) {
|
|
733
|
-
spinner.stop('Connection test successful');
|
|
734
|
-
if (testResult.data.message) {
|
|
735
|
-
prompts.log.message(` ${testResult.data.message}`);
|
|
736
|
-
}
|
|
737
|
-
prompts.log.info(`Instance: ${testResult.data.email || credentials.instance}`);
|
|
738
|
-
}
|
|
739
|
-
else {
|
|
740
|
-
spinner.stop('Connection test failed');
|
|
741
|
-
prompts.log.error(`Error: ${testResult.error}`);
|
|
742
|
-
}
|
|
159
|
+
try {
|
|
160
|
+
(0, child_process_1.execSync)('snowcode auth logout', { stdio: 'inherit' });
|
|
743
161
|
}
|
|
744
|
-
|
|
745
|
-
prompts.log.error('
|
|
746
|
-
prompts.log.message('Instance: Not configured');
|
|
747
|
-
prompts.log.message('Method: Not set');
|
|
748
|
-
prompts.log.message('');
|
|
749
|
-
prompts.log.info('Create .env file and run "snow-flow auth login"');
|
|
162
|
+
catch (error) {
|
|
163
|
+
prompts.log.error('SnowCode is not installed. Run: npm install -g snow-flow');
|
|
750
164
|
}
|
|
751
165
|
});
|
|
752
166
|
}
|
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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "snow-flow",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.7.2",
|
|
4
4
|
"description": "ServiceNow development with SnowCode - 75+ LLM providers (Claude, GPT, Gemini, Llama, Mistral, DeepSeek, Groq, Ollama) • 410 Optimized Tools • 2 MCP Servers • Native Predictive Intelligence builder • Multi-agent orchestration • Use ANY AI coding assistant",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "commonjs",
|
|
@@ -532,7 +532,7 @@
|
|
|
532
532
|
"typescript": "5.9.3"
|
|
533
533
|
},
|
|
534
534
|
"peerDependencies": {
|
|
535
|
-
"@groeimetai/snowcode": ">=0.
|
|
535
|
+
"@groeimetai/snowcode": ">=0.16.0"
|
|
536
536
|
},
|
|
537
537
|
"peerDependenciesMeta": {
|
|
538
538
|
"@groeimetai/snowcode": {
|