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.
- package/HEARTBEAT.md +66 -32
- package/README.md +220 -1
- package/dist/package.json +3 -2
- package/dist/src/agent/bootstrap-loader.js +138 -0
- package/dist/src/agent/bootstrap-loader.js.map +1 -0
- package/dist/src/agent/context-pruning.js +279 -0
- package/dist/src/agent/context-pruning.js.map +1 -0
- package/dist/src/agent/dynamic-personality.js +211 -0
- package/dist/src/agent/dynamic-personality.js.map +1 -0
- package/dist/src/agent/embedded-runner.js +79 -0
- package/dist/src/agent/embedded-runner.js.map +1 -0
- package/dist/src/agent/index.js +16 -0
- package/dist/src/agent/index.js.map +1 -0
- package/dist/src/agent/system-prompt.js +84 -0
- package/dist/src/agent/system-prompt.js.map +1 -0
- package/dist/src/agent/task-router.js +194 -0
- package/dist/src/agent/task-router.js.map +1 -0
- package/dist/src/agent/tools/index.js +2 -0
- package/dist/src/agent/tools/index.js.map +1 -0
- package/dist/src/agent/tools/spawn-agent.js +200 -0
- package/dist/src/agent/tools/spawn-agent.js.map +1 -0
- package/dist/src/agent/types/definitions.js +317 -0
- package/dist/src/agent/types/definitions.js.map +1 -0
- package/dist/src/agent/types/index.js +2 -0
- package/dist/src/agent/types/index.js.map +1 -0
- package/dist/src/agent/user-profile.js +300 -0
- package/dist/src/agent/user-profile.js.map +1 -0
- package/dist/src/agents/task-router.js +194 -0
- package/dist/src/agents/task-router.js.map +1 -0
- package/dist/src/agents/tools/index.js +2 -0
- package/dist/src/agents/tools/index.js.map +1 -0
- package/dist/src/agents/tools/spawn-agent.js +200 -0
- package/dist/src/agents/tools/spawn-agent.js.map +1 -0
- package/dist/src/agents/types/definitions.js +317 -0
- package/dist/src/agents/types/definitions.js.map +1 -0
- package/dist/src/agents/types/index.js +2 -0
- package/dist/src/agents/types/index.js.map +1 -0
- package/dist/src/cli/commands/embedded.js +36 -0
- package/dist/src/cli/commands/embedded.js.map +1 -0
- package/dist/src/cli/commands/gateway.js +127 -166
- package/dist/src/cli/commands/gateway.js.map +1 -1
- package/dist/src/cli/program-fixed.js +1 -0
- package/dist/src/cli/program-fixed.js.map +1 -0
- package/dist/src/cli/program.js +10 -29
- package/dist/src/cli/program.js.map +1 -1
- package/dist/src/extensions/core/agent-lifecycle-extension.js +323 -0
- package/dist/src/extensions/core/agent-lifecycle-extension.js.map +1 -0
- package/dist/src/extensions/core/agent-orchestrator-extension.js +642 -0
- package/dist/src/extensions/core/agent-orchestrator-extension.js.map +1 -0
- package/dist/src/extensions/core/agent-workspace-extension.js +174 -0
- package/dist/src/extensions/core/agent-workspace-extension.js.map +1 -0
- package/dist/src/extensions/core/autonomous-executor-extension.js +145 -0
- package/dist/src/extensions/core/autonomous-executor-extension.js.map +1 -0
- package/dist/src/extensions/core/autonomous-subagent-extension.js +333 -0
- package/dist/src/extensions/core/autonomous-subagent-extension.js.map +1 -0
- package/dist/src/extensions/core/deprecated/agent-lifecycle-extension.js +323 -0
- package/dist/src/extensions/core/deprecated/agent-lifecycle-extension.js.map +1 -0
- package/dist/src/extensions/core/deprecated/autonomous-subagent-extension.js +333 -0
- package/dist/src/extensions/core/deprecated/autonomous-subagent-extension.js.map +1 -0
- package/dist/src/extensions/core/deprecated/subagent-extension.js +647 -0
- package/dist/src/extensions/core/deprecated/subagent-extension.js.map +1 -0
- package/dist/src/extensions/core/mode-manager-extension.js +11 -0
- package/dist/src/extensions/core/mode-manager-extension.js.map +1 -1
- package/dist/src/extensions/core/perennial-memory-extension.js +10 -2
- package/dist/src/extensions/core/perennial-memory-extension.js.map +1 -1
- package/dist/src/extensions/core/persona-loader-extension.js +61 -129
- package/dist/src/extensions/core/persona-loader-extension.js.map +1 -1
- package/dist/src/extensions/core/websearch-enhanced-extension.js +705 -0
- package/dist/src/extensions/core/websearch-enhanced-extension.js.map +1 -0
- package/dist/src/extensions/core/websearch-v2-extension.js +303 -0
- package/dist/src/extensions/core/websearch-v2-extension.js.map +1 -0
- package/dist/src/gateway/discord-bot.js +185 -0
- package/dist/src/gateway/discord-bot.js.map +1 -0
- package/dist/src/gateway/index.js +10 -350
- package/dist/src/gateway/index.js.map +1 -1
- package/dist/src/gateway/server.js +325 -0
- package/dist/src/gateway/server.js.map +1 -0
- package/dist/src/gateway/websocket-server.js +142 -0
- package/dist/src/gateway/websocket-server.js.map +1 -0
- package/dist/src/heartbeat/checkin.js +185 -0
- package/dist/src/heartbeat/checkin.js.map +1 -0
- package/dist/src/heartbeat/index.js +5 -0
- package/dist/src/heartbeat/index.js.map +1 -0
- package/dist/src/heartbeat/notifications.js +216 -0
- package/dist/src/heartbeat/notifications.js.map +1 -0
- package/dist/src/heartbeat/scheduler.js +284 -0
- package/dist/src/heartbeat/scheduler.js.map +1 -0
- package/dist/src/index.js +21 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/mode/auto-detector.js +211 -0
- package/dist/src/mode/auto-detector.js.map +1 -0
- package/dist/src/mode/index.js +3 -0
- package/dist/src/mode/index.js.map +1 -0
- package/dist/src/mode/natural-switcher.js +123 -0
- package/dist/src/mode/natural-switcher.js.map +1 -0
- package/dist/src/skills/builtin/api-worker.js +88 -0
- package/dist/src/skills/builtin/api-worker.js.map +1 -0
- package/dist/src/skills/builtin/nextjs-worker.js +55 -0
- package/dist/src/skills/builtin/nextjs-worker.js.map +1 -0
- package/dist/src/skills/builtin/real-workers.js +166 -0
- package/dist/src/skills/builtin/real-workers.js.map +1 -0
- package/dist/src/skills/builtin/sql-worker.js +61 -0
- package/dist/src/skills/builtin/sql-worker.js.map +1 -0
- package/dist/src/skills/builtin/test-worker.js +79 -0
- package/dist/src/skills/builtin/test-worker.js.map +1 -0
- package/dist/src/skills/builtin/web-research.js +77 -0
- package/dist/src/skills/builtin/web-research.js.map +1 -0
- package/dist/src/skills/framework.js +250 -0
- package/dist/src/skills/framework.js.map +1 -0
- package/dist/src/skills/index.js +10 -10
- package/dist/src/skills/index.js.map +1 -1
- package/dist/src/streaming/block-streamer.js +172 -0
- package/dist/src/streaming/block-streamer.js.map +1 -0
- package/dist/src/streaming/index.js +2 -0
- package/dist/src/streaming/index.js.map +1 -0
- package/dist/src/workspace/index.js +2 -0
- package/dist/src/workspace/index.js.map +1 -0
- package/dist/src/workspace/manager.js +181 -0
- package/dist/src/workspace/manager.js.map +1 -0
- 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":"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"}
|
|
@@ -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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"}
|