matex-cli 1.2.20 → 1.2.21
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/api/client.d.ts +1 -1
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +3 -2
- package/dist/api/client.js.map +1 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +122 -94
- package/dist/commands/dev.js.map +1 -1
- package/package.json +1 -1
- package/src/api/client.ts +3 -2
- package/src/commands/dev.ts +130 -102
package/dist/api/client.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ export declare class MatexAPIClient {
|
|
|
17
17
|
/**
|
|
18
18
|
* Send a streaming chat request to the API
|
|
19
19
|
*/
|
|
20
|
-
chatStream(request: ChatRequest, onChunk: (chunk: string) => void): Promise<string>;
|
|
20
|
+
chatStream(request: ChatRequest, onChunk: (chunk: string) => void, signal?: AbortSignal): Promise<string>;
|
|
21
21
|
/**
|
|
22
22
|
* Send a chat request to the API (non-streaming fallback)
|
|
23
23
|
*/
|
package/dist/api/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IACxB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,cAAc;IACvB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,MAAmE;IAcxG;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IACxB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,cAAc;IACvB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,MAAmE;IAcxG;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IA6D/G;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBjD;;OAEG;YACW,uBAAuB;IA+BrC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC;IAKjC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;CAY3C"}
|
package/dist/api/client.js
CHANGED
|
@@ -21,13 +21,14 @@ class MatexAPIClient {
|
|
|
21
21
|
/**
|
|
22
22
|
* Send a streaming chat request to the API
|
|
23
23
|
*/
|
|
24
|
-
async chatStream(request, onChunk) {
|
|
24
|
+
async chatStream(request, onChunk, signal) {
|
|
25
25
|
try {
|
|
26
26
|
const response = await this.client.post('/api/v1/chat', {
|
|
27
27
|
...request,
|
|
28
28
|
uid: 'cli-user',
|
|
29
29
|
}, {
|
|
30
|
-
responseType: 'stream'
|
|
30
|
+
responseType: 'stream',
|
|
31
|
+
signal: signal
|
|
31
32
|
});
|
|
32
33
|
return new Promise((resolve, reject) => {
|
|
33
34
|
let fullResponse = '';
|
package/dist/api/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA6C;AAe7C,MAAa,cAAc;IAKvB,YAAY,MAAc,EAAE,UAAkB,0DAA0D;QACpG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,IAAI,CAAC,MAAM,GAAG,eAAK,CAAC,MAAM,CAAC;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE;gBACL,WAAW,EAAE,IAAI,CAAC,MAAM;gBACxB,cAAc,EAAE,kBAAkB;aACrC;YACD,OAAO,EAAE,KAAK,EAAE,aAAa;SAChC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,OAAoB,EAAE,OAAgC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,eAAO,MAAM,UAAU,SAkXjB,CAAC"}
|
package/dist/commands/dev.js
CHANGED
|
@@ -199,114 +199,142 @@ ${repoMap}`
|
|
|
199
199
|
let activeAgent = '';
|
|
200
200
|
let technicalBuffer = '';
|
|
201
201
|
let technicalType = null;
|
|
202
|
-
tui_1.TUI.drawStatusBar('Swarm is processing...');
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
if (!hasStarted) {
|
|
210
|
-
spinner_1.spinner.stop();
|
|
211
|
-
hasStarted = true;
|
|
212
|
-
console.log(); // Initial spacing
|
|
202
|
+
tui_1.TUI.drawStatusBar('Swarm is processing... (Press Enter to stop)');
|
|
203
|
+
const abortController = new AbortController();
|
|
204
|
+
let isAborted = false;
|
|
205
|
+
const onData = (data) => {
|
|
206
|
+
if (!isAborted && (data.includes(10) || data.includes(13) || data.includes(3))) {
|
|
207
|
+
isAborted = true;
|
|
208
|
+
abortController.abort();
|
|
213
209
|
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
210
|
+
};
|
|
211
|
+
process.stdin.resume();
|
|
212
|
+
process.stdin.on('data', onData);
|
|
213
|
+
try {
|
|
214
|
+
await client.chatStream({
|
|
215
|
+
messages,
|
|
216
|
+
model: options.model,
|
|
217
|
+
temperature: 0.3,
|
|
218
|
+
max_tokens: 8000,
|
|
219
|
+
}, (chunk) => {
|
|
220
|
+
if (!hasStarted) {
|
|
221
|
+
spinner_1.spinner.stop();
|
|
222
|
+
hasStarted = true;
|
|
223
|
+
console.log(); // Initial spacing
|
|
224
|
+
}
|
|
225
|
+
buffer += chunk;
|
|
226
|
+
fullResponse += chunk;
|
|
227
|
+
const lines = buffer.split('\n');
|
|
228
|
+
buffer = lines.pop() || '';
|
|
229
|
+
for (const line of lines) {
|
|
230
|
+
const trimmedLine = line.trim();
|
|
231
|
+
// 1. Technical Block Detection (Code, File, Patch, or Summary)
|
|
232
|
+
const codeBlockMatch = line.match(/```(\w*)/);
|
|
233
|
+
const fileStartMatch = line.match(/<file path="([^"]+)">/);
|
|
234
|
+
const patchStartMatch = line.match(/<<<< SEARCH/);
|
|
235
|
+
const summaryStartMatch = line.match(/<summary>/);
|
|
236
|
+
if (codeBlockMatch || fileStartMatch || patchStartMatch || summaryStartMatch) {
|
|
237
|
+
if (technicalType) {
|
|
238
|
+
// If we hit a new block start while in one, flush it
|
|
239
|
+
if (technicalType === 'summary') {
|
|
240
|
+
tui_1.TUI.drawSummaryBox(technicalBuffer.trim());
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
tui_1.TUI.drawCodeContainer(`Technical Block (${technicalType})`, 'bash', technicalBuffer.trim());
|
|
244
|
+
}
|
|
245
|
+
technicalBuffer = '';
|
|
246
|
+
}
|
|
247
|
+
if (codeBlockMatch) {
|
|
248
|
+
technicalType = 'code';
|
|
249
|
+
codeLang = codeBlockMatch[1] || 'bash';
|
|
250
|
+
process.stdout.write(chalk_1.default.gray('\n [⚡] Building technical block...\n'));
|
|
251
|
+
}
|
|
252
|
+
else if (fileStartMatch) {
|
|
253
|
+
technicalType = 'file';
|
|
254
|
+
process.stdout.write(chalk_1.default.cyan(`\n [📂] Creating file: ${fileStartMatch[1]}...\n`));
|
|
255
|
+
}
|
|
256
|
+
else if (patchStartMatch) {
|
|
257
|
+
technicalType = 'patch';
|
|
258
|
+
process.stdout.write(chalk_1.default.yellow(`\n [📂] Applying surgical patch...\n`));
|
|
259
|
+
}
|
|
260
|
+
else if (summaryStartMatch) {
|
|
261
|
+
technicalType = 'summary';
|
|
262
|
+
process.stdout.write(chalk_1.default.magenta('\n [📝] Generating Ajay\'s Work Summary...\n'));
|
|
263
|
+
}
|
|
264
|
+
continue;
|
|
265
|
+
}
|
|
266
|
+
// 2. Technical Block End Detection
|
|
267
|
+
const fileEndMatch = line.match(/<\/file>/);
|
|
268
|
+
const patchEndMatch = line.match(/>>>> REPLACE/);
|
|
269
|
+
const summaryEndMatch = line.match(/<\/summary>/);
|
|
270
|
+
const isCodeEnd = technicalType === 'code' && line.startsWith('```');
|
|
271
|
+
if (isCodeEnd || fileEndMatch || patchEndMatch || summaryEndMatch) {
|
|
272
|
+
const displayContent = technicalBuffer.trim();
|
|
228
273
|
if (technicalType === 'summary') {
|
|
229
|
-
tui_1.TUI.drawSummaryBox(
|
|
274
|
+
tui_1.TUI.drawSummaryBox(displayContent);
|
|
230
275
|
}
|
|
231
276
|
else {
|
|
232
|
-
tui_1.TUI.drawCodeContainer(
|
|
277
|
+
tui_1.TUI.drawCodeContainer(technicalType === 'file' ? 'New File Content' :
|
|
278
|
+
technicalType === 'patch' ? 'Surgical Patch' : 'Generated Block', technicalType === 'code' ? codeLang : 'text', displayContent);
|
|
233
279
|
}
|
|
234
280
|
technicalBuffer = '';
|
|
281
|
+
technicalType = null;
|
|
282
|
+
process.stdout.write('\n');
|
|
283
|
+
continue;
|
|
235
284
|
}
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
process.stdout.write(chalk_1.default.gray('\n [⚡] Building technical block...\n'));
|
|
240
|
-
}
|
|
241
|
-
else if (fileStartMatch) {
|
|
242
|
-
technicalType = 'file';
|
|
243
|
-
process.stdout.write(chalk_1.default.cyan(`\n [📂] Creating file: ${fileStartMatch[1]}...\n`));
|
|
244
|
-
}
|
|
245
|
-
else if (patchStartMatch) {
|
|
246
|
-
technicalType = 'patch';
|
|
247
|
-
process.stdout.write(chalk_1.default.yellow(`\n [📂] Applying surgical patch...\n`));
|
|
248
|
-
}
|
|
249
|
-
else if (summaryStartMatch) {
|
|
250
|
-
technicalType = 'summary';
|
|
251
|
-
process.stdout.write(chalk_1.default.magenta('\n [📝] Generating Ajay\'s Work Summary...\n'));
|
|
252
|
-
}
|
|
253
|
-
continue;
|
|
254
|
-
}
|
|
255
|
-
// 2. Technical Block End Detection
|
|
256
|
-
const fileEndMatch = line.match(/<\/file>/);
|
|
257
|
-
const patchEndMatch = line.match(/>>>> REPLACE/);
|
|
258
|
-
const summaryEndMatch = line.match(/<\/summary>/);
|
|
259
|
-
const isCodeEnd = technicalType === 'code' && line.startsWith('```');
|
|
260
|
-
if (isCodeEnd || fileEndMatch || patchEndMatch || summaryEndMatch) {
|
|
261
|
-
const displayContent = technicalBuffer.trim();
|
|
262
|
-
if (technicalType === 'summary') {
|
|
263
|
-
tui_1.TUI.drawSummaryBox(displayContent);
|
|
285
|
+
// 3. Content Handling
|
|
286
|
+
if (technicalType) {
|
|
287
|
+
technicalBuffer += line + '\n';
|
|
264
288
|
}
|
|
265
289
|
else {
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
const agentName = agentMatch[1];
|
|
283
|
-
activeAgent = agentName;
|
|
284
|
-
const color = agentName === 'Ajay Vai' ? chalk_1.default.magenta :
|
|
285
|
-
agentName === 'Sandip Dai' ? chalk_1.default.hex('#FF69B4') :
|
|
286
|
-
agentName === 'Sunil Dai' ? chalk_1.default.blue :
|
|
287
|
-
chalk_1.default.green;
|
|
288
|
-
process.stdout.write(`\n${color.bold(`${agentName}:`)} `);
|
|
289
|
-
// Strip tag from line content
|
|
290
|
-
const content = line.replace(/\[\**\s*(Ajay Vai|Sandip Dai|Sunil Dai|Narayan Dai)\s*\**\]:?\s*/, '').trim();
|
|
291
|
-
if (content) {
|
|
292
|
-
process.stdout.write(chalk_1.default.gray(content + ' '));
|
|
290
|
+
// Agent Detection
|
|
291
|
+
const agentMatch = line.match(/\[\**\s*(Ajay Vai|Sandip Dai|Sunil Dai|Bishal Dai|Narayan Dai)\s*\**\]/);
|
|
292
|
+
if (agentMatch) {
|
|
293
|
+
const agentName = agentMatch[1];
|
|
294
|
+
activeAgent = agentName;
|
|
295
|
+
const color = agentName === 'Ajay Vai' ? chalk_1.default.magenta :
|
|
296
|
+
agentName === 'Sandip Dai' ? chalk_1.default.hex('#FF69B4') :
|
|
297
|
+
agentName === 'Sunil Dai' ? chalk_1.default.blue :
|
|
298
|
+
agentName === 'Bishal Dai' ? chalk_1.default.yellow :
|
|
299
|
+
chalk_1.default.green;
|
|
300
|
+
process.stdout.write(`\n${color.bold(`${agentName}:`)} `);
|
|
301
|
+
// Strip tag from line content
|
|
302
|
+
const content = line.replace(/\[\**\s*(Ajay Vai|Sandip Dai|Sunil Dai|Bishal Dai|Narayan Dai)\s*\**\]:?\s*/, '').trim();
|
|
303
|
+
if (content) {
|
|
304
|
+
process.stdout.write(chalk_1.default.gray(content + ' '));
|
|
305
|
+
}
|
|
293
306
|
}
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
307
|
+
else if (trimmedLine) {
|
|
308
|
+
// Strip common markdown artifacts
|
|
309
|
+
const cleanLine = trimmedLine
|
|
310
|
+
.replace(/\*\*%?\*/g, '')
|
|
311
|
+
.replace(/#{1,6}\s/g, '')
|
|
312
|
+
.replace(/\*\*:\*\*/g, ':')
|
|
313
|
+
.trim();
|
|
314
|
+
if (cleanLine) {
|
|
315
|
+
process.stdout.write(chalk_1.default.gray(cleanLine + ' '));
|
|
316
|
+
}
|
|
304
317
|
}
|
|
305
318
|
}
|
|
306
319
|
}
|
|
320
|
+
}, abortController.signal);
|
|
321
|
+
}
|
|
322
|
+
catch (streamErr) {
|
|
323
|
+
if (isAborted || streamErr.name === 'CanceledError' || streamErr.message === 'canceled') {
|
|
324
|
+
console.log(chalk_1.default.gray('\n\n [🛑] Swarm stopped by brother (Enter pressed).'));
|
|
325
|
+
if (!hasStarted)
|
|
326
|
+
spinner_1.spinner.stop();
|
|
327
|
+
}
|
|
328
|
+
else {
|
|
329
|
+
throw streamErr;
|
|
307
330
|
}
|
|
308
|
-
}
|
|
309
|
-
|
|
331
|
+
}
|
|
332
|
+
finally {
|
|
333
|
+
process.stdin.removeListener('data', onData);
|
|
334
|
+
process.stdin.pause(); // Release for inquirer
|
|
335
|
+
}
|
|
336
|
+
if (!hasStarted && !isAborted)
|
|
337
|
+
spinner_1.spinner.stop();
|
|
310
338
|
// Final technical flush
|
|
311
339
|
if (technicalType && technicalBuffer.trim()) {
|
|
312
340
|
tui_1.TUI.drawCodeContainer('Final technical content', 'text', technicalBuffer.trim());
|
package/dist/commands/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/api/client.ts
CHANGED
|
@@ -35,13 +35,14 @@ export class MatexAPIClient {
|
|
|
35
35
|
/**
|
|
36
36
|
* Send a streaming chat request to the API
|
|
37
37
|
*/
|
|
38
|
-
async chatStream(request: ChatRequest, onChunk: (chunk: string) => void): Promise<string> {
|
|
38
|
+
async chatStream(request: ChatRequest, onChunk: (chunk: string) => void, signal?: AbortSignal): Promise<string> {
|
|
39
39
|
try {
|
|
40
40
|
const response = await this.client.post('/api/v1/chat', {
|
|
41
41
|
...request,
|
|
42
42
|
uid: 'cli-user',
|
|
43
43
|
}, {
|
|
44
|
-
responseType: 'stream'
|
|
44
|
+
responseType: 'stream',
|
|
45
|
+
signal: signal
|
|
45
46
|
});
|
|
46
47
|
|
|
47
48
|
return new Promise((resolve, reject) => {
|
package/src/commands/dev.ts
CHANGED
|
@@ -176,125 +176,153 @@ ${repoMap}`
|
|
|
176
176
|
let technicalBuffer = '';
|
|
177
177
|
let technicalType: 'code' | 'file' | 'patch' | 'summary' | null = null;
|
|
178
178
|
|
|
179
|
-
TUI.drawStatusBar('Swarm is processing...');
|
|
180
|
-
await client.chatStream({
|
|
181
|
-
messages,
|
|
182
|
-
model: options.model,
|
|
183
|
-
temperature: 0.3,
|
|
184
|
-
max_tokens: 8000,
|
|
185
|
-
}, (chunk) => {
|
|
186
|
-
if (!hasStarted) {
|
|
187
|
-
spinner.stop();
|
|
188
|
-
hasStarted = true;
|
|
189
|
-
console.log(); // Initial spacing
|
|
190
|
-
}
|
|
179
|
+
TUI.drawStatusBar('Swarm is processing... (Press Enter to stop)');
|
|
191
180
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
const lines = buffer.split('\n');
|
|
195
|
-
buffer = lines.pop() || '';
|
|
181
|
+
const abortController = new AbortController();
|
|
182
|
+
let isAborted = false;
|
|
196
183
|
|
|
197
|
-
|
|
198
|
-
|
|
184
|
+
const onData = (data: Buffer) => {
|
|
185
|
+
if (!isAborted && (data.includes(10) || data.includes(13) || data.includes(3))) {
|
|
186
|
+
isAborted = true;
|
|
187
|
+
abortController.abort();
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
process.stdin.resume();
|
|
192
|
+
process.stdin.on('data', onData);
|
|
193
|
+
|
|
194
|
+
try {
|
|
195
|
+
await client.chatStream({
|
|
196
|
+
messages,
|
|
197
|
+
model: options.model,
|
|
198
|
+
temperature: 0.3,
|
|
199
|
+
max_tokens: 8000,
|
|
200
|
+
}, (chunk) => {
|
|
201
|
+
if (!hasStarted) {
|
|
202
|
+
spinner.stop();
|
|
203
|
+
hasStarted = true;
|
|
204
|
+
console.log(); // Initial spacing
|
|
205
|
+
}
|
|
199
206
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
const
|
|
203
|
-
|
|
204
|
-
|
|
207
|
+
buffer += chunk;
|
|
208
|
+
fullResponse += chunk;
|
|
209
|
+
const lines = buffer.split('\n');
|
|
210
|
+
buffer = lines.pop() || '';
|
|
211
|
+
|
|
212
|
+
for (const line of lines) {
|
|
213
|
+
const trimmedLine = line.trim();
|
|
214
|
+
|
|
215
|
+
// 1. Technical Block Detection (Code, File, Patch, or Summary)
|
|
216
|
+
const codeBlockMatch = line.match(/```(\w*)/);
|
|
217
|
+
const fileStartMatch = line.match(/<file path="([^"]+)">/);
|
|
218
|
+
const patchStartMatch = line.match(/<<<< SEARCH/);
|
|
219
|
+
const summaryStartMatch = line.match(/<summary>/);
|
|
220
|
+
|
|
221
|
+
if (codeBlockMatch || fileStartMatch || patchStartMatch || summaryStartMatch) {
|
|
222
|
+
if (technicalType) {
|
|
223
|
+
// If we hit a new block start while in one, flush it
|
|
224
|
+
if (technicalType === 'summary') {
|
|
225
|
+
TUI.drawSummaryBox(technicalBuffer.trim());
|
|
226
|
+
} else {
|
|
227
|
+
TUI.drawCodeContainer(`Technical Block (${technicalType})`, 'bash', technicalBuffer.trim());
|
|
228
|
+
}
|
|
229
|
+
technicalBuffer = '';
|
|
230
|
+
}
|
|
205
231
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
232
|
+
if (codeBlockMatch) {
|
|
233
|
+
technicalType = 'code';
|
|
234
|
+
codeLang = codeBlockMatch[1] || 'bash';
|
|
235
|
+
process.stdout.write(chalk.gray('\n [⚡] Building technical block...\n'));
|
|
236
|
+
} else if (fileStartMatch) {
|
|
237
|
+
technicalType = 'file';
|
|
238
|
+
process.stdout.write(chalk.cyan(`\n [📂] Creating file: ${fileStartMatch[1]}...\n`));
|
|
239
|
+
} else if (patchStartMatch) {
|
|
240
|
+
technicalType = 'patch';
|
|
241
|
+
process.stdout.write(chalk.yellow(`\n [📂] Applying surgical patch...\n`));
|
|
242
|
+
} else if (summaryStartMatch) {
|
|
243
|
+
technicalType = 'summary';
|
|
244
|
+
process.stdout.write(chalk.magenta('\n [📝] Generating Ajay\'s Work Summary...\n'));
|
|
213
245
|
}
|
|
214
|
-
|
|
246
|
+
continue;
|
|
215
247
|
}
|
|
216
248
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
technicalType = 'file';
|
|
223
|
-
process.stdout.write(chalk.cyan(`\n [📂] Creating file: ${fileStartMatch[1]}...\n`));
|
|
224
|
-
} else if (patchStartMatch) {
|
|
225
|
-
technicalType = 'patch';
|
|
226
|
-
process.stdout.write(chalk.yellow(`\n [📂] Applying surgical patch...\n`));
|
|
227
|
-
} else if (summaryStartMatch) {
|
|
228
|
-
technicalType = 'summary';
|
|
229
|
-
process.stdout.write(chalk.magenta('\n [📝] Generating Ajay\'s Work Summary...\n'));
|
|
230
|
-
}
|
|
231
|
-
continue;
|
|
232
|
-
}
|
|
249
|
+
// 2. Technical Block End Detection
|
|
250
|
+
const fileEndMatch = line.match(/<\/file>/);
|
|
251
|
+
const patchEndMatch = line.match(/>>>> REPLACE/);
|
|
252
|
+
const summaryEndMatch = line.match(/<\/summary>/);
|
|
253
|
+
const isCodeEnd = technicalType === 'code' && line.startsWith('```');
|
|
233
254
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
const patchEndMatch = line.match(/>>>> REPLACE/);
|
|
237
|
-
const summaryEndMatch = line.match(/<\/summary>/);
|
|
238
|
-
const isCodeEnd = technicalType === 'code' && line.startsWith('```');
|
|
255
|
+
if (isCodeEnd || fileEndMatch || patchEndMatch || summaryEndMatch) {
|
|
256
|
+
const displayContent = technicalBuffer.trim();
|
|
239
257
|
|
|
240
|
-
|
|
241
|
-
|
|
258
|
+
if (technicalType === 'summary') {
|
|
259
|
+
TUI.drawSummaryBox(displayContent);
|
|
260
|
+
} else {
|
|
261
|
+
TUI.drawCodeContainer(
|
|
262
|
+
technicalType === 'file' ? 'New File Content' :
|
|
263
|
+
technicalType === 'patch' ? 'Surgical Patch' : 'Generated Block',
|
|
264
|
+
technicalType === 'code' ? codeLang : 'text',
|
|
265
|
+
displayContent
|
|
266
|
+
);
|
|
267
|
+
}
|
|
242
268
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
technicalType === 'file' ? 'New File Content' :
|
|
248
|
-
technicalType === 'patch' ? 'Surgical Patch' : 'Generated Block',
|
|
249
|
-
technicalType === 'code' ? codeLang : 'text',
|
|
250
|
-
displayContent
|
|
251
|
-
);
|
|
269
|
+
technicalBuffer = '';
|
|
270
|
+
technicalType = null;
|
|
271
|
+
process.stdout.write('\n');
|
|
272
|
+
continue;
|
|
252
273
|
}
|
|
253
274
|
|
|
254
|
-
|
|
255
|
-
technicalType
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
.trim();
|
|
288
|
-
|
|
289
|
-
if (cleanLine) {
|
|
290
|
-
process.stdout.write(chalk.gray(cleanLine + ' '));
|
|
275
|
+
// 3. Content Handling
|
|
276
|
+
if (technicalType) {
|
|
277
|
+
technicalBuffer += line + '\n';
|
|
278
|
+
} else {
|
|
279
|
+
// Agent Detection
|
|
280
|
+
const agentMatch = line.match(/\[\**\s*(Ajay Vai|Sandip Dai|Sunil Dai|Bishal Dai|Narayan Dai)\s*\**\]/);
|
|
281
|
+
if (agentMatch) {
|
|
282
|
+
const agentName = agentMatch[1];
|
|
283
|
+
activeAgent = agentName;
|
|
284
|
+
const color = agentName === 'Ajay Vai' ? chalk.magenta :
|
|
285
|
+
agentName === 'Sandip Dai' ? chalk.hex('#FF69B4') :
|
|
286
|
+
agentName === 'Sunil Dai' ? chalk.blue :
|
|
287
|
+
agentName === 'Bishal Dai' ? chalk.yellow :
|
|
288
|
+
chalk.green;
|
|
289
|
+
|
|
290
|
+
process.stdout.write(`\n${color.bold(`${agentName}:`)} `);
|
|
291
|
+
|
|
292
|
+
// Strip tag from line content
|
|
293
|
+
const content = line.replace(/\[\**\s*(Ajay Vai|Sandip Dai|Sunil Dai|Bishal Dai|Narayan Dai)\s*\**\]:?\s*/, '').trim();
|
|
294
|
+
if (content) {
|
|
295
|
+
process.stdout.write(chalk.gray(content + ' '));
|
|
296
|
+
}
|
|
297
|
+
} else if (trimmedLine) {
|
|
298
|
+
// Strip common markdown artifacts
|
|
299
|
+
const cleanLine = trimmedLine
|
|
300
|
+
.replace(/\*\*%?\*/g, '')
|
|
301
|
+
.replace(/#{1,6}\s/g, '')
|
|
302
|
+
.replace(/\*\*:\*\*/g, ':')
|
|
303
|
+
.trim();
|
|
304
|
+
|
|
305
|
+
if (cleanLine) {
|
|
306
|
+
process.stdout.write(chalk.gray(cleanLine + ' '));
|
|
307
|
+
}
|
|
291
308
|
}
|
|
292
309
|
}
|
|
293
310
|
}
|
|
311
|
+
}, abortController.signal);
|
|
312
|
+
} catch (streamErr: any) {
|
|
313
|
+
if (isAborted || streamErr.name === 'CanceledError' || streamErr.message === 'canceled') {
|
|
314
|
+
console.log(chalk.gray('\n\n [🛑] Swarm stopped by brother (Enter pressed).'));
|
|
315
|
+
if (!hasStarted) spinner.stop();
|
|
316
|
+
} else {
|
|
317
|
+
throw streamErr;
|
|
294
318
|
}
|
|
295
|
-
}
|
|
319
|
+
} finally {
|
|
320
|
+
process.stdin.removeListener('data', onData);
|
|
321
|
+
process.stdin.pause(); // Release for inquirer
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
if (!hasStarted && !isAborted) spinner.stop();
|
|
296
325
|
|
|
297
|
-
spinner.stop();
|
|
298
326
|
|
|
299
327
|
// Final technical flush
|
|
300
328
|
if (technicalType && technicalBuffer.trim()) {
|