0xkobold 0.0.6 → 0.2.0

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.
Files changed (120) hide show
  1. package/HEARTBEAT.md +66 -32
  2. package/README.md +220 -1
  3. package/dist/package.json +3 -2
  4. package/dist/src/agent/bootstrap-loader.js +138 -0
  5. package/dist/src/agent/bootstrap-loader.js.map +1 -0
  6. package/dist/src/agent/context-pruning.js +279 -0
  7. package/dist/src/agent/context-pruning.js.map +1 -0
  8. package/dist/src/agent/dynamic-personality.js +211 -0
  9. package/dist/src/agent/dynamic-personality.js.map +1 -0
  10. package/dist/src/agent/embedded-runner.js +79 -0
  11. package/dist/src/agent/embedded-runner.js.map +1 -0
  12. package/dist/src/agent/index.js +16 -0
  13. package/dist/src/agent/index.js.map +1 -0
  14. package/dist/src/agent/system-prompt.js +84 -0
  15. package/dist/src/agent/system-prompt.js.map +1 -0
  16. package/dist/src/agent/task-router.js +194 -0
  17. package/dist/src/agent/task-router.js.map +1 -0
  18. package/dist/src/agent/tools/index.js +2 -0
  19. package/dist/src/agent/tools/index.js.map +1 -0
  20. package/dist/src/agent/tools/spawn-agent.js +200 -0
  21. package/dist/src/agent/tools/spawn-agent.js.map +1 -0
  22. package/dist/src/agent/types/definitions.js +317 -0
  23. package/dist/src/agent/types/definitions.js.map +1 -0
  24. package/dist/src/agent/types/index.js +2 -0
  25. package/dist/src/agent/types/index.js.map +1 -0
  26. package/dist/src/agent/user-profile.js +300 -0
  27. package/dist/src/agent/user-profile.js.map +1 -0
  28. package/dist/src/agents/task-router.js +194 -0
  29. package/dist/src/agents/task-router.js.map +1 -0
  30. package/dist/src/agents/tools/index.js +2 -0
  31. package/dist/src/agents/tools/index.js.map +1 -0
  32. package/dist/src/agents/tools/spawn-agent.js +200 -0
  33. package/dist/src/agents/tools/spawn-agent.js.map +1 -0
  34. package/dist/src/agents/types/definitions.js +317 -0
  35. package/dist/src/agents/types/definitions.js.map +1 -0
  36. package/dist/src/agents/types/index.js +2 -0
  37. package/dist/src/agents/types/index.js.map +1 -0
  38. package/dist/src/cli/commands/embedded.js +36 -0
  39. package/dist/src/cli/commands/embedded.js.map +1 -0
  40. package/dist/src/cli/commands/gateway.js +127 -166
  41. package/dist/src/cli/commands/gateway.js.map +1 -1
  42. package/dist/src/cli/program-fixed.js +1 -0
  43. package/dist/src/cli/program-fixed.js.map +1 -0
  44. package/dist/src/cli/program.js +10 -29
  45. package/dist/src/cli/program.js.map +1 -1
  46. package/dist/src/extensions/core/agent-lifecycle-extension.js +323 -0
  47. package/dist/src/extensions/core/agent-lifecycle-extension.js.map +1 -0
  48. package/dist/src/extensions/core/agent-orchestrator-extension.js +642 -0
  49. package/dist/src/extensions/core/agent-orchestrator-extension.js.map +1 -0
  50. package/dist/src/extensions/core/agent-workspace-extension.js +174 -0
  51. package/dist/src/extensions/core/agent-workspace-extension.js.map +1 -0
  52. package/dist/src/extensions/core/autonomous-executor-extension.js +145 -0
  53. package/dist/src/extensions/core/autonomous-executor-extension.js.map +1 -0
  54. package/dist/src/extensions/core/autonomous-subagent-extension.js +333 -0
  55. package/dist/src/extensions/core/autonomous-subagent-extension.js.map +1 -0
  56. package/dist/src/extensions/core/deprecated/agent-lifecycle-extension.js +323 -0
  57. package/dist/src/extensions/core/deprecated/agent-lifecycle-extension.js.map +1 -0
  58. package/dist/src/extensions/core/deprecated/autonomous-subagent-extension.js +333 -0
  59. package/dist/src/extensions/core/deprecated/autonomous-subagent-extension.js.map +1 -0
  60. package/dist/src/extensions/core/deprecated/subagent-extension.js +647 -0
  61. package/dist/src/extensions/core/deprecated/subagent-extension.js.map +1 -0
  62. package/dist/src/extensions/core/mode-manager-extension.js +11 -0
  63. package/dist/src/extensions/core/mode-manager-extension.js.map +1 -1
  64. package/dist/src/extensions/core/perennial-memory-extension.js +10 -2
  65. package/dist/src/extensions/core/perennial-memory-extension.js.map +1 -1
  66. package/dist/src/extensions/core/persona-loader-extension.js +61 -129
  67. package/dist/src/extensions/core/persona-loader-extension.js.map +1 -1
  68. package/dist/src/extensions/core/websearch-enhanced-extension.js +705 -0
  69. package/dist/src/extensions/core/websearch-enhanced-extension.js.map +1 -0
  70. package/dist/src/extensions/core/websearch-v2-extension.js +303 -0
  71. package/dist/src/extensions/core/websearch-v2-extension.js.map +1 -0
  72. package/dist/src/gateway/discord-bot.js +185 -0
  73. package/dist/src/gateway/discord-bot.js.map +1 -0
  74. package/dist/src/gateway/index.js +10 -350
  75. package/dist/src/gateway/index.js.map +1 -1
  76. package/dist/src/gateway/server.js +325 -0
  77. package/dist/src/gateway/server.js.map +1 -0
  78. package/dist/src/gateway/websocket-server.js +142 -0
  79. package/dist/src/gateway/websocket-server.js.map +1 -0
  80. package/dist/src/heartbeat/checkin.js +185 -0
  81. package/dist/src/heartbeat/checkin.js.map +1 -0
  82. package/dist/src/heartbeat/index.js +5 -0
  83. package/dist/src/heartbeat/index.js.map +1 -0
  84. package/dist/src/heartbeat/notifications.js +216 -0
  85. package/dist/src/heartbeat/notifications.js.map +1 -0
  86. package/dist/src/heartbeat/scheduler.js +284 -0
  87. package/dist/src/heartbeat/scheduler.js.map +1 -0
  88. package/dist/src/index.js +21 -3
  89. package/dist/src/index.js.map +1 -1
  90. package/dist/src/mode/auto-detector.js +211 -0
  91. package/dist/src/mode/auto-detector.js.map +1 -0
  92. package/dist/src/mode/index.js +3 -0
  93. package/dist/src/mode/index.js.map +1 -0
  94. package/dist/src/mode/natural-switcher.js +123 -0
  95. package/dist/src/mode/natural-switcher.js.map +1 -0
  96. package/dist/src/skills/builtin/api-worker.js +88 -0
  97. package/dist/src/skills/builtin/api-worker.js.map +1 -0
  98. package/dist/src/skills/builtin/nextjs-worker.js +55 -0
  99. package/dist/src/skills/builtin/nextjs-worker.js.map +1 -0
  100. package/dist/src/skills/builtin/real-workers.js +166 -0
  101. package/dist/src/skills/builtin/real-workers.js.map +1 -0
  102. package/dist/src/skills/builtin/sql-worker.js +61 -0
  103. package/dist/src/skills/builtin/sql-worker.js.map +1 -0
  104. package/dist/src/skills/builtin/test-worker.js +79 -0
  105. package/dist/src/skills/builtin/test-worker.js.map +1 -0
  106. package/dist/src/skills/builtin/web-research.js +77 -0
  107. package/dist/src/skills/builtin/web-research.js.map +1 -0
  108. package/dist/src/skills/framework.js +250 -0
  109. package/dist/src/skills/framework.js.map +1 -0
  110. package/dist/src/skills/index.js +10 -10
  111. package/dist/src/skills/index.js.map +1 -1
  112. package/dist/src/streaming/block-streamer.js +172 -0
  113. package/dist/src/streaming/block-streamer.js.map +1 -0
  114. package/dist/src/streaming/index.js +2 -0
  115. package/dist/src/streaming/index.js.map +1 -0
  116. package/dist/src/workspace/index.js +2 -0
  117. package/dist/src/workspace/index.js.map +1 -0
  118. package/dist/src/workspace/manager.js +181 -0
  119. package/dist/src/workspace/manager.js.map +1 -0
  120. package/package.json +3 -2
