@defai.digital/ax-cli 2.3.0 → 2.4.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 (104) hide show
  1. package/.ax-cli/CUSTOM.md +111 -89
  2. package/.ax-cli/index.json +4 -3
  3. package/README.md +43 -16
  4. package/config/prompts.yaml +9 -0
  5. package/config/settings.yaml +2 -0
  6. package/dist/agent/llm-agent.d.ts +17 -0
  7. package/dist/agent/llm-agent.js +151 -52
  8. package/dist/agent/llm-agent.js.map +1 -1
  9. package/dist/commands/init/wizard.d.ts +66 -0
  10. package/dist/commands/init/wizard.js +310 -0
  11. package/dist/commands/init/wizard.js.map +1 -0
  12. package/dist/commands/init.js +146 -26
  13. package/dist/commands/init.js.map +1 -1
  14. package/dist/commands/mcp.js +3 -2
  15. package/dist/commands/mcp.js.map +1 -1
  16. package/dist/commands/memory.d.ts +5 -0
  17. package/dist/commands/memory.js +257 -0
  18. package/dist/commands/memory.js.map +1 -0
  19. package/dist/commands/setup.js +1 -1
  20. package/dist/commands/setup.js.map +1 -1
  21. package/dist/commands/templates.d.ts +5 -0
  22. package/dist/commands/templates.js +244 -0
  23. package/dist/commands/templates.js.map +1 -0
  24. package/dist/commands/update.js +9 -2
  25. package/dist/commands/update.js.map +1 -1
  26. package/dist/commands/usage.js +1 -1
  27. package/dist/commands/usage.js.map +1 -1
  28. package/dist/constants.d.ts +2 -0
  29. package/dist/constants.js +2 -0
  30. package/dist/constants.js.map +1 -1
  31. package/dist/hooks/use-input-handler.js +49 -12
  32. package/dist/hooks/use-input-handler.js.map +1 -1
  33. package/dist/index.js +143 -16
  34. package/dist/index.js.map +1 -1
  35. package/dist/llm/client.d.ts +5 -0
  36. package/dist/llm/client.js +43 -37
  37. package/dist/llm/client.js.map +1 -1
  38. package/dist/schemas/index.d.ts +69 -0
  39. package/dist/schemas/index.js +29 -0
  40. package/dist/schemas/index.js.map +1 -1
  41. package/dist/schemas/yaml-schemas.d.ts +10 -0
  42. package/dist/schemas/yaml-schemas.js +2 -0
  43. package/dist/schemas/yaml-schemas.js.map +1 -1
  44. package/dist/tools/search.js +7 -1
  45. package/dist/tools/search.js.map +1 -1
  46. package/dist/tools/text-editor.js +24 -14
  47. package/dist/tools/text-editor.js.map +1 -1
  48. package/dist/tools/todo-tool.js +62 -21
  49. package/dist/tools/todo-tool.js.map +1 -1
  50. package/dist/types/template.d.ts +53 -0
  51. package/dist/types/template.js +5 -0
  52. package/dist/types/template.js.map +1 -0
  53. package/dist/ui/components/command-suggestions.js +2 -2
  54. package/dist/ui/components/command-suggestions.js.map +1 -1
  55. package/dist/utils/cache.d.ts +1 -0
  56. package/dist/utils/cache.js +39 -5
  57. package/dist/utils/cache.js.map +1 -1
  58. package/dist/utils/config-loader.d.ts +2 -0
  59. package/dist/utils/config-loader.js +2 -1
  60. package/dist/utils/config-loader.js.map +1 -1
  61. package/dist/utils/confirmation-service.js +6 -3
  62. package/dist/utils/confirmation-service.js.map +1 -1
  63. package/dist/utils/error-handler.d.ts +5 -0
  64. package/dist/utils/error-handler.js +9 -3
  65. package/dist/utils/error-handler.js.map +1 -1
  66. package/dist/utils/init-previewer.d.ts +56 -0
  67. package/dist/utils/init-previewer.js +217 -0
  68. package/dist/utils/init-previewer.js.map +1 -0
  69. package/dist/utils/init-validator.d.ts +61 -0
  70. package/dist/utils/init-validator.js +248 -0
  71. package/dist/utils/init-validator.js.map +1 -0
  72. package/dist/utils/llm-optimized-instruction-generator.d.ts +31 -0
  73. package/dist/utils/llm-optimized-instruction-generator.js +296 -0
  74. package/dist/utils/llm-optimized-instruction-generator.js.map +1 -0
  75. package/dist/utils/onboarding-manager.d.ts +45 -0
  76. package/dist/utils/onboarding-manager.js +130 -0
  77. package/dist/utils/onboarding-manager.js.map +1 -0
  78. package/dist/utils/path-utils.d.ts +83 -0
  79. package/dist/utils/path-utils.js +122 -0
  80. package/dist/utils/path-utils.js.map +1 -0
  81. package/dist/utils/progress-tracker.d.ts +51 -0
  82. package/dist/utils/progress-tracker.js +152 -0
  83. package/dist/utils/progress-tracker.js.map +1 -0
  84. package/dist/utils/project-analyzer.js +8 -14
  85. package/dist/utils/project-analyzer.js.map +1 -1
  86. package/dist/utils/settings-manager.d.ts +3 -3
  87. package/dist/utils/settings-manager.js +6 -13
  88. package/dist/utils/settings-manager.js.map +1 -1
  89. package/dist/utils/string-utils.d.ts +19 -0
  90. package/dist/utils/string-utils.js +28 -0
  91. package/dist/utils/string-utils.js.map +1 -0
  92. package/dist/utils/template-manager.d.ts +54 -0
  93. package/dist/utils/template-manager.js +421 -0
  94. package/dist/utils/template-manager.js.map +1 -0
  95. package/dist/utils/text-utils.js +3 -1
  96. package/dist/utils/text-utils.js.map +1 -1
  97. package/package.json +2 -1
  98. package/vitest.config.ts +6 -0
  99. package/dist/utils/model-config.d.ts +0 -28
  100. package/dist/utils/model-config.js +0 -43
  101. package/dist/utils/model-config.js.map +0 -1
  102. package/dist/utils/tool-helpers.d.ts +0 -25
  103. package/dist/utils/tool-helpers.js +0 -53
  104. package/dist/utils/tool-helpers.js.map +0 -1
