@kernel.chat/kbot 1.3.0 → 2.3.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/README.md +94 -0
- package/dist/agent.d.ts +9 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +576 -119
- package/dist/agent.js.map +1 -1
- package/dist/auth.d.ts +20 -35
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +236 -66
- package/dist/auth.js.map +1 -1
- package/dist/auth.test.d.ts +2 -0
- package/dist/auth.test.d.ts.map +1 -0
- package/dist/auth.test.js +89 -0
- package/dist/auth.test.js.map +1 -0
- package/dist/build-targets.d.ts +37 -0
- package/dist/build-targets.d.ts.map +1 -0
- package/dist/build-targets.js +507 -0
- package/dist/build-targets.js.map +1 -0
- package/dist/cli.js +1211 -131
- package/dist/cli.js.map +1 -1
- package/dist/context.d.ts +2 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +72 -22
- package/dist/context.js.map +1 -1
- package/dist/hooks.d.ts +27 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +145 -0
- package/dist/hooks.js.map +1 -0
- package/dist/ide/acp-server.d.ts +6 -0
- package/dist/ide/acp-server.d.ts.map +1 -0
- package/dist/ide/acp-server.js +319 -0
- package/dist/ide/acp-server.js.map +1 -0
- package/dist/ide/bridge.d.ts +128 -0
- package/dist/ide/bridge.d.ts.map +1 -0
- package/dist/ide/bridge.js +185 -0
- package/dist/ide/bridge.js.map +1 -0
- package/dist/ide/index.d.ts +5 -0
- package/dist/ide/index.d.ts.map +1 -0
- package/dist/ide/index.js +11 -0
- package/dist/ide/index.js.map +1 -0
- package/dist/ide/lsp-bridge.d.ts +27 -0
- package/dist/ide/lsp-bridge.d.ts.map +1 -0
- package/dist/ide/lsp-bridge.js +267 -0
- package/dist/ide/lsp-bridge.js.map +1 -0
- package/dist/ide/mcp-server.d.ts +7 -0
- package/dist/ide/mcp-server.d.ts.map +1 -0
- package/dist/ide/mcp-server.js +451 -0
- package/dist/ide/mcp-server.js.map +1 -0
- package/dist/learning.d.ts +179 -0
- package/dist/learning.d.ts.map +1 -0
- package/dist/learning.js +829 -0
- package/dist/learning.js.map +1 -0
- package/dist/learning.test.d.ts +2 -0
- package/dist/learning.test.d.ts.map +1 -0
- package/dist/learning.test.js +115 -0
- package/dist/learning.test.js.map +1 -0
- package/dist/matrix.d.ts +49 -0
- package/dist/matrix.d.ts.map +1 -0
- package/dist/matrix.js +302 -0
- package/dist/matrix.js.map +1 -0
- package/dist/memory.d.ts +11 -0
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +54 -2
- package/dist/memory.js.map +1 -1
- package/dist/multimodal.d.ts +57 -0
- package/dist/multimodal.d.ts.map +1 -0
- package/dist/multimodal.js +206 -0
- package/dist/multimodal.js.map +1 -0
- package/dist/permissions.d.ts +21 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +122 -0
- package/dist/permissions.js.map +1 -0
- package/dist/planner.d.ts +54 -0
- package/dist/planner.d.ts.map +1 -0
- package/dist/planner.js +298 -0
- package/dist/planner.js.map +1 -0
- package/dist/plugins.d.ts +30 -0
- package/dist/plugins.d.ts.map +1 -0
- package/dist/plugins.js +135 -0
- package/dist/plugins.js.map +1 -0
- package/dist/sessions.d.ts +38 -0
- package/dist/sessions.d.ts.map +1 -0
- package/dist/sessions.js +177 -0
- package/dist/sessions.js.map +1 -0
- package/dist/streaming.d.ts +88 -0
- package/dist/streaming.d.ts.map +1 -0
- package/dist/streaming.js +317 -0
- package/dist/streaming.js.map +1 -0
- package/dist/tools/background.d.ts +2 -0
- package/dist/tools/background.d.ts.map +1 -0
- package/dist/tools/background.js +163 -0
- package/dist/tools/background.js.map +1 -0
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +26 -1
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/browser.js +7 -7
- package/dist/tools/browser.js.map +1 -1
- package/dist/tools/build-matrix.d.ts +2 -0
- package/dist/tools/build-matrix.d.ts.map +1 -0
- package/dist/tools/build-matrix.js +463 -0
- package/dist/tools/build-matrix.js.map +1 -0
- package/dist/tools/computer.js +5 -5
- package/dist/tools/computer.js.map +1 -1
- package/dist/tools/fetch.d.ts +2 -0
- package/dist/tools/fetch.d.ts.map +1 -0
- package/dist/tools/fetch.js +106 -0
- package/dist/tools/fetch.js.map +1 -0
- package/dist/tools/files.d.ts.map +1 -1
- package/dist/tools/files.js +112 -6
- package/dist/tools/files.js.map +1 -1
- package/dist/tools/git.js +3 -3
- package/dist/tools/git.js.map +1 -1
- package/dist/tools/github.d.ts +2 -0
- package/dist/tools/github.d.ts.map +1 -0
- package/dist/tools/github.js +196 -0
- package/dist/tools/github.js.map +1 -0
- package/dist/tools/index.d.ts +29 -5
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +136 -20
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/index.test.d.ts +2 -0
- package/dist/tools/index.test.d.ts.map +1 -0
- package/dist/tools/index.test.js +162 -0
- package/dist/tools/index.test.js.map +1 -0
- package/dist/tools/matrix.d.ts +2 -0
- package/dist/tools/matrix.d.ts.map +1 -0
- package/dist/tools/matrix.js +79 -0
- package/dist/tools/matrix.js.map +1 -0
- package/dist/tools/mcp-client.d.ts +2 -0
- package/dist/tools/mcp-client.d.ts.map +1 -0
- package/dist/tools/mcp-client.js +295 -0
- package/dist/tools/mcp-client.js.map +1 -0
- package/dist/tools/notebook.d.ts +2 -0
- package/dist/tools/notebook.d.ts.map +1 -0
- package/dist/tools/notebook.js +207 -0
- package/dist/tools/notebook.js.map +1 -0
- package/dist/tools/openclaw.d.ts +2 -0
- package/dist/tools/openclaw.d.ts.map +1 -0
- package/dist/tools/openclaw.js +187 -0
- package/dist/tools/openclaw.js.map +1 -0
- package/dist/tools/parallel.d.ts +2 -0
- package/dist/tools/parallel.d.ts.map +1 -0
- package/dist/tools/parallel.js +60 -0
- package/dist/tools/parallel.js.map +1 -0
- package/dist/tools/sandbox.d.ts +2 -0
- package/dist/tools/sandbox.d.ts.map +1 -0
- package/dist/tools/sandbox.js +352 -0
- package/dist/tools/sandbox.js.map +1 -0
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +135 -28
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/subagent.d.ts +4 -0
- package/dist/tools/subagent.d.ts.map +1 -0
- package/dist/tools/subagent.js +260 -0
- package/dist/tools/subagent.js.map +1 -0
- package/dist/tools/tasks.d.ts +14 -0
- package/dist/tools/tasks.d.ts.map +1 -0
- package/dist/tools/tasks.js +210 -0
- package/dist/tools/tasks.js.map +1 -0
- package/dist/tools/worktree.d.ts +2 -0
- package/dist/tools/worktree.d.ts.map +1 -0
- package/dist/tools/worktree.js +223 -0
- package/dist/tools/worktree.js.map +1 -0
- package/dist/tui.d.ts +73 -0
- package/dist/tui.d.ts.map +1 -0
- package/dist/tui.js +257 -0
- package/dist/tui.js.map +1 -0
- package/dist/ui.d.ts +11 -19
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +143 -171
- package/dist/ui.js.map +1 -1
- package/dist/updater.d.ts +3 -0
- package/dist/updater.d.ts.map +1 -0
- package/dist/updater.js +70 -0
- package/dist/updater.js.map +1 -0
- package/install.sh +5 -7
- package/package.json +8 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAKA,wBAAgB,mBAAmB,IAAI,IAAI,CAoJ1C"}
|
package/dist/tools/search.js
CHANGED
|
@@ -1,45 +1,152 @@
|
|
|
1
|
-
// K:BOT Search
|
|
2
|
-
//
|
|
3
|
-
import { getApiKey, getApiBase } from '../auth.js';
|
|
1
|
+
// K:BOT Search & Research Tools — Web knowledge expansion
|
|
2
|
+
// These tools connect kbot to the internet for real-time knowledge.
|
|
4
3
|
import { registerTool } from './index.js';
|
|
5
4
|
export function registerSearchTools() {
|
|
6
5
|
registerTool({
|
|
7
6
|
name: 'web_search',
|
|
8
|
-
description: 'Search the web for current information.
|
|
7
|
+
description: 'Search the web for current information, documentation, tutorials, APIs, or any knowledge. Use freely whenever you need information beyond your training data.',
|
|
9
8
|
parameters: {
|
|
10
|
-
query: { type: 'string', description: 'Search query', required: true },
|
|
9
|
+
query: { type: 'string', description: 'Search query — be specific for best results', required: true },
|
|
11
10
|
},
|
|
12
|
-
tier: '
|
|
11
|
+
tier: 'free',
|
|
13
12
|
async execute(args) {
|
|
14
13
|
const query = String(args.query);
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
// Multi-source free search
|
|
15
|
+
const parts = [];
|
|
16
|
+
// Source 1: DuckDuckGo instant answer API
|
|
18
17
|
try {
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
headers: {
|
|
22
|
-
|
|
23
|
-
Authorization: `Bearer ${apiKey}`,
|
|
24
|
-
'X-Kbot-Version': '1.0.0',
|
|
25
|
-
},
|
|
26
|
-
body: JSON.stringify({
|
|
27
|
-
message: `Search the web for: ${query}\n\nReturn a concise summary of the top results with key facts and sources.`,
|
|
28
|
-
agent: 'researcher',
|
|
29
|
-
mode: 'json',
|
|
30
|
-
max_tokens: 2048,
|
|
31
|
-
}),
|
|
18
|
+
const encoded = encodeURIComponent(query);
|
|
19
|
+
const res = await fetch(`https://api.duckduckgo.com/?q=${encoded}&format=json&no_html=1&skip_disambig=1`, {
|
|
20
|
+
headers: { 'User-Agent': 'KBot/2.0 (Web Search)' },
|
|
21
|
+
signal: AbortSignal.timeout(8000),
|
|
32
22
|
});
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
23
|
+
const data = await res.json();
|
|
24
|
+
if (data.AbstractText)
|
|
25
|
+
parts.push(`**${data.AbstractSource}**: ${data.AbstractText}`);
|
|
26
|
+
if (data.Answer)
|
|
27
|
+
parts.push(`**Answer**: ${data.Answer}`);
|
|
28
|
+
if (data.RelatedTopics?.length > 0) {
|
|
29
|
+
parts.push('**Related:**');
|
|
30
|
+
for (const topic of data.RelatedTopics.slice(0, 5)) {
|
|
31
|
+
if (topic.Text)
|
|
32
|
+
parts.push(`- ${topic.Text}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch { /* continue to next source */ }
|
|
37
|
+
// Source 2: Wikipedia for factual queries
|
|
38
|
+
try {
|
|
39
|
+
const encoded = encodeURIComponent(query.split(' ').slice(0, 3).join(' '));
|
|
40
|
+
const res = await fetch(`https://en.wikipedia.org/api/rest_v1/page/summary/${encoded}`, {
|
|
41
|
+
headers: { 'User-Agent': 'KBot/2.0 (Web Search)' },
|
|
42
|
+
signal: AbortSignal.timeout(5000),
|
|
43
|
+
});
|
|
44
|
+
if (res.ok) {
|
|
45
|
+
const data = await res.json();
|
|
46
|
+
if (data.extract && data.extract.length > 50) {
|
|
47
|
+
parts.push(`**Wikipedia**: ${data.extract}`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch { /* skip */ }
|
|
52
|
+
// Source 3: StackOverflow/StackExchange for programming queries
|
|
53
|
+
if (/\b(code|error|bug|how to|function|api|library|framework|install|configure|setup|npm|pip|cargo|docker)\b/i.test(query)) {
|
|
54
|
+
try {
|
|
55
|
+
const encoded = encodeURIComponent(query);
|
|
56
|
+
const res = await fetch(`https://api.stackexchange.com/2.3/search/excerpts?order=desc&sort=relevance&q=${encoded}&site=stackoverflow&pagesize=3`, {
|
|
57
|
+
signal: AbortSignal.timeout(5000),
|
|
58
|
+
});
|
|
59
|
+
if (res.ok) {
|
|
60
|
+
const data = await res.json();
|
|
61
|
+
if (data.items?.length > 0) {
|
|
62
|
+
parts.push('**Stack Overflow:**');
|
|
63
|
+
for (const item of data.items.slice(0, 3)) {
|
|
64
|
+
const title = item.title?.replace(/<[^>]+>/g, '') || '';
|
|
65
|
+
const body = (item.excerpt || item.body || '').replace(/<[^>]+>/g, '').slice(0, 200);
|
|
66
|
+
parts.push(`- **${title}**: ${body}...`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch { /* skip */ }
|
|
72
|
+
}
|
|
73
|
+
if (parts.length > 0) {
|
|
74
|
+
return parts.join('\n\n');
|
|
75
|
+
}
|
|
76
|
+
return `No instant results for "${query}". Try:\n- url_fetch with a specific documentation URL\n- research tool for deeper investigation`;
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
registerTool({
|
|
80
|
+
name: 'research',
|
|
81
|
+
description: 'Deep research — searches the web, fetches multiple URLs, and synthesizes a comprehensive answer. Use for complex questions that need multiple sources.',
|
|
82
|
+
parameters: {
|
|
83
|
+
topic: { type: 'string', description: 'The topic or question to research thoroughly', required: true },
|
|
84
|
+
urls: { type: 'array', description: 'Optional: specific URLs to include in the research' },
|
|
85
|
+
},
|
|
86
|
+
tier: 'free',
|
|
87
|
+
async execute(args) {
|
|
88
|
+
const topic = String(args.topic);
|
|
89
|
+
const urls = args.urls || [];
|
|
90
|
+
const results = [];
|
|
91
|
+
// Fetch any provided URLs
|
|
92
|
+
for (const url of urls.slice(0, 5)) {
|
|
93
|
+
try {
|
|
94
|
+
const controller = new AbortController();
|
|
95
|
+
const timeout = setTimeout(() => controller.abort(), 10000);
|
|
96
|
+
const res = await fetch(String(url), {
|
|
97
|
+
headers: { 'User-Agent': 'KBot/1.3 (Research Tool)', 'Accept': 'text/html,application/json,text/plain,*/*' },
|
|
98
|
+
signal: controller.signal,
|
|
99
|
+
redirect: 'follow',
|
|
100
|
+
});
|
|
101
|
+
clearTimeout(timeout);
|
|
102
|
+
if (res.ok) {
|
|
103
|
+
const text = await res.text();
|
|
104
|
+
const clean = text
|
|
105
|
+
.replace(/<script[\s\S]*?<\/script>/gi, '')
|
|
106
|
+
.replace(/<style[\s\S]*?<\/style>/gi, '')
|
|
107
|
+
.replace(/<[^>]+>/g, ' ')
|
|
108
|
+
.replace(/\s+/g, ' ')
|
|
109
|
+
.trim()
|
|
110
|
+
.slice(0, 5000);
|
|
111
|
+
results.push(`**Source: ${url}**\n${clean}`);
|
|
112
|
+
}
|
|
36
113
|
}
|
|
114
|
+
catch { /* skip failed URLs */ }
|
|
115
|
+
}
|
|
116
|
+
// DuckDuckGo instant answers
|
|
117
|
+
try {
|
|
118
|
+
const encoded = encodeURIComponent(topic);
|
|
119
|
+
const res = await fetch(`https://api.duckduckgo.com/?q=${encoded}&format=json&no_html=1&skip_disambig=1`, {
|
|
120
|
+
headers: { 'User-Agent': 'KBot/1.3 (Research)' },
|
|
121
|
+
});
|
|
37
122
|
const data = await res.json();
|
|
38
|
-
|
|
123
|
+
if (data.AbstractText)
|
|
124
|
+
results.push(`**${data.AbstractSource}**: ${data.AbstractText}`);
|
|
125
|
+
if (data.RelatedTopics?.length > 0) {
|
|
126
|
+
for (const t of data.RelatedTopics.slice(0, 3)) {
|
|
127
|
+
if (t.Text)
|
|
128
|
+
results.push(`- ${t.Text}`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
catch { /* skip */ }
|
|
133
|
+
// Also try Wikipedia API for factual grounding
|
|
134
|
+
try {
|
|
135
|
+
const encoded = encodeURIComponent(topic);
|
|
136
|
+
const res = await fetch(`https://en.wikipedia.org/api/rest_v1/page/summary/${encoded}`, {
|
|
137
|
+
headers: { 'User-Agent': 'KBot/1.3 (Research)' },
|
|
138
|
+
});
|
|
139
|
+
if (res.ok) {
|
|
140
|
+
const data = await res.json();
|
|
141
|
+
if (data.extract)
|
|
142
|
+
results.push(`**Wikipedia**: ${data.extract}`);
|
|
143
|
+
}
|
|
39
144
|
}
|
|
40
|
-
catch
|
|
41
|
-
|
|
145
|
+
catch { /* skip */ }
|
|
146
|
+
if (results.length === 0) {
|
|
147
|
+
return `No research results found for "${topic}". Try breaking down the topic or providing specific URLs.`;
|
|
42
148
|
}
|
|
149
|
+
return `Research results for: ${topic}\n\n${results.join('\n\n')}`;
|
|
43
150
|
},
|
|
44
151
|
});
|
|
45
152
|
}
|
package/dist/tools/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagent.d.ts","sourceRoot":"","sources":["../../src/tools/subagent.ts"],"names":[],"mappings":"AAWA,OAAO,EAAY,KAAK,YAAY,EAAsB,MAAM,aAAa,CAAA;AAqB7E,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAE9D;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAmQ5C"}
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
// K:BOT Subagent System — Spawn specialist agents as parallel workers
|
|
2
|
+
//
|
|
3
|
+
// Like Claude Code's Agent tool. Each subagent:
|
|
4
|
+
// - Gets its own conversation context
|
|
5
|
+
// - Has access to all tools
|
|
6
|
+
// - Can be a specific specialist (researcher, coder, etc.)
|
|
7
|
+
// - Returns results to the parent agent
|
|
8
|
+
// - Runs in parallel with other subagents
|
|
9
|
+
//
|
|
10
|
+
// This enables: "research X while coding Y while testing Z"
|
|
11
|
+
import { runAgent } from '../agent.js';
|
|
12
|
+
import { registerTool } from './index.js';
|
|
13
|
+
import { loadConfig } from '../auth.js';
|
|
14
|
+
const activeSubagents = new Map();
|
|
15
|
+
let nextSubagentId = 1;
|
|
16
|
+
// Store the parent agent options for subagent inheritance
|
|
17
|
+
let parentOpts = {};
|
|
18
|
+
export function setParentAgentOptions(opts) {
|
|
19
|
+
parentOpts = opts;
|
|
20
|
+
}
|
|
21
|
+
export function registerSubagentTools() {
|
|
22
|
+
registerTool({
|
|
23
|
+
name: 'spawn_agent',
|
|
24
|
+
description: 'Spawn a specialist subagent to handle a task. The subagent runs independently with its own context and tools. Returns the subagent ID — use agent_result to get the output.',
|
|
25
|
+
parameters: {
|
|
26
|
+
prompt: { type: 'string', description: 'Task for the subagent to perform', required: true },
|
|
27
|
+
agent: { type: 'string', description: 'Specialist agent to use: kernel, researcher, coder, writer, analyst, aesthete, guardian, curator, strategist (default: auto)' },
|
|
28
|
+
background: { type: 'boolean', description: 'Run in background (true) or wait for result (false, default)' },
|
|
29
|
+
},
|
|
30
|
+
tier: 'free',
|
|
31
|
+
async execute(args) {
|
|
32
|
+
const prompt = String(args.prompt);
|
|
33
|
+
const agent = args.agent ? String(args.agent) : 'auto';
|
|
34
|
+
const background = args.background === true;
|
|
35
|
+
const id = String(nextSubagentId++);
|
|
36
|
+
const task = {
|
|
37
|
+
id,
|
|
38
|
+
agent,
|
|
39
|
+
prompt,
|
|
40
|
+
status: 'running',
|
|
41
|
+
startedAt: new Date().toISOString(),
|
|
42
|
+
};
|
|
43
|
+
activeSubagents.set(id, task);
|
|
44
|
+
const opts = {
|
|
45
|
+
...parentOpts,
|
|
46
|
+
agent,
|
|
47
|
+
};
|
|
48
|
+
if (background) {
|
|
49
|
+
// Fire and forget — run in background
|
|
50
|
+
runAgent(prompt, opts).then(response => {
|
|
51
|
+
task.response = response;
|
|
52
|
+
task.status = 'completed';
|
|
53
|
+
task.completedAt = new Date().toISOString();
|
|
54
|
+
}).catch(err => {
|
|
55
|
+
task.error = err instanceof Error ? err.message : String(err);
|
|
56
|
+
task.status = 'failed';
|
|
57
|
+
task.completedAt = new Date().toISOString();
|
|
58
|
+
});
|
|
59
|
+
return `Subagent #${id} spawned (${agent}, background). Use \`agent_result\` with id="${id}" to check output.`;
|
|
60
|
+
}
|
|
61
|
+
// Synchronous — wait for result
|
|
62
|
+
try {
|
|
63
|
+
const response = await runAgent(prompt, opts);
|
|
64
|
+
task.response = response;
|
|
65
|
+
task.status = 'completed';
|
|
66
|
+
task.completedAt = new Date().toISOString();
|
|
67
|
+
return `[Subagent #${id} (${response.agent}) — ${response.toolCalls} tool calls]\n\n${response.content}`;
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
task.error = err instanceof Error ? err.message : String(err);
|
|
71
|
+
task.status = 'failed';
|
|
72
|
+
task.completedAt = new Date().toISOString();
|
|
73
|
+
return `Subagent #${id} failed: ${task.error}`;
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
registerTool({
|
|
78
|
+
name: 'spawn_parallel',
|
|
79
|
+
description: 'Spawn multiple subagents in parallel and wait for all results. Each agent works independently on its task.',
|
|
80
|
+
parameters: {
|
|
81
|
+
tasks: {
|
|
82
|
+
type: 'array',
|
|
83
|
+
description: 'Array of { prompt, agent } objects. Each becomes a parallel subagent.',
|
|
84
|
+
required: true,
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
tier: 'free',
|
|
88
|
+
async execute(args) {
|
|
89
|
+
const tasks = args.tasks;
|
|
90
|
+
if (!Array.isArray(tasks) || tasks.length === 0) {
|
|
91
|
+
return 'Error: tasks must be a non-empty array of { prompt, agent }';
|
|
92
|
+
}
|
|
93
|
+
if (tasks.length > 10) {
|
|
94
|
+
return 'Error: maximum 10 parallel subagents';
|
|
95
|
+
}
|
|
96
|
+
const startTime = Date.now();
|
|
97
|
+
const results = await Promise.all(tasks.map(async (t, i) => {
|
|
98
|
+
const id = String(nextSubagentId++);
|
|
99
|
+
const agent = t.agent || 'auto';
|
|
100
|
+
const task = {
|
|
101
|
+
id,
|
|
102
|
+
agent,
|
|
103
|
+
prompt: t.prompt,
|
|
104
|
+
status: 'running',
|
|
105
|
+
startedAt: new Date().toISOString(),
|
|
106
|
+
};
|
|
107
|
+
activeSubagents.set(id, task);
|
|
108
|
+
try {
|
|
109
|
+
const response = await runAgent(t.prompt, { ...parentOpts, agent });
|
|
110
|
+
task.response = response;
|
|
111
|
+
task.status = 'completed';
|
|
112
|
+
task.completedAt = new Date().toISOString();
|
|
113
|
+
return { id, agent: response.agent, success: true, content: response.content, toolCalls: response.toolCalls };
|
|
114
|
+
}
|
|
115
|
+
catch (err) {
|
|
116
|
+
const error = err instanceof Error ? err.message : String(err);
|
|
117
|
+
task.error = error;
|
|
118
|
+
task.status = 'failed';
|
|
119
|
+
task.completedAt = new Date().toISOString();
|
|
120
|
+
return { id, agent, success: false, content: error, toolCalls: 0 };
|
|
121
|
+
}
|
|
122
|
+
}));
|
|
123
|
+
const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
|
|
124
|
+
const lines = [];
|
|
125
|
+
for (const r of results) {
|
|
126
|
+
const icon = r.success ? '✓' : '✗';
|
|
127
|
+
lines.push(`── Subagent #${r.id} (${r.agent}) [${icon}] ──`);
|
|
128
|
+
lines.push(r.content.length > 2000 ? r.content.slice(0, 2000) + '\n...(truncated)' : r.content);
|
|
129
|
+
lines.push('');
|
|
130
|
+
}
|
|
131
|
+
const passed = results.filter(r => r.success).length;
|
|
132
|
+
const totalTools = results.reduce((sum, r) => sum + r.toolCalls, 0);
|
|
133
|
+
lines.push(`${passed}/${results.length} subagents succeeded · ${totalTools} total tool calls · ${elapsed}s (parallel)`);
|
|
134
|
+
return lines.join('\n');
|
|
135
|
+
},
|
|
136
|
+
});
|
|
137
|
+
registerTool({
|
|
138
|
+
name: 'agent_result',
|
|
139
|
+
description: 'Get the result of a background subagent by ID.',
|
|
140
|
+
parameters: {
|
|
141
|
+
id: { type: 'string', description: 'Subagent ID', required: true },
|
|
142
|
+
},
|
|
143
|
+
tier: 'free',
|
|
144
|
+
async execute(args) {
|
|
145
|
+
const id = String(args.id);
|
|
146
|
+
const task = activeSubagents.get(id);
|
|
147
|
+
if (!task)
|
|
148
|
+
return `Error: Subagent #${id} not found`;
|
|
149
|
+
if (task.status === 'running') {
|
|
150
|
+
const elapsed = ((Date.now() - new Date(task.startedAt).getTime()) / 1000).toFixed(0);
|
|
151
|
+
return `Subagent #${id} still running (${elapsed}s). Check again later.`;
|
|
152
|
+
}
|
|
153
|
+
if (task.status === 'failed') {
|
|
154
|
+
return `Subagent #${id} failed: ${task.error}`;
|
|
155
|
+
}
|
|
156
|
+
return `[Subagent #${id} (${task.response.agent}) — ${task.response.toolCalls} tool calls]\n\n${task.response.content}`;
|
|
157
|
+
},
|
|
158
|
+
});
|
|
159
|
+
registerTool({
|
|
160
|
+
name: 'agent_list',
|
|
161
|
+
description: 'List all active and completed subagents.',
|
|
162
|
+
parameters: {},
|
|
163
|
+
tier: 'free',
|
|
164
|
+
async execute() {
|
|
165
|
+
if (activeSubagents.size === 0)
|
|
166
|
+
return 'No subagents.';
|
|
167
|
+
const lines = [];
|
|
168
|
+
for (const [id, task] of activeSubagents) {
|
|
169
|
+
const icon = { running: '●', completed: '✓', failed: '✗' }[task.status];
|
|
170
|
+
const elapsed = task.completedAt
|
|
171
|
+
? `${((new Date(task.completedAt).getTime() - new Date(task.startedAt).getTime()) / 1000).toFixed(1)}s`
|
|
172
|
+
: `${((Date.now() - new Date(task.startedAt).getTime()) / 1000).toFixed(0)}s`;
|
|
173
|
+
lines.push(`${icon} #${id} [${task.status}] ${task.agent} — ${task.prompt.slice(0, 60)}... (${elapsed})`);
|
|
174
|
+
}
|
|
175
|
+
return lines.join('\n');
|
|
176
|
+
},
|
|
177
|
+
});
|
|
178
|
+
// ── OpenClaw Delegation ──
|
|
179
|
+
// Delegate tasks to the local OpenClaw gateway as a parallel AI worker.
|
|
180
|
+
// OpenClaw runs in its own sandboxed user space with local models.
|
|
181
|
+
registerTool({
|
|
182
|
+
name: 'openclaw_delegate',
|
|
183
|
+
description: 'Delegate a task to OpenClaw, a local AI assistant running in an isolated user space with its own models. Use this for parallel work — OpenClaw can research, code, or analyze while you handle other parts. Returns OpenClaw\'s response. Costs $0 (uses local models).',
|
|
184
|
+
parameters: {
|
|
185
|
+
prompt: { type: 'string', description: 'Task for OpenClaw to perform', required: true },
|
|
186
|
+
model: { type: 'string', description: 'Model to use (default: openclaw:main). Options: qwen2.5-coder:7b, llama3.1:8b, mistral:7b, deepseek-coder-v2:16b, phi4:14b, gemma3:12b, nemotron-mini, nemotron-3-nano, codellama:13b, starcoder2:7b, codegemma:7b' },
|
|
187
|
+
},
|
|
188
|
+
tier: 'free',
|
|
189
|
+
async execute(args) {
|
|
190
|
+
const prompt = String(args.prompt);
|
|
191
|
+
const model = args.model ? String(args.model) : 'openclaw:main';
|
|
192
|
+
const config = loadConfig();
|
|
193
|
+
const token = config?.byok_provider === 'openclaw' ? config?.byok_key : null;
|
|
194
|
+
const gatewayToken = token || process.env.OPENCLAW_API_KEY || 'local';
|
|
195
|
+
try {
|
|
196
|
+
const res = await fetch('http://127.0.0.1:18789/v1/chat/completions', {
|
|
197
|
+
method: 'POST',
|
|
198
|
+
headers: {
|
|
199
|
+
'Content-Type': 'application/json',
|
|
200
|
+
'Authorization': `Bearer ${gatewayToken}`,
|
|
201
|
+
},
|
|
202
|
+
body: JSON.stringify({
|
|
203
|
+
model,
|
|
204
|
+
messages: [{ role: 'user', content: prompt }],
|
|
205
|
+
max_tokens: 4096,
|
|
206
|
+
}),
|
|
207
|
+
signal: AbortSignal.timeout(120_000),
|
|
208
|
+
});
|
|
209
|
+
if (!res.ok) {
|
|
210
|
+
const err = await res.json().catch(() => ({ error: { message: `HTTP ${res.status}` } }));
|
|
211
|
+
return `OpenClaw error: ${err.error?.message || res.status}. Is the gateway running? Start with: openclaw-cmd start`;
|
|
212
|
+
}
|
|
213
|
+
const data = await res.json();
|
|
214
|
+
const content = data.choices?.[0]?.message?.content || 'No response from OpenClaw';
|
|
215
|
+
const usage = data.usage || {};
|
|
216
|
+
return `[OpenClaw · ${data.model || model} · ${(usage.prompt_tokens || 0) + (usage.completion_tokens || 0)} tokens · $0]\n\n${content}`;
|
|
217
|
+
}
|
|
218
|
+
catch (err) {
|
|
219
|
+
if (err instanceof Error && err.name === 'TimeoutError') {
|
|
220
|
+
return 'OpenClaw timed out after 120s. The task may be too complex for the current model.';
|
|
221
|
+
}
|
|
222
|
+
return `OpenClaw connection failed: ${err instanceof Error ? err.message : String(err)}. Start gateway with: openclaw-cmd start`;
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
});
|
|
226
|
+
registerTool({
|
|
227
|
+
name: 'openclaw_status',
|
|
228
|
+
description: 'Check if OpenClaw gateway is running and what models are available.',
|
|
229
|
+
parameters: {},
|
|
230
|
+
tier: 'free',
|
|
231
|
+
async execute() {
|
|
232
|
+
try {
|
|
233
|
+
const res = await fetch('http://127.0.0.1:18789/health', { signal: AbortSignal.timeout(3000) });
|
|
234
|
+
if (!res.ok)
|
|
235
|
+
return 'OpenClaw gateway: not responding';
|
|
236
|
+
const health = await res.json().catch(() => ({}));
|
|
237
|
+
const lines = ['OpenClaw gateway: running'];
|
|
238
|
+
if (health.version)
|
|
239
|
+
lines.push(` Version: ${health.version}`);
|
|
240
|
+
if (health.uptime)
|
|
241
|
+
lines.push(` Uptime: ${health.uptime}`);
|
|
242
|
+
// Also check Ollama models
|
|
243
|
+
try {
|
|
244
|
+
const ollamaRes = await fetch('http://localhost:11434/api/tags', { signal: AbortSignal.timeout(2000) });
|
|
245
|
+
if (ollamaRes.ok) {
|
|
246
|
+
const data = await ollamaRes.json();
|
|
247
|
+
const models = (data.models || []).map((m) => m.name);
|
|
248
|
+
lines.push(` Models: ${models.join(', ')}`);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
catch { /* Ollama not running */ }
|
|
252
|
+
return lines.join('\n');
|
|
253
|
+
}
|
|
254
|
+
catch {
|
|
255
|
+
return 'OpenClaw gateway: offline. Start with: openclaw-cmd start';
|
|
256
|
+
}
|
|
257
|
+
},
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=subagent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagent.js","sourceRoot":"","sources":["../../src/tools/subagent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface Task {
|
|
2
|
+
id: string;
|
|
3
|
+
subject: string;
|
|
4
|
+
description: string;
|
|
5
|
+
status: 'pending' | 'in_progress' | 'completed' | 'blocked';
|
|
6
|
+
/** Present continuous form for progress display (e.g., "Running tests") */
|
|
7
|
+
activeForm?: string;
|
|
8
|
+
blockedBy: string[];
|
|
9
|
+
blocks: string[];
|
|
10
|
+
created: string;
|
|
11
|
+
updated: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function registerTaskTools(): void;
|
|
14
|
+
//# sourceMappingURL=tasks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/tools/tasks.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,SAAS,CAAA;IAC3D,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB;AAiBD,wBAAgB,iBAAiB,IAAI,IAAI,CAsMxC"}
|