@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.
- package/.ax-cli/CUSTOM.md +111 -89
- package/.ax-cli/index.json +4 -3
- package/README.md +43 -16
- package/config/prompts.yaml +9 -0
- package/config/settings.yaml +2 -0
- package/dist/agent/llm-agent.d.ts +17 -0
- package/dist/agent/llm-agent.js +151 -52
- package/dist/agent/llm-agent.js.map +1 -1
- package/dist/commands/init/wizard.d.ts +66 -0
- package/dist/commands/init/wizard.js +310 -0
- package/dist/commands/init/wizard.js.map +1 -0
- package/dist/commands/init.js +146 -26
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/mcp.js +3 -2
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/memory.d.ts +5 -0
- package/dist/commands/memory.js +257 -0
- package/dist/commands/memory.js.map +1 -0
- package/dist/commands/setup.js +1 -1
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/templates.d.ts +5 -0
- package/dist/commands/templates.js +244 -0
- package/dist/commands/templates.js.map +1 -0
- package/dist/commands/update.js +9 -2
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/usage.js +1 -1
- package/dist/commands/usage.js.map +1 -1
- package/dist/constants.d.ts +2 -0
- package/dist/constants.js +2 -0
- package/dist/constants.js.map +1 -1
- package/dist/hooks/use-input-handler.js +49 -12
- package/dist/hooks/use-input-handler.js.map +1 -1
- package/dist/index.js +143 -16
- package/dist/index.js.map +1 -1
- package/dist/llm/client.d.ts +5 -0
- package/dist/llm/client.js +43 -37
- package/dist/llm/client.js.map +1 -1
- package/dist/schemas/index.d.ts +69 -0
- package/dist/schemas/index.js +29 -0
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/yaml-schemas.d.ts +10 -0
- package/dist/schemas/yaml-schemas.js +2 -0
- package/dist/schemas/yaml-schemas.js.map +1 -1
- package/dist/tools/search.js +7 -1
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/text-editor.js +24 -14
- package/dist/tools/text-editor.js.map +1 -1
- package/dist/tools/todo-tool.js +62 -21
- package/dist/tools/todo-tool.js.map +1 -1
- package/dist/types/template.d.ts +53 -0
- package/dist/types/template.js +5 -0
- package/dist/types/template.js.map +1 -0
- package/dist/ui/components/command-suggestions.js +2 -2
- package/dist/ui/components/command-suggestions.js.map +1 -1
- package/dist/utils/cache.d.ts +1 -0
- package/dist/utils/cache.js +39 -5
- package/dist/utils/cache.js.map +1 -1
- package/dist/utils/config-loader.d.ts +2 -0
- package/dist/utils/config-loader.js +2 -1
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/confirmation-service.js +6 -3
- package/dist/utils/confirmation-service.js.map +1 -1
- package/dist/utils/error-handler.d.ts +5 -0
- package/dist/utils/error-handler.js +9 -3
- package/dist/utils/error-handler.js.map +1 -1
- package/dist/utils/init-previewer.d.ts +56 -0
- package/dist/utils/init-previewer.js +217 -0
- package/dist/utils/init-previewer.js.map +1 -0
- package/dist/utils/init-validator.d.ts +61 -0
- package/dist/utils/init-validator.js +248 -0
- package/dist/utils/init-validator.js.map +1 -0
- package/dist/utils/llm-optimized-instruction-generator.d.ts +31 -0
- package/dist/utils/llm-optimized-instruction-generator.js +296 -0
- package/dist/utils/llm-optimized-instruction-generator.js.map +1 -0
- package/dist/utils/onboarding-manager.d.ts +45 -0
- package/dist/utils/onboarding-manager.js +130 -0
- package/dist/utils/onboarding-manager.js.map +1 -0
- package/dist/utils/path-utils.d.ts +83 -0
- package/dist/utils/path-utils.js +122 -0
- package/dist/utils/path-utils.js.map +1 -0
- package/dist/utils/progress-tracker.d.ts +51 -0
- package/dist/utils/progress-tracker.js +152 -0
- package/dist/utils/progress-tracker.js.map +1 -0
- package/dist/utils/project-analyzer.js +8 -14
- package/dist/utils/project-analyzer.js.map +1 -1
- package/dist/utils/settings-manager.d.ts +3 -3
- package/dist/utils/settings-manager.js +6 -13
- package/dist/utils/settings-manager.js.map +1 -1
- package/dist/utils/string-utils.d.ts +19 -0
- package/dist/utils/string-utils.js +28 -0
- package/dist/utils/string-utils.js.map +1 -0
- package/dist/utils/template-manager.d.ts +54 -0
- package/dist/utils/template-manager.js +421 -0
- package/dist/utils/template-manager.js.map +1 -0
- package/dist/utils/text-utils.js +3 -1
- package/dist/utils/text-utils.js.map +1 -1
- package/package.json +2 -1
- package/vitest.config.ts +6 -0
- package/dist/utils/model-config.d.ts +0 -28
- package/dist/utils/model-config.js +0 -43
- package/dist/utils/model-config.js.map +0 -1
- package/dist/utils/tool-helpers.d.ts +0 -25
- package/dist/utils/tool-helpers.js +0 -53
- 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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"}
|
package/dist/commands/init.js
CHANGED
|
@@ -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 {
|
|
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'
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
//
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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
|
-
//
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/mcp.js
CHANGED
|
@@ -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
|
|
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
|
|
145
|
+
ConsoleMessenger.error('mcp_commands.error_adding_server', { error: extractErrorMessage(error) });
|
|
145
146
|
process.exit(1);
|
|
146
147
|
}
|
|
147
148
|
});
|