legionai 1.0.0-beta.7 → 1.0.0-beta.8

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 (91) hide show
  1. package/dist/auth/index.d.ts +2 -0
  2. package/dist/auth/index.d.ts.map +1 -0
  3. package/dist/auth/index.js +2 -0
  4. package/dist/auth/index.js.map +1 -0
  5. package/dist/auth/license.d.ts +41 -0
  6. package/dist/auth/license.d.ts.map +1 -0
  7. package/dist/auth/license.js +202 -0
  8. package/dist/auth/license.js.map +1 -0
  9. package/dist/commands/activate.d.ts +3 -0
  10. package/dist/commands/activate.d.ts.map +1 -0
  11. package/dist/commands/activate.js +129 -0
  12. package/dist/commands/activate.js.map +1 -0
  13. package/dist/commands/config.d.ts +3 -0
  14. package/dist/commands/config.d.ts.map +1 -0
  15. package/dist/commands/config.js +278 -0
  16. package/dist/commands/config.js.map +1 -0
  17. package/dist/commands/deploy.d.ts +3 -0
  18. package/dist/commands/deploy.d.ts.map +1 -0
  19. package/dist/commands/deploy.js +430 -0
  20. package/dist/commands/deploy.js.map +1 -0
  21. package/dist/commands/init.d.ts +3 -0
  22. package/dist/commands/init.d.ts.map +1 -0
  23. package/dist/commands/init.js +306 -0
  24. package/dist/commands/init.js.map +1 -0
  25. package/dist/commands/recruit.d.ts +3 -0
  26. package/dist/commands/recruit.d.ts.map +1 -0
  27. package/dist/commands/recruit.js +136 -0
  28. package/dist/commands/recruit.js.map +1 -0
  29. package/dist/commands/status.d.ts +3 -0
  30. package/dist/commands/status.d.ts.map +1 -0
  31. package/dist/commands/status.js +130 -0
  32. package/dist/commands/status.js.map +1 -0
  33. package/dist/commands/wizard.d.ts +9 -0
  34. package/dist/commands/wizard.d.ts.map +1 -0
  35. package/dist/commands/wizard.js +719 -0
  36. package/dist/commands/wizard.js.map +1 -0
  37. package/dist/config/index.d.ts +2 -0
  38. package/dist/config/index.d.ts.map +1 -0
  39. package/dist/config/index.js +2 -0
  40. package/dist/config/index.js.map +1 -0
  41. package/dist/config/store.d.ts +24 -0
  42. package/dist/config/store.d.ts.map +1 -0
  43. package/dist/config/store.js +95 -0
  44. package/dist/config/store.js.map +1 -0
  45. package/dist/index.d.ts +3 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +59 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/legion.cjs +254 -483
  50. package/dist/legion.mjs +1180 -0
  51. package/dist/ui/animations.d.ts +162 -0
  52. package/dist/ui/animations.d.ts.map +1 -0
  53. package/dist/ui/animations.js +734 -0
  54. package/dist/ui/animations.js.map +1 -0
  55. package/dist/ui/theme.d.ts +164 -0
  56. package/dist/ui/theme.d.ts.map +1 -0
  57. package/dist/ui/theme.js +324 -0
  58. package/dist/ui/theme.js.map +1 -0
  59. package/dist/wizard/agent-setup.d.ts +15 -0
  60. package/dist/wizard/agent-setup.d.ts.map +1 -0
  61. package/dist/wizard/agent-setup.js +654 -0
  62. package/dist/wizard/agent-setup.js.map +1 -0
  63. package/dist/wizard/existing-project.d.ts +50 -0
  64. package/dist/wizard/existing-project.d.ts.map +1 -0
  65. package/dist/wizard/existing-project.js +700 -0
  66. package/dist/wizard/existing-project.js.map +1 -0
  67. package/dist/wizard/index.d.ts +8 -0
  68. package/dist/wizard/index.d.ts.map +1 -0
  69. package/dist/wizard/index.js +11 -0
  70. package/dist/wizard/index.js.map +1 -0
  71. package/dist/wizard/mcp-config.d.ts +14 -0
  72. package/dist/wizard/mcp-config.d.ts.map +1 -0
  73. package/dist/wizard/mcp-config.js +410 -0
  74. package/dist/wizard/mcp-config.js.map +1 -0
  75. package/dist/wizard/post-setup.d.ts +10 -0
  76. package/dist/wizard/post-setup.d.ts.map +1 -0
  77. package/dist/wizard/post-setup.js +288 -0
  78. package/dist/wizard/post-setup.js.map +1 -0
  79. package/dist/wizard/questions.d.ts +18 -0
  80. package/dist/wizard/questions.d.ts.map +1 -0
  81. package/dist/wizard/questions.js +473 -0
  82. package/dist/wizard/questions.js.map +1 -0
  83. package/dist/wizard/strategic-phase.d.ts +54 -0
  84. package/dist/wizard/strategic-phase.d.ts.map +1 -0
  85. package/dist/wizard/strategic-phase.js +570 -0
  86. package/dist/wizard/strategic-phase.js.map +1 -0
  87. package/dist/wizard/wizard-animations.d.ts +42 -0
  88. package/dist/wizard/wizard-animations.d.ts.map +1 -0
  89. package/dist/wizard/wizard-animations.js +662 -0
  90. package/dist/wizard/wizard-animations.js.map +1 -0
  91. package/package.json +10 -8