@@ -0,0 +1,84 @@
1
+ /**
2
+ * System Prompt Builder - v0.2.0
3
+ *
4
+ * Constructs custom system prompts with bootstrap injection.
5
+ * Inspired by OpenClaw's buildAgentSystemPrompt()
6
+ */
7
+ import { formatBootstrapForPrompt } from "./bootstrap-loader.js";
8
+ const BASE_SYSTEM_PROMPT = `You are 0xKobold, a helpful AI coding assistant and digital familiar.
9
+
10
+ Your purpose is to assist the user with coding tasks, answer questions, and act as a companion in their development workflow.
11
+
12
+ Key capabilities:
13
+ - Read, write, and edit files in the workspace
14
+ - Execute commands and scripts
15
+ - Search the codebase
16
+ - Spawn sub-agents for complex tasks
17
+ - Access web resources
18
+ - Remember context across sessions
19
+
20
+ Important behaviors:
21
+ - Be concise and focused on delivering working code
22
+ - Ask clarifying questions when requirements are unclear
23
+ - Handle errors gracefully and explain what went wrong
24
+ - Follow existing code patterns in the project
25
+ - Test your changes when possible
26
+
27
+ When to use sub-agents:
28
+ - Complex tasks requiring multiple steps
29
+ - Parallel work streams
30
+ - Research vs implementation split
31
+ - Code review scenarios`;
32
+ /**
33
+ * Build custom system prompt with bootstrap injection
34
+ */
35
+ export function buildSystemPrompt(config) {
36
+ const parts = [];
37
+ // 1. Base identity
38
+ parts.push(config.basePrompt || BASE_SYSTEM_PROMPT);
39
+ // 2. Bootstrap context (SOUL.md, IDENTITY.md, etc.)
40
+ if (config.bootstrapFiles.length > 0) {
41
+ parts.push("");
42
+ parts.push(formatBootstrapForPrompt(config.bootstrapFiles));
43
+ }
44
+ // 3. Workspace context
45
+ if (config.workspace) {
46
+ parts.push("");
47
+ parts.push(`<!-- Workspace -->\nWorking directory: ${config.workspace}`);
48
+ }
49
+ // 4. Tools reference (optional summary)
50
+ if (config.tools && config.tools.length > 0) {
51
+ parts.push("");
52
+ parts.push("Available tools: " + config.tools.map(t => t.name).join(", "));
53
+ }
54
+ // 5. Mode-specific instructions
55
+ if (config.mode === "plan") {
56
+ parts.push("");
57
+ parts.push(`<!-- Mode: Plan -->\nYou are in PLAN MODE. Focus on investigation and planning. Do not write code unless explicitly asked.`);
58
+ }
59
+ else if (config.mode === "build") {
60
+ parts.push("");
61
+ parts.push(`<!-- Mode: Build -->\nYou are in BUILD MODE. Focus on implementation and execution. Write clean, tested code.`);
62
+ }
63
+ return parts.join("\n\n");
64
+ }
65
+ /**
66
+ * Create system prompt override for pi-coding-agent
67
+ * This format matches what pi-coding-agent expects
68
+ */
69
+ export function createSystemPromptOverride(systemPrompt) {
70
+ return {
71
+ type: "override",
72
+ systemPrompt,
73
+ };
74
+ }
75
+ /**
76
+ * Apply system prompt override to session
77
+ * This is a placeholder - actual application depends on pi-coding-agent internals
78
+ */
79
+ export function applySystemPromptOverride(session, override) {
80
+ // In real implementation, this would access pi-coding-agent internals
81
+ // For now, we document the intent
82
+ console.log("[SystemPrompt] Override prepared (" + override.systemPrompt.length + " chars)");
83
+ }
84
+ //# sourceMappingURL=system-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../../src/agent/system-prompt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAiB,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAUhF,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;wBAuBH,CAAC;AAEzB;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAA0B;IAC1D,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,mBAAmB;IACnB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,kBAAkB,CAAC,CAAC;IAEpD,oDAAoD;IACpD,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,uBAAuB;IACvB,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,0CAA0C,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,wCAAwC;IACxC,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,gCAAgC;IAChC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,4HAA4H,CAAC,CAAC;IAC3I,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,+GAA+G,CAAC,CAAC;IAC9H,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,YAAoB;IAI7D,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,YAAY;KACb,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAAY,EACZ,QAAuD;IAEvD,sEAAsE;IACtE,kCAAkC;IAClC,OAAO,CAAC,GAAG,CAAC,oCAAoC,GAAG,QAAQ,CAAC,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAC/F,CAAC"}
@@ -0,0 +1,194 @@
1
+ /**
2
+ * Task Router - v0.2.0
3
+ *
4
+ * Routes tasks to appropriate agent types based on task content.
5
+ * Part of the Unified Agent Orchestration system.
6
+ */
7
+ import { AGENT_TYPES } from "./types/index.js";
8
+ /**
9
+ * Analyze task and route to appropriate agent
10
+ */
11
+ export function routeTask(request) {
12
+ const task = request.task.toLowerCase();
13
+ const context = (request.context || "").toLowerCase();
14
+ // Keywords for each agent type
15
+ const keywords = {
16
+ coordinator: ["plan", "coordinate", "organize", "delegate", "manage", "break down", "multiple"],
17
+ researcher: ["research", "find", "search", "investigate", "lookup", "document", "learn about"],
18
+ reviewer: ["review", "check", "validate", "audit", "inspect", "quality", "verify"],
19
+ specialist: ["optimize", "refactor", "architecture", "design", "expert", "complex", "advanced"],
20
+ worker: ["implement", "code", "write", "create", "build", "fix", "test", "update"]
21
+ };
22
+ // Score each agent type
23
+ const scores = {
24
+ coordinator: 0,
25
+ researcher: 0,
26
+ reviewer: 0,
27
+ specialist: 0,
28
+ worker: 0
29
+ };
30
+ // Check keywords
31
+ for (const [agentType, words] of Object.entries(keywords)) {
32
+ for (const word of words) {
33
+ if (task.includes(word) || context.includes(word)) {
34
+ scores[agentType] += 1;
35
+ }
36
+ }
37
+ }
38
+ // Special patterns
39
+ if (/\b(design|architect|optimize|performance|security)\b/.test(task + context)) {
40
+ scores.specialist += 2;
41
+ }
42
+ if (/\b(bug|fix|implement|create|write)\b/.test(task + context)) {
43
+ scores.worker += 2;
44
+ }
45
+ if (/\b(review|check|validate|audit)\b/.test(task + context)) {
46
+ scores.reviewer += 2;
47
+ }
48
+ if (/\b(research|find|document|search)\b/.test(task + context)) {
49
+ scores.researcher += 2;
50
+ }
51
+ if (/\b(plan|coordinate|multiple|team|organize)\b/.test(task + context)) {
52
+ scores.coordinator += 2;
53
+ }
54
+ // Find best match
55
+ let bestAgent = "worker"; // default
56
+ let bestScore = -1;
57
+ for (const [agent, score] of Object.entries(scores)) {
58
+ if (score > bestScore) {
59
+ bestScore = score;
60
+ bestAgent = agent;
61
+ }
62
+ }
63
+ // Calculate confidence
64
+ const confidence = Math.min(0.95, 0.5 + bestScore * 0.15);
65
+ // Get alternatives
66
+ const alternatives = Object.entries(scores)
67
+ .filter(([agent, score]) => agent !== bestAgent && score > 0)
68
+ .sort((a, b) => b[1] - a[1])
69
+ .slice(0, 2)
70
+ .map(([agent]) => AGENT_TYPES[agent]);
71
+ // Estimate complexity
72
+ let complexity = "medium";
73
+ if (/\b(plan|architecture|design|multiple|coordinate)\b/i.test(task)) {
74
+ complexity = "complex";
75
+ }
76
+ else if (/\b(simple|quick|minor|small)\b/i.test(task)) {
77
+ complexity = "simple";
78
+ }
79
+ // Build reasoning
80
+ const reasoning = buildReasoning(bestAgent, request, scores);
81
+ return {
82
+ recommendedAgent: AGENT_TYPES[bestAgent],
83
+ confidence,
84
+ reasoning,
85
+ alternativeAgents: alternatives,
86
+ estimatedComplexity: complexity,
87
+ suggestions: generateSuggestions(request, bestAgent)
88
+ };
89
+ }
90
+ /**
91
+ * Build human-readable reasoning
92
+ */
93
+ function buildReasoning(agentType, request, scores) {
94
+ const task = request.task;
95
+ switch (agentType) {
96
+ case "coordinator":
97
+ return `Task "${task}" appears to require planning and coordination. It mentions aspects that suggest multiple subtasks or need for delegation.`;
98
+ case "researcher":
99
+ return `Task "${task}" is primarily about information gathering. A Researcher is best suited to find and synthesize this information.`;
100
+ case "reviewer":
101
+ return `Task "${task}" involves validation and quality assurance. A Reviewer will ensure standards are met.`;
102
+ case "specialist":
103
+ return `Task "${task}" requires deep domain expertise. A Specialist ${AGENT_TYPES.specialist.emoji} has the knowledge needed.`;
104
+ case "worker":
105
+ default:
106
+ return `Task "${task}" is an implementation task best handled by a Worker agent. All scores: ${JSON.stringify(scores)}`;
107
+ }
108
+ }
109
+ /**
110
+ * Generate helpful suggestions
111
+ */
112
+ function generateSuggestions(request, agentType) {
113
+ const suggestions = [];
114
+ if (agentType === "coordinator") {
115
+ suggestions.push("Consider breaking this into clearly defined subtasks");
116
+ suggestions.push("Identify dependencies between subtasks");
117
+ }
118
+ if (agentType === "worker") {
119
+ const complexity = /\b(complex|multiple|architecture)\b/i.test(request.task) ? "high" : "low";
120
+ if (complexity === "high") {
121
+ suggestions.push("This appears complex - consider using a Specialist for the design phase");
122
+ suggestions.push("A Reviewer could validate the implementation");
123
+ }
124
+ }
125
+ if (agentType === "specialist") {
126
+ suggestions.push("Consider having a Worker implement the solution after design");
127
+ }
128
+ if (!request.expectedOutput) {
129
+ suggestions.push("Consider specifying expected output format in the task");
130
+ }
131
+ return suggestions;
132
+ }
133
+ /**
134
+ * Get quick agent recommendation
135
+ */
136
+ export function quickRoute(task) {
137
+ const result = routeTask({ task });
138
+ return result.recommendedAgent;
139
+ }
140
+ /**
141
+ * Check if task should use subagents
142
+ */
143
+ export function shouldUseSubagents(task) {
144
+ const complexity = analyzeComplexity(task);
145
+ if (complexity === "simple") {
146
+ return {
147
+ useSubagents: false,
148
+ reason: "Task is simple enough to handle directly",
149
+ complexity
150
+ };
151
+ }
152
+ if (complexity === "complex") {
153
+ return {
154
+ useSubagents: true,
155
+ reason: "Complex task would benefit from coordinated subagents",
156
+ complexity
157
+ };
158
+ }
159
+ return {
160
+ useSubagents: false,
161
+ reason: "Medium complexity - use subagents if parallel work is possible",
162
+ complexity
163
+ };
164
+ }
165
+ /**
166
+ * Analyze task complexity
167
+ */
168
+ function analyzeComplexity(task) {
169
+ const taskLower = task.toLowerCase();
170
+ // Complex indicators
171
+ const complexIndicators = [
172
+ /\b(multiple|several|various)\b/,
173
+ /\b(coordinate|orchestrate|plan)\b/,
174
+ /\b(architecture|design|refactor)\b/,
175
+ /\band\b.*\band\b.*\band\b/, // Multiple "and" clauses
176
+ /\b(system|framework|platform)\b/,
177
+ /\b(migrate|upgrade|rewrite)\b/,
178
+ ];
179
+ // Simple indicators
180
+ const simpleIndicators = [
181
+ /\b(simple|quick|minor|small|fix)\b/,
182
+ /^\s*\w+\s+(the|a|an)\s+\w+\s*$/, // Simple action pattern
183
+ /^\s*(add|fix|update|remove)\s+/i,
184
+ /\b(just|only|single)\b/,
185
+ ];
186
+ const complexScore = complexIndicators.filter(r => r.test(taskLower)).length;
187
+ const simpleScore = simpleIndicators.filter(r => r.test(taskLower)).length;
188
+ if (complexScore >= 2)
189
+ return "complex";
190
+ if (simpleScore >= 2 || task.length < 50)
191
+ return "simple";
192
+ return "medium";
193
+ }
194
+ //# sourceMappingURL=task-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-router.js","sourceRoot":"","sources":["../../../src/agent/task-router.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAmC,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAoBhF;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,OAAoB;IAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACxC,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAEtD,+BAA+B;IAC/B,MAAM,QAAQ,GAAG;QACf,WAAW,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC;QAC/F,UAAU,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC;QAC9F,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC;QAClF,UAAU,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC;QAC/F,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC;KACnF,CAAC;IAEF,wBAAwB;IACxB,MAAM,MAAM,GAA2B;QACrC,WAAW,EAAE,CAAC;QACd,UAAU,EAAE,CAAC;QACb,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE,CAAC;QACb,MAAM,EAAE,CAAC;KACV,CAAC;IAEF,iBAAiB;IACjB,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClD,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,IAAI,sDAAsD,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC;QAChF,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,sCAAsC,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC;QAChE,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,mCAAmC,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC;QAC7D,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,qCAAqC,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC;QAC/D,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,8CAA8C,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC;QACxE,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,kBAAkB;IAClB,IAAI,SAAS,GAAG,QAAQ,CAAC,CAAC,UAAU;IACpC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;IAEnB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACpD,IAAI,KAAK,GAAG,SAAS,EAAE,CAAC;YACtB,SAAS,GAAG,KAAK,CAAC;YAClB,SAAS,GAAG,KAAK,CAAC;QACpB,CAAC;IACH,CAAC;IAED,uBAAuB;IACvB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;IAE1D,mBAAmB;IACnB,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SACxC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC,CAAC;SAC5D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAExC,sBAAsB;IACtB,IAAI,UAAU,GAAoC,QAAQ,CAAC;IAC3D,IAAI,qDAAqD,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACrE,UAAU,GAAG,SAAS,CAAC;IACzB,CAAC;SAAM,IAAI,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACxD,UAAU,GAAG,QAAQ,CAAC;IACxB,CAAC;IAED,kBAAkB;IAClB,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAE7D,OAAO;QACL,gBAAgB,EAAE,WAAW,CAAC,SAAS,CAAC;QACxC,UAAU;QACV,SAAS;QACT,iBAAiB,EAAE,YAAY;QAC/B,mBAAmB,EAAE,UAAU;QAC/B,WAAW,EAAE,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC;KACrD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,SAAiB,EAAE,OAAoB,EAAE,MAA8B;IAC7F,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,aAAa;YAChB,OAAO,SAAS,IAAI,4HAA4H,CAAC;QACnJ,KAAK,YAAY;YACf,OAAO,SAAS,IAAI,kHAAkH,CAAC;QACzI,KAAK,UAAU;YACb,OAAO,SAAS,IAAI,wFAAwF,CAAC;QAC/G,KAAK,YAAY;YACf,OAAO,SAAS,IAAI,kDAAkD,WAAW,CAAC,UAAU,CAAC,KAAK,4BAA4B,CAAC;QACjI,KAAK,QAAQ,CAAC;QACd;YACE,OAAO,SAAS,IAAI,2EAA2E,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;IAC5H,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,OAAoB,EAAE,SAAiB;IAClE,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC;QAChC,WAAW,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;QACzE,WAAW,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,sCAAsC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9F,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;YAC1B,WAAW,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;YAC5F,WAAW,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;QAC/B,WAAW,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IACnF,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAC5B,WAAW,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC,gBAAgB,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAK7C,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAE3C,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO;YACL,YAAY,EAAE,KAAK;YACnB,MAAM,EAAE,0CAA0C;YAClD,UAAU;SACX,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO;YACL,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,uDAAuD;YAC/D,UAAU;SACX,CAAC;IACJ,CAAC;IAED,OAAO;QACL,YAAY,EAAE,KAAK;QACnB,MAAM,EAAE,gEAAgE;QACxE,UAAU;KACX,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAErC,qBAAqB;IACrB,MAAM,iBAAiB,GAAG;QACxB,gCAAgC;QAChC,mCAAmC;QACnC,oCAAoC;QACpC,2BAA2B,EAAE,yBAAyB;QACtD,iCAAiC;QACjC,+BAA+B;KAChC,CAAC;IAEF,oBAAoB;IACpB,MAAM,gBAAgB,GAAG;QACvB,oCAAoC;QACpC,gCAAgC,EAAE,wBAAwB;QAC1D,iCAAiC;QACjC,wBAAwB;KACzB,CAAC;IAEF,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7E,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IAE3E,IAAI,YAAY,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,WAAW,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,QAAQ,CAAC;IAC1D,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { spawnAgent, spawnAgents, getSpawnAgentToolConfig, executeSpawnAgent } from "./spawn-agent.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/agent/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,200 @@
1
+ /**
2
+ * Spawn Agent Tool - v0.2.0
3
+ *
4
+ * Spawns a subagent of a specific type with appropriate configuration.
5
+ * Part of the Unified Agent Orchestration system.
6
+ */
7
+ import { getAgentType } from "../types/index.js";
8
+ import { routeTask } from "../task-router.js";
9
+ /**
10
+ * Generate unique agent ID
11
+ */
12
+ function generateAgentId(type) {
13
+ const timestamp = Date.now().toString(36).slice(-4);
14
+ const random = Math.random().toString(36).slice(2, 6);
15
+ return `${type}-${timestamp}-${random}`;
16
+ }
17
+ /**
18
+ * Spawn a specialized agent
19
+ */
20
+ export async function spawnAgent(params) {
21
+ let agentType;
22
+ let routingInfo;
23
+ // Auto-route if requested or no type specified
24
+ if (params.autoRoute || !params.agentType) {
25
+ const taskRequest = {
26
+ task: params.task,
27
+ context: params.context,
28
+ priority: params.priority,
29
+ };
30
+ routingInfo = routeTask(taskRequest);
31
+ agentType = routingInfo.recommendedAgent;
32
+ }
33
+ else {
34
+ const found = getAgentType(params.agentType);
35
+ if (!found) {
36
+ return {
37
+ success: false,
38
+ agentId: "",
39
+ agentType: getAgentType("worker"), // fallback
40
+ task: params.task,
41
+ systemPrompt: "",
42
+ maxIterations: 0,
43
+ error: `Unknown agent type: ${params.agentType}. Valid types: coordinator, specialist, researcher, worker, reviewer`,
44
+ };
45
+ }
46
+ agentType = found;
47
+ }
48
+ const agentId = generateAgentId(agentType.id);
49
+ // Build system prompt
50
+ const systemPrompt = buildAgentSystemPrompt(agentType, params);
51
+ // Override maxIterations if specified
52
+ const maxIterations = params.maxIterations || agentType.maxIterations;
53
+ return {
54
+ success: true,
55
+ agentId,
56
+ agentType,
57
+ task: params.task,
58
+ systemPrompt,
59
+ maxIterations,
60
+ routingInfo,
61
+ };
62
+ }
63
+ /**
64
+ * Build system prompt for the agent
65
+ */
66
+ function buildAgentSystemPrompt(agentType, params) {
67
+ const parts = [];
68
+ // Agent identity
69
+ parts.push(`${agentType.systemPrompt}`);
70
+ // Task context
71
+ if (params.context) {
72
+ parts.push("");
73
+ parts.push(`<!-- Task Context -->`);
74
+ parts.push(`Additional context: ${params.context}`);
75
+ }
76
+ // Priority
77
+ if (params.priority) {
78
+ parts.push("");
79
+ parts.push(`<!-- Priority -->`);
80
+ parts.push(`Priority: ${params.priority.toUpperCase()}`);
81
+ }
82
+ // Capabilities reminder
83
+ parts.push("");
84
+ parts.push(`<!-- Your Capabilities -->`);
85
+ parts.push(agentType.capabilities.map(c => `- ${c}`).join("\n"));
86
+ // Available tools
87
+ parts.push("");
88
+ parts.push(`<!-- Available Tools -->`);
89
+ parts.push(agentType.tools.map(t => `- ${t}`).join("\n"));
90
+ return parts.join("\n\n");
91
+ }
92
+ /**
93
+ * Spawn multiple agents in parallel
94
+ */
95
+ export async function spawnAgents(tasks) {
96
+ const promises = tasks.map((t) => spawnAgent({
97
+ task: t.task,
98
+ agentType: t.agentType,
99
+ context: t.context,
100
+ autoRoute: !t.agentType,
101
+ }));
102
+ return Promise.all(promises);
103
+ }
104
+ /**
105
+ * Get agent spawn configuration for tool registration
106
+ */
107
+ export function getSpawnAgentToolConfig() {
108
+ return {
109
+ name: "spawn_agent",
110
+ description: `Spawn a specialized subagent to handle a task.
111
+
112
+ This tool creates a subagent of a specific type:
113
+ - coordinator (🎯): Plans and delegates complex tasks
114
+ - specialist (🧠): Deep domain expertise
115
+ - researcher (🔍): Gathers information and synthesizes findings
116
+ - worker (⚒️): Implements code and executes tasks
117
+ - reviewer (👁️): Reviews code and validates quality
118
+
119
+ Use autoRoute: true to let the system choose the best agent type.`,
120
+ parameters: {
121
+ type: "object",
122
+ properties: {
123
+ task: {
124
+ type: "string",
125
+ description: "The task to assign to the subagent. Be specific and clear.",
126
+ },
127
+ agentType: {
128
+ type: "string",
129
+ enum: ["coordinator", "specialist", "researcher", "worker", "reviewer"],
130
+ description: "Type of agent to spawn. Use autoRoute: true to let system choose.",
131
+ },
132
+ autoRoute: {
133
+ type: "boolean",
134
+ description: "If true, automatically determine best agent type",
135
+ default: true,
136
+ },
137
+ context: {
138
+ type: "string",
139
+ description: "Additional context for the agent",
140
+ },
141
+ priority: {
142
+ type: "string",
143
+ enum: ["low", "normal", "high"],
144
+ default: "normal",
145
+ },
146
+ },
147
+ required: ["task"],
148
+ },
149
+ };
150
+ }
151
+ /**
152
+ * Spawn agent tool for ExtensionAPI
153
+ */
154
+ export async function executeSpawnAgent(args) {
155
+ const result = await spawnAgent({
156
+ task: args.task,
157
+ agentType: args.agentType,
158
+ autoRoute: args.autoRoute ?? true,
159
+ context: args.context,
160
+ priority: args.priority ?? "normal",
161
+ maxIterations: args.maxIterations,
162
+ model: args.model,
163
+ });
164
+ if (!result.success) {
165
+ return {
166
+ success: false,
167
+ error: result.error,
168
+ content: [
169
+ {
170
+ type: "text",
171
+ text: `Failed to spawn agent: ${result.error}`,
172
+ },
173
+ ],
174
+ details: { error: result.error },
175
+ };
176
+ }
177
+ const routingText = result.routingInfo
178
+ ? `\n\nAuto-routing analysis:\n${result.routingInfo.reasoning}\n\nConfidence: ${Math.round(result.routingInfo.confidence * 100)}%\n\nAlternative agents: ${result.routingInfo.alternativeAgents
179
+ .map((a) => `${a.emoji} ${a.name}`)
180
+ .join(", ") || "none"}`
181
+ : "";
182
+ return {
183
+ success: true,
184
+ content: [
185
+ {
186
+ type: "text",
187
+ text: `Spawned ${result.agentType.emoji} ${result.agentType.name}\n\nID: ${result.agentId}\nTask: ${result.task}\nMax iterations: ${result.maxIterations}${routingText}`,
188
+ },
189
+ ],
190
+ details: {
191
+ agentId: result.agentId,
192
+ agentType: result.agentType.id,
193
+ task: result.task,
194
+ systemPrompt: result.systemPrompt,
195
+ maxIterations: result.maxIterations,
196
+ routingInfo: result.routingInfo,
197
+ },
198
+ };
199
+ }
200
+ //# sourceMappingURL=spawn-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn-agent.js","sourceRoot":"","sources":["../../../../src/agent/tools/spawn-agent.ts"],"names":[],"mappings":"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"}