@@ -0,0 +1,310 @@
1
+ /**
2
+ * Interactive Setup Wizard for Init Command
3
+ */
4
+ import * as prompts from '@clack/prompts';
5
+ import { OnboardingManager } from '../../utils/onboarding-manager.js';
6
+ import { TemplateManager } from '../../utils/template-manager.js';
7
+ export class InitWizard {
8
+ options;
9
+ isFirstRun;
10
+ constructor(options = {}) {
11
+ this.options = options;
12
+ this.isFirstRun = OnboardingManager.detectFirstRun();
13
+ }
14
+ /**
15
+ * Run the interactive wizard
16
+ */
17
+ async run() {
18
+ // Skip if non-interactive mode
19
+ if (this.options.nonInteractive || this.options.yes) {
20
+ return this.getDefaults();
21
+ }
22
+ // Show welcome screen for first-time users
23
+ if (this.isFirstRun) {
24
+ await this.showWelcome();
25
+ }
26
+ // Run wizard steps
27
+ const apiConfig = await this.stepAPIConfiguration();
28
+ const preferences = await this.stepPreferences();
29
+ const selectedTemplate = await this.stepTemplateSelection();
30
+ const generateInstructions = await this.stepInstructionGeneration(selectedTemplate);
31
+ return {
32
+ apiConfig,
33
+ preferences,
34
+ generateInstructions,
35
+ skipWelcome: !this.isFirstRun,
36
+ selectedTemplate,
37
+ };
38
+ }
39
+ /**
40
+ * Show welcome screen for first-time users
41
+ */
42
+ async showWelcome() {
43
+ prompts.intro('Welcome to AX CLI!');
44
+ await prompts.note(`AX CLI is an enterprise-grade AI command line interface.\n\n` +
45
+ `Let's get you set up in under 60 seconds:\n\n` +
46
+ ` ⏩ Step 1/3: API Configuration\n` +
47
+ ` ⏹ Step 2/3: Preferences\n` +
48
+ ` ⏹ Step 3/3: Project Analysis`, 'First-Time Setup');
49
+ }
50
+ /**
51
+ * Step 1: API Configuration
52
+ */
53
+ async stepAPIConfiguration() {
54
+ const group = await prompts.group({
55
+ provider: () => prompts.select({
56
+ message: 'Which AI provider do you want to use?',
57
+ options: [
58
+ {
59
+ value: 'glm',
60
+ label: 'GLM (Recommended)',
61
+ hint: 'Fast, affordable, 200K context',
62
+ },
63
+ {
64
+ value: 'openai',
65
+ label: 'OpenAI',
66
+ hint: 'GPT-4, GPT-3.5',
67
+ },
68
+ {
69
+ value: 'anthropic',
70
+ label: 'Anthropic',
71
+ hint: 'Claude 3.5 Sonnet, Opus',
72
+ },
73
+ {
74
+ value: 'ollama',
75
+ label: 'Ollama (Local)',
76
+ hint: 'Run models locally, no API key needed',
77
+ },
78
+ {
79
+ value: 'custom',
80
+ label: 'Custom',
81
+ hint: 'Use any OpenAI-compatible API',
82
+ },
83
+ ],
84
+ initialValue: 'glm',
85
+ }),
86
+ apiKey: ({ results }) => {
87
+ // Skip API key for Ollama (local)
88
+ if (results.provider === 'ollama') {
89
+ return Promise.resolve(undefined);
90
+ }
91
+ return prompts.password({
92
+ message: `Enter your ${results.provider?.toUpperCase()} API key:`,
93
+ validate: (value) => {
94
+ if (!value || value.length === 0) {
95
+ return 'API key is required (or use Ollama for local models)';
96
+ }
97
+ return;
98
+ },
99
+ });
100
+ },
101
+ baseUrl: ({ results }) => {
102
+ if (results.provider === 'custom') {
103
+ return prompts.text({
104
+ message: 'Enter custom API base URL:',
105
+ placeholder: 'https://api.example.com/v1',
106
+ validate: (value) => {
107
+ if (!value || !value.startsWith('http')) {
108
+ return 'Please enter a valid URL';
109
+ }
110
+ return;
111
+ },
112
+ });
113
+ }
114
+ return Promise.resolve(undefined);
115
+ },
116
+ model: ({ results }) => {
117
+ const modelOptions = {
118
+ glm: [
119
+ { value: 'glm-4.6', label: 'glm-4.6 (Recommended)', hint: '200K context, reasoning mode' },
120
+ { value: 'glm-4-flash', label: 'glm-4-flash', hint: 'Faster, 32K context' },
121
+ ],
122
+ openai: [
123
+ { value: 'gpt-4-turbo', label: 'GPT-4 Turbo', hint: '128K context' },
124
+ { value: 'gpt-4', label: 'GPT-4', hint: '8K context' },
125
+ { value: 'gpt-3.5-turbo', label: 'GPT-3.5 Turbo', hint: '16K context, faster' },
126
+ ],
127
+ anthropic: [
128
+ { value: 'claude-3-5-sonnet-20241022', label: 'Claude 3.5 Sonnet', hint: '200K context' },
129
+ { value: 'claude-3-opus-20240229', label: 'Claude 3 Opus', hint: '200K context' },
130
+ ],
131
+ ollama: [
132
+ { value: 'llama2', label: 'Llama 2', hint: 'Local model' },
133
+ { value: 'codellama', label: 'Code Llama', hint: 'Code-focused local model' },
134
+ { value: 'mistral', label: 'Mistral', hint: 'Fast local model' },
135
+ ],
136
+ custom: [],
137
+ };
138
+ const options = modelOptions[results.provider] || [];
139
+ if (options.length === 0) {
140
+ return prompts.text({
141
+ message: 'Enter model name:',
142
+ placeholder: 'model-name',
143
+ });
144
+ }
145
+ return prompts.select({
146
+ message: 'Select your default model:',
147
+ options,
148
+ initialValue: options[0]?.value,
149
+ });
150
+ },
151
+ }, {
152
+ onCancel: () => {
153
+ prompts.cancel('Operation cancelled.');
154
+ process.exit(0);
155
+ },
156
+ });
157
+ return {
158
+ provider: group.provider,
159
+ apiKey: group.apiKey,
160
+ baseUrl: group.baseUrl,
161
+ model: group.model,
162
+ };
163
+ }
164
+ /**
165
+ * Step 2: User Preferences
166
+ */
167
+ async stepPreferences() {
168
+ const group = await prompts.group({
169
+ verbose: () => prompts.confirm({
170
+ message: 'Enable verbose output?',
171
+ initialValue: false,
172
+ }),
173
+ autoConfirm: () => prompts.confirm({
174
+ message: 'Auto-confirm safe operations?',
175
+ initialValue: true,
176
+ }),
177
+ editor: () => prompts.select({
178
+ message: 'Preferred editor for CUSTOM.md:',
179
+ options: [
180
+ { value: 'code', label: 'VS Code', hint: 'code command' },
181
+ { value: 'vim', label: 'Vim', hint: 'Terminal editor' },
182
+ { value: 'nano', label: 'Nano', hint: 'Simple terminal editor' },
183
+ { value: 'none', label: 'None', hint: 'Manual editing' },
184
+ ],
185
+ initialValue: 'code',
186
+ }),
187
+ }, {
188
+ onCancel: () => {
189
+ prompts.cancel('Operation cancelled.');
190
+ process.exit(0);
191
+ },
192
+ });
193
+ return {
194
+ verbose: group.verbose,
195
+ autoConfirm: group.autoConfirm,
196
+ editor: group.editor === 'none' ? undefined : group.editor,
197
+ };
198
+ }
199
+ /**
200
+ * Step 3: Template Selection
201
+ */
202
+ async stepTemplateSelection() {
203
+ // If template is specified in options, use it
204
+ if (this.options.template) {
205
+ const template = TemplateManager.getTemplate(this.options.template);
206
+ if (template) {
207
+ return template;
208
+ }
209
+ console.warn(`⚠️ Template '${this.options.template}' not found, continuing without template`);
210
+ }
211
+ // Ask if user wants to use a template
212
+ const useTemplate = await prompts.confirm({
213
+ message: 'Use a project template?',
214
+ initialValue: false,
215
+ });
216
+ if (prompts.isCancel(useTemplate)) {
217
+ prompts.cancel('Operation cancelled.');
218
+ process.exit(0);
219
+ }
220
+ if (!useTemplate) {
221
+ return undefined;
222
+ }
223
+ // List available templates
224
+ const templates = TemplateManager.listTemplates();
225
+ if (templates.length === 0) {
226
+ await prompts.note('No templates available. You can create templates with:\n' +
227
+ ' ax-cli templates save <name>', 'No Templates');
228
+ return undefined;
229
+ }
230
+ // Select template
231
+ const templateId = await prompts.select({
232
+ message: 'Select a template:',
233
+ options: templates.map(t => ({
234
+ value: t.id,
235
+ label: t.name,
236
+ hint: t.description,
237
+ })),
238
+ });
239
+ if (prompts.isCancel(templateId)) {
240
+ prompts.cancel('Operation cancelled.');
241
+ process.exit(0);
242
+ }
243
+ return TemplateManager.getTemplate(templateId) || undefined;
244
+ }
245
+ /**
246
+ * Step 4: Instruction Generation Confirmation
247
+ */
248
+ async stepInstructionGeneration(selectedTemplate) {
249
+ // If using a template, skip this step (template has instructions)
250
+ if (selectedTemplate) {
251
+ return false; // Don't generate, use template instructions
252
+ }
253
+ const result = await prompts.confirm({
254
+ message: 'Generate custom instructions (CUSTOM.md)?',
255
+ initialValue: true,
256
+ });
257
+ if (prompts.isCancel(result)) {
258
+ prompts.cancel('Operation cancelled.');
259
+ process.exit(0);
260
+ }
261
+ return result;
262
+ }
263
+ /**
264
+ * Show completion summary
265
+ */
266
+ async showCompletion(result, projectInfo) {
267
+ prompts.outro('Setup complete!');
268
+ const summary = [
269
+ '📦 Configuration Summary:',
270
+ result.apiConfig ? ` • Provider: ${result.apiConfig.provider}` : '',
271
+ result.apiConfig?.model ? ` • Model: ${result.apiConfig.model}` : '',
272
+ projectInfo ? ` • Project: ${projectInfo.name} (${projectInfo.projectType})` : '',
273
+ ` • Verbose: ${result.preferences.verbose ? 'Enabled' : 'Disabled'}`,
274
+ ` • Auto-confirm: ${result.preferences.autoConfirm ? 'Enabled' : 'Disabled'}`,
275
+ ].filter(Boolean).join('\n');
276
+ await prompts.note(summary, 'Summary');
277
+ const nextSteps = [
278
+ '🚀 Next Steps:',
279
+ ' 1. Review .ax-cli/CUSTOM.md and customize if needed',
280
+ ' 2. Run: ax-cli (start interactive session)',
281
+ ' 3. Run: ax-cli --help (view all commands)',
282
+ ].join('\n');
283
+ await prompts.note(nextSteps, 'Get Started');
284
+ // Mark onboarding as complete
285
+ if (this.isFirstRun) {
286
+ OnboardingManager.markCompleted();
287
+ }
288
+ }
289
+ /**
290
+ * Get default values for non-interactive mode
291
+ */
292
+ getDefaults() {
293
+ // Check if template was specified
294
+ let selectedTemplate;
295
+ if (this.options.template) {
296
+ selectedTemplate = TemplateManager.getTemplate(this.options.template) || undefined;
297
+ }
298
+ return {
299
+ preferences: {
300
+ verbose: false,
301
+ autoConfirm: true,
302
+ editor: undefined,
303
+ },
304
+ generateInstructions: !selectedTemplate, // Don't generate if using template
305
+ skipWelcome: true,
306
+ selectedTemplate,
307
+ };
308
+ }
309
+ }
310
+ //# sourceMappingURL=wizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../../src/commands/init/wizard.ts"],"names":[],"mappings":"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"}
@@ -5,26 +5,73 @@ import { Command } from 'commander';
5
5
  import * as fs from 'fs';
