@autonoma-io/a6s 5.2.2 → 5.3.0

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.
Files changed (72) hide show
  1. package/bin/binaries/a6s-darwin-arm64 +0 -0
  2. package/bin/binaries/a6s-darwin-x64 +0 -0
  3. package/bin/binaries/a6s-linux-arm64 +0 -0
  4. package/bin/binaries/a6s-linux-x64 +0 -0
  5. package/bin/binaries/a6s-win32-x64.exe +0 -0
  6. package/dist/go-bridge.d.ts +14 -0
  7. package/dist/go-bridge.d.ts.map +1 -0
  8. package/dist/go-bridge.js +92 -0
  9. package/dist/go-bridge.js.map +1 -0
  10. package/dist/go-verbs.generated.d.ts +2 -0
  11. package/dist/go-verbs.generated.d.ts.map +1 -0
  12. package/dist/go-verbs.generated.js +46 -0
  13. package/dist/go-verbs.generated.js.map +1 -0
  14. package/dist/index.js +79 -230
  15. package/dist/index.js.map +1 -1
  16. package/dist/interactive.d.ts +9 -2
  17. package/dist/interactive.d.ts.map +1 -1
  18. package/dist/interactive.js +38 -160
  19. package/dist/interactive.js.map +1 -1
  20. package/dist/nlp/command-map.d.ts +33 -0
  21. package/dist/nlp/command-map.d.ts.map +1 -0
  22. package/dist/nlp/command-map.js +275 -0
  23. package/dist/nlp/command-map.js.map +1 -0
  24. package/dist/nlp/processor.d.ts +10 -0
  25. package/dist/nlp/processor.d.ts.map +1 -1
  26. package/dist/nlp/processor.js +81 -94
  27. package/dist/nlp/processor.js.map +1 -1
  28. package/package.json +6 -30
  29. package/dist/commands/ai-learning-demo.d.ts +0 -3
  30. package/dist/commands/ai-learning-demo.d.ts.map +0 -1
  31. package/dist/commands/ai-learning-demo.js +0 -176
  32. package/dist/commands/ai-learning-demo.js.map +0 -1
  33. package/dist/commands/auth.d.ts +0 -33
  34. package/dist/commands/auth.d.ts.map +0 -1
  35. package/dist/commands/auth.js +0 -603
  36. package/dist/commands/auth.js.map +0 -1
  37. package/dist/modules/ab-testing.d.ts +0 -16
  38. package/dist/modules/ab-testing.d.ts.map +0 -1
  39. package/dist/modules/ab-testing.js +0 -375
  40. package/dist/modules/ab-testing.js.map +0 -1
  41. package/dist/modules/ai-orchestration.d.ts +0 -70
  42. package/dist/modules/ai-orchestration.d.ts.map +0 -1
  43. package/dist/modules/ai-orchestration.js +0 -546
  44. package/dist/modules/ai-orchestration.js.map +0 -1
  45. package/dist/modules/auth-access-control.d.ts +0 -118
  46. package/dist/modules/auth-access-control.d.ts.map +0 -1
  47. package/dist/modules/auth-access-control.js +0 -832
  48. package/dist/modules/auth-access-control.js.map +0 -1
  49. package/dist/modules/database.d.ts +0 -14
  50. package/dist/modules/database.d.ts.map +0 -1
  51. package/dist/modules/database.js +0 -253
  52. package/dist/modules/database.js.map +0 -1
  53. package/dist/modules/edge-computing.d.ts +0 -130
  54. package/dist/modules/edge-computing.d.ts.map +0 -1
  55. package/dist/modules/edge-computing.js +0 -656
  56. package/dist/modules/edge-computing.js.map +0 -1
  57. package/dist/modules/load-testing.d.ts +0 -21
  58. package/dist/modules/load-testing.d.ts.map +0 -1
  59. package/dist/modules/load-testing.js +0 -372
  60. package/dist/modules/load-testing.js.map +0 -1
  61. package/dist/modules/monitoring.d.ts +0 -18
  62. package/dist/modules/monitoring.d.ts.map +0 -1
  63. package/dist/modules/monitoring.js +0 -375
  64. package/dist/modules/monitoring.js.map +0 -1
  65. package/dist/modules/onboarding.d.ts +0 -20
  66. package/dist/modules/onboarding.d.ts.map +0 -1
  67. package/dist/modules/onboarding.js +0 -455
  68. package/dist/modules/onboarding.js.map +0 -1
  69. package/dist/utils/db-client.d.ts +0 -35
  70. package/dist/utils/db-client.d.ts.map +0 -1
  71. package/dist/utils/db-client.js +0 -132
  72. package/dist/utils/db-client.js.map +0 -1
