@kernel.chat/kbot 1.3.1 → 2.3.1

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 (176) hide show
  1. package/README.md +94 -0
  2. package/dist/agent.d.ts +9 -0
  3. package/dist/agent.d.ts.map +1 -1
  4. package/dist/agent.js +576 -119
  5. package/dist/agent.js.map +1 -1
  6. package/dist/auth.d.ts +20 -35
  7. package/dist/auth.d.ts.map +1 -1
  8. package/dist/auth.js +224 -66
  9. package/dist/auth.js.map +1 -1
  10. package/dist/auth.test.d.ts +2 -0
  11. package/dist/auth.test.d.ts.map +1 -0
  12. package/dist/auth.test.js +89 -0
  13. package/dist/auth.test.js.map +1 -0
  14. package/dist/build-targets.d.ts +37 -0
  15. package/dist/build-targets.d.ts.map +1 -0
  16. package/dist/build-targets.js +507 -0
  17. package/dist/build-targets.js.map +1 -0
  18. package/dist/cli.js +1210 -130
  19. package/dist/cli.js.map +1 -1
  20. package/dist/context.d.ts +2 -0
  21. package/dist/context.d.ts.map +1 -1
  22. package/dist/context.js +72 -22
  23. package/dist/context.js.map +1 -1
  24. package/dist/hooks.d.ts +27 -0
  25. package/dist/hooks.d.ts.map +1 -0
  26. package/dist/hooks.js +145 -0
  27. package/dist/hooks.js.map +1 -0
  28. package/dist/ide/acp-server.d.ts +6 -0
  29. package/dist/ide/acp-server.d.ts.map +1 -0
  30. package/dist/ide/acp-server.js +319 -0
  31. package/dist/ide/acp-server.js.map +1 -0
  32. package/dist/ide/bridge.d.ts +128 -0
  33. package/dist/ide/bridge.d.ts.map +1 -0
  34. package/dist/ide/bridge.js +185 -0
  35. package/dist/ide/bridge.js.map +1 -0
  36. package/dist/ide/index.d.ts +5 -0
  37. package/dist/ide/index.d.ts.map +1 -0
  38. package/dist/ide/index.js +11 -0
  39. package/dist/ide/index.js.map +1 -0
  40. package/dist/ide/lsp-bridge.d.ts +27 -0
  41. package/dist/ide/lsp-bridge.d.ts.map +1 -0
  42. package/dist/ide/lsp-bridge.js +267 -0
  43. package/dist/ide/lsp-bridge.js.map +1 -0
  44. package/dist/ide/mcp-server.d.ts +7 -0
  45. package/dist/ide/mcp-server.d.ts.map +1 -0
  46. package/dist/ide/mcp-server.js +451 -0
  47. package/dist/ide/mcp-server.js.map +1 -0
  48. package/dist/learning.d.ts +179 -0
  49. package/dist/learning.d.ts.map +1 -0
  50. package/dist/learning.js +829 -0
  51. package/dist/learning.js.map +1 -0
  52. package/dist/learning.test.d.ts +2 -0
  53. package/dist/learning.test.d.ts.map +1 -0
  54. package/dist/learning.test.js +115 -0
  55. package/dist/learning.test.js.map +1 -0
  56. package/dist/matrix.d.ts +49 -0
  57. package/dist/matrix.d.ts.map +1 -0
  58. package/dist/matrix.js +302 -0
  59. package/dist/matrix.js.map +1 -0
  60. package/dist/memory.d.ts +11 -0
  61. package/dist/memory.d.ts.map +1 -1
  62. package/dist/memory.js +54 -2
  63. package/dist/memory.js.map +1 -1
  64. package/dist/multimodal.d.ts +57 -0
  65. package/dist/multimodal.d.ts.map +1 -0
  66. package/dist/multimodal.js +206 -0
  67. package/dist/multimodal.js.map +1 -0
  68. package/dist/permissions.d.ts +21 -0
  69. package/dist/permissions.d.ts.map +1 -0
  70. package/dist/permissions.js +122 -0
  71. package/dist/permissions.js.map +1 -0
  72. package/dist/planner.d.ts +54 -0
  73. package/dist/planner.d.ts.map +1 -0
  74. package/dist/planner.js +298 -0
  75. package/dist/planner.js.map +1 -0
  76. package/dist/plugins.d.ts +30 -0
  77. package/dist/plugins.d.ts.map +1 -0
  78. package/dist/plugins.js +135 -0
  79. package/dist/plugins.js.map +1 -0
  80. package/dist/sessions.d.ts +38 -0
  81. package/dist/sessions.d.ts.map +1 -0
  82. package/dist/sessions.js +177 -0
  83. package/dist/sessions.js.map +1 -0
  84. package/dist/streaming.d.ts +88 -0
  85. package/dist/streaming.d.ts.map +1 -0
  86. package/dist/streaming.js +317 -0
  87. package/dist/streaming.js.map +1 -0
  88. package/dist/tools/background.d.ts +2 -0
  89. package/dist/tools/background.d.ts.map +1 -0
  90. package/dist/tools/background.js +163 -0
  91. package/dist/tools/background.js.map +1 -0
  92. package/dist/tools/bash.d.ts.map +1 -1
  93. package/dist/tools/bash.js +26 -1
  94. package/dist/tools/bash.js.map +1 -1
  95. package/dist/tools/browser.js +7 -7
  96. package/dist/tools/browser.js.map +1 -1
  97. package/dist/tools/build-matrix.d.ts +2 -0
  98. package/dist/tools/build-matrix.d.ts.map +1 -0
  99. package/dist/tools/build-matrix.js +463 -0
  100. package/dist/tools/build-matrix.js.map +1 -0
  101. package/dist/tools/computer.js +5 -5
  102. package/dist/tools/computer.js.map +1 -1
  103. package/dist/tools/fetch.d.ts +2 -0
  104. package/dist/tools/fetch.d.ts.map +1 -0
  105. package/dist/tools/fetch.js +106 -0
  106. package/dist/tools/fetch.js.map +1 -0
  107. package/dist/tools/files.d.ts.map +1 -1
  108. package/dist/tools/files.js +112 -6
  109. package/dist/tools/files.js.map +1 -1
  110. package/dist/tools/git.js +3 -3
  111. package/dist/tools/git.js.map +1 -1
  112. package/dist/tools/github.d.ts +2 -0
  113. package/dist/tools/github.d.ts.map +1 -0
  114. package/dist/tools/github.js +196 -0
  115. package/dist/tools/github.js.map +1 -0
  116. package/dist/tools/index.d.ts +29 -5
  117. package/dist/tools/index.d.ts.map +1 -1
  118. package/dist/tools/index.js +136 -20
  119. package/dist/tools/index.js.map +1 -1
  120. package/dist/tools/index.test.d.ts +2 -0
  121. package/dist/tools/index.test.d.ts.map +1 -0
  122. package/dist/tools/index.test.js +162 -0
  123. package/dist/tools/index.test.js.map +1 -0
  124. package/dist/tools/matrix.d.ts +2 -0
  125. package/dist/tools/matrix.d.ts.map +1 -0
  126. package/dist/tools/matrix.js +79 -0
  127. package/dist/tools/matrix.js.map +1 -0
  128. package/dist/tools/mcp-client.d.ts +2 -0
  129. package/dist/tools/mcp-client.d.ts.map +1 -0
  130. package/dist/tools/mcp-client.js +295 -0
  131. package/dist/tools/mcp-client.js.map +1 -0
  132. package/dist/tools/notebook.d.ts +2 -0
  133. package/dist/tools/notebook.d.ts.map +1 -0
  134. package/dist/tools/notebook.js +207 -0
  135. package/dist/tools/notebook.js.map +1 -0
  136. package/dist/tools/openclaw.d.ts +2 -0
  137. package/dist/tools/openclaw.d.ts.map +1 -0
  138. package/dist/tools/openclaw.js +187 -0
  139. package/dist/tools/openclaw.js.map +1 -0
  140. package/dist/tools/parallel.d.ts +2 -0
  141. package/dist/tools/parallel.d.ts.map +1 -0
  142. package/dist/tools/parallel.js +60 -0
  143. package/dist/tools/parallel.js.map +1 -0
  144. package/dist/tools/sandbox.d.ts +2 -0
  145. package/dist/tools/sandbox.d.ts.map +1 -0
  146. package/dist/tools/sandbox.js +352 -0
  147. package/dist/tools/sandbox.js.map +1 -0
  148. package/dist/tools/search.d.ts.map +1 -1
  149. package/dist/tools/search.js +135 -28
  150. package/dist/tools/search.js.map +1 -1
  151. package/dist/tools/subagent.d.ts +4 -0
  152. package/dist/tools/subagent.d.ts.map +1 -0
  153. package/dist/tools/subagent.js +260 -0
  154. package/dist/tools/subagent.js.map +1 -0
  155. package/dist/tools/tasks.d.ts +14 -0
  156. package/dist/tools/tasks.d.ts.map +1 -0
  157. package/dist/tools/tasks.js +210 -0
  158. package/dist/tools/tasks.js.map +1 -0
  159. package/dist/tools/worktree.d.ts +2 -0
  160. package/dist/tools/worktree.d.ts.map +1 -0
  161. package/dist/tools/worktree.js +223 -0
  162. package/dist/tools/worktree.js.map +1 -0
  163. package/dist/tui.d.ts +73 -0
  164. package/dist/tui.d.ts.map +1 -0
  165. package/dist/tui.js +257 -0
  166. package/dist/tui.js.map +1 -0
  167. package/dist/ui.d.ts +11 -19
  168. package/dist/ui.d.ts.map +1 -1
  169. package/dist/ui.js +143 -171
  170. package/dist/ui.js.map +1 -1
  171. package/dist/updater.d.ts +3 -0
  172. package/dist/updater.d.ts.map +1 -0
  173. package/dist/updater.js +70 -0
  174. package/dist/updater.js.map +1 -0
  175. package/install.sh +5 -7
  176. package/package.json +9 -5
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAMA,wBAAgB,mBAAmB,IAAI,IAAI,CAyC1C"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAKA,wBAAgB,mBAAmB,IAAI,IAAI,CAoJ1C"}
@@ -1,45 +1,152 @@
1
- // K:BOT Search Tool — Web search via the Kernel API
2
- // This is the one tool that DOES use an API call (counted against message limit)
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. Uses your Kernel API quota use sparingly.',
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: 'starter',
11
+ tier: 'free',
13
12
  async execute(args) {
14
13
  const query = String(args.query);
15
- const apiKey = getApiKey();
16
- if (!apiKey)
17
- return 'Error: No API key configured. Run `kbot auth` first.';
14
+ // Multi-source free search
15
+ const parts = [];
16
+ // Source 1: DuckDuckGo instant answer API
18
17
  try {
19
- const res = await fetch(`${getApiBase()}/chat`, {
20
- method: 'POST',
21
- headers: {
22
- 'Content-Type': 'application/json',
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
- if (!res.ok) {
34
- const err = await res.json().catch(() => ({ error: 'Unknown' }));
35
- return `Search failed: ${err.error || `HTTP ${res.status}`}`;
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
- return data.content || 'No results found';
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 (err) {
41
- return `Search error: ${err instanceof Error ? err.message : String(err)}`;
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,iFAAiF;AAEjF,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEzC,MAAM,UAAU,mBAAmB;IACjC,YAAY,CAAC;QACX,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,qFAAqF;QAClG,UAAU,EAAE;YACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE;SACvE;QACD,IAAI,EAAE,SAAS;QACf,KAAK,CAAC,OAAO,CAAC,IAAI;YAChB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAChC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;YAC1B,IAAI,CAAC,MAAM;gBAAE,OAAO,sDAAsD,CAAA;YAE1E,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,EAAE,OAAO,EAAE;oBAC9C,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE;wBACP,cAAc,EAAE,kBAAkB;wBAClC,aAAa,EAAE,UAAU,MAAM,EAAE;wBACjC,gBAAgB,EAAE,OAAO;qBAC1B;oBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,OAAO,EAAE,uBAAuB,KAAK,6EAA6E;wBAClH,KAAK,EAAE,YAAY;wBACnB,IAAI,EAAE,MAAM;wBACZ,UAAU,EAAE,IAAI;qBACjB,CAAC;iBACH,CAAC,CAAA;gBAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;oBACZ,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;oBAChE,OAAO,kBAAkB,GAAG,CAAC,KAAK,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE,CAAA;gBAC9D,CAAC;gBAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;gBAC7B,OAAO,IAAI,CAAC,OAAO,IAAI,kBAAkB,CAAA;YAC3C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,iBAAiB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAA;YAC5E,CAAC;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type AgentOptions } from '../agent.js';
2
+ export declare function setParentAgentOptions(opts: AgentOptions): void;
3
+ export declare function registerSubagentTools(): void;
4
+ //# sourceMappingURL=subagent.d.ts.map
@@ -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"}