6
6
  import * as path from 'path';
7
7
  import { ProjectAnalyzer } from '../utils/project-analyzer.js';
8
- import { InstructionGenerator } from '../utils/instruction-generator.js';
8
+ import { LLMOptimizedInstructionGenerator } from '../utils/llm-optimized-instruction-generator.js';
9
+ import { InitWizard } from './init/wizard.js';
10
+ import { InitValidator } from '../utils/init-validator.js';
11
+ import { InitPreviewer } from '../utils/init-previewer.js';
12
+ import { ProgressTracker } from '../utils/progress-tracker.js';
9
13
  export function createInitCommand() {
10
14
  const initCommand = new Command('init')
11
15
  .description('Initialize AX CLI for your project with intelligent analysis')
12
16
  .option('-f, --force', 'Force regeneration even if files exist', false)
13
17
  .option('-v, --verbose', 'Verbose output showing analysis details', false)
14
- .option('-d, --directory <dir>', 'Project directory to analyze', process.cwd())
18
+ .option('-d, --directory <dir>', 'Project directory to analyze')
19
+ .option('-y, --yes', 'Skip interactive prompts and use defaults', false)
20
+ .option('--no-interaction', 'Run in non-interactive mode', false)
21
+ .option('-t, --template <template-id>', 'Use a specific template')
22
+ .option('--preview', 'Preview changes before applying', false)
23
+ .option('--dry-run', 'Show what would be done without making changes', false)
24
+ .option('--validate', 'Run validation checks only', false)
15
25
  .action(async (options) => {
16
26
  try {
17
- const projectRoot = options.directory || process.cwd();
18
- console.log('🔍 Analyzing project...\n');
19
- // Change to project directory if specified
20
- if (options.directory) {
21
- process.chdir(options.directory);
27
+ if (options.verbose) {
28
+ console.log(`options.directory: ${options.directory}`);
29
+ }
30
+ // Determine project root
31
+ const projectRoot = options.directory ? path.resolve(options.directory) : process.cwd();
32
+ if (options.verbose) {
33
+ console.log(`Working directory: ${projectRoot}`);
34
+ }
35
+ // Run validation if requested
36
+ if (options.validate) {
37
+ const validator = new InitValidator(projectRoot);
38
+ const validationResult = validator.validate();
39
+ console.log('\n' + InitValidator.formatValidationResult(validationResult));
40
+ process.exit(validationResult.valid ? 0 : 1);
41
+ }
42
+ // Run interactive wizard for first-time users (unless --yes or --no-interaction)
43
+ const wizard = new InitWizard({
44
+ nonInteractive: options.noInteraction,
45
+ yes: options.yes,
46
+ template: options.template,
47
+ });
48
+ const wizardResult = await wizard.run();
49
+ // Initialize progress tracker
50
+ const progress = new ProgressTracker();
51
+ progress.addStep('validate', 'Validating project');
52
+ progress.addStep('analyze', 'Analyzing project');
53
+ progress.addStep('generate', 'Generating instructions');
54
+ progress.addStep('write', 'Writing files');
55
+ // Run validation before proceeding
56
+ await progress.startStep('validate');
57
+ const validator = new InitValidator(projectRoot);
58
+ const validationResult = validator.validate();
59
+ if (options.verbose && (validationResult.warnings.length > 0 || validationResult.suggestions.length > 0)) {
60
+ console.log('\n' + InitValidator.formatValidationResult(validationResult));
22
61
  }
62
+ if (!validationResult.valid) {
63
+ await progress.failStep('validate', 'Validation failed');
64
+ console.error('\n❌ Validation failed:');
65
+ console.error(InitValidator.formatValidationResult(validationResult));
66
+ process.exit(1);
67
+ }
68
+ await progress.completeStep('validate');
23
69
  // Check if already initialized
24
70
  const axCliDir = path.join(projectRoot, '.ax-cli');
25
71
  const customMdPath = path.join(axCliDir, 'CUSTOM.md');
26
72
  const indexPath = path.join(axCliDir, 'index.json');
27
73
  if (!options.force && fs.existsSync(customMdPath)) {
74
+ progress.stop();
28
75
  console.log('✅ Project already initialized!');
29
76
  console.log(`📝 Custom instructions: ${customMdPath}`);
30
77
  console.log(`📊 Project index: ${indexPath}`);
@@ -32,9 +79,11 @@ export function createInitCommand() {
32
79
  return;
33
80
  }
34
81
  // Analyze project
82
+ await progress.startStep('analyze');
35
83
  const analyzer = new ProjectAnalyzer(projectRoot);
36
84
  const result = await analyzer.analyze();
37
85
  if (!result.success || !result.projectInfo) {
86
+ await progress.failStep('analyze', result.error || 'Unknown error');
38
87
  console.error('❌ Failed to analyze project:', result.error);
39
88
  if (result.warnings && result.warnings.length > 0) {
40
89
  console.error('\n⚠️ Warnings:');
@@ -43,6 +92,7 @@ export function createInitCommand() {
43
92
  process.exit(1);
44
93
  }
45
94
  const projectInfo = result.projectInfo;
95
+ await progress.completeStep('analyze');
46
96
  // Display analysis results
47
97
  if (options.verbose) {
48
98
  console.log('📋 Project Analysis Results:\n');
@@ -57,38 +107,108 @@ export function createInitCommand() {
57
107
  }
58
108
  console.log('');
59
109
  }
60
- // Generate instructions
61
- const generator = new InstructionGenerator();
62
- const instructions = generator.generateInstructions(projectInfo);
63
- const index = generator.generateIndex(projectInfo);
64
110
  // Create .ax-cli directory
65
111
  if (!fs.existsSync(axCliDir)) {
66
112
  fs.mkdirSync(axCliDir, { recursive: true });
67
113
  console.log('📁 Created .ax-cli directory');
68
114
  }
69
- // Write custom instructions
70
- fs.writeFileSync(customMdPath, instructions, 'utf-8');
71
- console.log(`✅ Generated custom instructions: ${customMdPath}`);
72
- // Write project index
73
- fs.writeFileSync(indexPath, index, 'utf-8');
74
- console.log(`✅ Generated project index: ${indexPath}`);
115
+ // Generate content (either from template or project analysis)
116
+ await progress.startStep('generate');
117
+ let instructions;
118
+ let index;
119
+ if (wizardResult.selectedTemplate) {
120
+ progress.updateMessage(`Applying template: ${wizardResult.selectedTemplate.name}`);
121
+ instructions = wizardResult.selectedTemplate.instructions;
122
+ const indexData = {
123
+ projectName: wizardResult.selectedTemplate.name,
124
+ version: wizardResult.selectedTemplate.version,
125
+ projectType: wizardResult.selectedTemplate.projectType,
126
+ ...wizardResult.selectedTemplate.metadata,
127
+ templateId: wizardResult.selectedTemplate.id,
128
+ templateAppliedAt: new Date().toISOString(),
129
+ };
130
+ index = JSON.stringify(indexData, null, 2);
131
+ }
132
+ else {
133
+ progress.updateMessage('Generating LLM-optimized instructions');
134
+ const generator = new LLMOptimizedInstructionGenerator({
135
+ compressionLevel: 'moderate',
136
+ hierarchyEnabled: true,
137
+ criticalRulesCount: 5,
138
+ includeDODONT: true,
139
+ includeTroubleshooting: true,
140
+ });
141
+ instructions = generator.generateInstructions(projectInfo);
142
+ index = generator.generateIndex(projectInfo);
143
+ }
144
+ await progress.completeStep('generate');
145
+ // Preview or dry-run mode
146
+ if (options.preview || options.dryRun) {
147
+ progress.stop();
148
+ const previewer = new InitPreviewer(projectRoot);
149
+ await previewer.preview(instructions, index, {
150
+ showDiff: options.preview,
151
+ showFull: false,
152
+ maxLines: 30,
153
+ });
154
+ if (options.dryRun) {
155
+ console.log('\n✅ Dry-run complete (no changes made)\n');
156
+ console.log(progress.getSummary());
157
+ return;
158
+ }
159
+ // Ask for confirmation if preview mode
160
+ if (options.preview) {
161
+ const confirmed = await previewer.confirmChanges();
162
+ if (!confirmed) {
163
+ console.log('\n❌ Operation cancelled\n');
164
+ return;
165
+ }
166
+ }
167
+ }
168
+ // Write files using atomic operations
169
+ await progress.startStep('write');
170
+ // Atomic write for CUSTOM.md
171
+ const tmpCustomPath = `${customMdPath}.tmp`;
172
+ const tmpIndexPath = `${indexPath}.tmp`;
173
+ try {
174
+ fs.writeFileSync(tmpCustomPath, instructions, 'utf-8');
175
+ fs.writeFileSync(tmpIndexPath, index, 'utf-8');
176
+ // Atomic rename
177
+ fs.renameSync(tmpCustomPath, customMdPath);
178
+ fs.renameSync(tmpIndexPath, indexPath);
179
+ console.log(`✅ Generated custom instructions: ${customMdPath}`);
180
+ console.log(`✅ Generated project index: ${indexPath}`);
181
+ }
182
+ catch (writeError) {
183
+ // Cleanup temp files on error
184
+ try {
185
+ if (fs.existsSync(tmpCustomPath))
186
+ fs.unlinkSync(tmpCustomPath);
187
+ if (fs.existsSync(tmpIndexPath))
188
+ fs.unlinkSync(tmpIndexPath);
189
+ }
190
+ catch {
191
+ // Ignore cleanup errors
192
+ }
193
+ throw writeError;
194
+ }
195
+ await progress.completeStep('write');
75
196
  // Display warnings if any
76
197
  if (result.warnings && result.warnings.length > 0) {
77
198
  console.log('\n⚠️ Warnings:');
78
199
  result.warnings.forEach(w => console.log(` - ${w}`));
79
200
  }
80
- // Display next steps
81
- console.log('\n🎉 Project initialized successfully!\n');
82
- console.log('📝 Custom instructions have been generated at:');
83
- console.log(` ${customMdPath}\n`);
84
- console.log('💡 Next steps:');
85
- console.log(' 1. Review and customize the instructions if needed');
86
- console.log(' 2. Run AX CLI - it will automatically use these instructions');
87
- console.log(' 3. Use `ax-cli init --force` to regenerate after project changes\n');
201
+ // Show completion summary using wizard
202
+ await wizard.showCompletion(wizardResult, projectInfo);
203
+ // Show progress summary if verbose
204
+ if (options.verbose) {
205
+ console.log('\n📊 ' + progress.getSummary() + '\n');
206
+ }
207
+ progress.stop();
88
208
  // Check for legacy .grok directory
89
209
  const legacyGrokDir = path.join(projectRoot, '.grok');
90
210
  if (fs.existsSync(legacyGrokDir)) {
91
- console.log('ℹ️ Legacy .grok directory detected');
211
+ console.log('\nℹ️ Legacy .grok directory detected');
92
212
  console.log(' Consider migrating to .ax-cli by copying custom settings\n');
93
213
  }
94
214
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { getMCPManager } from '../llm/tools.js';
4
4
  import { MCPServerIdSchema } from '@ax-cli/schemas';
5
5
  import chalk from 'chalk';
6
6
  import { ConsoleMessenger } from '../utils/console-messenger.js';
7
+ import { extractErrorMessage } from '../utils/error-handler.js';
7
8
  export function createMCPCommand() {
8
9
  const mcpCommand = new Command('mcp');
9
10
  mcpCommand.description('Manage MCP (Model Context Protocol) servers');
@@ -93,7 +94,7 @@ export function createMCPCommand() {
93
94
  ConsoleMessenger.plain('mcp_commands.tools_available', { count: tools.length });
94
95
  }
95
96
  catch (error) {
96
- ConsoleMessenger.error('mcp_commands.error_adding_server', { error: error.message });
97
+ ConsoleMessenger.error('mcp_commands.error_adding_server', { error: extractErrorMessage(error) });
97
98
  process.exit(1);
98
99
  }
99
100
  });
@@ -141,7 +142,7 @@ export function createMCPCommand() {
141
142
  ConsoleMessenger.plain('mcp_commands.tools_available', { count: tools.length });
142
143
  }
143
144
  catch (error) {
144
- ConsoleMessenger.error('mcp_commands.error_adding_server', { error: error.message });
145
+ ConsoleMessenger.error('mcp_commands.error_adding_server', { error: extractErrorMessage(error) });
145
146
  process.exit(1);
146
147
  }
147
148
  });