0xkobold 0.0.5 → 0.0.6
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/package.json
CHANGED
|
@@ -1,85 +1,82 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Subagent Extension -
|
|
2
|
+
* Subagent Extension - v0.0.6 Polish
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Improvements:
|
|
5
|
+
* - Real-time stream handling
|
|
6
|
+
* - Better error classification
|
|
7
|
+
* - Result merging strategies
|
|
8
|
+
* - Custom agent loading from ~/.0xkobold/agents/
|
|
9
|
+
* - Project agent loading from .0xkobold/agents/
|
|
6
10
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* Usage:
|
|
10
|
-
* Single: await agent_spawn({ agent: "scout", task: "Find auth code" })
|
|
11
|
-
* Parallel: await agent_spawn({ tasks: [{agent, task}, ...] })
|
|
12
|
-
* Chain: await agent_spawn({ chain: [{agent, task}, ...] })
|
|
11
|
+
* @version 0.0.6
|
|
13
12
|
*/
|
|
14
13
|
import { Type } from "@sinclair/typebox";
|
|
15
14
|
import { spawn } from "node:child_process";
|
|
16
15
|
import * as fs from "node:fs/promises";
|
|
17
16
|
import * as path from "node:path";
|
|
18
17
|
import { homedir } from "node:os";
|
|
18
|
+
import { existsSync } from "node:fs";
|
|
19
19
|
// Constants
|
|
20
20
|
const MAX_PARALLEL_TASKS = 8;
|
|
21
21
|
const MAX_CONCURRENCY = 4;
|
|
22
|
-
const
|
|
23
|
-
|
|
22
|
+
const USER_AGENTS_DIR = path.join(homedir(), ".0xkobold", "agents");
|
|
23
|
+
const PROJECT_AGENTS_DIR = path.join(process.cwd(), ".0xkobold", "agents");
|
|
24
|
+
// Agent discovery with user/project/builtin scopes
|
|
24
25
|
async function discoverAgents() {
|
|
25
26
|
const agents = new Map();
|
|
27
|
+
// 1. Load built-in agents
|
|
28
|
+
const builtinAgents = loadBuiltinAgents();
|
|
29
|
+
for (const [name, config] of builtinAgents) {
|
|
30
|
+
config.scope = "builtin";
|
|
31
|
+
agents.set(name, config);
|
|
32
|
+
}
|
|
33
|
+
console.log(`[Subagent] Loaded ${builtinAgents.size} built-in agents`);
|
|
34
|
+
// 2. Load user agents from ~/.0xkobold/agents/
|
|
26
35
|
try {
|
|
27
|
-
|
|
28
|
-
|
|
36
|
+
await fs.mkdir(USER_AGENTS_DIR, { recursive: true });
|
|
37
|
+
const userFiles = await fs.readdir(USER_AGENTS_DIR);
|
|
38
|
+
for (const file of userFiles) {
|
|
29
39
|
if (file.endsWith('.md')) {
|
|
30
|
-
const content = await fs.readFile(path.join(
|
|
40
|
+
const content = await fs.readFile(path.join(USER_AGENTS_DIR, file), 'utf-8');
|
|
31
41
|
const config = parseAgentDefinition(content, file.replace('.md', ''));
|
|
32
42
|
if (config) {
|
|
43
|
+
config.scope = "user";
|
|
33
44
|
agents.set(config.name, config);
|
|
45
|
+
console.log(`[Subagent] Loaded user agent: ${config.name}`);
|
|
34
46
|
}
|
|
35
47
|
}
|
|
36
48
|
}
|
|
37
49
|
}
|
|
38
|
-
catch {
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
// Add built-in agents if not found
|
|
42
|
-
if (!agents.has('scout')) {
|
|
43
|
-
agents.set('scout', getDefaultAgent('scout'));
|
|
44
|
-
}
|
|
45
|
-
if (!agents.has('planner')) {
|
|
46
|
-
agents.set('planner', getDefaultAgent('planner'));
|
|
50
|
+
catch (error) {
|
|
51
|
+
console.log(`[Subagent] User agents dir not accessible: ${USER_AGENTS_DIR}`);
|
|
47
52
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
+
// 3. Load project agents from .0xkobold/agents/ (only if exists)
|
|
54
|
+
if (existsSync(PROJECT_AGENTS_DIR)) {
|
|
55
|
+
try {
|
|
56
|
+
const projectFiles = await fs.readdir(PROJECT_AGENTS_DIR);
|
|
57
|
+
for (const file of projectFiles) {
|
|
58
|
+
if (file.endsWith('.md')) {
|
|
59
|
+
const content = await fs.readFile(path.join(PROJECT_AGENTS_DIR, file), 'utf-8');
|
|
60
|
+
const config = parseAgentDefinition(content, file.replace('.md', ''));
|
|
61
|
+
if (config) {
|
|
62
|
+
config.scope = "project";
|
|
63
|
+
// Prefix with project_ to avoid conflicts
|
|
64
|
+
const fullName = `project:${config.name}`;
|
|
65
|
+
agents.set(fullName, config);
|
|
66
|
+
console.log(`[Subagent] Loaded project agent: ${fullName}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
console.log(`[Subagent] Project agents dir not accessible`);
|
|
73
|
+
}
|
|
53
74
|
}
|
|
75
|
+
console.log(`[Subagent] Total agents: ${agents.size}`);
|
|
54
76
|
return agents;
|
|
55
77
|
}
|
|
56
|
-
function
|
|
57
|
-
|
|
58
|
-
const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);
|
|
59
|
-
if (!frontmatterMatch)
|
|
60
|
-
return null;
|
|
61
|
-
const frontmatter = frontmatterMatch[1];
|
|
62
|
-
const systemPrompt = frontmatterMatch[2].trim();
|
|
63
|
-
const lines = frontmatter.split('\n');
|
|
64
|
-
let name = defaultName;
|
|
65
|
-
let description = '';
|
|
66
|
-
let tools = [];
|
|
67
|
-
let model = 'qwen2.5-coder:14b';
|
|
68
|
-
for (const line of lines) {
|
|
69
|
-
const [key, ...rest] = line.split(':');
|
|
70
|
-
const value = rest.join(':').trim();
|
|
71
|
-
if (key === 'name')
|
|
72
|
-
name = value;
|
|
73
|
-
else if (key === 'description')
|
|
74
|
-
description = value;
|
|
75
|
-
else if (key === 'tools')
|
|
76
|
-
tools = value.split(',').map(t => t.trim());
|
|
77
|
-
else if (key === 'model')
|
|
78
|
-
model = value;
|
|
79
|
-
}
|
|
80
|
-
return { name, description, tools, model, systemPrompt };
|
|
81
|
-
}
|
|
82
|
-
function getDefaultAgent(type) {
|
|
78
|
+
function loadBuiltinAgents() {
|
|
79
|
+
const agents = new Map();
|
|
83
80
|
const defaults = {
|
|
84
81
|
scout: {
|
|
85
82
|
name: 'scout',
|
|
@@ -138,11 +135,129 @@ Be thorough but constructive.
|
|
|
138
135
|
Provide specific line-by-line feedback.`,
|
|
139
136
|
},
|
|
140
137
|
};
|
|
141
|
-
|
|
138
|
+
for (const [name, config] of Object.entries(defaults)) {
|
|
139
|
+
agents.set(name, config);
|
|
140
|
+
}
|
|
141
|
+
return agents;
|
|
142
142
|
}
|
|
143
|
-
|
|
144
|
-
|
|
143
|
+
function parseAgentDefinition(content, defaultName) {
|
|
144
|
+
// Parse YAML frontmatter
|
|
145
|
+
const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);
|
|
146
|
+
if (!frontmatterMatch)
|
|
147
|
+
return null;
|
|
148
|
+
const frontmatter = frontmatterMatch[1];
|
|
149
|
+
const systemPrompt = frontmatterMatch[2].trim();
|
|
150
|
+
const lines = frontmatter.split('\n');
|
|
151
|
+
let name = defaultName;
|
|
152
|
+
let description = '';
|
|
153
|
+
let tools = [];
|
|
154
|
+
let model = 'qwen2.5-coder:14b';
|
|
155
|
+
for (const line of lines) {
|
|
156
|
+
const [key, ...rest] = line.split(':');
|
|
157
|
+
const value = rest.join(':').trim();
|
|
158
|
+
if (key === 'name')
|
|
159
|
+
name = value;
|
|
160
|
+
else if (key === 'description')
|
|
161
|
+
description = value;
|
|
162
|
+
else if (key === 'tools')
|
|
163
|
+
tools = value.split(',').map(t => t.trim());
|
|
164
|
+
else if (key === 'model')
|
|
165
|
+
model = value;
|
|
166
|
+
}
|
|
167
|
+
return { name, description, tools, model, systemPrompt };
|
|
168
|
+
}
|
|
169
|
+
// Error classification
|
|
170
|
+
function classifyError(result) {
|
|
171
|
+
if (result.exitCode === 124 || result.error?.includes("Timeout")) {
|
|
172
|
+
return {
|
|
173
|
+
code: "AGENT_TIMEOUT",
|
|
174
|
+
message: `Agent '${result.agent}' timed out after 5 minutes`,
|
|
175
|
+
category: "timeout",
|
|
176
|
+
suggestion: "Try breaking the task into smaller chunks or increasing timeout"
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
if (result.exitCode === 127 || result.error?.includes("not found")) {
|
|
180
|
+
return {
|
|
181
|
+
code: "AGENT_NOT_FOUND",
|
|
182
|
+
message: `Agent '${result.agent}' not found`,
|
|
183
|
+
category: "not_found",
|
|
184
|
+
suggestion: "Check available agents with /agents command"
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
if (result.exitCode !== 0) {
|
|
188
|
+
return {
|
|
189
|
+
code: "AGENT_EXECUTION_ERROR",
|
|
190
|
+
message: `Agent '${result.agent}' failed with exit code ${result.exitCode}`,
|
|
191
|
+
category: "execution",
|
|
192
|
+
suggestion: result.error || "Check agent logs for details"
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
return {
|
|
196
|
+
code: "UNKNOWN_ERROR",
|
|
197
|
+
message: "Unknown error occurred",
|
|
198
|
+
category: "unknown",
|
|
199
|
+
suggestion: "Try again or check system logs"
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
// Merge strategies
|
|
203
|
+
function getMergeStrategies() {
|
|
204
|
+
return [
|
|
205
|
+
{
|
|
206
|
+
name: "concatenate",
|
|
207
|
+
description: "Simple concatenation with headers",
|
|
208
|
+
merge: (results) => {
|
|
209
|
+
return results.map(r => `## ${r.agent}\n\n${r.output}`).join("\n\n---\n\n");
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
name: "summary",
|
|
214
|
+
description: "Summary with key points from each agent",
|
|
215
|
+
merge: (results) => {
|
|
216
|
+
const successful = results.filter(r => r.exitCode === 0);
|
|
217
|
+
const failed = results.filter(r => r.exitCode !== 0);
|
|
218
|
+
let output = `## Summary\n\n`;
|
|
219
|
+
output += `✅ ${successful.length} agents succeeded\n`;
|
|
220
|
+
output += `❌ ${failed.length} agents failed\n\n`;
|
|
221
|
+
if (successful.length > 0) {
|
|
222
|
+
output += "### Results\n\n";
|
|
223
|
+
successful.forEach(r => {
|
|
224
|
+
output += `**${r.agent}**: ${r.output.slice(0, 200)}${r.output.length > 200 ? '...' : ''}\n\n`;
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
if (failed.length > 0) {
|
|
228
|
+
output += "### Failures\n\n";
|
|
229
|
+
failed.forEach(r => {
|
|
230
|
+
const error = classifyError(r);
|
|
231
|
+
output += `**${r.agent}**: ${error.message}\n`;
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
return output;
|
|
235
|
+
}
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
name: "structured",
|
|
239
|
+
description: "JSON-structured output",
|
|
240
|
+
merge: (results) => {
|
|
241
|
+
const structured = {
|
|
242
|
+
total: results.length,
|
|
243
|
+
successful: results.filter(r => r.exitCode === 0).length,
|
|
244
|
+
failed: results.filter(r => r.exitCode !== 0).length,
|
|
245
|
+
results: results.map(r => ({
|
|
246
|
+
agent: r.agent,
|
|
247
|
+
success: r.exitCode === 0,
|
|
248
|
+
duration: r.duration,
|
|
249
|
+
output: r.output.slice(0, 500), // Truncate for JSON
|
|
250
|
+
}))
|
|
251
|
+
};
|
|
252
|
+
return JSON.stringify(structured, null, 2);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
];
|
|
256
|
+
}
|
|
257
|
+
// Spawn a single subagent with optional streaming
|
|
258
|
+
async function spawnSubagent(agentConfig, task, ctx, options = {}) {
|
|
145
259
|
const startTime = Date.now();
|
|
260
|
+
const chunks = [];
|
|
146
261
|
return new Promise((resolve) => {
|
|
147
262
|
// Build command
|
|
148
263
|
const args = [
|
|
@@ -166,88 +281,114 @@ async function spawnSubagent(agentConfig, task, ctx) {
|
|
|
166
281
|
});
|
|
167
282
|
let output = '';
|
|
168
283
|
let error = '';
|
|
284
|
+
// Real-time streaming
|
|
169
285
|
child.stdout?.on('data', (data) => {
|
|
170
|
-
|
|
286
|
+
const text = data.toString();
|
|
287
|
+
output += text;
|
|
288
|
+
if (options.stream) {
|
|
289
|
+
chunks.push({
|
|
290
|
+
type: 'stdout',
|
|
291
|
+
content: text,
|
|
292
|
+
timestamp: Date.now()
|
|
293
|
+
});
|
|
294
|
+
// Stream to UI
|
|
295
|
+
ctx.ui.notify(`[${agentConfig.name}] ${text.slice(0, 100)}`, 'info');
|
|
296
|
+
}
|
|
171
297
|
});
|
|
172
298
|
child.stderr?.on('data', (data) => {
|
|
173
|
-
|
|
299
|
+
const text = data.toString();
|
|
300
|
+
error += text;
|
|
301
|
+
if (options.stream) {
|
|
302
|
+
chunks.push({
|
|
303
|
+
type: 'stderr',
|
|
304
|
+
content: text,
|
|
305
|
+
timestamp: Date.now()
|
|
306
|
+
});
|
|
307
|
+
ctx.ui.notify(`[${agentConfig.name}] ERR: ${text.slice(0, 100)}`, 'error');
|
|
308
|
+
}
|
|
174
309
|
});
|
|
175
310
|
child.on('close', (code) => {
|
|
176
|
-
|
|
311
|
+
const result = {
|
|
177
312
|
agent: agentConfig.name,
|
|
178
313
|
task,
|
|
179
314
|
exitCode: code || 0,
|
|
180
315
|
output: output.trim(),
|
|
181
316
|
error: error.trim() || undefined,
|
|
182
317
|
duration: Date.now() - startTime,
|
|
183
|
-
|
|
318
|
+
streamed: options.stream,
|
|
319
|
+
chunks: options.stream ? chunks : undefined,
|
|
320
|
+
};
|
|
321
|
+
resolve(result);
|
|
184
322
|
});
|
|
185
323
|
// Timeout after 5 minutes
|
|
186
324
|
setTimeout(() => {
|
|
187
325
|
child.kill('SIGTERM');
|
|
188
|
-
resolve({
|
|
189
|
-
agent: agentConfig.name,
|
|
190
|
-
task,
|
|
191
|
-
exitCode: 124,
|
|
192
|
-
output: output.trim(),
|
|
193
|
-
error: 'Timeout: Agent took too long',
|
|
194
|
-
duration: Date.now() - startTime,
|
|
195
|
-
});
|
|
196
326
|
}, 5 * 60 * 1000);
|
|
197
327
|
});
|
|
198
328
|
}
|
|
199
|
-
// Parallel execution with
|
|
200
|
-
async function spawnParallel(tasks, agents, ctx) {
|
|
329
|
+
// Parallel execution with merge strategy
|
|
330
|
+
async function spawnParallel(tasks, agents, ctx, options = {}) {
|
|
201
331
|
const results = [];
|
|
202
332
|
const executing = [];
|
|
203
333
|
let completed = 0;
|
|
204
|
-
// Progress update
|
|
205
334
|
const updateProgress = () => {
|
|
206
335
|
ctx.ui.notify(`⏳ ${completed}/${tasks.length} agents complete`, 'info');
|
|
207
336
|
};
|
|
208
337
|
for (const task of tasks) {
|
|
209
338
|
const agentConfig = agents.get(task.agent);
|
|
210
339
|
if (!agentConfig) {
|
|
211
|
-
|
|
340
|
+
const error = {
|
|
212
341
|
agent: task.agent,
|
|
213
342
|
task: task.task,
|
|
214
343
|
exitCode: 1,
|
|
215
344
|
output: '',
|
|
216
|
-
error: `Agent '${task.agent}' not found`,
|
|
345
|
+
error: `Agent '${task.agent}' not found. Available: ${Array.from(agents.keys()).join(', ')}`,
|
|
217
346
|
duration: 0,
|
|
218
|
-
}
|
|
347
|
+
};
|
|
348
|
+
results.push(error);
|
|
349
|
+
completed++;
|
|
350
|
+
updateProgress();
|
|
219
351
|
continue;
|
|
220
352
|
}
|
|
221
353
|
// Wait if at concurrency limit
|
|
222
354
|
while (executing.length >= MAX_CONCURRENCY) {
|
|
223
355
|
await Promise.race(executing);
|
|
224
356
|
}
|
|
225
|
-
const promise = spawnSubagent(agentConfig, task.task, ctx
|
|
357
|
+
const promise = spawnSubagent(agentConfig, task.task, ctx, {
|
|
358
|
+
stream: options.stream
|
|
359
|
+
}).then((result) => {
|
|
226
360
|
results.push(result);
|
|
227
361
|
completed++;
|
|
228
362
|
updateProgress();
|
|
363
|
+
// Show error details if failed
|
|
364
|
+
if (result.exitCode !== 0) {
|
|
365
|
+
const classified = classifyError(result);
|
|
366
|
+
ctx.ui.notify(`❌ ${result.agent} failed: ${classified.message}. ${classified.suggestion}`, 'error');
|
|
367
|
+
}
|
|
229
368
|
});
|
|
230
369
|
executing.push(promise);
|
|
231
|
-
// Clean up completed promises
|
|
232
370
|
promise.then(() => {
|
|
233
371
|
const index = executing.indexOf(promise);
|
|
234
372
|
if (index > -1)
|
|
235
373
|
executing.splice(index, 1);
|
|
236
374
|
});
|
|
237
375
|
}
|
|
238
|
-
// Wait for all to complete
|
|
239
376
|
await Promise.all(executing);
|
|
240
|
-
|
|
377
|
+
// Apply merge strategy
|
|
378
|
+
const strategies = getMergeStrategies();
|
|
379
|
+
const strategy = strategies.find(s => s.name === options.mergeStrategy) || strategies[1]; // Default to summary
|
|
380
|
+
const mergedOutput = strategy.merge(results);
|
|
381
|
+
return { results, mergedOutput };
|
|
241
382
|
}
|
|
242
383
|
// Chain execution
|
|
243
|
-
async function spawnChain(chain, agents, ctx) {
|
|
384
|
+
async function spawnChain(chain, agents, ctx, options = {}) {
|
|
244
385
|
const results = [];
|
|
245
386
|
let previousOutput = '';
|
|
246
387
|
for (let i = 0; i < chain.length; i++) {
|
|
247
388
|
const step = chain[i];
|
|
248
389
|
const agentConfig = agents.get(step.agent);
|
|
249
390
|
if (!agentConfig) {
|
|
250
|
-
|
|
391
|
+
const error = classifyError({
|
|
251
392
|
agent: step.agent,
|
|
252
393
|
task: step.task,
|
|
253
394
|
exitCode: 1,
|
|
@@ -255,15 +396,27 @@ async function spawnChain(chain, agents, ctx) {
|
|
|
255
396
|
error: `Agent '${step.agent}' not found`,
|
|
256
397
|
duration: 0,
|
|
257
398
|
});
|
|
399
|
+
ctx.ui.notify(`❌ ${error.message}`, 'error');
|
|
400
|
+
results.push({
|
|
401
|
+
agent: step.agent,
|
|
402
|
+
task: step.task,
|
|
403
|
+
exitCode: 1,
|
|
404
|
+
output: '',
|
|
405
|
+
error: error.message,
|
|
406
|
+
duration: 0,
|
|
407
|
+
});
|
|
258
408
|
break;
|
|
259
409
|
}
|
|
260
410
|
// Replace {previous} placeholder
|
|
261
411
|
const task = step.task.replace(/{previous}/g, previousOutput);
|
|
262
412
|
ctx.ui.notify(`⏳ Step ${i + 1}/${chain.length}: ${step.agent}...`, 'info');
|
|
263
|
-
const result = await spawnSubagent(agentConfig, task, ctx
|
|
413
|
+
const result = await spawnSubagent(agentConfig, task, ctx, {
|
|
414
|
+
stream: options.stream
|
|
415
|
+
});
|
|
264
416
|
results.push(result);
|
|
265
417
|
if (result.exitCode !== 0) {
|
|
266
|
-
|
|
418
|
+
const error = classifyError(result);
|
|
419
|
+
ctx.ui.notify(`❌ Step ${i + 1} failed: ${error.message}`, 'error');
|
|
267
420
|
break;
|
|
268
421
|
}
|
|
269
422
|
previousOutput = result.output;
|
|
@@ -272,37 +425,41 @@ async function spawnChain(chain, agents, ctx) {
|
|
|
272
425
|
return results;
|
|
273
426
|
}
|
|
274
427
|
export default async function subagentExtension(pi) {
|
|
275
|
-
console.log("[Subagent] Extension loaded");
|
|
276
|
-
// Ensure
|
|
277
|
-
await fs.mkdir(
|
|
278
|
-
// Discover agents
|
|
428
|
+
console.log("[Subagent] Extension loaded v0.0.6");
|
|
429
|
+
// Ensure directories exist
|
|
430
|
+
await fs.mkdir(USER_AGENTS_DIR, { recursive: true });
|
|
431
|
+
// Discover agents from all scopes
|
|
279
432
|
const agents = await discoverAgents();
|
|
280
|
-
|
|
281
|
-
// TOOL: agent_spawn
|
|
433
|
+
// TOOL: agent_spawn (enhanced for v0.0.6)
|
|
282
434
|
pi.registerTool({
|
|
283
|
-
name: "
|
|
435
|
+
name: "subagent_spawn",
|
|
284
436
|
label: "Spawn Subagent",
|
|
285
|
-
description: "Spawn single, parallel, or chained subagents with
|
|
437
|
+
description: "Spawn single, parallel, or chained subagents with streaming and merge strategies",
|
|
286
438
|
parameters: Type.Object({
|
|
287
|
-
// Single mode
|
|
288
439
|
agent: Type.Optional(Type.String({ description: "Agent name" })),
|
|
289
440
|
task: Type.Optional(Type.String({ description: "Task description" })),
|
|
290
|
-
// Parallel mode
|
|
291
441
|
tasks: Type.Optional(Type.Array(Type.Object({
|
|
292
442
|
agent: Type.String({ description: "Agent name" }),
|
|
293
443
|
task: Type.String({ description: "Task description" }),
|
|
294
444
|
}), { description: "Array of tasks for parallel execution" })),
|
|
295
|
-
// Chain mode
|
|
296
445
|
chain: Type.Optional(Type.Array(Type.Object({
|
|
297
446
|
agent: Type.String({ description: "Agent name" }),
|
|
298
447
|
task: Type.String({ description: "Task description" }),
|
|
299
448
|
}), { description: "Array of tasks for sequential execution" })),
|
|
449
|
+
stream: Type.Optional(Type.Boolean({
|
|
450
|
+
description: "Enable real-time streaming to TUI",
|
|
451
|
+
default: false
|
|
452
|
+
})),
|
|
453
|
+
mergeStrategy: Type.Optional(Type.String({
|
|
454
|
+
description: "Merge strategy for parallel results: concatenate, summary, structured",
|
|
455
|
+
default: "summary"
|
|
456
|
+
})),
|
|
300
457
|
}),
|
|
301
458
|
async execute(_toolCallId, params, _signal, _onUpdate, ctx) {
|
|
302
459
|
const startTime = Date.now();
|
|
460
|
+
const stream = params.stream || false;
|
|
303
461
|
// Mode detection
|
|
304
462
|
if (params.tasks && Array.isArray(params.tasks)) {
|
|
305
|
-
// Parallel mode
|
|
306
463
|
const tasks = params.tasks;
|
|
307
464
|
if (tasks.length > MAX_PARALLEL_TASKS) {
|
|
308
465
|
return {
|
|
@@ -311,25 +468,30 @@ export default async function subagentExtension(pi) {
|
|
|
311
468
|
};
|
|
312
469
|
}
|
|
313
470
|
ctx.ui.notify(`🚀 Spawning ${tasks.length} agents in parallel...`, 'info');
|
|
314
|
-
const results = await spawnParallel(tasks, agents, ctx
|
|
471
|
+
const { results, mergedOutput } = await spawnParallel(tasks, agents, ctx, {
|
|
472
|
+
mergeStrategy: params.mergeStrategy,
|
|
473
|
+
stream
|
|
474
|
+
});
|
|
315
475
|
const success = results.filter(r => r.exitCode === 0).length;
|
|
316
476
|
const failed = results.filter(r => r.exitCode !== 0).length;
|
|
317
|
-
const summary = results.map(r => `${r.exitCode === 0 ? '✅' : '❌'} ${r.agent}: ${r.task.slice(0, 50)}...`).join('\n');
|
|
318
477
|
return {
|
|
319
478
|
content: [{
|
|
320
479
|
type: "text",
|
|
321
|
-
text: `✅ ${success} success, ${failed} failed\n\n${
|
|
480
|
+
text: `✅ ${success} success, ${failed} failed\n\n${mergedOutput}`,
|
|
322
481
|
}],
|
|
323
|
-
details: {
|
|
482
|
+
details: {
|
|
483
|
+
mode: "parallel",
|
|
484
|
+
results,
|
|
485
|
+
mergeStrategy: params.mergeStrategy || "summary"
|
|
486
|
+
},
|
|
324
487
|
};
|
|
325
488
|
}
|
|
326
489
|
else if (params.chain && Array.isArray(params.chain)) {
|
|
327
|
-
// Chain mode
|
|
328
490
|
const chain = params.chain;
|
|
329
491
|
ctx.ui.notify(`🔗 Starting chain of ${chain.length} agents...`, 'info');
|
|
330
|
-
const results = await spawnChain(chain, agents, ctx);
|
|
492
|
+
const results = await spawnChain(chain, agents, ctx, { stream });
|
|
331
493
|
const success = results.filter(r => r.exitCode === 0).length;
|
|
332
|
-
const summary = results.map((r, i) => `${r.exitCode === 0 ? '✅' : '❌'} Step ${i + 1} (${r.agent})
|
|
494
|
+
const summary = results.map((r, i) => `${r.exitCode === 0 ? '✅' : '❌'} Step ${i + 1} (${r.agent})`).join('\n');
|
|
333
495
|
return {
|
|
334
496
|
content: [{
|
|
335
497
|
type: "text",
|
|
@@ -339,43 +501,61 @@ export default async function subagentExtension(pi) {
|
|
|
339
501
|
};
|
|
340
502
|
}
|
|
341
503
|
else if (params.agent && params.task) {
|
|
342
|
-
// Single mode
|
|
343
504
|
const agentConfig = agents.get(params.agent);
|
|
344
505
|
if (!agentConfig) {
|
|
345
506
|
return {
|
|
346
|
-
content: [{
|
|
507
|
+
content: [{
|
|
508
|
+
type: "text",
|
|
509
|
+
text: `❌ Agent '${params.agent}' not found. Available:\n${Array.from(agents.keys()).map(k => `- ${k}`).join('\n')}`
|
|
510
|
+
}],
|
|
347
511
|
details: { error: "agent_not_found", available: Array.from(agents.keys()) },
|
|
348
512
|
};
|
|
349
513
|
}
|
|
350
514
|
ctx.ui.notify(`🚀 Spawning ${agentConfig.name}...`, 'info');
|
|
351
|
-
const result = await spawnSubagent(agentConfig, params.task, ctx);
|
|
352
|
-
|
|
515
|
+
const result = await spawnSubagent(agentConfig, params.task, ctx, { stream });
|
|
516
|
+
if (result.exitCode !== 0) {
|
|
517
|
+
const error = classifyError(result);
|
|
518
|
+
return {
|
|
519
|
+
content: [{
|
|
520
|
+
type: "text",
|
|
521
|
+
text: `❌ ${error.message}\n\nSuggestion: ${error.suggestion}\n\nDetails:\n${result.error || 'No error details'}`,
|
|
522
|
+
}],
|
|
523
|
+
details: { ...result, errorCategory: error.category },
|
|
524
|
+
};
|
|
525
|
+
}
|
|
353
526
|
const duration = ((Date.now() - startTime) / 1000).toFixed(1);
|
|
354
527
|
return {
|
|
355
528
|
content: [{
|
|
356
529
|
type: "text",
|
|
357
|
-
text:
|
|
530
|
+
text: `✅ ${result.agent} complete (${duration}s)\n\n${result.output}`,
|
|
358
531
|
}],
|
|
359
532
|
details: result,
|
|
360
533
|
};
|
|
361
534
|
}
|
|
362
535
|
return {
|
|
363
|
-
content: [{ type: "text", text: "❌ Must provide
|
|
364
|
-
details: {
|
|
536
|
+
content: [{ type: "text", text: "❌ Must provide: (agent+task), tasks[], or chain[]" }],
|
|
537
|
+
details: {
|
|
538
|
+
error: "invalid_params",
|
|
539
|
+
hint: "Use `agent`+`task` for single, `tasks` array for parallel, or `chain` array for sequential"
|
|
540
|
+
},
|
|
365
541
|
};
|
|
366
542
|
},
|
|
367
543
|
});
|
|
368
|
-
// COMMAND: /agents
|
|
369
|
-
pi.registerCommand("
|
|
370
|
-
description: "List available agents",
|
|
544
|
+
// COMMAND: /agents (enhanced with scope info)
|
|
545
|
+
pi.registerCommand("subagents", {
|
|
546
|
+
description: "List available agents with scope info",
|
|
371
547
|
handler: async (_args, ctx) => {
|
|
372
|
-
const list = Array.from(agents.
|
|
373
|
-
|
|
548
|
+
const list = Array.from(agents.entries()).map(([name, a]) => {
|
|
549
|
+
const scopeIcon = a.scope === "builtin" ? "🔧" :
|
|
550
|
+
a.scope === "user" ? "👤" : "📁";
|
|
551
|
+
return `${scopeIcon} ${name}: ${a.description} (${a.tools.length} tools)`;
|
|
552
|
+
}).join('\n');
|
|
553
|
+
ctx.ui.notify(`🤖 Available Agents:\n\n${list}\n\n🔧 = built-in, 👤 = user, 📁 = project`, 'info');
|
|
374
554
|
},
|
|
375
555
|
});
|
|
376
|
-
// COMMAND: /implement
|
|
556
|
+
// COMMAND: /implement (with streaming)
|
|
377
557
|
pi.registerCommand("implement", {
|
|
378
|
-
description: "Implement with workflow: scout → planner → worker",
|
|
558
|
+
description: "Implement with workflow: scout → planner → worker (with streaming)",
|
|
379
559
|
handler: async (args, ctx) => {
|
|
380
560
|
if (!args.trim()) {
|
|
381
561
|
ctx.ui.notify("❌ Usage: /implement <feature description>", 'error');
|
|
@@ -387,12 +567,12 @@ export default async function subagentExtension(pi) {
|
|
|
387
567
|
{ agent: "worker", task: `Implement: ${args}. Plan: {previous}` },
|
|
388
568
|
];
|
|
389
569
|
ctx.ui.notify(`🚀 Starting /implement workflow for: ${args}`, 'info');
|
|
390
|
-
await spawnChain(chain, agents, ctx);
|
|
570
|
+
await spawnChain(chain, agents, ctx, { stream: true });
|
|
391
571
|
},
|
|
392
572
|
});
|
|
393
573
|
// COMMAND: /scout-and-plan
|
|
394
574
|
pi.registerCommand("scout-and-plan", {
|
|
395
|
-
description: "Scout and plan
|
|
575
|
+
description: "Scout and plan with streaming",
|
|
396
576
|
handler: async (args, ctx) => {
|
|
397
577
|
if (!args.trim()) {
|
|
398
578
|
ctx.ui.notify("❌ Usage: /scout-and-plan <feature description>", 'error');
|
|
@@ -403,16 +583,20 @@ export default async function subagentExtension(pi) {
|
|
|
403
583
|
{ agent: "planner", task: `Create implementation plan for: ${args}. Findings: {previous}` },
|
|
404
584
|
];
|
|
405
585
|
ctx.ui.notify(`🚀 Starting /scout-and-plan for: ${args}`, 'info');
|
|
406
|
-
await spawnChain(chain, agents, ctx);
|
|
586
|
+
await spawnChain(chain, agents, ctx, { stream: true });
|
|
407
587
|
},
|
|
408
588
|
});
|
|
409
|
-
// COMMAND: /parallel
|
|
589
|
+
// COMMAND: /parallel (with merge strategy)
|
|
410
590
|
pi.registerCommand("parallel", {
|
|
411
|
-
description: "Run agents in parallel: /parallel \"task1\" \"task2\"
|
|
591
|
+
description: "Run agents in parallel with merge: /parallel [--merge=summary|concatenate|structured] \"task1\" \"task2\"",
|
|
412
592
|
handler: async (args, ctx) => {
|
|
413
|
-
|
|
593
|
+
// Parse merge strategy
|
|
594
|
+
const mergeMatch = args.match(/--merge=(\w+)/);
|
|
595
|
+
const mergeStrategy = mergeMatch ? mergeMatch[1] : "summary";
|
|
596
|
+
const cleanArgs = args.replace(/--merge=\w+/, '').trim();
|
|
597
|
+
const tasks = cleanArgs.split('"').filter((_, i) => i % 2 === 1);
|
|
414
598
|
if (tasks.length === 0) {
|
|
415
|
-
ctx.ui.notify("❌ Usage: /parallel \"task 1\" \"task 2\"", 'error');
|
|
599
|
+
ctx.ui.notify("❌ Usage: /parallel [--merge=strategy] \"task 1\" \"task 2\"", 'error');
|
|
416
600
|
return;
|
|
417
601
|
}
|
|
418
602
|
if (tasks.length > MAX_PARALLEL_TASKS) {
|
|
@@ -423,10 +607,41 @@ export default async function subagentExtension(pi) {
|
|
|
423
607
|
agent: "scout",
|
|
424
608
|
task,
|
|
425
609
|
}));
|
|
426
|
-
ctx.ui.notify(`🚀 Running ${tasks.length} scouts in parallel...`, 'info');
|
|
427
|
-
await spawnParallel(parallelTasks, agents, ctx);
|
|
610
|
+
ctx.ui.notify(`🚀 Running ${tasks.length} scouts in parallel (merge: ${mergeStrategy})...`, 'info');
|
|
611
|
+
await spawnParallel(parallelTasks, agents, ctx, { mergeStrategy, stream: true });
|
|
612
|
+
},
|
|
613
|
+
});
|
|
614
|
+
// COMMAND: /agent-create (new in 0.0.6)
|
|
615
|
+
pi.registerCommand("agent-create", {
|
|
616
|
+
description: "Create a new custom agent: /agent-create <name>",
|
|
617
|
+
handler: async (args, ctx) => {
|
|
618
|
+
const name = args.trim();
|
|
619
|
+
if (!name) {
|
|
620
|
+
ctx.ui.notify("❌ Usage: /agent-create <name>", 'error');
|
|
621
|
+
return;
|
|
622
|
+
}
|
|
623
|
+
const template = `---
|
|
624
|
+
name: ${name}
|
|
625
|
+
description: Custom agent for specific tasks
|
|
626
|
+
tools: read_file, search_files, list_directory
|
|
627
|
+
model: qwen2.5-coder:14b
|
|
628
|
+
---
|
|
629
|
+
|
|
630
|
+
You are a specialized agent for: ${name}.
|
|
631
|
+
|
|
632
|
+
## Responsibilities
|
|
633
|
+
1. Task 1
|
|
634
|
+
2. Task 2
|
|
635
|
+
3. Task 3
|
|
636
|
+
|
|
637
|
+
## Output Format
|
|
638
|
+
...
|
|
639
|
+
`;
|
|
640
|
+
const agentPath = path.join(USER_AGENTS_DIR, `${name}.md`);
|
|
641
|
+
await fs.writeFile(agentPath, template);
|
|
642
|
+
ctx.ui.notify(`✅ Created custom agent: ${name}\nEdit at: ${agentPath}`, 'info');
|
|
428
643
|
},
|
|
429
644
|
});
|
|
430
|
-
console.log("[Subagent] Ready");
|
|
645
|
+
console.log("[Subagent] Ready v0.0.6 with streaming, custom agents, and merge strategies");
|
|
431
646
|
}
|
|
432
647
|
//# sourceMappingURL=subagent-extension.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-extension.js","sourceRoot":"","sources":["../../../../src/extensions/core/subagent-extension.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"subagent-extension.js","sourceRoot":"","sources":["../../../../src/extensions/core/subagent-extension.ts"],"names":[],"mappings":"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"}
|