@@ -0,0 +1,2 @@
1
+ export * from './license.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './license.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
@@ -0,0 +1,41 @@
1
+ export interface LicenseInfo {
2
+ isValid: boolean;
3
+ tier: 'beta' | 'standard' | 'pro' | null;
4
+ expiresAt: Date | null;
5
+ message: string;
6
+ }
7
+ /**
8
+ * Validate a license key
9
+ * In production, this would call your license server
10
+ */
11
+ export declare function validateLicense(key: string): Promise<LicenseInfo>;
12
+ /**
13
+ * Activate a license key
14
+ */
15
+ export declare function activateLicense(key: string): Promise<LicenseInfo>;
16
+ /**
17
+ * Check if there's a valid active license
18
+ */
19
+ export declare function checkLicense(): LicenseInfo;
20
+ /**
21
+ * Deactivate the current license
22
+ */
23
+ export declare function deactivateLicense(): void;
24
+ /**
25
+ * Get stored license info (for display)
26
+ */
27
+ export declare function getLicenseInfo(): {
28
+ key: string | null;
29
+ tier: string | null;
30
+ activatedAt: string | null;
31
+ expiresAt: string | null;
32
+ };
33
+ /**
34
+ * Require valid license - throws if not valid
35
+ */
36
+ export declare function requireLicense(): void;
37
+ /**
38
+ * Display license status
39
+ */
40
+ export declare function displayLicenseStatus(): void;
41
+ //# sourceMappingURL=license.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../src/auth/license.ts"],"names":[],"mappings":"AA8CA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC;IACzC,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAyCvE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAavE;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,WAAW,CAoD1C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI;IAChC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAOA;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAgBrC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAqB3C"}
@@ -0,0 +1,202 @@
1
+ // ============================================
2
+ // LegionAI License Validation
3
+ // Protects IP by requiring valid license
4
+ // ============================================
5
+ import Conf from 'conf';
6
+ import chalk from 'chalk';
7
+ import crypto from 'crypto';
8
+ import os from 'os';
9
+ // License store (separate from project config)
10
+ const licenseStore = new Conf({
11
+ projectName: 'legionai-license',
12
+ encryptionKey: 'legion-ai-2024-secure-key', // In production, use env var
13
+ defaults: {
14
+ licenseKey: null,
15
+ activatedAt: null,
16
+ expiresAt: null,
17
+ tier: null,
18
+ machineId: null,
19
+ },
20
+ });
21
+ // Generate machine-specific ID for license binding
22
+ function getMachineId() {
23
+ const data = `${os.hostname()}-${os.platform()}-${os.arch()}-${os.cpus()[0]?.model || 'unknown'}`;
24
+ return crypto.createHash('sha256').update(data).digest('hex').substring(0, 16);
25
+ }
26
+ // Beta license keys (in production, these would be validated server-side)
27
+ // Format: LEGION-BETA-XXXX-XXXX-XXXX
28
+ const BETA_KEYS = new Set([
29
+ 'LEGION-BETA-2024-ALPHA-0001',
30
+ 'LEGION-BETA-2024-ALPHA-0002',
31
+ 'LEGION-BETA-2024-ALPHA-0003',
32
+ 'LEGION-BETA-2024-EARLY-0001',
33
+ 'LEGION-BETA-2024-EARLY-0002',
34
+ // Add more beta keys as needed
35
+ ]);
36
+ /**
37
+ * Validate a license key
38
+ * In production, this would call your license server
39
+ */
40
+ export async function validateLicense(key) {
41
+ // Normalize key
42
+ const normalizedKey = key.trim().toUpperCase();
43
+ // Check format
44
+ if (!normalizedKey.startsWith('LEGION-')) {
45
+ return {
46
+ isValid: false,
47
+ tier: null,
48
+ expiresAt: null,
49
+ message: 'Invalid license key format',
50
+ };
51
+ }
52
+ // Beta key validation (local for now)
53
+ if (BETA_KEYS.has(normalizedKey)) {
54
+ const expiresAt = new Date();
55
+ expiresAt.setMonth(expiresAt.getMonth() + 3); // Beta expires in 3 months
56
+ return {
57
+ isValid: true,
58
+ tier: 'beta',
59
+ expiresAt,
60
+ message: 'Beta license activated',
61
+ };
62
+ }
63
+ // TODO: In production, call license server
64
+ // const response = await fetch('https://api.legionai.dev/validate', {
65
+ // method: 'POST',
66
+ // headers: { 'Content-Type': 'application/json' },
67
+ // body: JSON.stringify({ key: normalizedKey, machineId: getMachineId() }),
68
+ // });
69
+ // return await response.json();
70
+ return {
71
+ isValid: false,
72
+ tier: null,
73
+ expiresAt: null,
74
+ message: 'Invalid or expired license key',
75
+ };
76
+ }
77
+ /**
78
+ * Activate a license key
79
+ */
80
+ export async function activateLicense(key) {
81
+ const validation = await validateLicense(key);
82
+ if (validation.isValid) {
83
+ // Store the license
84
+ licenseStore.set('licenseKey', key.trim().toUpperCase());
85
+ licenseStore.set('activatedAt', new Date().toISOString());
86
+ licenseStore.set('expiresAt', validation.expiresAt?.toISOString() || null);
87
+ licenseStore.set('tier', validation.tier);
88
+ licenseStore.set('machineId', getMachineId());
89
+ }
90
+ return validation;
91
+ }
92
+ /**
93
+ * Check if there's a valid active license
94
+ */
95
+ export function checkLicense() {
96
+ const licenseKey = licenseStore.get('licenseKey');
97
+ const expiresAt = licenseStore.get('expiresAt');
98
+ const tier = licenseStore.get('tier');
99
+ const storedMachineId = licenseStore.get('machineId');
100
+ // No license stored
101
+ if (!licenseKey) {
102
+ return {
103
+ isValid: false,
104
+ tier: null,
105
+ expiresAt: null,
106
+ message: 'No license activated',
107
+ };
108
+ }
109
+ // Check machine binding
110
+ if (storedMachineId && storedMachineId !== getMachineId()) {
111
+ return {
112
+ isValid: false,
113
+ tier: null,
114
+ expiresAt: null,
115
+ message: 'License is bound to a different machine',
116
+ };
117
+ }
118
+ // Check expiration
119
+ if (expiresAt) {
120
+ const expDate = new Date(expiresAt);
121
+ if (expDate < new Date()) {
122
+ return {
123
+ isValid: false,
124
+ tier: null,
125
+ expiresAt: expDate,
126
+ message: 'License has expired',
127
+ };
128
+ }
129
+ return {
130
+ isValid: true,
131
+ tier,
132
+ expiresAt: expDate,
133
+ message: `${tier} license active`,
134
+ };
135
+ }
136
+ return {
137
+ isValid: true,
138
+ tier,
139
+ expiresAt: null,
140
+ message: `${tier} license active (no expiration)`,
141
+ };
142
+ }
143
+ /**
144
+ * Deactivate the current license
145
+ */
146
+ export function deactivateLicense() {
147
+ licenseStore.clear();
148
+ }
149
+ /**
150
+ * Get stored license info (for display)
151
+ */
152
+ export function getLicenseInfo() {
153
+ return {
154
+ key: licenseStore.get('licenseKey'),
155
+ tier: licenseStore.get('tier'),
156
+ activatedAt: licenseStore.get('activatedAt'),
157
+ expiresAt: licenseStore.get('expiresAt'),
158
+ };
159
+ }
160
+ /**
161
+ * Require valid license - throws if not valid
162
+ */
163
+ export function requireLicense() {
164
+ const license = checkLicense();
165
+ if (!license.isValid) {
166
+ console.log('');
167
+ console.log(chalk.red('⚔️ License Required'));
168
+ console.log('');
169
+ console.log(chalk.dim('LegionAI requires a valid license to operate.'));
170
+ console.log('');
171
+ console.log(chalk.white('To activate your license:'));
172
+ console.log(chalk.hex('#FF6B00')(' legionai activate <LICENSE-KEY>'));
173
+ console.log('');
174
+ console.log(chalk.dim('Get a license at: https://legionai.dev/pricing'));
175
+ console.log('');
176
+ process.exit(1);
177
+ }
178
+ }
179
+ /**
180
+ * Display license status
181
+ */
182
+ export function displayLicenseStatus() {
183
+ const license = checkLicense();
184
+ const info = getLicenseInfo();
185
+ console.log('');
186
+ if (license.isValid) {
187
+ console.log(chalk.green(`✓ License: ${license.tier?.toUpperCase()} (Active)`));
188
+ if (license.expiresAt) {
189
+ const daysLeft = Math.ceil((license.expiresAt.getTime() - Date.now()) / (1000 * 60 * 60 * 24));
190
+ console.log(chalk.dim(` Expires: ${license.expiresAt.toLocaleDateString()} (${daysLeft} days)`));
191
+ }
192
+ if (info.key) {
193
+ console.log(chalk.dim(` Key: ${info.key.substring(0, 15)}...`));
194
+ }
195
+ }
196
+ else {
197
+ console.log(chalk.red(`✗ License: ${license.message}`));
198
+ console.log(chalk.dim(' Run: legionai activate <LICENSE-KEY>'));
199
+ }
200
+ console.log('');
201
+ }
202
+ //# sourceMappingURL=license.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/auth/license.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const activateCommand: Command;
3
+ //# sourceMappingURL=activate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activate.d.ts","sourceRoot":"","sources":["../../src/commands/activate.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,eAAO,MAAM,eAAe,SAoIxB,CAAC"}
@@ -0,0 +1,129 @@
1
+ // ============================================
2
+ // LegionAI Activate Command
3
+ // License activation for beta/paid users
4
+ // ============================================
5
+ import { Command } from 'commander';
6
+ import chalk from 'chalk';
7
+ import boxen from 'boxen';
8
+ import ora from 'ora';
9
+ import inquirer from 'inquirer';
10
+ import { activateLicense, checkLicense, displayLicenseStatus, deactivateLicense, } from '../auth/license.js';
11
+ export const activateCommand = new Command('activate')
12
+ .description('Activate your LegionAI license')
13
+ .argument('[license-key]', 'Your license key')
14
+ .option('--status', 'Check current license status')
15
+ .option('--deactivate', 'Deactivate current license')
16
+ .action(async (licenseKey, options) => {
17
+ console.log('');
18
+ console.log(boxen(chalk.bold.hex('#FF6B00')(' ⚔️ LegionAI License Activation ⚔️ '), {
19
+ padding: 1,
20
+ borderStyle: 'round',
21
+ borderColor: '#FF6B00',
22
+ }));
23
+ // Status check
24
+ if (options?.status) {
25
+ displayLicenseStatus();
26
+ return;
27
+ }
28
+ // Deactivate
29
+ if (options?.deactivate) {
30
+ const currentLicense = checkLicense();
31
+ if (!currentLicense.isValid) {
32
+ console.log(chalk.yellow('\n⚠️ No active license to deactivate.\n'));
33
+ return;
34
+ }
35
+ const { confirm } = await inquirer.prompt([
36
+ {
37
+ type: 'confirm',
38
+ name: 'confirm',
39
+ message: 'Are you sure you want to deactivate your license?',
40
+ default: false,
41
+ },
42
+ ]);
43
+ if (confirm) {
44
+ deactivateLicense();
45
+ console.log(chalk.green('\n✓ License deactivated successfully.\n'));
46
+ }
47
+ else {
48
+ console.log(chalk.dim('\nDeactivation cancelled.\n'));
49
+ }
50
+ return;
51
+ }
52
+ // Check if already activated
53
+ const currentLicense = checkLicense();
54
+ if (currentLicense.isValid) {
55
+ console.log('');
56
+ console.log(chalk.green(`✓ You already have an active ${currentLicense.tier} license.`));
57
+ displayLicenseStatus();
58
+ const { reactivate } = await inquirer.prompt([
59
+ {
60
+ type: 'confirm',
61
+ name: 'reactivate',
62
+ message: 'Do you want to activate a different license?',
63
+ default: false,
64
+ },
65
+ ]);
66
+ if (!reactivate) {
67
+ return;
68
+ }
69
+ }
70
+ // Get license key
71
+ let key = licenseKey;
72
+ if (!key) {
73
+ const response = await inquirer.prompt([
74
+ {
75
+ type: 'input',
76
+ name: 'licenseKey',
77
+ message: 'Enter your license key:',
78
+ validate: (input) => {
79
+ if (!input || input.trim().length === 0) {
80
+ return 'License key is required';
81
+ }
82
+ if (!input.trim().toUpperCase().startsWith('LEGION-')) {
83
+ return 'Invalid license key format (should start with LEGION-)';
84
+ }
85
+ return true;
86
+ },
87
+ },
88
+ ]);
89
+ key = response.licenseKey;
90
+ }
91
+ // Activate
92
+ const spinner = ora('Validating license...').start();
93
+ try {
94
+ const result = await activateLicense(key);
95
+ if (result.isValid) {
96
+ spinner.succeed('License activated!');
97
+ console.log('');
98
+ console.log(boxen(chalk.green.bold('✓ Welcome to the Legion, Commander!\n\n') +
99
+ chalk.white(`Tier: ${result.tier?.toUpperCase()}\n`) +
100
+ (result.expiresAt
101
+ ? chalk.dim(`Expires: ${result.expiresAt.toLocaleDateString()}`)
102
+ : chalk.dim('No expiration')), {
103
+ padding: 1,
104
+ borderStyle: 'round',
105
+ borderColor: 'green',
106
+ }));
107
+ console.log('');
108
+ console.log(chalk.hex('#FF6B00')('Next steps:'));
109
+ console.log(chalk.dim(' legionai init <project-name> # Create a new Legion project'));
110
+ console.log(chalk.dim(' legionai recruit # Recruit your agents'));
111
+ console.log(chalk.dim(' legionai deploy # Deploy your Legion'));
112
+ console.log('');
113
+ }
114
+ else {
115
+ spinner.fail('License validation failed');
116
+ console.log('');
117
+ console.log(chalk.red(`✗ ${result.message}`));
118
+ console.log('');
119
+ console.log(chalk.dim('Need a license? Visit: https://legionai.dev/pricing'));
120
+ console.log('');
121
+ }
122
+ }
123
+ catch (error) {
124
+ spinner.fail('Activation failed');
125
+ console.error(chalk.red('Error:'), error);
126
+ process.exit(1);
127
+ }
128
+ });
129
+ //# sourceMappingURL=activate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activate.js","sourceRoot":"","sources":["../../src/commands/activate.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,4BAA4B;AAC5B,yCAAyC;AACzC,+CAA+C;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EACL,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,GAElB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;KACnD,WAAW,CAAC,gCAAgC,CAAC;KAC7C,QAAQ,CAAC,eAAe,EAAE,kBAAkB,CAAC;KAC7C,MAAM,CAAC,UAAU,EAAE,8BAA8B,CAAC;KAClD,MAAM,CAAC,cAAc,EAAE,4BAA4B,CAAC;KACpD,MAAM,CAAC,KAAK,EAAE,UAAmB,EAAE,OAAoD,EAAE,EAAE;IAC1F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,uCAAuC,CAAC,EAAE;QACxE,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,OAAO;QACpB,WAAW,EAAE,SAAS;KACvB,CAAC,CACH,CAAC;IAEF,eAAe;IACf,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,oBAAoB,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IAED,aAAa;IACb,IAAI,OAAO,EAAE,UAAU,EAAE,CAAC;QACxB,MAAM,cAAc,GAAG,YAAY,EAAE,CAAC;QACtC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC,CAAC;YACtE,OAAO;QACT,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACxC;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,mDAAmD;gBAC5D,OAAO,EAAE,KAAK;aACf;SACF,CAAC,CAAC;QAEH,IAAI,OAAO,EAAE,CAAC;YACZ,iBAAiB,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,OAAO;IACT,CAAC;IAED,6BAA6B;IAC7B,MAAM,cAAc,GAAG,YAAY,EAAE,CAAC;IACtC,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gCAAgC,cAAc,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC;QACzF,oBAAoB,EAAE,CAAC;QAEvB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YAC3C;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,8CAA8C;gBACvD,OAAO,EAAE,KAAK;aACf;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,IAAI,GAAG,GAAG,UAAU,CAAC;IACrB,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACrC;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,yBAAyB;gBAClC,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;oBAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACxC,OAAO,yBAAyB,CAAC;oBACnC,CAAC;oBACD,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;wBACtD,OAAO,wDAAwD,CAAC;oBAClE,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF;SACF,CAAC,CAAC;QACH,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC;IAC5B,CAAC;IAED,WAAW;IACX,MAAM,OAAO,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC,KAAK,EAAE,CAAC;IAErD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,GAAI,CAAC,CAAC;QAE3C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CACT,KAAK,CACH,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC;gBACzD,KAAK,CAAC,KAAK,CAAC,SAAS,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC;gBACpD,CAAC,MAAM,CAAC,SAAS;oBACf,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,SAAS,CAAC,kBAAkB,EAAE,EAAE,CAAC;oBAChE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,EACjC;gBACE,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,OAAO;gBACpB,WAAW,EAAE,OAAO;aACrB,CACF,CACF,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC,CAAC;YACxF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC,CAAC;YAChF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC,CAAC;YAC9E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const configCommand: Command;
3
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,eAAO,MAAM,aAAa,SAoLtB,CAAC"}