@ace-sdk/cli 2.0.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 (150) hide show
  1. package/README.md +61 -0
  2. package/dist/cli.d.ts +14 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +427 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/bootstrap.d.ts +19 -0
  7. package/dist/commands/bootstrap.d.ts.map +1 -0
  8. package/dist/commands/bootstrap.js +157 -0
  9. package/dist/commands/bootstrap.js.map +1 -0
  10. package/dist/commands/cache.d.ts +19 -0
  11. package/dist/commands/cache.d.ts.map +1 -0
  12. package/dist/commands/cache.js +101 -0
  13. package/dist/commands/cache.js.map +1 -0
  14. package/dist/commands/clear.d.ts +12 -0
  15. package/dist/commands/clear.d.ts.map +1 -0
  16. package/dist/commands/clear.js +50 -0
  17. package/dist/commands/clear.js.map +1 -0
  18. package/dist/commands/config.d.ts +34 -0
  19. package/dist/commands/config.d.ts.map +1 -0
  20. package/dist/commands/config.js +423 -0
  21. package/dist/commands/config.js.map +1 -0
  22. package/dist/commands/delta.d.ts +14 -0
  23. package/dist/commands/delta.d.ts.map +1 -0
  24. package/dist/commands/delta.js +140 -0
  25. package/dist/commands/delta.js.map +1 -0
  26. package/dist/commands/doctor.d.ts +8 -0
  27. package/dist/commands/doctor.d.ts.map +1 -0
  28. package/dist/commands/doctor.js +187 -0
  29. package/dist/commands/doctor.js.map +1 -0
  30. package/dist/commands/export.d.ts +12 -0
  31. package/dist/commands/export.d.ts.map +1 -0
  32. package/dist/commands/export.js +45 -0
  33. package/dist/commands/export.js.map +1 -0
  34. package/dist/commands/import.d.ts +13 -0
  35. package/dist/commands/import.d.ts.map +1 -0
  36. package/dist/commands/import.js +87 -0
  37. package/dist/commands/import.js.map +1 -0
  38. package/dist/commands/learn.d.ts +17 -0
  39. package/dist/commands/learn.d.ts.map +1 -0
  40. package/dist/commands/learn.js +193 -0
  41. package/dist/commands/learn.js.map +1 -0
  42. package/dist/commands/patterns.d.ts +13 -0
  43. package/dist/commands/patterns.d.ts.map +1 -0
  44. package/dist/commands/patterns.js +76 -0
  45. package/dist/commands/patterns.js.map +1 -0
  46. package/dist/commands/plugin.d.ts +26 -0
  47. package/dist/commands/plugin.d.ts.map +1 -0
  48. package/dist/commands/plugin.js +267 -0
  49. package/dist/commands/plugin.js.map +1 -0
  50. package/dist/commands/projects.d.ts +15 -0
  51. package/dist/commands/projects.d.ts.map +1 -0
  52. package/dist/commands/projects.js +122 -0
  53. package/dist/commands/projects.js.map +1 -0
  54. package/dist/commands/record.d.ts +32 -0
  55. package/dist/commands/record.d.ts.map +1 -0
  56. package/dist/commands/record.js +307 -0
  57. package/dist/commands/record.js.map +1 -0
  58. package/dist/commands/search.d.ts +16 -0
  59. package/dist/commands/search.d.ts.map +1 -0
  60. package/dist/commands/search.js +125 -0
  61. package/dist/commands/search.js.map +1 -0
  62. package/dist/commands/status.d.ts +8 -0
  63. package/dist/commands/status.d.ts.map +1 -0
  64. package/dist/commands/status.js +63 -0
  65. package/dist/commands/status.js.map +1 -0
  66. package/dist/commands/summarize.d.ts +17 -0
  67. package/dist/commands/summarize.d.ts.map +1 -0
  68. package/dist/commands/summarize.js +167 -0
  69. package/dist/commands/summarize.js.map +1 -0
  70. package/dist/commands/top.d.ts +14 -0
  71. package/dist/commands/top.d.ts.map +1 -0
  72. package/dist/commands/top.js +58 -0
  73. package/dist/commands/top.js.map +1 -0
  74. package/dist/commands/tune.d.ts +36 -0
  75. package/dist/commands/tune.d.ts.map +1 -0
  76. package/dist/commands/tune.js +354 -0
  77. package/dist/commands/tune.js.map +1 -0
  78. package/dist/formatters/playbook-formatter.d.ts +19 -0
  79. package/dist/formatters/playbook-formatter.d.ts.map +1 -0
  80. package/dist/formatters/playbook-formatter.js +56 -0
  81. package/dist/formatters/playbook-formatter.js.map +1 -0
  82. package/dist/formatters/search-formatter.d.ts +28 -0
  83. package/dist/formatters/search-formatter.d.ts.map +1 -0
  84. package/dist/formatters/search-formatter.js +48 -0
  85. package/dist/formatters/search-formatter.js.map +1 -0
  86. package/dist/formatters/status-formatter.d.ts +25 -0
  87. package/dist/formatters/status-formatter.d.ts.map +1 -0
  88. package/dist/formatters/status-formatter.js +46 -0
  89. package/dist/formatters/status-formatter.js.map +1 -0
  90. package/dist/services/config-loader.d.ts +8 -0
  91. package/dist/services/config-loader.d.ts.map +1 -0
  92. package/dist/services/config-loader.js +7 -0
  93. package/dist/services/config-loader.js.map +1 -0
  94. package/dist/services/initialization.d.ts +128 -0
  95. package/dist/services/initialization.d.ts.map +1 -0
  96. package/dist/services/initialization.js +874 -0
  97. package/dist/services/initialization.js.map +1 -0
  98. package/dist/services/language-detector.d.ts +63 -0
  99. package/dist/services/language-detector.d.ts.map +1 -0
  100. package/dist/services/language-detector.js +123 -0
  101. package/dist/services/language-detector.js.map +1 -0
  102. package/dist/services/logger.d.ts +97 -0
  103. package/dist/services/logger.d.ts.map +1 -0
  104. package/dist/services/logger.js +229 -0
  105. package/dist/services/logger.js.map +1 -0
  106. package/dist/services/plugin-loader.d.ts +84 -0
  107. package/dist/services/plugin-loader.d.ts.map +1 -0
  108. package/dist/services/plugin-loader.js +282 -0
  109. package/dist/services/plugin-loader.js.map +1 -0
  110. package/dist/services/recorder.d.ts +80 -0
  111. package/dist/services/recorder.d.ts.map +1 -0
  112. package/dist/services/recorder.js +267 -0
  113. package/dist/services/recorder.js.map +1 -0
  114. package/dist/services/server-client.d.ts +32 -0
  115. package/dist/services/server-client.d.ts.map +1 -0
  116. package/dist/services/server-client.js +68 -0
  117. package/dist/services/server-client.js.map +1 -0
  118. package/dist/services/session-storage.d.ts +20 -0
  119. package/dist/services/session-storage.d.ts.map +1 -0
  120. package/dist/services/session-storage.js +29 -0
  121. package/dist/services/session-storage.js.map +1 -0
  122. package/dist/types/config.d.ts +33 -0
  123. package/dist/types/config.d.ts.map +1 -0
  124. package/dist/types/config.js +63 -0
  125. package/dist/types/config.js.map +1 -0
  126. package/dist/types/pattern.d.ts +8 -0
  127. package/dist/types/pattern.d.ts.map +1 -0
  128. package/dist/types/pattern.js +7 -0
  129. package/dist/types/pattern.js.map +1 -0
  130. package/dist/types/plugin.d.ts +87 -0
  131. package/dist/types/plugin.d.ts.map +1 -0
  132. package/dist/types/plugin.js +5 -0
  133. package/dist/types/plugin.js.map +1 -0
  134. package/dist/types/recorder.d.ts +44 -0
  135. package/dist/types/recorder.d.ts.map +1 -0
  136. package/dist/types/recorder.js +5 -0
  137. package/dist/types/recorder.js.map +1 -0
  138. package/dist/utils/code-extractor.d.ts +8 -0
  139. package/dist/utils/code-extractor.d.ts.map +1 -0
  140. package/dist/utils/code-extractor.js +7 -0
  141. package/dist/utils/code-extractor.js.map +1 -0
  142. package/dist/utils/semver.d.ts +13 -0
  143. package/dist/utils/semver.d.ts.map +1 -0
  144. package/dist/utils/semver.js +14 -0
  145. package/dist/utils/semver.js.map +1 -0
  146. package/dist/utils/version-checker.d.ts +27 -0
  147. package/dist/utils/version-checker.d.ts.map +1 -0
  148. package/dist/utils/version-checker.js +141 -0
  149. package/dist/utils/version-checker.js.map +1 -0
  150. package/package.json +64 -0
