0xkobold 0.0.4 → 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
|
@@ -0,0 +1,647 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subagent Extension - v0.0.6 Polish
|
|
3
|
+
*
|
|
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/
|
|
10
|
+
*
|
|
11
|
+
* @version 0.0.6
|
|
12
|
+
*/
|
|
13
|
+
import { Type } from "@sinclair/typebox";
|
|
14
|
+
import { spawn } from "node:child_process";
|
|
15
|
+
import * as fs from "node:fs/promises";
|
|
16
|
+
import * as path from "node:path";
|
|
17
|
+
import { homedir } from "node:os";
|
|
18
|
+
import { existsSync } from "node:fs";
|
|
19
|
+
// Constants
|
|
20
|
+
const MAX_PARALLEL_TASKS = 8;
|
|
21
|
+
const MAX_CONCURRENCY = 4;
|
|
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
|
|
25
|
+
async function discoverAgents() {
|
|
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/
|
|
35
|
+
try {
|
|
36
|
+
await fs.mkdir(USER_AGENTS_DIR, { recursive: true });
|
|
37
|
+
const userFiles = await fs.readdir(USER_AGENTS_DIR);
|
|
38
|
+
for (const file of userFiles) {
|
|
39
|
+
if (file.endsWith('.md')) {
|
|
40
|
+
const content = await fs.readFile(path.join(USER_AGENTS_DIR, file), 'utf-8');
|
|
41
|
+
const config = parseAgentDefinition(content, file.replace('.md', ''));
|
|
42
|
+
if (config) {
|
|
43
|
+
config.scope = "user";
|
|
44
|
+
agents.set(config.name, config);
|
|
45
|
+
console.log(`[Subagent] Loaded user agent: ${config.name}`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
console.log(`[Subagent] User agents dir not accessible: ${USER_AGENTS_DIR}`);
|
|
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
|
+
}
|
|
74
|
+
}
|
|
75
|
+
console.log(`[Subagent] Total agents: ${agents.size}`);
|
|
76
|
+
return agents;
|
|
77
|
+
}
|
|
78
|
+
function loadBuiltinAgents() {
|
|
79
|
+
const agents = new Map();
|
|
80
|
+
const defaults = {
|
|
81
|
+
scout: {
|
|
82
|
+
name: 'scout',
|
|
83
|
+
description: 'Fast codebase reconnaissance',
|
|
84
|
+
tools: ['read_file', 'search_files', 'list_directory'],
|
|
85
|
+
model: 'qwen2.5-coder:14b',
|
|
86
|
+
systemPrompt: `You are a fast reconnaissance agent. Your job:
|
|
87
|
+
1. Quickly scan the codebase structure
|
|
88
|
+
2. Find relevant files using search and list tools
|
|
89
|
+
3. Read key files to understand context
|
|
90
|
+
4. Return a COMPRESSED summary (max 500 tokens)
|
|
91
|
+
|
|
92
|
+
Be fast. Be concise. Focus on facts, not opinions.
|
|
93
|
+
Only use available tools. Never write files.`,
|
|
94
|
+
},
|
|
95
|
+
planner: {
|
|
96
|
+
name: 'planner',
|
|
97
|
+
description: 'Creates implementation plans',
|
|
98
|
+
tools: ['read_file', 'search_files', 'list_directory'],
|
|
99
|
+
model: 'qwen2.5-coder:14b',
|
|
100
|
+
systemPrompt: `You are a planning specialist. Your job:
|
|
101
|
+
1. Analyze the existing code and requirements
|
|
102
|
+
2. Create a step-by-step implementation plan
|
|
103
|
+
3. Identify potential issues or blockers
|
|
104
|
+
4. Provide clear, actionable steps
|
|
105
|
+
|
|
106
|
+
Focus on planning, not implementation.
|
|
107
|
+
Provide specific file paths and code structure.`,
|
|
108
|
+
},
|
|
109
|
+
worker: {
|
|
110
|
+
name: 'worker',
|
|
111
|
+
description: 'General-purpose implementation',
|
|
112
|
+
tools: ['read_file', 'write_file', 'edit_file', 'search_files', 'shell'],
|
|
113
|
+
model: 'qwen2.5-coder:14b',
|
|
114
|
+
systemPrompt: `You are an implementation specialist. Your job:
|
|
115
|
+
1. Implement features according to specifications
|
|
116
|
+
2. Write clean, well-tested code
|
|
117
|
+
3. Follow existing code patterns
|
|
118
|
+
4. Handle errors gracefully
|
|
119
|
+
|
|
120
|
+
You have full tool access including write operations.
|
|
121
|
+
Always verify changes before completing.`,
|
|
122
|
+
},
|
|
123
|
+
reviewer: {
|
|
124
|
+
name: 'reviewer',
|
|
125
|
+
description: 'Code review specialist',
|
|
126
|
+
tools: ['read_file', 'search_files', 'shell'],
|
|
127
|
+
model: 'qwen2.5-coder:14b',
|
|
128
|
+
systemPrompt: `You are a code review specialist. Your job:
|
|
129
|
+
1. Review code changes thoroughly
|
|
130
|
+
2. Identify bugs, security issues, or style violations
|
|
131
|
+
3. Suggest specific improvements
|
|
132
|
+
4. Check for edge cases
|
|
133
|
+
|
|
134
|
+
Be thorough but constructive.
|
|
135
|
+
Provide specific line-by-line feedback.`,
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
for (const [name, config] of Object.entries(defaults)) {
|
|
139
|
+
agents.set(name, config);
|
|
140
|
+
}
|
|
141
|
+
return agents;
|
|
142
|
+
}
|
|
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 = {}) {
|
|
259
|
+
const startTime = Date.now();
|
|
260
|
+
const chunks = [];
|
|
261
|
+
return new Promise((resolve) => {
|
|
262
|
+
// Build command
|
|
263
|
+
const args = [
|
|
264
|
+
'run',
|
|
265
|
+
'src/cli/index.ts',
|
|
266
|
+
'--command',
|
|
267
|
+
`agent:${agentConfig.name}`,
|
|
268
|
+
'--task',
|
|
269
|
+
task,
|
|
270
|
+
];
|
|
271
|
+
// Spawn process
|
|
272
|
+
const child = spawn('bun', args, {
|
|
273
|
+
cwd: process.cwd(),
|
|
274
|
+
env: {
|
|
275
|
+
...process.env,
|
|
276
|
+
KOBOLD_SUBAGENT: 'true',
|
|
277
|
+
KOBOLD_AGENT_MODEL: agentConfig.model,
|
|
278
|
+
KOBOLD_AGENT_TOOLS: agentConfig.tools.join(','),
|
|
279
|
+
},
|
|
280
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
281
|
+
});
|
|
282
|
+
let output = '';
|
|
283
|
+
let error = '';
|
|
284
|
+
// Real-time streaming
|
|
285
|
+
child.stdout?.on('data', (data) => {
|
|
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
|
+
}
|
|
297
|
+
});
|
|
298
|
+
child.stderr?.on('data', (data) => {
|
|
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
|
+
}
|
|
309
|
+
});
|
|
310
|
+
child.on('close', (code) => {
|
|
311
|
+
const result = {
|
|
312
|
+
agent: agentConfig.name,
|
|
313
|
+
task,
|
|
314
|
+
exitCode: code || 0,
|
|
315
|
+
output: output.trim(),
|
|
316
|
+
error: error.trim() || undefined,
|
|
317
|
+
duration: Date.now() - startTime,
|
|
318
|
+
streamed: options.stream,
|
|
319
|
+
chunks: options.stream ? chunks : undefined,
|
|
320
|
+
};
|
|
321
|
+
resolve(result);
|
|
322
|
+
});
|
|
323
|
+
// Timeout after 5 minutes
|
|
324
|
+
setTimeout(() => {
|
|
325
|
+
child.kill('SIGTERM');
|
|
326
|
+
}, 5 * 60 * 1000);
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
// Parallel execution with merge strategy
|
|
330
|
+
async function spawnParallel(tasks, agents, ctx, options = {}) {
|
|
331
|
+
const results = [];
|
|
332
|
+
const executing = [];
|
|
333
|
+
let completed = 0;
|
|
334
|
+
const updateProgress = () => {
|
|
335
|
+
ctx.ui.notify(`⏳ ${completed}/${tasks.length} agents complete`, 'info');
|
|
336
|
+
};
|
|
337
|
+
for (const task of tasks) {
|
|
338
|
+
const agentConfig = agents.get(task.agent);
|
|
339
|
+
if (!agentConfig) {
|
|
340
|
+
const error = {
|
|
341
|
+
agent: task.agent,
|
|
342
|
+
task: task.task,
|
|
343
|
+
exitCode: 1,
|
|
344
|
+
output: '',
|
|
345
|
+
error: `Agent '${task.agent}' not found. Available: ${Array.from(agents.keys()).join(', ')}`,
|
|
346
|
+
duration: 0,
|
|
347
|
+
};
|
|
348
|
+
results.push(error);
|
|
349
|
+
completed++;
|
|
350
|
+
updateProgress();
|
|
351
|
+
continue;
|
|
352
|
+
}
|
|
353
|
+
// Wait if at concurrency limit
|
|
354
|
+
while (executing.length >= MAX_CONCURRENCY) {
|
|
355
|
+
await Promise.race(executing);
|
|
356
|
+
}
|
|
357
|
+
const promise = spawnSubagent(agentConfig, task.task, ctx, {
|
|
358
|
+
stream: options.stream
|
|
359
|
+
}).then((result) => {
|
|
360
|
+
results.push(result);
|
|
361
|
+
completed++;
|
|
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
|
+
}
|
|
368
|
+
});
|
|
369
|
+
executing.push(promise);
|
|
370
|
+
promise.then(() => {
|
|
371
|
+
const index = executing.indexOf(promise);
|
|
372
|
+
if (index > -1)
|
|
373
|
+
executing.splice(index, 1);
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
await Promise.all(executing);
|
|
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 };
|
|
382
|
+
}
|
|
383
|
+
// Chain execution
|
|
384
|
+
async function spawnChain(chain, agents, ctx, options = {}) {
|
|
385
|
+
const results = [];
|
|
386
|
+
let previousOutput = '';
|
|
387
|
+
for (let i = 0; i < chain.length; i++) {
|
|
388
|
+
const step = chain[i];
|
|
389
|
+
const agentConfig = agents.get(step.agent);
|
|
390
|
+
if (!agentConfig) {
|
|
391
|
+
const error = classifyError({
|
|
392
|
+
agent: step.agent,
|
|
393
|
+
task: step.task,
|
|
394
|
+
exitCode: 1,
|
|
395
|
+
output: '',
|
|
396
|
+
error: `Agent '${step.agent}' not found`,
|
|
397
|
+
duration: 0,
|
|
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
|
+
});
|
|
408
|
+
break;
|
|
409
|
+
}
|
|
410
|
+
// Replace {previous} placeholder
|
|
411
|
+
const task = step.task.replace(/{previous}/g, previousOutput);
|
|
412
|
+
ctx.ui.notify(`⏳ Step ${i + 1}/${chain.length}: ${step.agent}...`, 'info');
|
|
413
|
+
const result = await spawnSubagent(agentConfig, task, ctx, {
|
|
414
|
+
stream: options.stream
|
|
415
|
+
});
|
|
416
|
+
results.push(result);
|
|
417
|
+
if (result.exitCode !== 0) {
|
|
418
|
+
const error = classifyError(result);
|
|
419
|
+
ctx.ui.notify(`❌ Step ${i + 1} failed: ${error.message}`, 'error');
|
|
420
|
+
break;
|
|
421
|
+
}
|
|
422
|
+
previousOutput = result.output;
|
|
423
|
+
ctx.ui.notify(`✅ Step ${i + 1} complete`, 'info');
|
|
424
|
+
}
|
|
425
|
+
return results;
|
|
426
|
+
}
|
|
427
|
+
export default async function subagentExtension(pi) {
|
|
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
|
|
432
|
+
const agents = await discoverAgents();
|
|
433
|
+
// TOOL: agent_spawn (enhanced for v0.0.6)
|
|
434
|
+
pi.registerTool({
|
|
435
|
+
name: "subagent_spawn",
|
|
436
|
+
label: "Spawn Subagent",
|
|
437
|
+
description: "Spawn single, parallel, or chained subagents with streaming and merge strategies",
|
|
438
|
+
parameters: Type.Object({
|
|
439
|
+
agent: Type.Optional(Type.String({ description: "Agent name" })),
|
|
440
|
+
task: Type.Optional(Type.String({ description: "Task description" })),
|
|
441
|
+
tasks: Type.Optional(Type.Array(Type.Object({
|
|
442
|
+
agent: Type.String({ description: "Agent name" }),
|
|
443
|
+
task: Type.String({ description: "Task description" }),
|
|
444
|
+
}), { description: "Array of tasks for parallel execution" })),
|
|
445
|
+
chain: Type.Optional(Type.Array(Type.Object({
|
|
446
|
+
agent: Type.String({ description: "Agent name" }),
|
|
447
|
+
task: Type.String({ description: "Task description" }),
|
|
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
|
+
})),
|
|
457
|
+
}),
|
|
458
|
+
async execute(_toolCallId, params, _signal, _onUpdate, ctx) {
|
|
459
|
+
const startTime = Date.now();
|
|
460
|
+
const stream = params.stream || false;
|
|
461
|
+
// Mode detection
|
|
462
|
+
if (params.tasks && Array.isArray(params.tasks)) {
|
|
463
|
+
const tasks = params.tasks;
|
|
464
|
+
if (tasks.length > MAX_PARALLEL_TASKS) {
|
|
465
|
+
return {
|
|
466
|
+
content: [{ type: "text", text: `❌ Too many tasks (max ${MAX_PARALLEL_TASKS})` }],
|
|
467
|
+
details: { error: "max_tasks_exceeded" },
|
|
468
|
+
};
|
|
469
|
+
}
|
|
470
|
+
ctx.ui.notify(`🚀 Spawning ${tasks.length} agents in parallel...`, 'info');
|
|
471
|
+
const { results, mergedOutput } = await spawnParallel(tasks, agents, ctx, {
|
|
472
|
+
mergeStrategy: params.mergeStrategy,
|
|
473
|
+
stream
|
|
474
|
+
});
|
|
475
|
+
const success = results.filter(r => r.exitCode === 0).length;
|
|
476
|
+
const failed = results.filter(r => r.exitCode !== 0).length;
|
|
477
|
+
return {
|
|
478
|
+
content: [{
|
|
479
|
+
type: "text",
|
|
480
|
+
text: `✅ ${success} success, ${failed} failed\n\n${mergedOutput}`,
|
|
481
|
+
}],
|
|
482
|
+
details: {
|
|
483
|
+
mode: "parallel",
|
|
484
|
+
results,
|
|
485
|
+
mergeStrategy: params.mergeStrategy || "summary"
|
|
486
|
+
},
|
|
487
|
+
};
|
|
488
|
+
}
|
|
489
|
+
else if (params.chain && Array.isArray(params.chain)) {
|
|
490
|
+
const chain = params.chain;
|
|
491
|
+
ctx.ui.notify(`🔗 Starting chain of ${chain.length} agents...`, 'info');
|
|
492
|
+
const results = await spawnChain(chain, agents, ctx, { stream });
|
|
493
|
+
const success = results.filter(r => r.exitCode === 0).length;
|
|
494
|
+
const summary = results.map((r, i) => `${r.exitCode === 0 ? '✅' : '❌'} Step ${i + 1} (${r.agent})`).join('\n');
|
|
495
|
+
return {
|
|
496
|
+
content: [{
|
|
497
|
+
type: "text",
|
|
498
|
+
text: `✅ Chain complete: ${success}/${chain.length} steps\n\n${summary}`,
|
|
499
|
+
}],
|
|
500
|
+
details: { mode: "chain", results },
|
|
501
|
+
};
|
|
502
|
+
}
|
|
503
|
+
else if (params.agent && params.task) {
|
|
504
|
+
const agentConfig = agents.get(params.agent);
|
|
505
|
+
if (!agentConfig) {
|
|
506
|
+
return {
|
|
507
|
+
content: [{
|
|
508
|
+
type: "text",
|
|
509
|
+
text: `❌ Agent '${params.agent}' not found. Available:\n${Array.from(agents.keys()).map(k => `- ${k}`).join('\n')}`
|
|
510
|
+
}],
|
|
511
|
+
details: { error: "agent_not_found", available: Array.from(agents.keys()) },
|
|
512
|
+
};
|
|
513
|
+
}
|
|
514
|
+
ctx.ui.notify(`🚀 Spawning ${agentConfig.name}...`, 'info');
|
|
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
|
+
}
|
|
526
|
+
const duration = ((Date.now() - startTime) / 1000).toFixed(1);
|
|
527
|
+
return {
|
|
528
|
+
content: [{
|
|
529
|
+
type: "text",
|
|
530
|
+
text: `✅ ${result.agent} complete (${duration}s)\n\n${result.output}`,
|
|
531
|
+
}],
|
|
532
|
+
details: result,
|
|
533
|
+
};
|
|
534
|
+
}
|
|
535
|
+
return {
|
|
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
|
+
},
|
|
541
|
+
};
|
|
542
|
+
},
|
|
543
|
+
});
|
|
544
|
+
// COMMAND: /agents (enhanced with scope info)
|
|
545
|
+
pi.registerCommand("subagents", {
|
|
546
|
+
description: "List available agents with scope info",
|
|
547
|
+
handler: async (_args, ctx) => {
|
|
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');
|
|
554
|
+
},
|
|
555
|
+
});
|
|
556
|
+
// COMMAND: /implement (with streaming)
|
|
557
|
+
pi.registerCommand("implement", {
|
|
558
|
+
description: "Implement with workflow: scout → planner → worker (with streaming)",
|
|
559
|
+
handler: async (args, ctx) => {
|
|
560
|
+
if (!args.trim()) {
|
|
561
|
+
ctx.ui.notify("❌ Usage: /implement <feature description>", 'error');
|
|
562
|
+
return;
|
|
563
|
+
}
|
|
564
|
+
const chain = [
|
|
565
|
+
{ agent: "scout", task: `Find all code related to: ${args}` },
|
|
566
|
+
{ agent: "planner", task: `Create implementation plan for: ${args}. Findings: {previous}` },
|
|
567
|
+
{ agent: "worker", task: `Implement: ${args}. Plan: {previous}` },
|
|
568
|
+
];
|
|
569
|
+
ctx.ui.notify(`🚀 Starting /implement workflow for: ${args}`, 'info');
|
|
570
|
+
await spawnChain(chain, agents, ctx, { stream: true });
|
|
571
|
+
},
|
|
572
|
+
});
|
|
573
|
+
// COMMAND: /scout-and-plan
|
|
574
|
+
pi.registerCommand("scout-and-plan", {
|
|
575
|
+
description: "Scout and plan with streaming",
|
|
576
|
+
handler: async (args, ctx) => {
|
|
577
|
+
if (!args.trim()) {
|
|
578
|
+
ctx.ui.notify("❌ Usage: /scout-and-plan <feature description>", 'error');
|
|
579
|
+
return;
|
|
580
|
+
}
|
|
581
|
+
const chain = [
|
|
582
|
+
{ agent: "scout", task: `Find all code related to: ${args}` },
|
|
583
|
+
{ agent: "planner", task: `Create implementation plan for: ${args}. Findings: {previous}` },
|
|
584
|
+
];
|
|
585
|
+
ctx.ui.notify(`🚀 Starting /scout-and-plan for: ${args}`, 'info');
|
|
586
|
+
await spawnChain(chain, agents, ctx, { stream: true });
|
|
587
|
+
},
|
|
588
|
+
});
|
|
589
|
+
// COMMAND: /parallel (with merge strategy)
|
|
590
|
+
pi.registerCommand("parallel", {
|
|
591
|
+
description: "Run agents in parallel with merge: /parallel [--merge=summary|concatenate|structured] \"task1\" \"task2\"",
|
|
592
|
+
handler: async (args, ctx) => {
|
|
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);
|
|
598
|
+
if (tasks.length === 0) {
|
|
599
|
+
ctx.ui.notify("❌ Usage: /parallel [--merge=strategy] \"task 1\" \"task 2\"", 'error');
|
|
600
|
+
return;
|
|
601
|
+
}
|
|
602
|
+
if (tasks.length > MAX_PARALLEL_TASKS) {
|
|
603
|
+
ctx.ui.notify(`❌ Max ${MAX_PARALLEL_TASKS} tasks`, 'error');
|
|
604
|
+
return;
|
|
605
|
+
}
|
|
606
|
+
const parallelTasks = tasks.map(task => ({
|
|
607
|
+
agent: "scout",
|
|
608
|
+
task,
|
|
609
|
+
}));
|
|
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');
|
|
643
|
+
},
|
|
644
|
+
});
|
|
645
|
+
console.log("[Subagent] Ready v0.0.6 with streaming, custom agents, and merge strategies");
|
|
646
|
+
}
|
|
647
|
+
//# sourceMappingURL=subagent-extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagent-extension.js","sourceRoot":"","sources":["../../../../src/extensions/core/subagent-extension.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -83,6 +83,7 @@ function verifyExtensions() {
|
|
|
83
83
|
'--extension', ext('perennial-memory-extension'),
|
|
84
84
|
'--extension', ext('diagnostics-extension'),
|
|
85
85
|
'--extension', ext('memory-synthesis-extension'),
|
|
86
|
+
'--extension', ext('subagent-extension'),
|
|
86
87
|
// Note: pi-coding-agent updates disabled - user manages dependencies manually
|
|
87
88
|
// '--extension', ext('update-extension'),
|
|
88
89
|
// Self-update for 0xKobold only (shows in dev mode)
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/scripts/postinstall.js
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* Post-install
|
|
4
|
-
* Shows
|
|
3
|
+
* Post-install script
|
|
4
|
+
* - Shows welcome message
|
|
5
|
+
* - Copies default agents to ~/.0xkobold/agents/
|
|
5
6
|
*/
|
|
6
7
|
|
|
7
8
|
import { homedir } from "node:os";
|
|
8
|
-
import { join } from "node:path";
|
|
9
|
+
import { join, dirname } from "node:path";
|
|
9
10
|
import { existsSync } from "node:fs";
|
|
11
|
+
import { mkdir, copyFile, readdir } from "node:fs/promises";
|
|
12
|
+
import { fileURLToPath } from "node:url";
|
|
13
|
+
|
|
14
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
10
15
|
|
|
11
16
|
const isCiEnvironment = () => {
|
|
12
17
|
return process.env.CI ||
|
|
@@ -14,6 +19,38 @@ const isCiEnvironment = () => {
|
|
|
14
19
|
process.env.NODE_ENV === "test";
|
|
15
20
|
};
|
|
16
21
|
|
|
22
|
+
async function copyDefaultAgents() {
|
|
23
|
+
const agentsDir = join(homedir(), ".0xkobold", "agents");
|
|
24
|
+
const sourceDir = join(__dirname, "..", "src", "extensions", "agents");
|
|
25
|
+
|
|
26
|
+
try {
|
|
27
|
+
// Create agents directory
|
|
28
|
+
await mkdir(agentsDir, { recursive: true });
|
|
29
|
+
|
|
30
|
+
// Check if source exists (development mode)
|
|
31
|
+
if (!existsSync(sourceDir)) {
|
|
32
|
+
return; // In production, agents are bundled differently
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Copy default agents if they don't exist
|
|
36
|
+
const files = await readdir(sourceDir);
|
|
37
|
+
for (const file of files) {
|
|
38
|
+
if (file.endsWith('.md')) {
|
|
39
|
+
const sourcePath = join(sourceDir, file);
|
|
40
|
+
const targetPath = join(agentsDir, file);
|
|
41
|
+
|
|
42
|
+
if (!existsSync(targetPath)) {
|
|
43
|
+
await copyFile(sourcePath, targetPath);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
console.log(` 📁 Agents installed to: ${agentsDir}`);
|
|
49
|
+
} catch (error) {
|
|
50
|
+
// Silently fail - not critical
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
17
54
|
const showWelcome = () => {
|
|
18
55
|
const configPath = join(homedir(), ".0xkobold", "config.json");
|
|
19
56
|
const isConfigured = existsSync(configPath);
|
|
@@ -68,4 +105,9 @@ const showWelcome = () => {
|
|
|
68
105
|
};
|
|
69
106
|
|
|
70
107
|
// Only show in actual install, not CI
|
|
71
|
-
|
|
108
|
+
async function main() {
|
|
109
|
+
await copyDefaultAgents();
|
|
110
|
+
showWelcome();
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
main();
|