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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "0xkobold",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
4
4
  "description": "Your digital familiar - a personal AI assistant that learns and evolves",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",
@@ -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)
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "0xkobold",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
4
4
  "description": "Your digital familiar - a personal AI assistant that learns and evolves",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",
@@ -1,12 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Post-install welcome message
4
- * Shows when users install 0xKobold via npm
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
- showWelcome();
108
+ async function main() {
109
+ await copyDefaultAgents();
110
+ showWelcome();
111
+ }
112
+
113
+ main();