@wundr.io/cli 1.0.0 ā 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +696 -280
- package/dist/ai/ai-service.d.ts +2 -2
- package/dist/ai/ai-service.d.ts.map +1 -1
- package/dist/ai/ai-service.js +1 -1
- package/dist/ai/ai-service.js.map +1 -1
- package/dist/ai/claude-client.d.ts.map +1 -1
- package/dist/ai/claude-client.js +2 -1
- package/dist/ai/claude-client.js.map +1 -1
- package/dist/ai/conversation-manager.d.ts +2 -2
- package/dist/ai/conversation-manager.d.ts.map +1 -1
- package/dist/ai/conversation-manager.js +5 -3
- package/dist/ai/conversation-manager.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +32 -13
- package/dist/cli.js.map +1 -1
- package/dist/commands/ai.d.ts +3 -3
- package/dist/commands/ai.d.ts.map +1 -1
- package/dist/commands/ai.js +2 -2
- package/dist/commands/ai.js.map +1 -1
- package/dist/commands/alignment.d.ts +78 -0
- package/dist/commands/alignment.d.ts.map +1 -0
- package/dist/commands/alignment.js +817 -0
- package/dist/commands/alignment.js.map +1 -0
- package/dist/commands/analyze-optimized.d.ts.map +1 -1
- package/dist/commands/analyze-optimized.js +9 -6
- package/dist/commands/analyze-optimized.js.map +1 -1
- package/dist/commands/analyze.d.ts +3 -3
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +2 -2
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/batch.d.ts +3 -3
- package/dist/commands/batch.d.ts.map +1 -1
- package/dist/commands/batch.js +7 -7
- package/dist/commands/batch.js.map +1 -1
- package/dist/commands/chat.d.ts +3 -3
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +3 -3
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/claude-init.d.ts +1 -1
- package/dist/commands/claude-init.d.ts.map +1 -1
- package/dist/commands/claude-init.js +11 -7
- package/dist/commands/claude-init.js.map +1 -1
- package/dist/commands/claude-setup.d.ts +88 -1
- package/dist/commands/claude-setup.d.ts.map +1 -1
- package/dist/commands/claude-setup.js +549 -46
- package/dist/commands/claude-setup.js.map +1 -1
- package/dist/commands/computer-setup-commands.d.ts +17 -3
- package/dist/commands/computer-setup-commands.d.ts.map +1 -1
- package/dist/commands/computer-setup-commands.js +145 -3
- package/dist/commands/computer-setup-commands.js.map +1 -1
- package/dist/commands/computer-setup.d.ts.map +1 -1
- package/dist/commands/computer-setup.js +372 -4
- package/dist/commands/computer-setup.js.map +1 -1
- package/dist/commands/create-command.d.ts.map +1 -1
- package/dist/commands/create-command.js +3 -3
- package/dist/commands/create-command.js.map +1 -1
- package/dist/commands/create.d.ts +3 -3
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +3 -3
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/dashboard.d.ts +3 -3
- package/dist/commands/dashboard.d.ts.map +1 -1
- package/dist/commands/dashboard.js +4 -3
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/govern.d.ts +3 -3
- package/dist/commands/govern.d.ts.map +1 -1
- package/dist/commands/govern.js +4 -3
- package/dist/commands/govern.js.map +1 -1
- package/dist/commands/governance.d.ts +17 -0
- package/dist/commands/governance.d.ts.map +1 -0
- package/dist/commands/governance.js +703 -0
- package/dist/commands/governance.js.map +1 -0
- package/dist/commands/guardian.d.ts +20 -0
- package/dist/commands/guardian.d.ts.map +1 -0
- package/dist/commands/guardian.js +597 -0
- package/dist/commands/guardian.js.map +1 -0
- package/dist/commands/init.d.ts +7 -3
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +71 -5
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/performance-optimizer.d.ts +2 -2
- package/dist/commands/performance-optimizer.d.ts.map +1 -1
- package/dist/commands/performance-optimizer.js +8 -7
- package/dist/commands/performance-optimizer.js.map +1 -1
- package/dist/commands/plugins.d.ts +3 -3
- package/dist/commands/plugins.d.ts.map +1 -1
- package/dist/commands/plugins.js +2 -2
- package/dist/commands/plugins.js.map +1 -1
- package/dist/commands/rag.d.ts +7 -0
- package/dist/commands/rag.d.ts.map +1 -0
- package/dist/commands/rag.js +748 -0
- package/dist/commands/rag.js.map +1 -0
- package/dist/commands/session.d.ts +41 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +441 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/setup.d.ts +3 -3
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +1 -3
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/test-init.d.ts.map +1 -1
- package/dist/commands/test-init.js +2 -2
- package/dist/commands/test-init.js.map +1 -1
- package/dist/commands/test.d.ts.map +1 -1
- package/dist/commands/test.js +2 -2
- package/dist/commands/test.js.map +1 -1
- package/dist/commands/vp.d.ts +7 -0
- package/dist/commands/vp.d.ts.map +1 -0
- package/dist/commands/vp.js +571 -0
- package/dist/commands/vp.js.map +1 -0
- package/dist/commands/watch.d.ts +3 -3
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +10 -7
- package/dist/commands/watch.js.map +1 -1
- package/dist/commands/worktree.d.ts +63 -0
- package/dist/commands/worktree.d.ts.map +1 -0
- package/dist/commands/worktree.js +774 -0
- package/dist/commands/worktree.js.map +1 -0
- package/dist/context/context-manager.d.ts +1 -1
- package/dist/context/context-manager.d.ts.map +1 -1
- package/dist/context/context-manager.js +1 -1
- package/dist/context/context-manager.js.map +1 -1
- package/dist/context/session-manager.d.ts +2 -2
- package/dist/context/session-manager.d.ts.map +1 -1
- package/dist/context/session-manager.js +9 -5
- package/dist/context/session-manager.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/interactive/interactive-mode.d.ts +2 -2
- package/dist/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/interactive/interactive-mode.js +6 -4
- package/dist/interactive/interactive-mode.js.map +1 -1
- package/dist/nlp/command-mapper.d.ts +1 -1
- package/dist/nlp/command-mapper.d.ts.map +1 -1
- package/dist/nlp/command-mapper.js +3 -2
- package/dist/nlp/command-mapper.js.map +1 -1
- package/dist/nlp/command-parser.d.ts +1 -1
- package/dist/nlp/command-parser.d.ts.map +1 -1
- package/dist/nlp/command-parser.js +2 -1
- package/dist/nlp/command-parser.js.map +1 -1
- package/dist/nlp/intent-parser.d.ts +1 -1
- package/dist/nlp/intent-parser.d.ts.map +1 -1
- package/dist/nlp/intent-parser.js +14 -9
- package/dist/nlp/intent-parser.js.map +1 -1
- package/dist/plugins/plugin-manager.d.ts +2 -2
- package/dist/plugins/plugin-manager.d.ts.map +1 -1
- package/dist/plugins/plugin-manager.js +3 -3
- package/dist/plugins/plugin-manager.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/backup-rollback-manager.d.ts +72 -0
- package/dist/utils/backup-rollback-manager.d.ts.map +1 -0
- package/dist/utils/backup-rollback-manager.js +289 -0
- package/dist/utils/backup-rollback-manager.js.map +1 -0
- package/dist/utils/claude-config-installer.d.ts +94 -0
- package/dist/utils/claude-config-installer.d.ts.map +1 -0
- package/dist/utils/claude-config-installer.js +628 -0
- package/dist/utils/claude-config-installer.js.map +1 -0
- package/dist/utils/config-manager.d.ts +1 -1
- package/dist/utils/config-manager.d.ts.map +1 -1
- package/dist/utils/config-manager.js +5 -5
- package/dist/utils/config-manager.js.map +1 -1
- package/dist/utils/error-handler.d.ts +1 -1
- package/dist/utils/error-handler.d.ts.map +1 -1
- package/dist/utils/error-handler.js.map +1 -1
- package/dist/utils/logger.d.ts +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +22 -11
- package/dist/utils/logger.js.map +1 -1
- package/package.json +26 -7
- package/src/ai/ai-service.ts +22 -19
- package/src/ai/claude-client.ts +20 -16
- package/src/ai/conversation-manager.ts +37 -30
- package/src/cli.ts +42 -13
- package/src/commands/ai.ts +59 -57
- package/src/commands/alignment.ts +1212 -0
- package/src/commands/analyze-optimized.ts +70 -62
- package/src/commands/analyze.ts +22 -20
- package/src/commands/batch.ts +41 -38
- package/src/commands/chat.ts +37 -34
- package/src/commands/claude-init.ts +38 -30
- package/src/commands/claude-setup.ts +692 -97
- package/src/commands/computer-setup-commands.ts +203 -37
- package/src/commands/computer-setup.ts +474 -4
- package/src/commands/create-command.ts +7 -7
- package/src/commands/create.ts +36 -33
- package/src/commands/dashboard.ts +33 -28
- package/src/commands/govern.ts +34 -29
- package/src/commands/governance.ts +1005 -0
- package/src/commands/guardian.ts +887 -0
- package/src/commands/init.ts +112 -22
- package/src/commands/performance-optimizer.ts +48 -42
- package/src/commands/plugins.ts +35 -32
- package/src/commands/project-update.ts +1053 -0
- package/src/commands/rag.ts +904 -0
- package/src/commands/session.ts +631 -0
- package/src/commands/setup.ts +35 -31
- package/src/commands/test-init.ts +6 -5
- package/src/commands/test.ts +7 -6
- package/src/commands/vp.ts +762 -0
- package/src/commands/watch.ts +44 -33
- package/src/commands/worktree.ts +1057 -0
- package/src/context/context-manager.ts +15 -12
- package/src/context/session-manager.ts +51 -40
- package/src/index.ts +7 -6
- package/src/interactive/interactive-mode.ts +25 -18
- package/src/lib/conflict-resolution.ts +28 -0
- package/src/lib/merge-strategy.ts +28 -0
- package/src/lib/safety-mechanisms.ts +47 -0
- package/src/lib/state-detection.ts +28 -0
- package/src/nlp/command-mapper.ts +35 -30
- package/src/nlp/command-parser.ts +20 -17
- package/src/nlp/intent-classifier.ts +7 -7
- package/src/nlp/intent-parser.ts +61 -49
- package/src/plugins/plugin-manager.ts +27 -23
- package/src/tests/computer-setup-integration.test.ts +439 -0
- package/src/types/index.ts +1 -1
- package/src/types/modules.d.ts +1 -0
- package/src/utils/backup-rollback-manager.ts +363 -0
- package/src/utils/claude-config-installer.ts +734 -0
- package/src/utils/config-manager.ts +12 -9
- package/src/utils/error-handler.ts +5 -3
- package/src/utils/logger.ts +35 -12
package/src/commands/ai.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import inquirer from 'inquirer';
|
|
3
1
|
import chalk from 'chalk';
|
|
4
|
-
import
|
|
5
|
-
|
|
2
|
+
import inquirer from 'inquirer';
|
|
3
|
+
|
|
6
4
|
import { AIService } from '../ai/ai-service';
|
|
7
|
-
import { logger } from '../utils/logger';
|
|
8
5
|
import { errorHandler } from '../utils/error-handler';
|
|
9
|
-
import {
|
|
6
|
+
import { logger } from '../utils/logger';
|
|
7
|
+
|
|
8
|
+
import type { PluginManager } from '../plugins/plugin-manager';
|
|
9
|
+
import type { ChatSession } from '../types';
|
|
10
|
+
import type { ConfigManager } from '../utils/config-manager';
|
|
11
|
+
import type { Command } from 'commander';
|
|
10
12
|
|
|
11
13
|
/**
|
|
12
14
|
* AI commands for AI-powered development features
|
|
@@ -17,7 +19,7 @@ export class AICommands {
|
|
|
17
19
|
constructor(
|
|
18
20
|
private program: Command,
|
|
19
21
|
private configManager: ConfigManager,
|
|
20
|
-
private _pluginManager: PluginManager
|
|
22
|
+
private _pluginManager: PluginManager,
|
|
21
23
|
) {
|
|
22
24
|
this.aiService = new AIService(configManager);
|
|
23
25
|
this.registerCommands();
|
|
@@ -48,7 +50,7 @@ export class AICommands {
|
|
|
48
50
|
.option(
|
|
49
51
|
'--focus <aspect>',
|
|
50
52
|
'review focus (security, performance, style)',
|
|
51
|
-
'all'
|
|
53
|
+
'all',
|
|
52
54
|
)
|
|
53
55
|
.option('--severity <level>', 'minimum issue severity', 'info')
|
|
54
56
|
.option('--suggest-fixes', 'suggest fixes for issues')
|
|
@@ -63,12 +65,12 @@ export class AICommands {
|
|
|
63
65
|
.option(
|
|
64
66
|
'--type <type>',
|
|
65
67
|
'refactoring type (extract, rename, optimize)',
|
|
66
|
-
'optimize'
|
|
68
|
+
'optimize',
|
|
67
69
|
)
|
|
68
70
|
.option(
|
|
69
71
|
'--scope <scope>',
|
|
70
72
|
'refactoring scope (function, class, file)',
|
|
71
|
-
'function'
|
|
73
|
+
'function',
|
|
72
74
|
)
|
|
73
75
|
.option('--dry-run', 'show refactoring plan without applying')
|
|
74
76
|
.action(async (target, options) => {
|
|
@@ -82,12 +84,12 @@ export class AICommands {
|
|
|
82
84
|
.option(
|
|
83
85
|
'--type <type>',
|
|
84
86
|
'documentation type (api, readme, comments)',
|
|
85
|
-
'api'
|
|
87
|
+
'api',
|
|
86
88
|
)
|
|
87
89
|
.option(
|
|
88
90
|
'--format <format>',
|
|
89
91
|
'output format (markdown, html, json)',
|
|
90
|
-
'markdown'
|
|
92
|
+
'markdown',
|
|
91
93
|
)
|
|
92
94
|
.option('--include-examples', 'include code examples')
|
|
93
95
|
.action(async (target, options) => {
|
|
@@ -101,12 +103,12 @@ export class AICommands {
|
|
|
101
103
|
.option(
|
|
102
104
|
'--framework <framework>',
|
|
103
105
|
'testing framework (jest, mocha, vitest)',
|
|
104
|
-
'jest'
|
|
106
|
+
'jest',
|
|
105
107
|
)
|
|
106
108
|
.option(
|
|
107
109
|
'--coverage <level>',
|
|
108
110
|
'coverage level (unit, integration, e2e)',
|
|
109
|
-
'unit'
|
|
111
|
+
'unit',
|
|
110
112
|
)
|
|
111
113
|
.option('--mocks', 'generate mock objects')
|
|
112
114
|
.action(async (target, options) => {
|
|
@@ -132,7 +134,7 @@ export class AICommands {
|
|
|
132
134
|
.option(
|
|
133
135
|
'--aspect <aspect>',
|
|
134
136
|
'analysis aspect (complexity, maintainability, security)',
|
|
135
|
-
'all'
|
|
137
|
+
'all',
|
|
136
138
|
)
|
|
137
139
|
.option('--suggestions', 'include improvement suggestions')
|
|
138
140
|
.action(async (target, options) => {
|
|
@@ -146,7 +148,7 @@ export class AICommands {
|
|
|
146
148
|
.option(
|
|
147
149
|
'--focus <focus>',
|
|
148
150
|
'optimization focus (speed, memory, bundle)',
|
|
149
|
-
'speed'
|
|
151
|
+
'speed',
|
|
150
152
|
)
|
|
151
153
|
.option('--benchmarks', 'run before/after benchmarks')
|
|
152
154
|
.action(async (target, options) => {
|
|
@@ -207,7 +209,7 @@ export class AICommands {
|
|
|
207
209
|
if (!this.aiService.isReady()) {
|
|
208
210
|
console.log(chalk.red('\nā AI service not configured'));
|
|
209
211
|
console.log(
|
|
210
|
-
chalk.yellow('Run `wundr ai setup` to configure your API key first')
|
|
212
|
+
chalk.yellow('Run `wundr ai setup` to configure your API key first'),
|
|
211
213
|
);
|
|
212
214
|
return;
|
|
213
215
|
}
|
|
@@ -238,7 +240,7 @@ export class AICommands {
|
|
|
238
240
|
'WUNDR_AI_GENERATE_FAILED',
|
|
239
241
|
'Failed to generate code',
|
|
240
242
|
{ type, options },
|
|
241
|
-
true
|
|
243
|
+
true,
|
|
242
244
|
);
|
|
243
245
|
}
|
|
244
246
|
}
|
|
@@ -252,7 +254,7 @@ export class AICommands {
|
|
|
252
254
|
if (!this.aiService.isReady()) {
|
|
253
255
|
console.log(chalk.red('\nā AI service not configured'));
|
|
254
256
|
console.log(
|
|
255
|
-
chalk.yellow('Run `wundr ai setup` to configure your API key first')
|
|
257
|
+
chalk.yellow('Run `wundr ai setup` to configure your API key first'),
|
|
256
258
|
);
|
|
257
259
|
return;
|
|
258
260
|
}
|
|
@@ -297,7 +299,7 @@ export class AICommands {
|
|
|
297
299
|
'WUNDR_AI_REVIEW_FAILED',
|
|
298
300
|
'Failed to review code',
|
|
299
301
|
{ files, options },
|
|
300
|
-
true
|
|
302
|
+
true,
|
|
301
303
|
);
|
|
302
304
|
}
|
|
303
305
|
}
|
|
@@ -311,7 +313,7 @@ export class AICommands {
|
|
|
311
313
|
if (!this.aiService.isReady()) {
|
|
312
314
|
console.log(chalk.red('\nā AI service not configured'));
|
|
313
315
|
console.log(
|
|
314
|
-
chalk.yellow('Run `wundr ai setup` to configure your API key first')
|
|
316
|
+
chalk.yellow('Run `wundr ai setup` to configure your API key first'),
|
|
315
317
|
);
|
|
316
318
|
return;
|
|
317
319
|
}
|
|
@@ -354,7 +356,7 @@ export class AICommands {
|
|
|
354
356
|
'WUNDR_AI_REFACTOR_FAILED',
|
|
355
357
|
'Failed to refactor code',
|
|
356
358
|
{ target, options },
|
|
357
|
-
true
|
|
359
|
+
true,
|
|
358
360
|
);
|
|
359
361
|
}
|
|
360
362
|
}
|
|
@@ -368,13 +370,13 @@ export class AICommands {
|
|
|
368
370
|
if (!this.aiService.isReady()) {
|
|
369
371
|
console.log(chalk.red('\nā AI service not configured'));
|
|
370
372
|
console.log(
|
|
371
|
-
chalk.yellow('Run `wundr ai setup` to configure your API key first')
|
|
373
|
+
chalk.yellow('Run `wundr ai setup` to configure your API key first'),
|
|
372
374
|
);
|
|
373
375
|
return;
|
|
374
376
|
}
|
|
375
377
|
|
|
376
378
|
logger.info(
|
|
377
|
-
`Generating ${options.type} documentation for ${chalk.cyan(target)}
|
|
379
|
+
`Generating ${options.type} documentation for ${chalk.cyan(target)}...`,
|
|
378
380
|
);
|
|
379
381
|
|
|
380
382
|
const code = await this.readFile(target);
|
|
@@ -389,7 +391,7 @@ export class AICommands {
|
|
|
389
391
|
const outputPath = this.getDocsOutputPath(
|
|
390
392
|
target,
|
|
391
393
|
options.type,
|
|
392
|
-
options.format
|
|
394
|
+
options.format,
|
|
393
395
|
);
|
|
394
396
|
await this.saveGeneratedDocs(_docs, outputPath);
|
|
395
397
|
|
|
@@ -399,7 +401,7 @@ export class AICommands {
|
|
|
399
401
|
'WUNDR_AI_DOCS_FAILED',
|
|
400
402
|
'Failed to generate documentation',
|
|
401
403
|
{ target, options },
|
|
402
|
-
true
|
|
404
|
+
true,
|
|
403
405
|
);
|
|
404
406
|
}
|
|
405
407
|
}
|
|
@@ -413,7 +415,7 @@ export class AICommands {
|
|
|
413
415
|
if (!this.aiService.isReady()) {
|
|
414
416
|
console.log(chalk.red('\nā AI service not configured'));
|
|
415
417
|
console.log(
|
|
416
|
-
chalk.yellow('Run `wundr ai setup` to configure your API key first')
|
|
418
|
+
chalk.yellow('Run `wundr ai setup` to configure your API key first'),
|
|
417
419
|
);
|
|
418
420
|
return;
|
|
419
421
|
}
|
|
@@ -438,7 +440,7 @@ export class AICommands {
|
|
|
438
440
|
'WUNDR_AI_TEST_FAILED',
|
|
439
441
|
'Failed to generate tests',
|
|
440
442
|
{ target, options },
|
|
441
|
-
true
|
|
443
|
+
true,
|
|
442
444
|
);
|
|
443
445
|
}
|
|
444
446
|
}
|
|
@@ -452,7 +454,7 @@ export class AICommands {
|
|
|
452
454
|
if (!this.aiService.isReady()) {
|
|
453
455
|
console.log(chalk.red('\nā AI service not configured'));
|
|
454
456
|
console.log(
|
|
455
|
-
chalk.yellow('Run `wundr ai setup` to configure your API key first')
|
|
457
|
+
chalk.yellow('Run `wundr ai setup` to configure your API key first'),
|
|
456
458
|
);
|
|
457
459
|
return;
|
|
458
460
|
}
|
|
@@ -469,7 +471,7 @@ export class AICommands {
|
|
|
469
471
|
'WUNDR_AI_CHAT_FAILED',
|
|
470
472
|
'Failed to start chat session',
|
|
471
473
|
{ options },
|
|
472
|
-
true
|
|
474
|
+
true,
|
|
473
475
|
);
|
|
474
476
|
}
|
|
475
477
|
}
|
|
@@ -483,7 +485,7 @@ export class AICommands {
|
|
|
483
485
|
if (!this.aiService.isReady()) {
|
|
484
486
|
console.log(chalk.red('\nā AI service not configured'));
|
|
485
487
|
console.log(
|
|
486
|
-
chalk.yellow('Run `wundr ai setup` to configure your API key first')
|
|
488
|
+
chalk.yellow('Run `wundr ai setup` to configure your API key first'),
|
|
487
489
|
);
|
|
488
490
|
return;
|
|
489
491
|
}
|
|
@@ -504,7 +506,7 @@ export class AICommands {
|
|
|
504
506
|
'WUNDR_AI_ANALYZE_FAILED',
|
|
505
507
|
'Failed to analyze code',
|
|
506
508
|
{ target, options },
|
|
507
|
-
true
|
|
509
|
+
true,
|
|
508
510
|
);
|
|
509
511
|
}
|
|
510
512
|
}
|
|
@@ -518,7 +520,7 @@ export class AICommands {
|
|
|
518
520
|
if (!this.aiService.isReady()) {
|
|
519
521
|
console.log(chalk.red('\nā AI service not configured'));
|
|
520
522
|
console.log(
|
|
521
|
-
chalk.yellow('Run `wundr ai setup` to configure your API key first')
|
|
523
|
+
chalk.yellow('Run `wundr ai setup` to configure your API key first'),
|
|
522
524
|
);
|
|
523
525
|
return;
|
|
524
526
|
}
|
|
@@ -562,7 +564,7 @@ export class AICommands {
|
|
|
562
564
|
'WUNDR_AI_OPTIMIZE_FAILED',
|
|
563
565
|
'Failed to optimize code',
|
|
564
566
|
{ target, options },
|
|
565
|
-
true
|
|
567
|
+
true,
|
|
566
568
|
);
|
|
567
569
|
}
|
|
568
570
|
}
|
|
@@ -580,7 +582,7 @@ export class AICommands {
|
|
|
580
582
|
'WUNDR_AI_CONFIG_SET_FAILED',
|
|
581
583
|
'Failed to set AI configuration',
|
|
582
584
|
{ key, value },
|
|
583
|
-
true
|
|
585
|
+
true,
|
|
584
586
|
);
|
|
585
587
|
}
|
|
586
588
|
}
|
|
@@ -602,7 +604,7 @@ export class AICommands {
|
|
|
602
604
|
'WUNDR_AI_CONFIG_GET_FAILED',
|
|
603
605
|
'Failed to get AI configuration',
|
|
604
606
|
{ key },
|
|
605
|
-
true
|
|
607
|
+
true,
|
|
606
608
|
);
|
|
607
609
|
}
|
|
608
610
|
}
|
|
@@ -614,7 +616,7 @@ export class AICommands {
|
|
|
614
616
|
try {
|
|
615
617
|
console.log(chalk.blue('\nš¤ Wundr AI Setup'));
|
|
616
618
|
console.log(
|
|
617
|
-
chalk.gray('Configure your AI assistant for enhanced CLI features\n')
|
|
619
|
+
chalk.gray('Configure your AI assistant for enhanced CLI features\n'),
|
|
618
620
|
);
|
|
619
621
|
|
|
620
622
|
let { provider, apiKey } = options;
|
|
@@ -671,7 +673,7 @@ export class AICommands {
|
|
|
671
673
|
console.log(chalk.green('ā
API key is valid and working!'));
|
|
672
674
|
} else {
|
|
673
675
|
console.log(
|
|
674
|
-
chalk.red(`ā API key validation failed: ${validation.error}`)
|
|
676
|
+
chalk.red(`ā API key validation failed: ${validation.error}`),
|
|
675
677
|
);
|
|
676
678
|
return;
|
|
677
679
|
}
|
|
@@ -688,7 +690,7 @@ export class AICommands {
|
|
|
688
690
|
'WUNDR_AI_SETUP_FAILED',
|
|
689
691
|
'Failed to setup AI configuration',
|
|
690
692
|
{ options },
|
|
691
|
-
true
|
|
693
|
+
true,
|
|
692
694
|
);
|
|
693
695
|
}
|
|
694
696
|
}
|
|
@@ -705,24 +707,24 @@ export class AICommands {
|
|
|
705
707
|
console.log(`Provider: ${chalk.cyan(status.provider)}`);
|
|
706
708
|
console.log(`Model: ${chalk.cyan(status.model)}`);
|
|
707
709
|
console.log(
|
|
708
|
-
`API Key: ${status.hasApiKey ? chalk.green('ā
Configured') : chalk.red('ā Missing')}
|
|
710
|
+
`API Key: ${status.hasApiKey ? chalk.green('ā
Configured') : chalk.red('ā Missing')}`,
|
|
709
711
|
);
|
|
710
712
|
console.log(
|
|
711
|
-
`Status: ${status.ready ? chalk.green('ā
Ready') : chalk.yellow('ā ļø Not Ready')}
|
|
713
|
+
`Status: ${status.ready ? chalk.green('ā
Ready') : chalk.yellow('ā ļø Not Ready')}`,
|
|
712
714
|
);
|
|
713
715
|
|
|
714
716
|
if (!status.hasApiKey) {
|
|
715
717
|
console.log(chalk.yellow('\nā ļø API key not configured'));
|
|
716
718
|
console.log(
|
|
717
|
-
chalk.gray('Run `wundr ai setup` to configure your API key')
|
|
719
|
+
chalk.gray('Run `wundr ai setup` to configure your API key'),
|
|
718
720
|
);
|
|
719
721
|
console.log(
|
|
720
|
-
chalk.gray('Or set the CLAUDE_API_KEY environment variable')
|
|
722
|
+
chalk.gray('Or set the CLAUDE_API_KEY environment variable'),
|
|
721
723
|
);
|
|
722
724
|
} else if (!status.ready) {
|
|
723
725
|
console.log(chalk.yellow('\nā ļø AI service not ready'));
|
|
724
726
|
console.log(
|
|
725
|
-
chalk.gray('Try running `wundr ai validate` to check connection')
|
|
727
|
+
chalk.gray('Try running `wundr ai validate` to check connection'),
|
|
726
728
|
);
|
|
727
729
|
}
|
|
728
730
|
} catch (error) {
|
|
@@ -730,7 +732,7 @@ export class AICommands {
|
|
|
730
732
|
'WUNDR_AI_STATUS_FAILED',
|
|
731
733
|
'Failed to get AI status',
|
|
732
734
|
{},
|
|
733
|
-
true
|
|
735
|
+
true,
|
|
734
736
|
);
|
|
735
737
|
}
|
|
736
738
|
}
|
|
@@ -757,12 +759,12 @@ export class AICommands {
|
|
|
757
759
|
if (validation.error?.includes('API key')) {
|
|
758
760
|
console.log(chalk.yellow('\nš” Try:'));
|
|
759
761
|
console.log(
|
|
760
|
-
chalk.gray('1. Run `wundr ai setup` to configure your API key')
|
|
762
|
+
chalk.gray('1. Run `wundr ai setup` to configure your API key'),
|
|
761
763
|
);
|
|
762
764
|
console.log(
|
|
763
765
|
chalk.gray(
|
|
764
|
-
'2. Check your API key is valid and has sufficient credits'
|
|
765
|
-
)
|
|
766
|
+
'2. Check your API key is valid and has sufficient credits',
|
|
767
|
+
),
|
|
766
768
|
);
|
|
767
769
|
console.log(chalk.gray('3. Verify your internet connection'));
|
|
768
770
|
}
|
|
@@ -772,7 +774,7 @@ export class AICommands {
|
|
|
772
774
|
'WUNDR_AI_VALIDATE_FAILED',
|
|
773
775
|
'Failed to validate AI connection',
|
|
774
776
|
{},
|
|
775
|
-
true
|
|
777
|
+
true,
|
|
776
778
|
);
|
|
777
779
|
}
|
|
778
780
|
}
|
|
@@ -830,7 +832,7 @@ export class AICommands {
|
|
|
830
832
|
|
|
831
833
|
private async saveGeneratedCode(
|
|
832
834
|
_code: string,
|
|
833
|
-
outputPath: string
|
|
835
|
+
outputPath: string,
|
|
834
836
|
): Promise<void> {
|
|
835
837
|
// Save generated code to file
|
|
836
838
|
logger.debug(`Saving generated code to ${outputPath}`);
|
|
@@ -871,7 +873,7 @@ export class AICommands {
|
|
|
871
873
|
private getDocsOutputPath(
|
|
872
874
|
target: string,
|
|
873
875
|
type: string,
|
|
874
|
-
format: string
|
|
876
|
+
format: string,
|
|
875
877
|
): string {
|
|
876
878
|
const ext = format === 'markdown' ? 'md' : format;
|
|
877
879
|
return `docs/${target}.${type}.${ext}`;
|
|
@@ -879,7 +881,7 @@ export class AICommands {
|
|
|
879
881
|
|
|
880
882
|
private async saveGeneratedDocs(
|
|
881
883
|
_docs: string,
|
|
882
|
-
outputPath: string
|
|
884
|
+
outputPath: string,
|
|
883
885
|
): Promise<void> {
|
|
884
886
|
// Save generated documentation
|
|
885
887
|
logger.debug(`Saving documentation to ${outputPath}`);
|
|
@@ -948,8 +950,8 @@ export class AICommands {
|
|
|
948
950
|
console.log(chalk.red(`Error: ${error.message}`));
|
|
949
951
|
console.log(
|
|
950
952
|
chalk.yellow(
|
|
951
|
-
'\nTip: Try `wundr ai validate` to check your connection'
|
|
952
|
-
)
|
|
953
|
+
'\nTip: Try `wundr ai validate` to check your connection',
|
|
954
|
+
),
|
|
953
955
|
);
|
|
954
956
|
}
|
|
955
957
|
}
|
|
@@ -977,7 +979,7 @@ export class AICommands {
|
|
|
977
979
|
|
|
978
980
|
private async applyOptimization(
|
|
979
981
|
target: string,
|
|
980
|
-
_optimization: any
|
|
982
|
+
_optimization: any,
|
|
981
983
|
): Promise<void> {
|
|
982
984
|
// Apply optimization changes
|
|
983
985
|
logger.debug(`Applying optimization to ${target}`);
|
|
@@ -986,10 +988,10 @@ export class AICommands {
|
|
|
986
988
|
private displayBenchmarkComparison(before: any, after: any): void {
|
|
987
989
|
console.log(chalk.blue('\nBenchmark Comparison:'));
|
|
988
990
|
console.log(
|
|
989
|
-
`Time: ${before.time}ms ā ${after.time}ms (${after.time - before.time}ms)
|
|
991
|
+
`Time: ${before.time}ms ā ${after.time}ms (${after.time - before.time}ms)`,
|
|
990
992
|
);
|
|
991
993
|
console.log(
|
|
992
|
-
`Memory: ${before.memory}MB ā ${after.memory}MB (${after.memory - before.memory}MB)
|
|
994
|
+
`Memory: ${before.memory}MB ā ${after.memory}MB (${after.memory - before.memory}MB)`,
|
|
993
995
|
);
|
|
994
996
|
}
|
|
995
997
|
}
|