@@ -1,603 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.AuthCommand = void 0;
40
- exports.setupAuthCommands = setupAuthCommands;
41
- const chalk_1 = __importDefault(require("chalk"));
42
- const ora_1 = __importDefault(require("ora"));
43
- const prompts_1 = __importDefault(require("prompts"));
44
- const auth_access_control_1 = require("../modules/auth-access-control");
45
- const fs_1 = require("fs");
46
- const path_1 = require("path");
47
- const os_1 = require("os");
48
- const nodemailer = __importStar(require("nodemailer"));
49
- const speakeasy = __importStar(require("speakeasy"));
50
- // Admin email group configuration
51
- const ADMIN_EMAIL_GROUP = 'admin@theautonoma.io';
52
- const AUTHORIZED_DOMAINS = ['theautonoma.io', 'autonoma.dev'];
53
- const TOKEN_STORAGE_PATH = (0, path_1.join)((0, os_1.homedir)(), '.autonoma-cli', '.session');
54
- class AuthCommand {
55
- authModule;
56
- emailTransporter;
57
- constructor() {
58
- this.authModule = new auth_access_control_1.AuthAccessControlModule();
59
- // Configure email transporter for sending auth codes
60
- this.emailTransporter = nodemailer.createTransport({
61
- host: 'smtp.sendgrid.net',
62
- port: 587,
63
- secure: false,
64
- auth: {
65
- user: 'apikey',
66
- pass: process.env.SENDGRID_API_KEY || ''
67
- }
68
- });
69
- }
70
- async login(options = {}) {
71
- console.log(chalk_1.default.cyan('\n🔐 Autonoma Admin CLI Authentication\n'));
72
- // Check for existing session
73
- if (this.hasValidSession() && !options.force) {
74
- console.log(chalk_1.default.green('✓ You are already logged in'));
75
- console.log(chalk_1.default.gray('Use --force to login with different credentials'));
76
- return;
77
- }
78
- // Authentication method selection
79
- const { authMethod } = await (0, prompts_1.default)({
80
- type: 'select',
81
- name: 'authMethod',
82
- message: 'Select authentication method:',
83
- choices: [
84
- { title: 'Email (admin@theautonoma.io)', value: 'email' },
85
- { title: 'Password + MFA', value: 'password' },
86
- { title: 'API Key', value: 'apikey' },
87
- { title: 'SSH Key', value: 'ssh' },
88
- { title: 'AWS IAM Role', value: 'aws' }
89
- ]
90
- });
91
- let authResult = { success: false };
92
- switch (authMethod) {
93
- case 'email':
94
- authResult = await this.loginWithEmail(options);
95
- break;
96
- case 'password':
97
- authResult = await this.loginWithPassword();
98
- break;
99
- case 'apikey':
100
- authResult = await this.loginWithAPIKey();
101
- break;
102
- case 'ssh':
103
- authResult = await this.loginWithSSH();
104
- break;
105
- case 'aws':
106
- authResult = await this.loginWithAWS();
107
- break;
108
- }
109
- if (authResult.success && authResult.token) {
110
- this.saveSession(authResult.token);
111
- console.log(chalk_1.default.green('\n✓ Successfully authenticated'));
112
- await this.displayUserInfo(authResult.token);
113
- }
114
- else {
115
- console.log(chalk_1.default.red('\n✗ Authentication failed'));
116
- }
117
- }
118
- async loginWithEmail(options = {}) {
119
- const spinner = (0, ora_1.default)('Validating email access...').start();
120
- try {
121
- // Prompt for email
122
- const { email } = await (0, prompts_1.default)({
123
- type: 'text',
124
- name: 'email',
125
- message: 'Enter your email:',
126
- validate: (value) => {
127
- if (!value.includes('@'))
128
- return 'Invalid email format';
129
- return true;
130
- }
131
- });
132
- // Check if email is part of admin group or authorized domain
133
- const isAdminGroup = email === ADMIN_EMAIL_GROUP;
134
- const isAuthorizedDomain = AUTHORIZED_DOMAINS.some(domain => email.endsWith(`@${domain}`));
135
- if (!isAdminGroup && !isAuthorizedDomain) {
136
- spinner.fail('Email not authorized for admin access');
137
- return { success: false };
138
- }
139
- // Generate and send verification code
140
- const verificationCode = Math.floor(100000 + Math.random() * 900000).toString();
141
- const codeExpiry = Date.now() + 10 * 60 * 1000; // 10 minutes
142
- // Store verification code temporarily
143
- this.storeVerificationCode(email, verificationCode, codeExpiry);
144
- // Send email with verification code
145
- if (process.env.SENDGRID_API_KEY) {
146
- await this.emailTransporter.sendMail({
147
- from: 'noreply@theautonoma.io',
148
- to: email,
149
- subject: 'Autonoma CLI Authentication Code',
150
- html: `
151
- <div style="font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto;">
152
- <h2>Autonoma Admin CLI Authentication</h2>
153
- <p>Your verification code is:</p>
154
- <h1 style="color: #6366f1; letter-spacing: 5px;">${verificationCode}</h1>
155
- <p>This code will expire in 10 minutes.</p>
156
- <hr style="border: none; border-top: 1px solid #e5e5e5; margin: 20px 0;">
157
- <p style="color: #666; font-size: 12px;">
158
- If you didn't request this code, please ignore this email.
159
- <br>IP Address: ${options.ipAddress || 'Unknown'}
160
- <br>Time: ${new Date().toLocaleString()}
161
- </p>
162
- </div>
163
- `
164
- });
165
- spinner.succeed(`Verification code sent to ${email}`);
166
- }
167
- else {
168
- // For development/testing - display code in console
169
- spinner.succeed(`Verification code: ${verificationCode}`);
170
- }
171
- // Prompt for verification code
172
- const { inputCode } = await (0, prompts_1.default)({
173
- type: 'text',
174
- name: 'inputCode',
175
- message: 'Enter verification code:'
176
- });
177
- // Verify code
178
- if (this.verifyCode(email, inputCode)) {
179
- // Determine role based on email
180
- let role = auth_access_control_1.AdminRole.READ_ONLY;
181
- if (email === ADMIN_EMAIL_GROUP) {
182
- role = auth_access_control_1.AdminRole.SUPER_ADMIN;
183
- }
184
- else if (email.includes('devops')) {
185
- role = auth_access_control_1.AdminRole.DEVOPS_ADMIN;
186
- }
187
- else if (email.includes('security')) {
188
- role = auth_access_control_1.AdminRole.SECURITY_ADMIN;
189
- }
190
- else if (email.includes('support')) {
191
- role = auth_access_control_1.AdminRole.SUPPORT_ADMIN;
192
- }
193
- else if (email.includes('data')) {
194
- role = auth_access_control_1.AdminRole.DATA_ADMIN;
195
- }
196
- else if (email.endsWith('@theautonoma.io')) {
197
- role = auth_access_control_1.AdminRole.PLATFORM_ADMIN;
198
- }
199
- // Create or update user if needed
200
- await this.authModule.createUser(email, this.generateTempPassword(), role, 'email-auth', { authMethod: 'email' });
201
- // Authenticate with temporary password
202
- const authResult = await this.authModule.authenticateWithPassword(email, this.getTempPassword(email), options.ipAddress || '127.0.0.1');
203
- return authResult;
204
- }
205
- else {
206
- spinner.fail('Invalid or expired verification code');
207
- return { success: false };
208
- }
209
- }
210
- catch (error) {
211
- spinner.fail('Email authentication failed');
212
- console.error(chalk_1.default.red('Error:'), error.message);
213
- return { success: false };
214
- }
215
- }
216
- async loginWithPassword() {
217
- const { email } = await (0, prompts_1.default)({
218
- type: 'text',
219
- name: 'email',
220
- message: 'Email:'
221
- });
222
- const { password } = await (0, prompts_1.default)({
223
- type: 'password',
224
- name: 'password',
225
- message: 'Password:'
226
- });
227
- const authResult = await this.authModule.authenticateWithPassword(email, password, '127.0.0.1');
228
- if (authResult.mfaRequired) {
229
- const { mfaCode } = await (0, prompts_1.default)({
230
- type: 'text',
231
- name: 'mfaCode',
232
- message: 'Enter MFA code:'
233
- });
234
- return await this.authModule.authenticateWithMFA(authResult.token, mfaCode, '127.0.0.1');
235
- }
236
- return authResult;
237
- }
238
- async loginWithAPIKey() {
239
- const { apiKey } = await (0, prompts_1.default)({
240
- type: 'password',
241
- name: 'apiKey',
242
- message: 'API Key:'
243
- });
244
- return await this.authModule.authenticateWithAPIKey(apiKey, '127.0.0.1');
245
- }
246
- async loginWithSSH() {
247
- const { email } = await (0, prompts_1.default)({
248
- type: 'text',
249
- name: 'email',
250
- message: 'Email:'
251
- });
252
- const { sshKeyPath } = await (0, prompts_1.default)({
253
- type: 'text',
254
- name: 'sshKeyPath',
255
- message: 'SSH public key path:',
256
- initial: (0, path_1.join)((0, os_1.homedir)(), '.ssh', 'id_rsa.pub')
257
- });
258
- return await this.authModule.authenticateWithSSH(sshKeyPath, email, '127.0.0.1');
259
- }
260
- async loginWithAWS() {
261
- const { roleArn } = await (0, prompts_1.default)({
262
- type: 'text',
263
- name: 'roleArn',
264
- message: 'AWS Role ARN:',
265
- initial: 'arn:aws:iam::808773666646:role/AutonomaAdminCLI'
266
- });
267
- return await this.authModule.authenticateWithAWSRole(roleArn, '127.0.0.1');
268
- }
269
- async logout() {
270
- const spinner = (0, ora_1.default)('Logging out...').start();
271
- try {
272
- const token = this.getStoredToken();
273
- if (token) {
274
- await this.authModule.revokeSession(token);
275
- this.clearSession();
276
- spinner.succeed('Successfully logged out');
277
- }
278
- else {
279
- spinner.info('No active session found');
280
- }
281
- }
282
- catch (error) {
283
- spinner.fail('Logout failed');
284
- console.error(chalk_1.default.red('Error:'), error.message);
285
- }
286
- }
287
- async whoami() {
288
- const token = this.getStoredToken();
289
- if (!token) {
290
- console.log(chalk_1.default.yellow('Not logged in'));
291
- console.log(chalk_1.default.gray('Run: a6s auth login'));
292
- return;
293
- }
294
- await this.displayUserInfo(token);
295
- }
296
- async setupMFA() {
297
- const spinner = (0, ora_1.default)('Setting up MFA...').start();
298
- try {
299
- const token = this.getStoredToken();
300
- if (!token) {
301
- spinner.fail('Not logged in');
302
- return;
303
- }
304
- // Decode token to get user ID
305
- const decoded = this.decodeToken(token);
306
- if (!decoded) {
307
- spinner.fail('Invalid session');
308
- return;
309
- }
310
- const result = await this.authModule.setupMFA(decoded.userId);
311
- if (result.success) {
312
- spinner.succeed('MFA setup complete');
313
- console.log(chalk_1.default.cyan('\n📱 MFA Configuration\n'));
314
- console.log('Scan this QR code with your authenticator app:');
315
- console.log(result.qrCode);
316
- console.log('\nOr enter this secret manually:');
317
- console.log(chalk_1.default.yellow(result.secret));
318
- // Verify MFA setup
319
- const { verifyCode } = await (0, prompts_1.default)({
320
- type: 'text',
321
- name: 'verifyCode',
322
- message: 'Enter code from authenticator to verify:'
323
- });
324
- const verified = speakeasy.totp.verify({
325
- secret: result.secret,
326
- encoding: 'base32',
327
- token: verifyCode,
328
- window: 2
329
- });
330
- if (verified) {
331
- console.log(chalk_1.default.green('\n✓ MFA successfully configured'));
332
- }
333
- else {
334
- console.log(chalk_1.default.red('\n✗ Invalid code. MFA setup incomplete'));
335
- }
336
- }
337
- }
338
- catch (error) {
339
- spinner.fail('MFA setup failed');
340
- console.error(chalk_1.default.red('Error:'), error.message);
341
- }
342
- }
343
- async generateAPIKey() {
344
- const spinner = (0, ora_1.default)('Generating API key...').start();
345
- try {
346
- const token = this.getStoredToken();
347
- if (!token) {
348
- spinner.fail('Not logged in');
349
- return;
350
- }
351
- const decoded = this.decodeToken(token);
352
- if (!decoded) {
353
- spinner.fail('Invalid session');
354
- return;
355
- }
356
- const result = await this.authModule.generateAPIKey(decoded.userId);
357
- if (result.success) {
358
- spinner.succeed('API key generated');
359
- console.log(chalk_1.default.cyan('\n🔑 API Key\n'));
360
- console.log(chalk_1.default.yellow(result.apiKey));
361
- console.log(chalk_1.default.gray('\nStore this key securely. It will not be shown again.'));
362
- console.log(chalk_1.default.gray('Use this key with: a6s auth login --api-key'));
363
- }
364
- }
365
- catch (error) {
366
- spinner.fail('Failed to generate API key');
367
- console.error(chalk_1.default.red('Error:'), error.message);
368
- }
369
- }
370
- async listUsers() {
371
- console.log(chalk_1.default.cyan('\n👥 Admin Users\n'));
372
- // This would typically fetch from the user store
373
- const users = [
374
- { email: 'admin@theautonoma.io', role: 'super_admin', mfa: true, lastLogin: '2025-08-28' },
375
- { email: 'devops@theautonoma.io', role: 'devops_admin', mfa: true, lastLogin: '2025-08-27' },
376
- { email: 'security@theautonoma.io', role: 'security_admin', mfa: true, lastLogin: '2025-08-26' },
377
- { email: 'support@theautonoma.io', role: 'support_admin', mfa: false, lastLogin: '2025-08-25' }
378
- ];
379
- console.table(users);
380
- }
381
- async auditLogs(options = {}) {
382
- const spinner = (0, ora_1.default)('Fetching audit logs...').start();
383
- try {
384
- const filters = {};
385
- if (options.user)
386
- filters.userId = options.user;
387
- if (options.action)
388
- filters.action = options.action;
389
- if (options.days) {
390
- const startDate = new Date();
391
- startDate.setDate(startDate.getDate() - parseInt(options.days));
392
- filters.startDate = startDate;
393
- }
394
- const logs = await this.authModule.getAuditLogs(filters);
395
- spinner.succeed(`Found ${logs.length} audit events`);
396
- if (logs.length > 0) {
397
- console.log(chalk_1.default.cyan('\n📋 Audit Logs\n'));
398
- const formattedLogs = logs.slice(0, 50).map(log => ({
399
- Time: new Date(log.timestamp).toLocaleString(),
400
- User: log.userId,
401
- Action: log.action,
402
- Resource: log.resource,
403
- Result: log.result,
404
- IP: log.ipAddress
405
- }));
406
- console.table(formattedLogs);
407
- if (logs.length > 50) {
408
- console.log(chalk_1.default.gray(`\n... and ${logs.length - 50} more events`));
409
- }
410
- }
411
- }
412
- catch (error) {
413
- spinner.fail('Failed to fetch audit logs');
414
- console.error(chalk_1.default.red('Error:'), error.message);
415
- }
416
- }
417
- async complianceReport() {
418
- const spinner = (0, ora_1.default)('Generating compliance report...').start();
419
- try {
420
- const report = await this.authModule.generateComplianceReport();
421
- spinner.succeed('Compliance report generated');
422
- console.log(chalk_1.default.cyan('\n📊 Compliance Report\n'));
423
- console.log(chalk_1.default.blue('Generated:'), new Date(report.timestamp).toLocaleString());
424
- console.log(chalk_1.default.blue('\n👥 Users:'));
425
- console.log(` Total: ${report.users.total}`);
426
- console.log(` MFA Enabled: ${report.users.mfaEnabled}`);
427
- console.log(` By Role:`);
428
- for (const [role, count] of Object.entries(report.users.byRole)) {
429
- console.log(` • ${role}: ${count}`);
430
- }
431
- console.log(chalk_1.default.blue('\n🔐 Security:'));
432
- console.log(` Active Sessions: ${report.sessions.active}`);
433
- console.log(` MFA Verified Sessions: ${report.sessions.mfaVerified}`);
434
- console.log(` Failed Login Attempts: ${report.security.failedLogins}`);
435
- console.log(` Locked Accounts: ${report.security.lockedAccounts}`);
436
- console.log(` Active API Keys: ${report.security.apiKeysActive}`);
437
- console.log(` SSH Keys Configured: ${report.security.sshKeysConfigured}`);
438
- console.log(chalk_1.default.blue('\n📋 Audit:'));
439
- console.log(` Total Events: ${report.audit.totalEvents}`);
440
- console.log(` Successful Logins: ${report.audit.successfulLogins}`);
441
- console.log(` Failed Logins: ${report.audit.failedLogins}`);
442
- console.log(` Privileged Actions: ${report.audit.privilegedActions}`);
443
- }
444
- catch (error) {
445
- spinner.fail('Failed to generate compliance report');
446
- console.error(chalk_1.default.red('Error:'), error.message);
447
- }
448
- }
449
- // Helper methods
450
- hasValidSession() {
451
- const token = this.getStoredToken();
452
- if (!token)
453
- return false;
454
- try {
455
- const decoded = this.decodeToken(token);
456
- return decoded && new Date(decoded.exp * 1000) > new Date();
457
- }
458
- catch {
459
- return false;
460
- }
461
- }
462
- getStoredToken() {
463
- if ((0, fs_1.existsSync)(TOKEN_STORAGE_PATH)) {
464
- return (0, fs_1.readFileSync)(TOKEN_STORAGE_PATH, 'utf-8');
465
- }
466
- return null;
467
- }
468
- saveSession(token) {
469
- const dir = (0, path_1.join)((0, os_1.homedir)(), '.autonoma-cli');
470
- if (!(0, fs_1.existsSync)(dir)) {
471
- require('fs').mkdirSync(dir, { recursive: true });
472
- }
473
- (0, fs_1.writeFileSync)(TOKEN_STORAGE_PATH, token);
474
- }
475
- clearSession() {
476
- if ((0, fs_1.existsSync)(TOKEN_STORAGE_PATH)) {
477
- require('fs').unlinkSync(TOKEN_STORAGE_PATH);
478
- }
479
- }
480
- decodeToken(token) {
481
- try {
482
- const parts = token.split('.');
483
- if (parts.length !== 3)
484
- return null;
485
- const payload = Buffer.from(parts[1], 'base64').toString();
486
- return JSON.parse(payload);
487
- }
488
- catch {
489
- return null;
490
- }
491
- }
492
- async displayUserInfo(token) {
493
- const decoded = this.decodeToken(token);
494
- if (decoded) {
495
- console.log(chalk_1.default.cyan('\n👤 Current User\n'));
496
- console.log(` Email: ${decoded.email}`);
497
- console.log(` Role: ${decoded.role}`);
498
- console.log(` Permissions: ${decoded.permissions?.length || 0}`);
499
- console.log(` Session expires: ${new Date(decoded.exp * 1000).toLocaleString()}`);
500
- }
501
- }
502
- verificationCodes = new Map();
503
- storeVerificationCode(email, code, expiry) {
504
- this.verificationCodes.set(email, { code, expiry });
505
- }
506
- verifyCode(email, inputCode) {
507
- const stored = this.verificationCodes.get(email);
508
- if (!stored)
509
- return false;
510
- if (Date.now() > stored.expiry) {
511
- this.verificationCodes.delete(email);
512
- return false;
513
- }
514
- if (stored.code === inputCode) {
515
- this.verificationCodes.delete(email);
516
- return true;
517
- }
518
- return false;
519
- }
520
- generateTempPassword() {
521
- return require('crypto').randomBytes(32).toString('hex');
522
- }
523
- tempPasswords = new Map();
524
- getTempPassword(email) {
525
- let password = this.tempPasswords.get(email);
526
- if (!password) {
527
- password = this.generateTempPassword();
528
- this.tempPasswords.set(email, password);
529
- }
530
- return password;
531
- }
532
- }
533
- exports.AuthCommand = AuthCommand;
534
- // CLI Command Setup
535
- function setupAuthCommands(program) {
536
- const auth = program
537
- .command('auth')
538
- .description('Authentication and access control');
539
- const authCommand = new AuthCommand();
540
- auth
541
- .command('login')
542
- .description('Login to Autonoma Admin CLI')
543
- .option('-f, --force', 'Force new login even if session exists')
544
- .option('--api-key', 'Login with API key')
545
- .option('--ssh', 'Login with SSH key')
546
- .option('--aws', 'Login with AWS IAM role')
547
- .action(async (options) => {
548
- await authCommand.login(options);
549
- });
550
- auth
551
- .command('logout')
552
- .description('Logout from Autonoma Admin CLI')
553
- .action(async () => {
554
- await authCommand.logout();
555
- });
556
- auth
557
- .command('whoami')
558
- .description('Display current user information')
559
- .action(async () => {
560
- await authCommand.whoami();
561
- });
562
- auth
563
- .command('setup-mfa')
564
- .description('Setup multi-factor authentication')
565
- .action(async () => {
566
- await authCommand.setupMFA();
567
- });
568
- auth
569
- .command('generate-api-key')
570
- .description('Generate a new API key')
571
- .action(async () => {
572
- await authCommand.generateAPIKey();
573
- });
574
- auth
575
- .command('list-users')
576
- .description('List all admin users')
577
- .action(async () => {
578
- await authCommand.listUsers();
579
- });
580
- auth
581
- .command('audit')
582
- .description('View audit logs')
583
- .option('-u, --user <email>', 'Filter by user')
584
- .option('-a, --action <action>', 'Filter by action')
585
- .option('-d, --days <days>', 'Show logs from last N days', '7')
586
- .action(async (options) => {
587
- await authCommand.auditLogs(options);
588
- });
589
- auth
590
- .command('compliance')
591
- .description('Generate compliance report')
592
- .action(async () => {
593
- await authCommand.complianceReport();
594
- });
595
- auth
596
- .command('info')
597
- .description('Display access control configuration')
598
- .action(async () => {
599
- const authModule = new auth_access_control_1.AuthAccessControlModule();
600
- await authModule.displayAccessInfo();
601
- });
602
- }
603
- //# sourceMappingURL=auth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- interface ExperimentOptions {
2
- variants?: string;
3
- split?: string;
4
- }
5
- export declare class ABTestingModule {
6
- private dbClient;
7
- constructor();
8
- createExperiment(name: string, options?: ExperimentOptions): Promise<void>;
9
- showMetrics(experimentName?: string): Promise<void>;
10
- concludeExperiment(name: string): Promise<void>;
11
- private calculateMetrics;
12
- private getStatusColor;
13
- private showRecommendations;
14
- }
15
- export {};
16
- //# sourceMappingURL=ab-testing.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ab-testing.d.ts","sourceRoot":"","sources":["../../src/modules/ab-testing.ts"],"names":[],"mappings":"AAMA,UAAU,iBAAiB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAUD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAS;;IAOnB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB;IAyG9D,WAAW,CAAC,cAAc,CAAC,EAAE,MAAM;IAqGnC,kBAAkB,CAAC,IAAI,EAAE,MAAM;IAuGrC,OAAO,CAAC,gBAAgB;IAiExB,OAAO,CAAC,cAAc;YAaR,mBAAmB;CA0BlC"}