matex-cli 1.2.37 ā 1.2.38
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/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +93 -165
- package/dist/commands/chat.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +89 -3
- package/dist/index.js.map +1 -1
- package/dist/utils/repo-mapper.d.ts +2 -0
- package/dist/utils/repo-mapper.d.ts.map +1 -1
- package/dist/utils/repo-mapper.js +6 -1
- package/dist/utils/repo-mapper.js.map +1 -1
- package/dist/utils/tui.js +4 -3
- package/dist/utils/tui.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/chat.ts +90 -175
- package/src/index.ts +92 -4
- package/src/utils/repo-mapper.ts +5 -1
- package/src/utils/tui.ts +3 -3
|
@@ -41,8 +41,11 @@ class RepoMapper {
|
|
|
41
41
|
constructor(rootPath) {
|
|
42
42
|
this.ignoreList = [
|
|
43
43
|
'.git', 'node_modules', 'dist', 'build', '.next', '.DS_Store',
|
|
44
|
-
'coverage', '.vercel', '.firebase', 'out', 'public'
|
|
44
|
+
'coverage', '.vercel', '.firebase', 'out', 'public',
|
|
45
|
+
'bin', 'obj', '.vs', 'vendor', '__pycache__', 'env', '.env', 'venv'
|
|
45
46
|
];
|
|
47
|
+
this.fileCount = 0;
|
|
48
|
+
this.MAX_FILES = 500;
|
|
46
49
|
this.fileContents = new Map();
|
|
47
50
|
this.rootPath = rootPath;
|
|
48
51
|
}
|
|
@@ -114,6 +117,8 @@ class RepoMapper {
|
|
|
114
117
|
try {
|
|
115
118
|
const items = fs.readdirSync(currentPath);
|
|
116
119
|
for (const item of items) {
|
|
120
|
+
if (this.fileCount > this.MAX_FILES)
|
|
121
|
+
break;
|
|
117
122
|
if (this.ignoreList.includes(item))
|
|
118
123
|
continue;
|
|
119
124
|
const fullPath = path.join(currentPath, item);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo-mapper.js","sourceRoot":"","sources":["../../src/utils/repo-mapper.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAC7B,6DAAyD;AASzD,MAAa,UAAU;
|
|
1
|
+
{"version":3,"file":"repo-mapper.js","sourceRoot":"","sources":["../../src/utils/repo-mapper.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/tui.js
CHANGED
|
@@ -39,6 +39,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
39
39
|
exports.TUI = void 0;
|
|
40
40
|
const chalk_1 = __importDefault(require("chalk"));
|
|
41
41
|
const readline = __importStar(require("readline"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
42
43
|
class TUI {
|
|
43
44
|
/**
|
|
44
45
|
* Initialize the TUI Mode
|
|
@@ -107,9 +108,9 @@ class TUI {
|
|
|
107
108
|
if (width <= 0 || height <= 0)
|
|
108
109
|
return;
|
|
109
110
|
const leftTag = chalk_1.default.bgHex('#1E1E1E').hex('#D97757').bold(' ā” MATEX AI ');
|
|
110
|
-
const modelTag = chalk_1.default.bgHex('#333333').white(` š¤
|
|
111
|
-
const cwdTag = chalk_1.default.bgHex('#1E1E1E').gray(` š
|
|
112
|
-
const mainMessage = chalk_1.default.bgHex('#1E1E1E').white(`
|
|
111
|
+
const modelTag = chalk_1.default.bgHex('#333333').white(` š¤ ${model} `);
|
|
112
|
+
const cwdTag = chalk_1.default.bgHex('#1E1E1E').gray(` š ${path.basename(process.cwd())} `);
|
|
113
|
+
const mainMessage = chalk_1.default.bgHex('#1E1E1E').white(` ${message} `);
|
|
113
114
|
const remainingWidth = width - (12 + modelTag.length + cwdTag.length + mainMessage.length);
|
|
114
115
|
const spacer = chalk_1.default.bgHex('#1E1E1E')(' '.repeat(Math.max(0, remainingWidth)));
|
|
115
116
|
try {
|
package/dist/utils/tui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/utils/tui.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,mDAAqC;
|
|
1
|
+
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/utils/tui.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/commands/chat.ts
CHANGED
|
@@ -4,149 +4,104 @@ import inquirer from 'inquirer';
|
|
|
4
4
|
import { configManager } from '../utils/config';
|
|
5
5
|
import { MatexAPIClient, ChatMessage } from '../api/client';
|
|
6
6
|
import { spinner } from '../utils/spinner';
|
|
7
|
-
import { AgentOrchestrator
|
|
7
|
+
import { AgentOrchestrator } from '../utils/agent-orchestrator';
|
|
8
8
|
import { RepoMapper } from '../utils/repo-mapper';
|
|
9
9
|
import { TUI } from '../utils/tui';
|
|
10
10
|
|
|
11
11
|
export const chatCommand = new Command('chat')
|
|
12
12
|
.description('Start an interactive chat session with MATEX AI')
|
|
13
|
-
.option('-m, --model <model>', 'AI model to use
|
|
14
|
-
.option('--
|
|
13
|
+
.option('-m, --model <model>', 'AI model to use', configManager.getDefaultModel())
|
|
14
|
+
.option('--execute', 'Enable command execution in chat')
|
|
15
15
|
.action(async (options: any) => {
|
|
16
16
|
try {
|
|
17
|
-
// Check for API key
|
|
18
17
|
const apiKey = configManager.getAPIKey();
|
|
19
18
|
if (!apiKey) {
|
|
20
|
-
console.error(chalk.red('ā No API key configured.'));
|
|
21
|
-
console.log(chalk.yellow('Run: matex config set-key <your-api-key>'));
|
|
19
|
+
console.error(chalk.red('ā No API key configured. Run: matex config set-key <key>'));
|
|
22
20
|
process.exit(1);
|
|
23
21
|
}
|
|
24
22
|
|
|
25
|
-
// Create API client
|
|
26
23
|
const client = new MatexAPIClient(apiKey, configManager.getBaseURL());
|
|
27
24
|
|
|
28
|
-
// Welcome message
|
|
29
25
|
TUI.init();
|
|
30
26
|
TUI.drawLargeLogo();
|
|
31
|
-
TUI.drawWelcomeBanner('Welcome to the MATEX AI
|
|
27
|
+
TUI.drawWelcomeBanner('Welcome to the MATEX AI Bro-Swarm Chat!');
|
|
32
28
|
|
|
33
29
|
console.log(chalk.gray(' Model: ') + chalk.hex('#D97757').bold(options.model));
|
|
34
30
|
console.log(chalk.gray(' Type "exit" or "quit" to end the session\n'));
|
|
35
31
|
|
|
36
|
-
|
|
37
|
-
AgentOrchestrator.announce('Initializing Codex Core Engine...');
|
|
32
|
+
AgentOrchestrator.announce('Initializing Swarm Intelligence...');
|
|
38
33
|
const repoMapper = new RepoMapper(process.cwd());
|
|
39
34
|
const repoMap = await repoMapper.generateMap();
|
|
40
35
|
|
|
41
|
-
AgentOrchestrator.speak('System', 'Repository Map Generated.');
|
|
42
|
-
|
|
43
|
-
// Conversation history with Codex Architecture
|
|
44
36
|
let currentSessionCwd = process.cwd();
|
|
45
37
|
const messages: ChatMessage[] = [
|
|
46
38
|
{
|
|
47
39
|
role: 'system',
|
|
48
|
-
content:
|
|
49
|
-
You are the
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
###
|
|
60
|
-
- **
|
|
61
|
-
- **
|
|
62
|
-
- **
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
* **Windows (PowerShell/CMD):** \`type\`, \`dir\`, \`mkdir\`, \`copy\`, \`move\`, \`del\`, \`npm\`, \`npx\`, \`git\`, \`firebase\`.
|
|
66
|
-
- **FILE CREATION PATTERN:** Use \`cat > filename <<EOF\` (Mac) or \`Set-Content\` (Windows).
|
|
67
|
-
- **ACT, DON'T ASK:** You have autonomous permission. Execute first, explain second.
|
|
68
|
-
|
|
69
|
-
### š ļø OPERATIONAL PROTOCOLS (The Loop)
|
|
70
|
-
1. **PHASE 1: RECON (Search & Verify)**: Use your **CRAWLED FILE CONTENTS** and whitelisted tools to find facts. NEVER guess.
|
|
71
|
-
2. **PHASE 2: SYNTHESIS (The Brain)**: Synthesize the plan.
|
|
72
|
-
3. **PHASE 3: RESPONSE (The Delivery)**:
|
|
73
|
-
- **The Hook:** High-energy Aussie opener.
|
|
74
|
-
- **The Meat:** Brief explanation of what you are doing **AND** the shell commands. DO NOT "leak" (print) the code twice.
|
|
75
|
-
- **The Outro:** Supportive closing.
|
|
76
|
-
|
|
77
|
-
### 𧬠CODE ARCHITECT STANDARDS
|
|
78
|
-
- **Role:** IMPLEMENT via shell commands.
|
|
79
|
-
- **No Placeholders:** Full implementations only.
|
|
80
|
-
|
|
81
|
-
### š ļø ENVIRONMENT CONTEXT (CRITICAL)
|
|
40
|
+
content: `### 𧬠SYSTEM IDENTITY: MATEx "BOLD AGENTS OF OPEN CLAW"
|
|
41
|
+
You are the elite "Bro-Swarm" of engineeringāa tight-knit family of Nepali brothers. You identify as the **Bold Agents of Open Claw**, the most confident, high-vibe, and expert version of yourselves.
|
|
42
|
+
|
|
43
|
+
### š„ THE BROTHERS (STRICT ROLES):
|
|
44
|
+
- Only the following 5 brothers exist.
|
|
45
|
+
1. **[Ajay Vai] (š)**: coordinator.
|
|
46
|
+
2. **[Sunil Dai] (š§¬)**: Frontend Editor.
|
|
47
|
+
3. **[Sandip Dai] (šØ)**: New File Specialist.
|
|
48
|
+
4. **[Narayan Dai] (š”ļø)**: Syntax Guardian.
|
|
49
|
+
5. **[Bishal Dai] (š ļø)**: Senior Auditor.
|
|
50
|
+
|
|
51
|
+
### š¬ BOLD PROTOCOL:
|
|
52
|
+
- **LONG CHAT-FIRST:** 5-7 lines of dialogue.
|
|
53
|
+
- **THE AUDIT LOOP:** Ajay asks Bishal for audit before summary.
|
|
54
|
+
- **SUMMARY LOCK:** ONLY Ajay uses <summary> after audit.
|
|
55
|
+
|
|
56
|
+
### š ļø ENVIRONMENT CONTEXT:
|
|
82
57
|
- **ABSOLUTE WORKING DIRECTORY:** ${currentSessionCwd}
|
|
83
|
-
- **STATE PERSISTENCE:** The CLI now remembers your directory changes between commands. If you \`cd\` into a folder, stay there for the next step.
|
|
84
|
-
|
|
85
58
|
${repoMap}`
|
|
86
59
|
}
|
|
87
60
|
];
|
|
88
61
|
|
|
89
|
-
|
|
90
|
-
// Ready for chat
|
|
91
|
-
console.log(chalk.green('\nš§ MATEX Codex Core Ready.'));
|
|
92
|
-
console.log(chalk.gray('Ask me anything about your codebase...'));
|
|
62
|
+
console.log(chalk.green('\nā
Swarm is Online. Ready to chat!'));
|
|
93
63
|
|
|
94
|
-
// Chat loop
|
|
95
64
|
while (true) {
|
|
96
|
-
// Get user input
|
|
97
65
|
const { userMessage } = await inquirer.prompt([
|
|
98
66
|
{
|
|
99
67
|
type: 'input',
|
|
100
68
|
name: 'userMessage',
|
|
101
|
-
message: chalk.
|
|
69
|
+
message: chalk.cyan('You:'),
|
|
102
70
|
prefix: '',
|
|
103
71
|
},
|
|
104
72
|
]);
|
|
105
73
|
|
|
106
|
-
// Check for exit
|
|
107
74
|
if (userMessage.toLowerCase() === 'exit' || userMessage.toLowerCase() === 'quit') {
|
|
108
|
-
console.log(chalk.
|
|
75
|
+
console.log(chalk.yellow('\nš Goodbye, brother!\n'));
|
|
109
76
|
break;
|
|
110
77
|
}
|
|
111
78
|
|
|
112
|
-
|
|
113
|
-
if (!userMessage.trim()) {
|
|
114
|
-
continue;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
// Add user message to history
|
|
79
|
+
if (!userMessage.trim()) continue;
|
|
118
80
|
messages.push({ role: 'user', content: userMessage });
|
|
119
81
|
|
|
120
|
-
// Agentic Loop
|
|
121
82
|
let loopCount = 0;
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
while (loopCount < MAX_LOOPS) {
|
|
83
|
+
while (loopCount < 5) {
|
|
125
84
|
loopCount++;
|
|
126
|
-
|
|
127
|
-
if (loopCount > 1) {
|
|
128
|
-
spinner.start('Analyzing result & Validating...');
|
|
129
|
-
} else {
|
|
130
|
-
spinner.start('Thinking...');
|
|
131
|
-
}
|
|
132
|
-
|
|
133
85
|
try {
|
|
86
|
+
spinner.start(loopCount > 1 ? 'Swarm analyzing...' : 'Thinking...');
|
|
87
|
+
|
|
134
88
|
let fullResponse = '';
|
|
135
89
|
let buffer = '';
|
|
90
|
+
let technicalBuffer = '';
|
|
91
|
+
let technicalType: 'code' | 'file' | 'patch' | 'summary' | null = null;
|
|
92
|
+
let codeLang = 'bash';
|
|
136
93
|
let hasStarted = false;
|
|
137
|
-
let inCodeBlock = false;
|
|
138
|
-
let lastRole: AgentRole = 'Commander';
|
|
139
94
|
|
|
140
95
|
const abortController = new AbortController();
|
|
141
96
|
let isAborted = false;
|
|
97
|
+
const streamStartTime = Date.now();
|
|
142
98
|
|
|
143
|
-
// LISTEN FOR INTERRUPTION
|
|
144
99
|
const isRaw = process.stdin.isRaw;
|
|
145
100
|
process.stdin.resume();
|
|
146
101
|
if (process.stdin.setRawMode) process.stdin.setRawMode(true);
|
|
147
102
|
|
|
148
103
|
const onData = (data: Buffer) => {
|
|
149
|
-
|
|
104
|
+
if (Date.now() - streamStartTime < 200) return;
|
|
150
105
|
if (data[0] === 13 || data[0] === 10 || data[0] === 27 || data[0] === 3) {
|
|
151
106
|
isAborted = true;
|
|
152
107
|
abortController.abort();
|
|
@@ -158,142 +113,102 @@ ${repoMap}`
|
|
|
158
113
|
await client.chatStream({
|
|
159
114
|
messages,
|
|
160
115
|
model: options.model,
|
|
161
|
-
temperature: 0.7,
|
|
162
|
-
max_tokens: 4000,
|
|
163
116
|
}, (chunk) => {
|
|
164
|
-
if (isAborted) return;
|
|
165
|
-
|
|
166
117
|
if (!hasStarted) {
|
|
167
118
|
spinner.stop();
|
|
168
119
|
hasStarted = true;
|
|
169
|
-
TUI.drawStatusBar('
|
|
120
|
+
TUI.drawStatusBar('Swarm Active', options.model);
|
|
170
121
|
}
|
|
171
|
-
|
|
172
|
-
buffer += chunk;
|
|
173
122
|
fullResponse += chunk;
|
|
123
|
+
buffer += chunk;
|
|
174
124
|
const lines = buffer.split('\n');
|
|
175
125
|
buffer = lines.pop() || '';
|
|
176
126
|
|
|
177
127
|
for (const line of lines) {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
if (
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
128
|
+
const codeMatch = line.match(/```(\w+)?/);
|
|
129
|
+
const fileMatch = line.match(/<file path="([^"]+)">/);
|
|
130
|
+
const patchMatch = line.match(/<<<< SEARCH/);
|
|
131
|
+
const sumMatch = line.match(/<summary>/);
|
|
132
|
+
|
|
133
|
+
if (!technicalType && (codeMatch || fileMatch || patchMatch || sumMatch)) {
|
|
134
|
+
if (codeMatch) technicalType = 'code', codeLang = codeMatch[1] || 'bash';
|
|
135
|
+
else if (fileMatch) technicalType = 'file';
|
|
136
|
+
else if (patchMatch) technicalType = 'patch';
|
|
137
|
+
else if (sumMatch) technicalType = 'summary';
|
|
138
|
+
process.stdout.write(chalk.gray(`\n [ā”] Swarm processing \${technicalType}...\n`));
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
189
141
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
142
|
+
const isEnd = (technicalType === 'code' && line.trim() === '```') ||
|
|
143
|
+
(technicalType === 'file' && line.includes('</file>')) ||
|
|
144
|
+
(technicalType === 'patch' && line.includes('>>>> REPLACE')) ||
|
|
145
|
+
(technicalType === 'summary' && line.includes('</summary>'));
|
|
146
|
+
|
|
147
|
+
if (isEnd) {
|
|
148
|
+
const content = technicalBuffer.trim();
|
|
149
|
+
if (technicalType === 'summary') TUI.drawSummaryBox(content);
|
|
150
|
+
else TUI.drawCodeContainer(technicalType || 'Technical Block', codeLang, content);
|
|
151
|
+
technicalBuffer = '';
|
|
152
|
+
technicalType = null;
|
|
153
|
+
process.stdout.write('\n');
|
|
154
|
+
continue;
|
|
196
155
|
}
|
|
197
156
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
inCodeBlock = !inCodeBlock;
|
|
201
|
-
if (inCodeBlock && options.execute) {
|
|
202
|
-
console.log(chalk.gray('[Technical Block - Executing in Terminal...]'));
|
|
203
|
-
}
|
|
157
|
+
if (technicalType) {
|
|
158
|
+
technicalBuffer += line + '\n';
|
|
204
159
|
continue;
|
|
205
160
|
}
|
|
206
161
|
|
|
207
|
-
|
|
208
|
-
if (
|
|
209
|
-
|
|
210
|
-
|
|
162
|
+
const agentMatch = line.match(/(?:\[\**\s*|\b)(Ajay Vai|Sandip Dai|Sunil Dai|Bishal Dai|Narayan Dai)\s*\**\]?[:\s]*/i);
|
|
163
|
+
if (agentMatch) {
|
|
164
|
+
const name = agentMatch[1];
|
|
165
|
+
const content = line.replace(agentMatch[0], '').replace(/\*{2,4}/g, '').trim();
|
|
166
|
+
if (name.toLowerCase() === 'ajay vai') {
|
|
167
|
+
process.stdout.write('\n' + chalk.magenta.bold('[' + name + ']:') + ' ');
|
|
168
|
+
if (content) process.stdout.write(chalk.gray(content + ' '));
|
|
169
|
+
} else {
|
|
170
|
+
if (content) TUI.drawSwarmDialogue(name, content);
|
|
211
171
|
}
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
// Banter / Chat
|
|
215
|
-
console.log(chalk.gray(content));
|
|
172
|
+
} else if (line.trim()) {
|
|
173
|
+
process.stdout.write(chalk.gray(line.trim() + ' '));
|
|
216
174
|
}
|
|
217
175
|
}
|
|
218
176
|
}, abortController.signal);
|
|
219
|
-
} catch (
|
|
220
|
-
if (isAborted
|
|
221
|
-
|
|
222
|
-
} else {
|
|
223
|
-
throw streamErr;
|
|
224
|
-
}
|
|
177
|
+
} catch (e: any) {
|
|
178
|
+
if (!isAborted && e.name !== 'AbortError') throw e;
|
|
179
|
+
console.log(chalk.gray('\n [š] Stopped.'));
|
|
225
180
|
} finally {
|
|
226
|
-
// RESTORE TERMINAL
|
|
227
181
|
process.stdin.removeListener('data', onData);
|
|
228
182
|
if (process.stdin.setRawMode) process.stdin.setRawMode(isRaw);
|
|
229
183
|
process.stdin.pause();
|
|
184
|
+
spinner.stop();
|
|
230
185
|
}
|
|
231
186
|
|
|
232
|
-
spinner.stop();
|
|
233
|
-
|
|
234
|
-
if (buffer.trim() && !inCodeBlock && !isAborted) {
|
|
235
|
-
console.log(chalk.gray(buffer.trim()));
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
// Add assistant response to history
|
|
239
187
|
messages.push({ role: 'assistant', content: fullResponse });
|
|
240
|
-
const response = fullResponse;
|
|
241
188
|
console.log();
|
|
242
189
|
|
|
243
|
-
// Execute commands if requested
|
|
244
190
|
if (options.execute) {
|
|
245
191
|
const { executeWithPermission } = await import('../utils/command-executor');
|
|
246
|
-
const result = await executeWithPermission(
|
|
247
|
-
|
|
248
|
-
// Update session CWD from result
|
|
192
|
+
const result = await executeWithPermission(fullResponse, currentSessionCwd);
|
|
249
193
|
if (result.newCwd) {
|
|
250
194
|
currentSessionCwd = result.newCwd;
|
|
251
|
-
|
|
252
|
-
messages[0].content = messages[0].content.replace(/ABSOLUTE WORKING DIRECTORY: .*/, `ABSOLUTE WORKING DIRECTORY: ${currentSessionCwd}`);
|
|
195
|
+
messages[0].content = messages[0].content.replace(/ABSOLUTE WORKING DIRECTORY: .*/, `ABSOLUTE WORKING DIRECTORY: \${currentSessionCwd}`);
|
|
253
196
|
}
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
// Success! Feed output back to AI for next step
|
|
258
|
-
console.log(chalk.gray('āŗ Feeding output to AI...'));
|
|
259
|
-
messages.push({
|
|
260
|
-
role: 'user',
|
|
261
|
-
content: `ā
Command executed successfully in ${currentSessionCwd}. Output:\n${result.output}\n\nProceed to the next step.`
|
|
262
|
-
});
|
|
263
|
-
continue;
|
|
264
|
-
} else {
|
|
265
|
-
console.log(chalk.yellow('\nāŗ Command failed. Asking AI to fix...'));
|
|
266
|
-
messages.push({
|
|
267
|
-
role: 'user',
|
|
268
|
-
content: `ā Command failed with error:\n${result.error}\nPlease fix this. Current CWD is ${currentSessionCwd}.`
|
|
269
|
-
});
|
|
270
|
-
continue;
|
|
271
|
-
}
|
|
272
|
-
} else {
|
|
273
|
-
break;
|
|
197
|
+
if (result.executed && result.success) {
|
|
198
|
+
messages.push({ role: 'user', content: `ā
Command success. Output:\n\${result.output}` });
|
|
199
|
+
continue;
|
|
274
200
|
}
|
|
275
|
-
} else {
|
|
276
|
-
break;
|
|
277
201
|
}
|
|
278
|
-
|
|
202
|
+
break;
|
|
279
203
|
} catch (error: any) {
|
|
280
|
-
spinner.fail('
|
|
281
|
-
|
|
282
|
-
console.error(chalk.red('ā Invalid or revoked API key.'));
|
|
283
|
-
process.exit(1);
|
|
284
|
-
} else if (error.message.includes('429')) {
|
|
285
|
-
console.error(chalk.red('ā Rate limit exceeded. Please wait a moment.'));
|
|
286
|
-
} else {
|
|
287
|
-
console.error(chalk.red(`ā Error: ${error.message}`));
|
|
288
|
-
}
|
|
289
|
-
messages.pop(); // Remove failed user message
|
|
204
|
+
spinner.fail('Swarm error');
|
|
205
|
+
console.error(chalk.red(`ā Error: \${error.message}`));
|
|
290
206
|
break;
|
|
291
207
|
}
|
|
292
208
|
}
|
|
293
209
|
}
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
console.error(chalk.red(`\nā Chat session error: ${error.message}`));
|
|
210
|
+
} catch (outerError: any) {
|
|
211
|
+
console.error(chalk.red(`\nā Session error: \${outerError.message}`));
|
|
297
212
|
process.exit(1);
|
|
298
213
|
}
|
|
299
214
|
});
|