@defai.digital/ax-cli 3.7.2 → 3.8.1
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 +128 -56
- package/dist/agent/context-manager.d.ts +15 -1
- package/dist/agent/context-manager.js +50 -19
- package/dist/agent/context-manager.js.map +1 -1
- package/dist/agent/dependency-resolver.js +13 -7
- package/dist/agent/dependency-resolver.js.map +1 -1
- package/dist/agent/llm-agent.d.ts +35 -0
- package/dist/agent/llm-agent.js +137 -4
- package/dist/agent/llm-agent.js.map +1 -1
- package/dist/agent/status-reporter.d.ts +114 -0
- package/dist/agent/status-reporter.js +335 -0
- package/dist/agent/status-reporter.js.map +1 -0
- package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js +8 -2
- package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js.map +1 -1
- package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js +3 -1
- package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js.map +1 -1
- package/dist/analyzers/best-practices/rules/typescript/prefer-const.js +3 -1
- package/dist/analyzers/best-practices/rules/typescript/prefer-const.js.map +1 -1
- package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js +3 -1
- package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js.map +1 -1
- package/dist/analyzers/code-smells/detectors/duplicate-code-detector.js +9 -3
- package/dist/analyzers/code-smells/detectors/duplicate-code-detector.js.map +1 -1
- package/dist/analyzers/git/churn-calculator.d.ts +1 -0
- package/dist/analyzers/git/churn-calculator.js +25 -6
- package/dist/analyzers/git/churn-calculator.js.map +1 -1
- package/dist/analyzers/git/hotspot-detector.js +2 -2
- package/dist/analyzers/git/hotspot-detector.js.map +1 -1
- package/dist/analyzers/metrics/metrics-analyzer.js +1 -1
- package/dist/analyzers/metrics/metrics-analyzer.js.map +1 -1
- package/dist/analyzers/security/security-analyzer.js +1 -1
- package/dist/analyzers/security/security-analyzer.js.map +1 -1
- package/dist/checkpoint/manager.d.ts +1 -0
- package/dist/checkpoint/manager.js +49 -9
- package/dist/checkpoint/manager.js.map +1 -1
- package/dist/checkpoint/storage.js +2 -2
- package/dist/checkpoint/storage.js.map +1 -1
- package/dist/commands/mcp-migrate.d.ts +9 -0
- package/dist/commands/mcp-migrate.js +172 -0
- package/dist/commands/mcp-migrate.js.map +1 -0
- package/dist/commands/status.d.ts +7 -0
- package/dist/commands/status.js +211 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/vscode.d.ts +7 -0
- package/dist/commands/vscode.js +363 -0
- package/dist/commands/vscode.js.map +1 -0
- package/dist/index.js +79 -30
- package/dist/index.js.map +1 -1
- package/dist/llm/client.js +22 -4
- package/dist/llm/client.js.map +1 -1
- package/dist/mcp/automatosx-loader.d.ts +84 -0
- package/dist/mcp/automatosx-loader.js +238 -0
- package/dist/mcp/automatosx-loader.js.map +1 -0
- package/dist/mcp/client-mutex-patch.d.ts +36 -0
- package/dist/mcp/client-mutex-patch.js +75 -0
- package/dist/mcp/client-mutex-patch.js.map +1 -0
- package/dist/mcp/client-v2.d.ts +229 -0
- package/dist/mcp/client-v2.js +740 -0
- package/dist/mcp/client-v2.js.map +1 -0
- package/dist/mcp/client.d.ts +111 -13
- package/dist/mcp/client.js +168 -253
- package/dist/mcp/client.js.map +1 -1
- package/dist/mcp/config-detector-v2.d.ts +83 -0
- package/dist/mcp/config-detector-v2.js +328 -0
- package/dist/mcp/config-detector-v2.js.map +1 -0
- package/dist/mcp/config-detector.d.ts +90 -0
- package/dist/mcp/config-detector.js +242 -0
- package/dist/mcp/config-detector.js.map +1 -0
- package/dist/mcp/config-migrator-v2.d.ts +89 -0
- package/dist/mcp/config-migrator-v2.js +288 -0
- package/dist/mcp/config-migrator-v2.js.map +1 -0
- package/dist/mcp/config-migrator.d.ts +63 -0
- package/dist/mcp/config-migrator.js +269 -0
- package/dist/mcp/config-migrator.js.map +1 -0
- package/dist/mcp/config-v2.d.ts +106 -0
- package/dist/mcp/config-v2.js +417 -0
- package/dist/mcp/config-v2.js.map +1 -0
- package/dist/mcp/config.d.ts +12 -1
- package/dist/mcp/config.js +95 -10
- package/dist/mcp/config.js.map +1 -1
- package/dist/mcp/error-formatter.d.ts +46 -0
- package/dist/mcp/error-formatter.js +244 -0
- package/dist/mcp/error-formatter.js.map +1 -0
- package/dist/mcp/health.d.ts +5 -0
- package/dist/mcp/health.js +22 -2
- package/dist/mcp/health.js.map +1 -1
- package/dist/mcp/invariants.d.ts +141 -0
- package/dist/mcp/invariants.js +243 -0
- package/dist/mcp/invariants.js.map +1 -0
- package/dist/mcp/mutex-safe.d.ts +153 -0
- package/dist/mcp/mutex-safe.js +260 -0
- package/dist/mcp/mutex-safe.js.map +1 -0
- package/dist/mcp/mutex.d.ts +73 -0
- package/dist/mcp/mutex.js +130 -0
- package/dist/mcp/mutex.js.map +1 -0
- package/dist/mcp/reconnection.d.ts +4 -0
- package/dist/mcp/reconnection.js +15 -0
- package/dist/mcp/reconnection.js.map +1 -1
- package/dist/mcp/transports-v2.d.ts +152 -0
- package/dist/mcp/transports-v2.js +481 -0
- package/dist/mcp/transports-v2.js.map +1 -0
- package/dist/mcp/type-safety.d.ts +231 -0
- package/dist/mcp/type-safety.js +273 -0
- package/dist/mcp/type-safety.js.map +1 -0
- package/dist/planner/task-planner.js +13 -0
- package/dist/planner/task-planner.js.map +1 -1
- package/dist/planner/types.d.ts +6 -6
- package/dist/schemas/confirmation-schemas.d.ts +2 -2
- package/dist/schemas/settings-schemas.d.ts +196 -0
- package/dist/schemas/settings-schemas.js +146 -5
- package/dist/schemas/settings-schemas.js.map +1 -1
- package/dist/sdk/index.d.ts +118 -2
- package/dist/sdk/index.js +146 -4
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/testing.d.ts +182 -0
- package/dist/sdk/testing.js +231 -0
- package/dist/sdk/testing.js.map +1 -1
- package/dist/sdk/version.d.ts +114 -15
- package/dist/sdk/version.js +137 -15
- package/dist/sdk/version.js.map +1 -1
- package/dist/tools/bash.js +54 -9
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/registry.d.ts +146 -0
- package/dist/tools/registry.js +170 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/search.js +12 -2
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/text-editor.js +84 -26
- package/dist/tools/text-editor.js.map +1 -1
- package/dist/ui/components/chat-history.js +6 -1
- package/dist/ui/components/chat-history.js.map +1 -1
- package/dist/ui/components/chat-input.d.ts +2 -1
- package/dist/ui/components/chat-input.js +5 -2
- package/dist/ui/components/chat-input.js.map +1 -1
- package/dist/ui/components/chat-interface.js +187 -5
- package/dist/ui/components/chat-interface.js.map +1 -1
- package/dist/ui/components/context-breakdown.d.ts +23 -0
- package/dist/ui/components/context-breakdown.js +124 -0
- package/dist/ui/components/context-breakdown.js.map +1 -0
- package/dist/ui/components/keyboard-help.d.ts +17 -0
- package/dist/ui/components/keyboard-help.js +116 -0
- package/dist/ui/components/keyboard-help.js.map +1 -0
- package/dist/ui/components/keyboard-hints.js +2 -2
- package/dist/ui/components/keyboard-hints.js.map +1 -1
- package/dist/ui/components/quick-actions.js +43 -7
- package/dist/ui/components/quick-actions.js.map +1 -1
- package/dist/ui/components/status-bar.d.ts +3 -0
- package/dist/ui/components/status-bar.js +25 -16
- package/dist/ui/components/status-bar.js.map +1 -1
- package/dist/ui/components/toast-notification.d.ts +42 -0
- package/dist/ui/components/toast-notification.js +30 -2
- package/dist/ui/components/toast-notification.js.map +1 -1
- package/dist/ui/components/tool-group-display.js +34 -4
- package/dist/ui/components/tool-group-display.js.map +1 -1
- package/dist/ui/components/welcome-panel.js +2 -2
- package/dist/ui/components/welcome-panel.js.map +1 -1
- package/dist/ui/hooks/use-enhanced-input.d.ts +9 -1
- package/dist/ui/hooks/use-enhanced-input.js +486 -41
- package/dist/ui/hooks/use-enhanced-input.js.map +1 -1
- package/dist/ui/hooks/use-input-handler.d.ts +11 -1
- package/dist/ui/hooks/use-input-handler.js +67 -3
- package/dist/ui/hooks/use-input-handler.js.map +1 -1
- package/dist/ui/hooks/use-input-history.d.ts +1 -1
- package/dist/ui/hooks/use-input-history.js +50 -14
- package/dist/ui/hooks/use-input-history.js.map +1 -1
- package/dist/ui/utils/bracketed-paste-handler.d.ts +97 -0
- package/dist/ui/utils/bracketed-paste-handler.js +322 -0
- package/dist/ui/utils/bracketed-paste-handler.js.map +1 -0
- package/dist/ui/utils/change-summarizer.js +16 -6
- package/dist/ui/utils/change-summarizer.js.map +1 -1
- package/dist/ui/utils/tool-grouper.d.ts +10 -1
- package/dist/ui/utils/tool-grouper.js +143 -30
- package/dist/ui/utils/tool-grouper.js.map +1 -1
- package/dist/utils/auto-accept-logger.d.ts +173 -0
- package/dist/utils/auto-accept-logger.js +420 -0
- package/dist/utils/auto-accept-logger.js.map +1 -0
- package/dist/utils/background-task-manager.d.ts +11 -0
- package/dist/utils/background-task-manager.js +124 -38
- package/dist/utils/background-task-manager.js.map +1 -1
- package/dist/utils/confirmation-service.d.ts +1 -0
- package/dist/utils/confirmation-service.js +6 -1
- package/dist/utils/confirmation-service.js.map +1 -1
- package/dist/utils/encryption.d.ts +8 -0
- package/dist/utils/encryption.js +44 -27
- package/dist/utils/encryption.js.map +1 -1
- package/dist/utils/enhanced-error-messages.d.ts +33 -0
- package/dist/utils/enhanced-error-messages.js +420 -0
- package/dist/utils/enhanced-error-messages.js.map +1 -0
- package/dist/utils/error-handler.d.ts +13 -3
- package/dist/utils/error-handler.js +16 -4
- package/dist/utils/error-handler.js.map +1 -1
- package/dist/utils/external-editor.d.ts +47 -0
- package/dist/utils/external-editor.js +179 -0
- package/dist/utils/external-editor.js.map +1 -0
- package/dist/utils/history-migration.d.ts +9 -0
- package/dist/utils/history-migration.js +36 -0
- package/dist/utils/history-migration.js.map +1 -0
- package/dist/utils/paste-utils.js +12 -11
- package/dist/utils/paste-utils.js.map +1 -1
- package/dist/utils/rate-limiter.js +7 -0
- package/dist/utils/rate-limiter.js.map +1 -1
- package/dist/utils/safety-rules.d.ts +64 -0
- package/dist/utils/safety-rules.js +225 -0
- package/dist/utils/safety-rules.js.map +1 -0
- package/dist/utils/settings-manager.d.ts +89 -1
- package/dist/utils/settings-manager.js +359 -3
- package/dist/utils/settings-manager.js.map +1 -1
- package/dist/utils/token-counter.d.ts +2 -0
- package/dist/utils/token-counter.js +17 -4
- package/dist/utils/token-counter.js.map +1 -1
- package/dist/utils/version.d.ts +11 -2
- package/dist/utils/version.js +54 -21
- package/dist/utils/version.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import * as fs from 'fs/promises';
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
import { homedir } from 'os';
|
|
6
|
+
import { ConsoleMessenger } from '../utils/console-messenger.js';
|
|
7
|
+
/**
|
|
8
|
+
* Create the status command
|
|
9
|
+
*
|
|
10
|
+
* Provides status reports and summaries for task execution
|
|
11
|
+
*/
|
|
12
|
+
export function createStatusCommand() {
|
|
13
|
+
const statusCommand = new Command('status');
|
|
14
|
+
statusCommand.description('View task execution status and summaries');
|
|
15
|
+
// Show latest status report
|
|
16
|
+
statusCommand
|
|
17
|
+
.command('show')
|
|
18
|
+
.description('Show the latest status report')
|
|
19
|
+
.option('-n, --count <number>', 'Number of reports to show', '1')
|
|
20
|
+
.option('-j, --json', 'Output in JSON format')
|
|
21
|
+
.action(async (options) => {
|
|
22
|
+
try {
|
|
23
|
+
const outputDir = path.join(homedir(), 'automatosx', 'tmp');
|
|
24
|
+
// Find all status reports
|
|
25
|
+
const files = await fs.readdir(outputDir);
|
|
26
|
+
const statusFiles = files
|
|
27
|
+
.filter(f => f.startsWith('status-') && f.endsWith('.md'))
|
|
28
|
+
.sort()
|
|
29
|
+
.reverse();
|
|
30
|
+
if (statusFiles.length === 0) {
|
|
31
|
+
console.log(chalk.yellow('No status reports found.'));
|
|
32
|
+
console.log(chalk.gray(`Expected location: ${outputDir}`));
|
|
33
|
+
console.log();
|
|
34
|
+
console.log(chalk.gray('💡 Status reports are generated when:'));
|
|
35
|
+
console.log(chalk.gray(' - A multi-phase plan completes'));
|
|
36
|
+
console.log(chalk.gray(' - You run: ax status generate'));
|
|
37
|
+
console.log();
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const count = Math.min(parseInt(options.count), statusFiles.length);
|
|
41
|
+
const reportsToShow = statusFiles.slice(0, count);
|
|
42
|
+
if (options.json) {
|
|
43
|
+
const reports = await Promise.all(reportsToShow.map(async (file) => ({
|
|
44
|
+
filename: file,
|
|
45
|
+
path: path.join(outputDir, file),
|
|
46
|
+
content: await fs.readFile(path.join(outputDir, file), 'utf-8')
|
|
47
|
+
})));
|
|
48
|
+
console.log(JSON.stringify(reports, null, 2));
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
// Display in human-readable format
|
|
52
|
+
for (const file of reportsToShow) {
|
|
53
|
+
const filePath = path.join(outputDir, file);
|
|
54
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
55
|
+
console.log();
|
|
56
|
+
console.log(chalk.bold.blue('📊 Status Report'));
|
|
57
|
+
console.log(chalk.gray('─'.repeat(60)));
|
|
58
|
+
console.log(chalk.gray(`File: ${file}`));
|
|
59
|
+
console.log(chalk.gray(`Path: ${filePath}`));
|
|
60
|
+
console.log(chalk.gray('─'.repeat(60)));
|
|
61
|
+
console.log();
|
|
62
|
+
console.log(content);
|
|
63
|
+
console.log();
|
|
64
|
+
}
|
|
65
|
+
if (statusFiles.length > count) {
|
|
66
|
+
console.log(chalk.gray(`💡 ${statusFiles.length - count} more report(s) available.`));
|
|
67
|
+
console.log(chalk.gray(` Use: ax status show -n ${statusFiles.length} to see all`));
|
|
68
|
+
console.log();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
ConsoleMessenger.error('status_commands.error_showing_status', { error: error.message });
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
// List all status reports and summaries
|
|
77
|
+
statusCommand
|
|
78
|
+
.command('list')
|
|
79
|
+
.description('List all status reports and summaries')
|
|
80
|
+
.option('-s, --summaries', 'Show summaries instead of status reports')
|
|
81
|
+
.option('-a, --all', 'Show both status reports and summaries')
|
|
82
|
+
.action(async (options) => {
|
|
83
|
+
try {
|
|
84
|
+
const outputDir = path.join(homedir(), 'automatosx', 'tmp');
|
|
85
|
+
// Find files
|
|
86
|
+
const files = await fs.readdir(outputDir);
|
|
87
|
+
const statusFiles = files.filter(f => f.startsWith('status-') && f.endsWith('.md')).sort().reverse();
|
|
88
|
+
const summaryFiles = files.filter(f => f.startsWith('summary-') && f.endsWith('.md')).sort().reverse();
|
|
89
|
+
console.log();
|
|
90
|
+
console.log(chalk.bold.blue('📊 Available Reports'));
|
|
91
|
+
console.log(chalk.gray('─'.repeat(60)));
|
|
92
|
+
console.log();
|
|
93
|
+
if (options.all || !options.summaries) {
|
|
94
|
+
console.log(chalk.bold('Status Reports:'));
|
|
95
|
+
if (statusFiles.length === 0) {
|
|
96
|
+
console.log(chalk.gray(' No status reports found'));
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
for (const file of statusFiles) {
|
|
100
|
+
const stats = await fs.stat(path.join(outputDir, file));
|
|
101
|
+
const timestamp = stats.mtime.toLocaleString();
|
|
102
|
+
console.log(` ${chalk.cyan(file)} ${chalk.gray(`(${timestamp})`)}`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
console.log();
|
|
106
|
+
}
|
|
107
|
+
if (options.all || options.summaries) {
|
|
108
|
+
console.log(chalk.bold('Context Summaries:'));
|
|
109
|
+
if (summaryFiles.length === 0) {
|
|
110
|
+
console.log(chalk.gray(' No summaries found'));
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
for (const file of summaryFiles) {
|
|
114
|
+
const stats = await fs.stat(path.join(outputDir, file));
|
|
115
|
+
const timestamp = stats.mtime.toLocaleString();
|
|
116
|
+
console.log(` ${chalk.cyan(file)} ${chalk.gray(`(${timestamp})`)}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
console.log();
|
|
120
|
+
}
|
|
121
|
+
console.log(chalk.gray('💡 View a report: ax status show'));
|
|
122
|
+
console.log(chalk.gray(' View location: ' + outputDir));
|
|
123
|
+
console.log();
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
ConsoleMessenger.error('status_commands.error_listing_reports', { error: error.message });
|
|
127
|
+
process.exit(1);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
// Generate a status report on demand
|
|
131
|
+
statusCommand
|
|
132
|
+
.command('generate')
|
|
133
|
+
.description('Generate a status report from current session')
|
|
134
|
+
.action(async () => {
|
|
135
|
+
try {
|
|
136
|
+
console.log(chalk.yellow('⚠️ Status report generation requires an active agent session.'));
|
|
137
|
+
console.log(chalk.gray(' This command is not yet implemented for on-demand generation.'));
|
|
138
|
+
console.log();
|
|
139
|
+
console.log(chalk.gray('💡 Status reports are automatically generated when:'));
|
|
140
|
+
console.log(chalk.gray(' - A multi-phase plan completes successfully'));
|
|
141
|
+
console.log(chalk.gray(' - Context window approaches limit (summaries)'));
|
|
142
|
+
console.log();
|
|
143
|
+
console.log(chalk.gray(' To view existing reports: ax status show'));
|
|
144
|
+
console.log();
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
ConsoleMessenger.error('status_commands.error_generating_report', { error: error.message });
|
|
148
|
+
process.exit(1);
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
// Clean up old reports
|
|
152
|
+
statusCommand
|
|
153
|
+
.command('clean')
|
|
154
|
+
.description('Clean up old status reports and summaries')
|
|
155
|
+
.option('-d, --days <number>', 'Keep reports from last N days', '7')
|
|
156
|
+
.option('-f, --force', 'Skip confirmation')
|
|
157
|
+
.action(async (options) => {
|
|
158
|
+
try {
|
|
159
|
+
const outputDir = path.join(homedir(), 'automatosx', 'tmp');
|
|
160
|
+
const days = parseInt(options.days);
|
|
161
|
+
const cutoffDate = new Date();
|
|
162
|
+
cutoffDate.setDate(cutoffDate.getDate() - days);
|
|
163
|
+
// Find files
|
|
164
|
+
const files = await fs.readdir(outputDir);
|
|
165
|
+
const reportFiles = files.filter(f => (f.startsWith('status-') || f.startsWith('summary-')) && f.endsWith('.md'));
|
|
166
|
+
const filesToDelete = [];
|
|
167
|
+
for (const file of reportFiles) {
|
|
168
|
+
const filePath = path.join(outputDir, file);
|
|
169
|
+
const stats = await fs.stat(filePath);
|
|
170
|
+
if (stats.mtime < cutoffDate) {
|
|
171
|
+
filesToDelete.push(file);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
if (filesToDelete.length === 0) {
|
|
175
|
+
console.log(chalk.green('✓ No old reports to clean up'));
|
|
176
|
+
console.log(chalk.gray(` All reports are from the last ${days} day(s)`));
|
|
177
|
+
console.log();
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
console.log();
|
|
181
|
+
console.log(chalk.yellow(`⚠️ Found ${filesToDelete.length} report(s) older than ${days} day(s):`));
|
|
182
|
+
console.log();
|
|
183
|
+
for (const file of filesToDelete) {
|
|
184
|
+
const stats = await fs.stat(path.join(outputDir, file));
|
|
185
|
+
console.log(` ${chalk.gray(file)} ${chalk.gray(`(${stats.mtime.toLocaleDateString()})`)}`);
|
|
186
|
+
}
|
|
187
|
+
console.log();
|
|
188
|
+
if (!options.force) {
|
|
189
|
+
console.log(chalk.yellow('Use --force to delete these files'));
|
|
190
|
+
console.log();
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
// Delete files
|
|
194
|
+
for (const file of filesToDelete) {
|
|
195
|
+
await fs.unlink(path.join(outputDir, file));
|
|
196
|
+
}
|
|
197
|
+
console.log(chalk.green(`✓ Deleted ${filesToDelete.length} old report(s)`));
|
|
198
|
+
console.log();
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
ConsoleMessenger.error('status_commands.error_cleaning_reports', { error: error.message });
|
|
202
|
+
process.exit(1);
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
// Default action (show latest)
|
|
206
|
+
statusCommand.action(() => {
|
|
207
|
+
statusCommand.commands.find(cmd => cmd.name() === 'show')?.parseAsync(['node', 'ax', 'status', 'show'], { from: 'user' });
|
|
208
|
+
});
|
|
209
|
+
return statusCommand;
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import * as fs from 'fs/promises';
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
import { exec } from 'child_process';
|
|
6
|
+
import { promisify } from 'util';
|
|
7
|
+
import { ConsoleMessenger } from '../utils/console-messenger.js';
|
|
8
|
+
const execAsync = promisify(exec);
|
|
9
|
+
/**
|
|
10
|
+
* VSCode Extension Information
|
|
11
|
+
*/
|
|
12
|
+
const EXTENSION_ID = 'defai-digital.ax-cli-vscode';
|
|
13
|
+
const VSIX_FILENAME = 'ax-cli-vscode-0.1.0.vsix';
|
|
14
|
+
/**
|
|
15
|
+
* Detect if VSCode is installed
|
|
16
|
+
*/
|
|
17
|
+
async function isVSCodeInstalled() {
|
|
18
|
+
try {
|
|
19
|
+
// Try 'code' command
|
|
20
|
+
await execAsync('code --version');
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
try {
|
|
25
|
+
// Try alternative paths on macOS
|
|
26
|
+
await execAsync('/usr/local/bin/code --version');
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
try {
|
|
31
|
+
// Try VSCodium
|
|
32
|
+
await execAsync('codium --version');
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get the code command (code, codium, or full path)
|
|
43
|
+
*/
|
|
44
|
+
async function getCodeCommand() {
|
|
45
|
+
try {
|
|
46
|
+
await execAsync('code --version');
|
|
47
|
+
return 'code';
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
try {
|
|
51
|
+
await execAsync('/usr/local/bin/code --version');
|
|
52
|
+
return '/usr/local/bin/code';
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
try {
|
|
56
|
+
await execAsync('codium --version');
|
|
57
|
+
return 'codium';
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
throw new Error('VSCode command not found');
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Check if AX CLI extension is installed
|
|
67
|
+
*/
|
|
68
|
+
async function isExtensionInstalled() {
|
|
69
|
+
try {
|
|
70
|
+
const codeCmd = await getCodeCommand();
|
|
71
|
+
const { stdout } = await execAsync(`${codeCmd} --list-extensions`);
|
|
72
|
+
return stdout.includes(EXTENSION_ID);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get extension version if installed
|
|
80
|
+
*/
|
|
81
|
+
async function getInstalledVersion() {
|
|
82
|
+
try {
|
|
83
|
+
const codeCmd = await getCodeCommand();
|
|
84
|
+
const { stdout } = await execAsync(`${codeCmd} --list-extensions --show-versions`);
|
|
85
|
+
const lines = stdout.split('\n');
|
|
86
|
+
const extensionLine = lines.find(line => line.startsWith(EXTENSION_ID));
|
|
87
|
+
if (extensionLine) {
|
|
88
|
+
const match = extensionLine.match(/@(.+)$/);
|
|
89
|
+
return match ? match[1] : null;
|
|
90
|
+
}
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Find the VSIX file in the vscode-extension directory
|
|
99
|
+
*/
|
|
100
|
+
async function findVSIXFile() {
|
|
101
|
+
try {
|
|
102
|
+
// Check in the vscode-extension directory relative to the package
|
|
103
|
+
const possiblePaths = [
|
|
104
|
+
// Development: relative to src/commands/
|
|
105
|
+
path.resolve(__dirname, '../../vscode-extension', VSIX_FILENAME),
|
|
106
|
+
// Installed package: in node_modules
|
|
107
|
+
path.resolve(__dirname, '../../../vscode-extension', VSIX_FILENAME),
|
|
108
|
+
// Alternative: check parent directory
|
|
109
|
+
path.resolve(__dirname, '../../../../vscode-extension', VSIX_FILENAME),
|
|
110
|
+
];
|
|
111
|
+
for (const vsixPath of possiblePaths) {
|
|
112
|
+
try {
|
|
113
|
+
await fs.access(vsixPath);
|
|
114
|
+
return vsixPath;
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
// Try next path
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Install the VSIX extension
|
|
128
|
+
*/
|
|
129
|
+
async function installExtension(vsixPath) {
|
|
130
|
+
const codeCmd = await getCodeCommand();
|
|
131
|
+
await execAsync(`${codeCmd} --install-extension "${vsixPath}"`);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Uninstall the extension
|
|
135
|
+
*/
|
|
136
|
+
async function uninstallExtension() {
|
|
137
|
+
const codeCmd = await getCodeCommand();
|
|
138
|
+
await execAsync(`${codeCmd} --uninstall-extension ${EXTENSION_ID}`);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Create the vscode command
|
|
142
|
+
*
|
|
143
|
+
* Manages VSCode extension installation and status
|
|
144
|
+
*/
|
|
145
|
+
export function createVSCodeCommand() {
|
|
146
|
+
const vscodeCommand = new Command('vscode');
|
|
147
|
+
vscodeCommand.description('Manage AX CLI VSCode extension');
|
|
148
|
+
// Check extension status
|
|
149
|
+
vscodeCommand
|
|
150
|
+
.command('status')
|
|
151
|
+
.description('Check VSCode extension installation status')
|
|
152
|
+
.action(async () => {
|
|
153
|
+
try {
|
|
154
|
+
console.log();
|
|
155
|
+
console.log(chalk.bold.blue('📊 VSCode Extension Status'));
|
|
156
|
+
console.log(chalk.gray('─'.repeat(60)));
|
|
157
|
+
console.log();
|
|
158
|
+
// Check VSCode installation
|
|
159
|
+
const vscodeInstalled = await isVSCodeInstalled();
|
|
160
|
+
if (!vscodeInstalled) {
|
|
161
|
+
console.log(chalk.red('✗ VSCode not found'));
|
|
162
|
+
console.log();
|
|
163
|
+
console.log(chalk.gray('💡 Install VSCode from:'));
|
|
164
|
+
console.log(chalk.gray(' https://code.visualstudio.com/'));
|
|
165
|
+
console.log();
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
const codeCmd = await getCodeCommand();
|
|
169
|
+
console.log(chalk.green(`✓ VSCode installed (${codeCmd})`));
|
|
170
|
+
// Check extension installation
|
|
171
|
+
const extensionInstalled = await isExtensionInstalled();
|
|
172
|
+
if (!extensionInstalled) {
|
|
173
|
+
console.log(chalk.yellow('○ AX CLI extension not installed'));
|
|
174
|
+
console.log();
|
|
175
|
+
console.log(chalk.gray('💡 Install with:'));
|
|
176
|
+
console.log(chalk.gray(' ax-cli vscode install'));
|
|
177
|
+
console.log();
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
const version = await getInstalledVersion();
|
|
181
|
+
console.log(chalk.green(`✓ AX CLI extension installed${version ? ` (v${version})` : ''}`));
|
|
182
|
+
console.log();
|
|
183
|
+
// Check for VSIX file
|
|
184
|
+
const vsixPath = await findVSIXFile();
|
|
185
|
+
if (vsixPath) {
|
|
186
|
+
console.log(chalk.gray(`📦 VSIX file available: ${vsixPath}`));
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
console.log(chalk.yellow('⚠️ VSIX file not found (reinstall may not be available)'));
|
|
190
|
+
}
|
|
191
|
+
console.log();
|
|
192
|
+
console.log(chalk.gray('💡 Commands:'));
|
|
193
|
+
console.log(chalk.gray(' ax-cli vscode install - Install/update extension'));
|
|
194
|
+
console.log(chalk.gray(' ax-cli vscode uninstall - Remove extension'));
|
|
195
|
+
console.log();
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
ConsoleMessenger.error('vscode_commands.error_checking_status', { error: error.message });
|
|
199
|
+
process.exit(1);
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
// Install extension
|
|
203
|
+
vscodeCommand
|
|
204
|
+
.command('install')
|
|
205
|
+
.description('Install or update the AX CLI VSCode extension')
|
|
206
|
+
.option('-f, --force', 'Force reinstall even if already installed')
|
|
207
|
+
.action(async (options) => {
|
|
208
|
+
try {
|
|
209
|
+
console.log();
|
|
210
|
+
console.log(chalk.bold.blue('📦 Installing AX CLI VSCode Extension'));
|
|
211
|
+
console.log(chalk.gray('─'.repeat(60)));
|
|
212
|
+
console.log();
|
|
213
|
+
// Check VSCode installation
|
|
214
|
+
const vscodeInstalled = await isVSCodeInstalled();
|
|
215
|
+
if (!vscodeInstalled) {
|
|
216
|
+
console.log(chalk.red('✗ VSCode not found'));
|
|
217
|
+
console.log();
|
|
218
|
+
console.log(chalk.gray('💡 Please install VSCode first:'));
|
|
219
|
+
console.log(chalk.gray(' https://code.visualstudio.com/'));
|
|
220
|
+
console.log();
|
|
221
|
+
process.exit(1);
|
|
222
|
+
}
|
|
223
|
+
const codeCmd = await getCodeCommand();
|
|
224
|
+
console.log(chalk.green(`✓ VSCode found (${codeCmd})`));
|
|
225
|
+
// Check if already installed
|
|
226
|
+
if (!options.force) {
|
|
227
|
+
const extensionInstalled = await isExtensionInstalled();
|
|
228
|
+
if (extensionInstalled) {
|
|
229
|
+
const version = await getInstalledVersion();
|
|
230
|
+
console.log(chalk.yellow(`○ Extension already installed${version ? ` (v${version})` : ''}`));
|
|
231
|
+
console.log();
|
|
232
|
+
console.log(chalk.gray('💡 Use --force to reinstall'));
|
|
233
|
+
console.log();
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
// Find VSIX file
|
|
238
|
+
const vsixPath = await findVSIXFile();
|
|
239
|
+
if (!vsixPath) {
|
|
240
|
+
console.log(chalk.red('✗ VSIX file not found'));
|
|
241
|
+
console.log();
|
|
242
|
+
console.log(chalk.gray('Expected locations:'));
|
|
243
|
+
console.log(chalk.gray(' ./vscode-extension/' + VSIX_FILENAME));
|
|
244
|
+
console.log(chalk.gray(' ../vscode-extension/' + VSIX_FILENAME));
|
|
245
|
+
console.log();
|
|
246
|
+
console.log(chalk.gray('💡 Build the extension first:'));
|
|
247
|
+
console.log(chalk.gray(' cd vscode-extension'));
|
|
248
|
+
console.log(chalk.gray(' npm run package:vsix'));
|
|
249
|
+
console.log();
|
|
250
|
+
process.exit(1);
|
|
251
|
+
}
|
|
252
|
+
console.log(chalk.green(`✓ VSIX file found: ${path.basename(vsixPath)}`));
|
|
253
|
+
console.log();
|
|
254
|
+
// Uninstall if forcing
|
|
255
|
+
if (options.force) {
|
|
256
|
+
const extensionInstalled = await isExtensionInstalled();
|
|
257
|
+
if (extensionInstalled) {
|
|
258
|
+
console.log(chalk.yellow('○ Uninstalling previous version...'));
|
|
259
|
+
await uninstallExtension();
|
|
260
|
+
console.log(chalk.green('✓ Previous version uninstalled'));
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
// Install extension
|
|
264
|
+
console.log(chalk.yellow('○ Installing extension...'));
|
|
265
|
+
await installExtension(vsixPath);
|
|
266
|
+
console.log(chalk.green('✓ Extension installed successfully!'));
|
|
267
|
+
console.log();
|
|
268
|
+
console.log(chalk.bold.green('🎉 AX CLI VSCode Extension Ready!'));
|
|
269
|
+
console.log();
|
|
270
|
+
console.log(chalk.gray('Next steps:'));
|
|
271
|
+
console.log(chalk.gray(' 1. Reload VSCode if it\'s already open'));
|
|
272
|
+
console.log(chalk.gray(' 2. Press Cmd+Shift+A (Mac) or Ctrl+Shift+A (Windows/Linux)'));
|
|
273
|
+
console.log(chalk.gray(' 3. Start chatting with AX CLI!'));
|
|
274
|
+
console.log();
|
|
275
|
+
}
|
|
276
|
+
catch (error) {
|
|
277
|
+
ConsoleMessenger.error('vscode_commands.error_installing', { error: error.message });
|
|
278
|
+
process.exit(1);
|
|
279
|
+
}
|
|
280
|
+
});
|
|
281
|
+
// Uninstall extension
|
|
282
|
+
vscodeCommand
|
|
283
|
+
.command('uninstall')
|
|
284
|
+
.description('Uninstall the AX CLI VSCode extension')
|
|
285
|
+
.action(async () => {
|
|
286
|
+
try {
|
|
287
|
+
console.log();
|
|
288
|
+
console.log(chalk.bold.yellow('🗑️ Uninstalling AX CLI VSCode Extension'));
|
|
289
|
+
console.log(chalk.gray('─'.repeat(60)));
|
|
290
|
+
console.log();
|
|
291
|
+
// Check VSCode installation
|
|
292
|
+
const vscodeInstalled = await isVSCodeInstalled();
|
|
293
|
+
if (!vscodeInstalled) {
|
|
294
|
+
console.log(chalk.yellow('○ VSCode not found'));
|
|
295
|
+
console.log();
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
298
|
+
// Check if extension is installed
|
|
299
|
+
const extensionInstalled = await isExtensionInstalled();
|
|
300
|
+
if (!extensionInstalled) {
|
|
301
|
+
console.log(chalk.yellow('○ Extension not installed'));
|
|
302
|
+
console.log();
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
// Uninstall
|
|
306
|
+
console.log(chalk.yellow('○ Uninstalling extension...'));
|
|
307
|
+
await uninstallExtension();
|
|
308
|
+
console.log(chalk.green('✓ Extension uninstalled successfully'));
|
|
309
|
+
console.log();
|
|
310
|
+
}
|
|
311
|
+
catch (error) {
|
|
312
|
+
ConsoleMessenger.error('vscode_commands.error_uninstalling', { error: error.message });
|
|
313
|
+
process.exit(1);
|
|
314
|
+
}
|
|
315
|
+
});
|
|
316
|
+
// Auto-install command (silent, for startup check)
|
|
317
|
+
vscodeCommand
|
|
318
|
+
.command('auto-install')
|
|
319
|
+
.description('Automatically install extension if VSCode is detected (silent)')
|
|
320
|
+
.option('--check-only', 'Only check, don\'t install')
|
|
321
|
+
.action(async (options) => {
|
|
322
|
+
try {
|
|
323
|
+
// Silent check - only show output if action needed
|
|
324
|
+
const vscodeInstalled = await isVSCodeInstalled();
|
|
325
|
+
if (!vscodeInstalled) {
|
|
326
|
+
// VSCode not installed, skip silently
|
|
327
|
+
return;
|
|
328
|
+
}
|
|
329
|
+
const extensionInstalled = await isExtensionInstalled();
|
|
330
|
+
if (extensionInstalled) {
|
|
331
|
+
// Already installed, skip silently
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
334
|
+
if (options.checkOnly) {
|
|
335
|
+
// Just checking, report status
|
|
336
|
+
console.log(chalk.yellow('AX CLI VSCode extension not installed'));
|
|
337
|
+
console.log(chalk.gray('Run: ax-cli vscode install'));
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
340
|
+
// Try to auto-install
|
|
341
|
+
const vsixPath = await findVSIXFile();
|
|
342
|
+
if (!vsixPath) {
|
|
343
|
+
// VSIX not available, skip silently
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
console.log();
|
|
347
|
+
console.log(chalk.blue('📦 Installing AX CLI VSCode extension...'));
|
|
348
|
+
await installExtension(vsixPath);
|
|
349
|
+
console.log(chalk.green('✓ Extension installed! Reload VSCode to activate.'));
|
|
350
|
+
console.log();
|
|
351
|
+
}
|
|
352
|
+
catch (error) {
|
|
353
|
+
// Silent failure - don't interrupt CLI startup
|
|
354
|
+
// User can manually install with 'ax-cli vscode install'
|
|
355
|
+
}
|
|
356
|
+
});
|
|
357
|
+
// Default action (show status)
|
|
358
|
+
vscodeCommand.action(() => {
|
|
359
|
+
vscodeCommand.commands.find(cmd => cmd.name() === 'status')?.parseAsync(['node', 'ax', 'vscode', 'status'], { from: 'user' });
|
|
360
|
+
});
|
|
361
|
+
return vscodeCommand;
|
|
362
|
+
}
|
|
363
|
+
//# sourceMappingURL=vscode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vscode.js","sourceRoot":"","sources":["../../src/commands/vscode.ts"],"names":[],"mappings":"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"}
|