@@ -0,0 +1,423 @@
1
+ /**
2
+ * Configuration commands
3
+ */
4
+ import { readFileSync, writeFileSync, existsSync } from 'fs';
5
+ import { homedir } from 'os';
6
+ import { join } from 'path';
7
+ import { globalOptions } from '../cli.js';
8
+ import { getConfig } from '../types/config.js';
9
+ import { ACEServerClient } from '../services/server-client.js';
10
+ import chalk from 'chalk';
11
+ import * as readline from 'readline/promises';
12
+ import { stdin, stdout } from 'process';
13
+ /**
14
+ * Discover ACE server by pinging common URLs
15
+ */
16
+ async function discoverServer() {
17
+ const commonUrls = [
18
+ 'http://localhost:9000',
19
+ 'https://ace-api.code-engine.app'
20
+ ];
21
+ console.log(chalk.dim('🔍 Searching for ACE server...'));
22
+ for (const url of commonUrls) {
23
+ try {
24
+ const response = await fetch(`${url}/health`, {
25
+ method: 'GET',
26
+ signal: AbortSignal.timeout(3000)
27
+ });
28
+ if (response.ok) {
29
+ console.log(chalk.green(` ✓ Found server at ${url}`));
30
+ return url;
31
+ }
32
+ }
33
+ catch {
34
+ // Continue to next URL
35
+ }
36
+ }
37
+ console.log(chalk.yellow(' ✗ No server auto-detected'));
38
+ return null;
39
+ }
40
+ /**
41
+ * Validate token and fetch organization info using /api/v1/config/verify
42
+ */
43
+ async function validateToken(serverUrl, apiToken) {
44
+ try {
45
+ const tempConfig = {
46
+ serverUrl,
47
+ apiToken,
48
+ projectId: 'temp',
49
+ cacheTtlMinutes: 120
50
+ };
51
+ const client = new ACEServerClient(tempConfig);
52
+ // Use the proper /api/v1/config/verify endpoint
53
+ const result = await client.verifyToken();
54
+ return {
55
+ valid: true,
56
+ orgId: result.org_id,
57
+ orgName: result.org_name,
58
+ projects: result.projects
59
+ };
60
+ }
61
+ catch (error) {
62
+ return { valid: false };
63
+ }
64
+ }
65
+ /**
66
+ * Non-interactive configuration (using flags)
67
+ */
68
+ async function configNonInteractive(options) {
69
+ try {
70
+ // Validate token first
71
+ const validation = await validateToken(options.serverUrl, options.apiToken);
72
+ if (!validation.valid) {
73
+ if (globalOptions.json) {
74
+ console.log(JSON.stringify({ success: false, error: 'Invalid token' }));
75
+ }
76
+ else {
77
+ console.log(chalk.red('❌ Invalid token'));
78
+ }
79
+ process.exit(1);
80
+ }
81
+ // Create configuration
82
+ const config = {
83
+ serverUrl: options.serverUrl,
84
+ apiToken: options.apiToken,
85
+ projectId: options.projectId,
86
+ cacheTtlMinutes: 120
87
+ };
88
+ const client = new ACEServerClient(config);
89
+ // Save configuration
90
+ await client.saveConfig(options.serverUrl, options.apiToken, options.projectId);
91
+ // Output success
92
+ if (globalOptions.json) {
93
+ console.log(JSON.stringify({
94
+ success: true,
95
+ serverUrl: options.serverUrl,
96
+ projectId: options.projectId,
97
+ orgId: validation.orgId,
98
+ orgName: validation.orgName
99
+ }));
100
+ }
101
+ else {
102
+ console.log(chalk.green('\n✅ Configuration saved successfully!'));
103
+ console.log(chalk.dim(` Server: ${options.serverUrl}`));
104
+ console.log(chalk.dim(` Organization: ${validation.orgName} (${validation.orgId})`));
105
+ console.log(chalk.dim(` Project: ${options.projectId}`));
106
+ console.log(chalk.dim(` Config: ~/.ace/config.json\n`));
107
+ }
108
+ }
109
+ catch (error) {
110
+ if (globalOptions.json) {
111
+ console.error(JSON.stringify({
112
+ success: false,
113
+ error: error instanceof Error ? error.message : String(error)
114
+ }));
115
+ }
116
+ else {
117
+ console.log(chalk.red(`❌ Error: ${error instanceof Error ? error.message : String(error)}`));
118
+ }
119
+ process.exit(1);
120
+ }
121
+ }
122
+ /**
123
+ * Configuration wizard - Interactive or non-interactive
124
+ */
125
+ export async function configCommand(options) {
126
+ // Non-interactive mode: all required flags provided
127
+ if (options?.serverUrl && options?.apiToken && options?.projectId) {
128
+ return await configNonInteractive({
129
+ serverUrl: options.serverUrl,
130
+ apiToken: options.apiToken,
131
+ orgId: options.orgId,
132
+ projectId: options.projectId
133
+ });
134
+ }
135
+ // Interactive mode
136
+ if (globalOptions.json) {
137
+ console.error(JSON.stringify({ error: 'Interactive mode not supported with --json flag. Use --server-url, --api-token, and --project-id for non-interactive configuration.' }));
138
+ process.exit(1);
139
+ }
140
+ console.log(chalk.bold('\n🔧 ACE Configuration Wizard\n'));
141
+ console.log(chalk.dim('Press Enter to keep existing values\n'));
142
+ const rl = readline.createInterface({ input: stdin, output: stdout });
143
+ try {
144
+ // Get existing config if it exists
145
+ let existingConfig = {};
146
+ try {
147
+ const config = getConfig();
148
+ existingConfig = config;
149
+ }
150
+ catch (error) {
151
+ // No existing config
152
+ }
153
+ // Step 1: Server URL (with discovery)
154
+ console.log(chalk.bold('Step 1: Server URL'));
155
+ let discoveredUrl = null;
156
+ if (!existingConfig.serverUrl) {
157
+ discoveredUrl = await discoverServer();
158
+ }
159
+ const defaultUrl = existingConfig.serverUrl || discoveredUrl || 'https://ace-api.code-engine.app';
160
+ const serverUrl = await rl.question(`Server URL ${chalk.dim(`[${defaultUrl}]`)}: `);
161
+ const finalServerUrl = serverUrl.trim() || defaultUrl;
162
+ console.log('');
163
+ // Step 2: API Token (with validation)
164
+ console.log(chalk.bold('Step 2: API Token'));
165
+ let finalApiToken = '';
166
+ let tokenValid = false;
167
+ while (!tokenValid) {
168
+ const apiToken = await rl.question(`API Token ${existingConfig.apiToken ? chalk.dim('[hidden]') : ''}: `);
169
+ finalApiToken = apiToken.trim() || existingConfig.apiToken || '';
170
+ if (!finalApiToken) {
171
+ console.log(chalk.red(' ✗ API token is required'));
172
+ continue;
173
+ }
174
+ // Validate token
175
+ process.stdout.write(chalk.dim(' Validating token...'));
176
+ const validation = await validateToken(finalServerUrl, finalApiToken);
177
+ if (validation.valid) {
178
+ console.log(chalk.green(' ✓ Valid'));
179
+ tokenValid = true;
180
+ // Show organization info
181
+ if (validation.orgName && validation.orgId) {
182
+ console.log(chalk.dim(` Organization: ${validation.orgName} (${validation.orgId})`));
183
+ }
184
+ // Step 3: Project ID (with list if available)
185
+ console.log('');
186
+ console.log(chalk.bold('Step 3: Project ID'));
187
+ if (validation.projects && validation.projects.length > 0) {
188
+ console.log(chalk.dim('Available projects:'));
189
+ validation.projects.forEach((proj, idx) => {
190
+ console.log(chalk.dim(` ${idx + 1}. ${proj.project_name} (${proj.project_id})`));
191
+ });
192
+ console.log('');
193
+ }
194
+ const projectId = await rl.question(`Project ID ${existingConfig.projectId ? chalk.dim(`[${existingConfig.projectId}]`) : ''}: `);
195
+ const finalProjectId = projectId.trim() || existingConfig.projectId;
196
+ if (!finalProjectId) {
197
+ console.log(chalk.red('\n❌ Error: Project ID is required'));
198
+ rl.close();
199
+ process.exit(1);
200
+ }
201
+ rl.close();
202
+ // Step 4: Test connection
203
+ console.log('');
204
+ console.log(chalk.bold('Step 4: Testing connection...'));
205
+ const testConfig = {
206
+ serverUrl: finalServerUrl,
207
+ apiToken: finalApiToken,
208
+ projectId: finalProjectId,
209
+ cacheTtlMinutes: 120
210
+ };
211
+ const testClient = new ACEServerClient(testConfig);
212
+ try {
213
+ await testClient.getAnalytics();
214
+ console.log(chalk.green(' ✓ Connection successful'));
215
+ }
216
+ catch (error) {
217
+ console.log(chalk.yellow(' ⚠ Warning: Could not connect to project'));
218
+ }
219
+ // Step 5: Save configuration
220
+ console.log('');
221
+ console.log(chalk.bold('Step 5: Saving configuration...'));
222
+ await testClient.saveConfig(finalServerUrl, finalApiToken, finalProjectId);
223
+ console.log(chalk.green('\n✅ Configuration saved successfully!'));
224
+ console.log(chalk.dim(` Server: ${finalServerUrl}`));
225
+ console.log(chalk.dim(` Project: ${finalProjectId}`));
226
+ console.log(chalk.dim(` Config: ~/.ace/config.json\n`));
227
+ return;
228
+ }
229
+ else {
230
+ console.log(chalk.red(' ✗ Invalid token'));
231
+ console.log(chalk.yellow(' Please check your API token and try again\n'));
232
+ }
233
+ }
234
+ }
235
+ catch (error) {
236
+ rl.close();
237
+ console.log(chalk.red(`\n❌ Error: ${error instanceof Error ? error.message : String(error)}`));
238
+ process.exit(1);
239
+ }
240
+ }
241
+ /**
242
+ * Display current configuration
243
+ */
244
+ export async function configShowCommand() {
245
+ try {
246
+ const config = getConfig();
247
+ if (globalOptions.json) {
248
+ console.log(JSON.stringify({
249
+ serverUrl: config.serverUrl,
250
+ projectId: config.projectId,
251
+ apiToken: config.apiToken ? '***' : undefined,
252
+ cacheTtlMinutes: config.cacheTtlMinutes,
253
+ orgs: config.orgs ? Object.keys(config.orgs) : undefined
254
+ }, null, 2));
255
+ }
256
+ else {
257
+ console.log(chalk.bold('\n📋 Current Configuration\n'));
258
+ console.log(` ${chalk.cyan('Server URL:')} ${config.serverUrl}`);
259
+ console.log(` ${chalk.cyan('Project ID:')} ${config.projectId}`);
260
+ console.log(` ${chalk.cyan('API Token:')} ${config.apiToken ? chalk.dim('***hidden***') : chalk.red('not set')}`);
261
+ console.log(` ${chalk.cyan('Cache TTL:')} ${config.cacheTtlMinutes} minutes`);
262
+ if (config.orgs && Object.keys(config.orgs).length > 0) {
263
+ console.log(` ${chalk.cyan('Organizations:')} ${Object.keys(config.orgs).join(', ')}`);
264
+ }
265
+ console.log('');
266
+ }
267
+ }
268
+ catch (error) {
269
+ if (globalOptions.json) {
270
+ console.error(JSON.stringify({ error: error instanceof Error ? error.message : String(error) }));
271
+ }
272
+ else {
273
+ console.log(chalk.red(`❌ Error: ${error instanceof Error ? error.message : String(error)}`));
274
+ }
275
+ process.exit(1);
276
+ }
277
+ }
278
+ /**
279
+ * Set a configuration value
280
+ */
281
+ export async function configSetCommand(key, value) {
282
+ try {
283
+ const configPath = join(homedir(), '.ace', 'config.json');
284
+ if (!existsSync(configPath)) {
285
+ throw new Error('Configuration file not found. Run "ce-ace config" first.');
286
+ }
287
+ const configData = JSON.parse(readFileSync(configPath, 'utf8'));
288
+ // Validate key
289
+ const validKeys = ['serverUrl', 'apiToken', 'projectId', 'cacheTtlMinutes'];
290
+ if (!validKeys.includes(key)) {
291
+ throw new Error(`Invalid key "${key}". Valid keys: ${validKeys.join(', ')}`);
292
+ }
293
+ // Set value (with type conversion for numbers)
294
+ if (key === 'cacheTtlMinutes') {
295
+ configData[key] = parseInt(value, 10);
296
+ }
297
+ else {
298
+ configData[key] = value;
299
+ }
300
+ // Save config
301
+ writeFileSync(configPath, JSON.stringify(configData, null, 2));
302
+ if (globalOptions.json) {
303
+ console.log(JSON.stringify({ success: true, key, value: configData[key] }));
304
+ }
305
+ else {
306
+ console.log(chalk.green(`✅ Set ${chalk.cyan(key)} = ${value}`));
307
+ }
308
+ }
309
+ catch (error) {
310
+ if (globalOptions.json) {
311
+ console.error(JSON.stringify({ error: error instanceof Error ? error.message : String(error) }));
312
+ }
313
+ else {
314
+ console.log(chalk.red(`❌ Error: ${error instanceof Error ? error.message : String(error)}`));
315
+ }
316
+ process.exit(1);
317
+ }
318
+ }
319
+ /**
320
+ * Reset configuration to defaults
321
+ */
322
+ export async function configResetCommand(options) {
323
+ try {
324
+ const configPath = join(homedir(), '.ace', 'config.json');
325
+ if (!existsSync(configPath)) {
326
+ if (globalOptions.json) {
327
+ console.log(JSON.stringify({ message: 'No configuration file exists' }));
328
+ }
329
+ else {
330
+ console.log(chalk.yellow('⚠️ No configuration file exists'));
331
+ }
332
+ return;
333
+ }
334
+ // Confirm if --yes not provided
335
+ if (!options.yes && !globalOptions.json) {
336
+ const rl = readline.createInterface({ input: stdin, output: stdout });
337
+ const answer = await rl.question(chalk.yellow('⚠️ Are you sure you want to reset configuration? (y/N): '));
338
+ rl.close();
339
+ if (answer.toLowerCase() !== 'y' && answer.toLowerCase() !== 'yes') {
340
+ console.log(chalk.dim('Cancelled'));
341
+ return;
342
+ }
343
+ }
344
+ // Delete config file
345
+ const fs = await import('fs/promises');
346
+ await fs.unlink(configPath);
347
+ if (globalOptions.json) {
348
+ console.log(JSON.stringify({ success: true, message: 'Configuration reset' }));
349
+ }
350
+ else {
351
+ console.log(chalk.green('✅ Configuration reset successfully'));
352
+ }
353
+ }
354
+ catch (error) {
355
+ if (globalOptions.json) {
356
+ console.error(JSON.stringify({ error: error instanceof Error ? error.message : String(error) }));
357
+ }
358
+ else {
359
+ console.log(chalk.red(`❌ Error: ${error instanceof Error ? error.message : String(error)}`));
360
+ }
361
+ process.exit(1);
362
+ }
363
+ }
364
+ /**
365
+ * Validate token and return organization/project info (non-destructive)
366
+ */
367
+ export async function configValidateCommand(options) {
368
+ try {
369
+ // Get server URL
370
+ const serverUrl = options.serverUrl || process.env.ACE_SERVER_URL;
371
+ if (!serverUrl) {
372
+ throw new Error('Server URL required. Use --server-url or set ACE_SERVER_URL');
373
+ }
374
+ // Get API token
375
+ const apiToken = options.apiToken || process.env.ACE_API_TOKEN;
376
+ if (!apiToken) {
377
+ throw new Error('API token required. Use --api-token or set ACE_API_TOKEN');
378
+ }
379
+ // Validate token using /api/v1/config/verify
380
+ const validation = await validateToken(serverUrl, apiToken);
381
+ if (!validation.valid) {
382
+ if (globalOptions.json) {
383
+ console.log(JSON.stringify({ valid: false, error: 'Invalid token' }));
384
+ }
385
+ else {
386
+ console.log(chalk.red('❌ Invalid token'));
387
+ }
388
+ process.exit(1);
389
+ }
390
+ // Return org/project info
391
+ const result = {
392
+ valid: true,
393
+ org_id: validation.orgId,
394
+ org_name: validation.orgName,
395
+ projects: validation.projects
396
+ };
397
+ if (globalOptions.json) {
398
+ console.log(JSON.stringify(result, null, 2));
399
+ }
400
+ else {
401
+ console.log(chalk.green('\n✅ Token is valid\n'));
402
+ console.log(chalk.bold(`Organization: ${validation.orgName} (${validation.orgId})\n`));
403
+ console.log(chalk.bold('Available Projects:'));
404
+ validation.projects?.forEach((proj, idx) => {
405
+ console.log(` ${idx + 1}. ${proj.project_name} ${chalk.dim(`(${proj.project_id})`)}`);
406
+ });
407
+ console.log('');
408
+ }
409
+ }
410
+ catch (error) {
411
+ if (globalOptions.json) {
412
+ console.error(JSON.stringify({
413
+ valid: false,
414
+ error: error instanceof Error ? error.message : String(error)
415
+ }));
416
+ }
417
+ else {
418
+ console.log(chalk.red(`❌ Error: ${error instanceof Error ? error.message : String(error)}`));
419
+ }
420
+ process.exit(1);
421
+ }
422
+ }
423
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Delta command - apply incremental pattern updates
3
+ */
4
+ interface DeltaOptions {
5
+ bullets?: string;
6
+ file?: string;
7
+ stdin?: boolean;
8
+ }
9
+ /**
10
+ * Apply incremental pattern updates (add|update|remove)
11
+ */
12
+ export declare function deltaCommand(operation: string, options: DeltaOptions): Promise<void>;
13
+ export {};
14
+ //# sourceMappingURL=delta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delta.d.ts","sourceRoot":"","sources":["../../src/commands/delta.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,iBA4H1E"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Delta command - apply incremental pattern updates
3
+ */
4
+ import { readFileSync } from 'fs';
5
+ import { globalOptions } from '../cli.js';
6
+ import { createContext } from '../types/config.js';
7
+ import { ACEServerClient } from '../services/server-client.js';
8
+ import { Logger } from '../services/logger.js';
9
+ import chalk from 'chalk';
10
+ /**
11
+ * Apply incremental pattern updates (add|update|remove)
12
+ */
13
+ export async function deltaCommand(operation, options) {
14
+ const logger = new Logger(globalOptions);
15
+ // Validate operation
16
+ const validOperations = ['add', 'update', 'remove'];
17
+ if (!validOperations.includes(operation.toLowerCase())) {
18
+ if (logger.isJson()) {
19
+ logger.output({
20
+ error: `Invalid operation "${operation}". Must be one of: ${validOperations.join(', ')}`
21
+ });
22
+ }
23
+ else {
24
+ logger.error(`Invalid operation "${operation}"`);
25
+ logger.info(chalk.dim(` Valid operations: ${validOperations.join(', ')}`));
26
+ }
27
+ process.exit(1);
28
+ }
29
+ let bullets = [];
30
+ // Read bullets from stdin if specified
31
+ if (options.stdin) {
32
+ try {
33
+ const stdinData = readFileSync(0, 'utf8'); // fd 0 is stdin
34
+ const data = JSON.parse(stdinData.trim());
35
+ bullets = Array.isArray(data) ? data : [data];
36
+ }
37
+ catch (error) {
38
+ if (logger.isJson()) {
39
+ logger.output({ error: 'Failed to read from stdin' });
40
+ }
41
+ else {
42
+ logger.error(`Failed to read from stdin: ${error instanceof Error ? error.message : String(error)}`);
43
+ }
44
+ process.exit(1);
45
+ }
46
+ }
47
+ // Read bullets from file if specified
48
+ else if (options.file) {
49
+ try {
50
+ const content = readFileSync(options.file, 'utf8');
51
+ const data = JSON.parse(content);
52
+ bullets = Array.isArray(data) ? data : [data];
53
+ }
54
+ catch (error) {
55
+ if (logger.isJson()) {
56
+ logger.output({ error: 'Failed to read bullets file' });
57
+ }
58
+ else {
59
+ logger.error(`Failed to read bullets file: ${error instanceof Error ? error.message : String(error)}`);
60
+ }
61
+ process.exit(1);
62
+ }
63
+ }
64
+ // Parse bullets from JSON string
65
+ else if (options.bullets) {
66
+ try {
67
+ const data = JSON.parse(options.bullets);
68
+ bullets = Array.isArray(data) ? data : [data];
69
+ }
70
+ catch (error) {
71
+ if (logger.isJson()) {
72
+ logger.output({ error: 'Failed to parse bullets JSON' });
73
+ }
74
+ else {
75
+ logger.error(`Failed to parse bullets JSON: ${error instanceof Error ? error.message : String(error)}`);
76
+ }
77
+ process.exit(1);
78
+ }
79
+ }
80
+ else {
81
+ if (logger.isJson()) {
82
+ logger.output({ error: 'Must provide either --bullets, --file, or --stdin' });
83
+ }
84
+ else {
85
+ logger.error('Must provide either --bullets, --file, or --stdin');
86
+ }
87
+ process.exit(1);
88
+ }
89
+ if (bullets.length === 0) {
90
+ if (logger.isJson()) {
91
+ logger.output({ error: 'No bullets provided' });
92
+ }
93
+ else {
94
+ logger.error('No bullets provided');
95
+ }
96
+ process.exit(1);
97
+ }
98
+ const spinner = logger.spinner(`Applying delta operation: ${operation}...`);
99
+ try {
100
+ const context = await createContext({ org: globalOptions.org, project: globalOptions.project });
101
+ const client = new ACEServerClient(context, logger);
102
+ // Apply delta operation for each bullet
103
+ for (const bullet of bullets) {
104
+ await client.applyDelta({
105
+ type: operation.toUpperCase(),
106
+ section: bullet.section,
107
+ content: bullet.content,
108
+ bullet_id: bullet.id,
109
+ helpful_delta: bullet.helpful,
110
+ harmful_delta: bullet.harmful,
111
+ evidence: bullet.evidence
112
+ });
113
+ }
114
+ // Invalidate cache
115
+ client.invalidateCache();
116
+ spinner?.succeed(`Delta operation ${operation} completed`);
117
+ if (logger.isJson()) {
118
+ logger.output({
119
+ success: true,
120
+ operation,
121
+ bulletsProcessed: bullets.length,
122
+ message: `Applied ${operation} operation to ${bullets.length} bullet(s)`
123
+ });
124
+ }
125
+ else {
126
+ logger.info(chalk.green(`\n✅ Applied ${operation} operation to ${bullets.length} bullet(s)\n`));
127
+ }
128
+ }
129
+ catch (error) {
130
+ spinner?.fail('Delta operation failed');
131
+ if (logger.isJson()) {
132
+ logger.output({ error: error instanceof Error ? error.message : String(error) });
133
+ }
134
+ else {
135
+ logger.error(`Error: ${error instanceof Error ? error.message : String(error)}`);
136
+ }
137
+ process.exit(1);
138
+ }
139
+ }
140
+ //# sourceMappingURL=delta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delta.js","sourceRoot":"","sources":["../../src/commands/delta.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Health diagnostics command
3
+ */
4
+ /**
5
+ * Run diagnostics on ACE configuration and connectivity
6
+ */
7
+ export declare function doctorCommand(): Promise<void>;
8
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAkBH;;GAEG;AACH,wBAAsB,aAAa,kBAgLlC"}