@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
@@ -0,0 +1,295 @@
1
+ // K:BOT MCP Client — Connect to and consume external MCP servers
2
+ //
3
+ // Lets K:BOT use tools from any MCP server: databases, APIs, Supabase,
4
+ // filesystem servers, custom tools, etc.
5
+ //
6
+ // Flow:
7
+ // 1. mcp_connect — launch an MCP server process and cache the connection
8
+ // 2. mcp_list_tools — list tools available from a connected server
9
+ // 3. mcp_call — call a tool on a connected MCP server
10
+ // 4. mcp_disconnect — shut down a connected server
11
+ // 5. mcp_list_resources — list resources from a connected server
12
+ // 6. mcp_read_resource — read a resource from a connected server
13
+ import { spawn } from 'node:child_process';
14
+ import { registerTool } from './index.js';
15
+ function encodeJsonRpc(msg) {
16
+ const body = JSON.stringify(msg);
17
+ return `Content-Length: ${Buffer.byteLength(body)}\r\n\r\n${body}`;
18
+ }
19
+ const connections = new Map();
20
+ function parseMessages(conn) {
21
+ while (true) {
22
+ const headerEnd = conn.buffer.indexOf('\r\n\r\n');
23
+ if (headerEnd === -1)
24
+ break;
25
+ const header = conn.buffer.slice(0, headerEnd);
26
+ const lengthMatch = header.match(/Content-Length:\s*(\d+)/i);
27
+ if (!lengthMatch) {
28
+ conn.buffer = conn.buffer.slice(headerEnd + 4);
29
+ continue;
30
+ }
31
+ const contentLength = parseInt(lengthMatch[1], 10);
32
+ const bodyStart = headerEnd + 4;
33
+ if (conn.buffer.length < bodyStart + contentLength)
34
+ break;
35
+ const body = conn.buffer.slice(bodyStart, bodyStart + contentLength);
36
+ conn.buffer = conn.buffer.slice(bodyStart + contentLength);
37
+ try {
38
+ const msg = JSON.parse(body);
39
+ if (msg.id !== undefined && conn.pending.has(msg.id)) {
40
+ const { resolve, reject } = conn.pending.get(msg.id);
41
+ conn.pending.delete(msg.id);
42
+ if (msg.error) {
43
+ reject(new Error(msg.error.message));
44
+ }
45
+ else {
46
+ resolve(msg.result);
47
+ }
48
+ }
49
+ }
50
+ catch {
51
+ // skip malformed
52
+ }
53
+ }
54
+ }
55
+ function sendRequest(conn, method, params) {
56
+ return new Promise((resolve, reject) => {
57
+ const id = ++conn.messageId;
58
+ conn.pending.set(id, { resolve, reject });
59
+ const msg = { jsonrpc: '2.0', id, method, params };
60
+ conn.process.stdin?.write(encodeJsonRpc(msg));
61
+ // Timeout after 30s
62
+ setTimeout(() => {
63
+ if (conn.pending.has(id)) {
64
+ conn.pending.delete(id);
65
+ reject(new Error(`MCP request timeout: ${method}`));
66
+ }
67
+ }, 30000);
68
+ });
69
+ }
70
+ function sendNotification(conn, method, params) {
71
+ const msg = { jsonrpc: '2.0', method, params };
72
+ conn.process.stdin?.write(encodeJsonRpc(msg));
73
+ }
74
+ // ── Tool registration ──
75
+ export function registerMcpClientTools() {
76
+ registerTool({
77
+ name: 'mcp_connect',
78
+ description: 'Connect to an MCP server. Launches the server process, performs initialize handshake, and caches the connection. The server stays running until mcp_disconnect.',
79
+ parameters: {
80
+ name: { type: 'string', description: 'Unique name for this connection (e.g., "supabase", "filesystem")', required: true },
81
+ command: { type: 'string', description: 'Command to launch the MCP server (e.g., "npx -y @supabase/mcp-server")', required: true },
82
+ args: { type: 'array', description: 'Additional arguments for the command' },
83
+ env: { type: 'object', description: 'Environment variables to set for the server process' },
84
+ },
85
+ tier: 'free',
86
+ async execute(args) {
87
+ const name = String(args.name);
88
+ const command = String(args.command);
89
+ const extraArgs = args.args || [];
90
+ const env = args.env || {};
91
+ if (connections.has(name)) {
92
+ return `Already connected to "${name}". Use mcp_disconnect first to reconnect.`;
93
+ }
94
+ // Parse command into parts
95
+ const parts = command.split(/\s+/);
96
+ const cmd = parts[0];
97
+ const cmdArgs = [...parts.slice(1), ...extraArgs];
98
+ let proc;
99
+ try {
100
+ proc = spawn(cmd, cmdArgs, {
101
+ stdio: ['pipe', 'pipe', 'pipe'],
102
+ env: { ...process.env, ...env },
103
+ });
104
+ }
105
+ catch (err) {
106
+ return `Error: Failed to launch "${command}": ${err instanceof Error ? err.message : String(err)}`;
107
+ }
108
+ const conn = {
109
+ name,
110
+ command: [cmd, ...cmdArgs],
111
+ process: proc,
112
+ messageId: 0,
113
+ pending: new Map(),
114
+ buffer: '',
115
+ capabilities: {},
116
+ tools: [],
117
+ resources: [],
118
+ };
119
+ proc.stdout?.on('data', (chunk) => {
120
+ conn.buffer += chunk.toString();
121
+ parseMessages(conn);
122
+ });
123
+ proc.on('error', () => {
124
+ connections.delete(name);
125
+ });
126
+ proc.on('exit', () => {
127
+ connections.delete(name);
128
+ });
129
+ connections.set(name, conn);
130
+ // Initialize handshake
131
+ try {
132
+ const initResult = await sendRequest(conn, 'initialize', {
133
+ protocolVersion: '2024-11-05',
134
+ capabilities: {},
135
+ clientInfo: { name: 'kbot', version: '2.0.0' },
136
+ });
137
+ conn.capabilities = initResult?.capabilities || {};
138
+ sendNotification(conn, 'initialized', {});
139
+ // Fetch tools
140
+ try {
141
+ const toolsResult = await sendRequest(conn, 'tools/list', {});
142
+ conn.tools = toolsResult?.tools || [];
143
+ }
144
+ catch {
145
+ // Server may not support tools
146
+ }
147
+ // Fetch resources
148
+ try {
149
+ const resourcesResult = await sendRequest(conn, 'resources/list', {});
150
+ conn.resources = resourcesResult?.resources || [];
151
+ }
152
+ catch {
153
+ // Server may not support resources
154
+ }
155
+ return `Connected to "${name}" — ${conn.tools.length} tools, ${conn.resources.length} resources available`;
156
+ }
157
+ catch (err) {
158
+ proc.kill();
159
+ connections.delete(name);
160
+ return `Error: MCP handshake failed: ${err instanceof Error ? err.message : String(err)}`;
161
+ }
162
+ },
163
+ });
164
+ registerTool({
165
+ name: 'mcp_list_tools',
166
+ description: 'List tools available from a connected MCP server.',
167
+ parameters: {
168
+ name: { type: 'string', description: 'Connection name', required: true },
169
+ },
170
+ tier: 'free',
171
+ async execute(args) {
172
+ const name = String(args.name);
173
+ const conn = connections.get(name);
174
+ if (!conn)
175
+ return `Error: Not connected to "${name}". Use mcp_connect first.`;
176
+ if (conn.tools.length === 0)
177
+ return `No tools available from "${name}".`;
178
+ return conn.tools.map(t => `${t.name}: ${t.description || '(no description)'}`).join('\n');
179
+ },
180
+ });
181
+ registerTool({
182
+ name: 'mcp_call',
183
+ description: 'Call a tool on a connected MCP server. Returns the tool result.',
184
+ parameters: {
185
+ name: { type: 'string', description: 'Connection name', required: true },
186
+ tool: { type: 'string', description: 'Tool name to call', required: true },
187
+ arguments: { type: 'object', description: 'Arguments to pass to the tool' },
188
+ },
189
+ tier: 'free',
190
+ async execute(args) {
191
+ const name = String(args.name);
192
+ const tool = String(args.tool);
193
+ const toolArgs = args.arguments || {};
194
+ const conn = connections.get(name);
195
+ if (!conn)
196
+ return `Error: Not connected to "${name}". Use mcp_connect first.`;
197
+ try {
198
+ const result = await sendRequest(conn, 'tools/call', {
199
+ name: tool,
200
+ arguments: toolArgs,
201
+ });
202
+ if (result?.content) {
203
+ return result.content.map(c => c.text || JSON.stringify(c)).join('\n');
204
+ }
205
+ return JSON.stringify(result, null, 2);
206
+ }
207
+ catch (err) {
208
+ return `Error calling ${tool}: ${err instanceof Error ? err.message : String(err)}`;
209
+ }
210
+ },
211
+ });
212
+ registerTool({
213
+ name: 'mcp_disconnect',
214
+ description: 'Disconnect from an MCP server and shut down the process.',
215
+ parameters: {
216
+ name: { type: 'string', description: 'Connection name', required: true },
217
+ },
218
+ tier: 'free',
219
+ async execute(args) {
220
+ const name = String(args.name);
221
+ const conn = connections.get(name);
222
+ if (!conn)
223
+ return `Not connected to "${name}".`;
224
+ try {
225
+ await sendRequest(conn, 'shutdown', null);
226
+ sendNotification(conn, 'exit', null);
227
+ }
228
+ catch {
229
+ // Force kill if graceful shutdown fails
230
+ }
231
+ conn.process.kill();
232
+ connections.delete(name);
233
+ return `Disconnected from "${name}"`;
234
+ },
235
+ });
236
+ registerTool({
237
+ name: 'mcp_list_resources',
238
+ description: 'List resources available from a connected MCP server.',
239
+ parameters: {
240
+ name: { type: 'string', description: 'Connection name', required: true },
241
+ },
242
+ tier: 'free',
243
+ async execute(args) {
244
+ const name = String(args.name);
245
+ const conn = connections.get(name);
246
+ if (!conn)
247
+ return `Error: Not connected to "${name}". Use mcp_connect first.`;
248
+ if (conn.resources.length === 0)
249
+ return `No resources available from "${name}".`;
250
+ return conn.resources.map(r => `${r.uri}: ${r.name}${r.description ? ` — ${r.description}` : ''}`).join('\n');
251
+ },
252
+ });
253
+ registerTool({
254
+ name: 'mcp_read_resource',
255
+ description: 'Read a resource from a connected MCP server.',
256
+ parameters: {
257
+ name: { type: 'string', description: 'Connection name', required: true },
258
+ uri: { type: 'string', description: 'Resource URI to read', required: true },
259
+ },
260
+ tier: 'free',
261
+ async execute(args) {
262
+ const name = String(args.name);
263
+ const uri = String(args.uri);
264
+ const conn = connections.get(name);
265
+ if (!conn)
266
+ return `Error: Not connected to "${name}". Use mcp_connect first.`;
267
+ try {
268
+ const result = await sendRequest(conn, 'resources/read', { uri });
269
+ if (result?.contents) {
270
+ return result.contents.map(c => c.text || JSON.stringify(c)).join('\n');
271
+ }
272
+ return JSON.stringify(result, null, 2);
273
+ }
274
+ catch (err) {
275
+ return `Error reading ${uri}: ${err instanceof Error ? err.message : String(err)}`;
276
+ }
277
+ },
278
+ });
279
+ registerTool({
280
+ name: 'mcp_servers',
281
+ description: 'List all active MCP server connections.',
282
+ parameters: {},
283
+ tier: 'free',
284
+ async execute() {
285
+ if (connections.size === 0)
286
+ return 'No active MCP connections.';
287
+ const lines = [];
288
+ for (const [name, conn] of connections) {
289
+ lines.push(`${name}: ${conn.command.join(' ')} — ${conn.tools.length} tools, ${conn.resources.length} resources`);
290
+ }
291
+ return lines.join('\n');
292
+ },
293
+ });
294
+ }
295
+ //# sourceMappingURL=mcp-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../../src/tools/mcp-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function registerNotebookTools(): void;
2
+ //# sourceMappingURL=notebook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebook.d.ts","sourceRoot":"","sources":["../../src/tools/notebook.ts"],"names":[],"mappings":"AAyEA,wBAAgB,qBAAqB,IAAI,IAAI,CAyK5C"}
@@ -0,0 +1,207 @@
1
+ // K:BOT Notebook Editing — Jupyter .ipynb cell manipulation
2
+ //
3
+ // Read, edit, insert, and delete cells in Jupyter notebooks.
4
+ // Handles the JSON structure so the AI doesn't have to manage
5
+ // cell metadata, outputs, and execution counts manually.
6
+ import { readFileSync, writeFileSync, existsSync } from 'node:fs';
7
+ import { registerTool } from './index.js';
8
+ function readNotebook(path) {
9
+ if (!existsSync(path))
10
+ throw new Error(`File not found: ${path}`);
11
+ const raw = readFileSync(path, 'utf-8');
12
+ const nb = JSON.parse(raw);
13
+ if (!nb.cells || !Array.isArray(nb.cells)) {
14
+ throw new Error(`Invalid notebook format: ${path}`);
15
+ }
16
+ return nb;
17
+ }
18
+ function writeNotebook(path, nb) {
19
+ writeFileSync(path, JSON.stringify(nb, null, 1) + '\n');
20
+ }
21
+ function formatCell(cell, index) {
22
+ const source = cell.source.join('');
23
+ const typeTag = cell.cell_type === 'code' ? 'code' : cell.cell_type === 'markdown' ? 'md' : 'raw';
24
+ const execCount = cell.cell_type === 'code' && cell.execution_count != null
25
+ ? `[${cell.execution_count}]`
26
+ : '';
27
+ const header = `Cell ${index} (${typeTag})${execCount}`;
28
+ const lines = [`── ${header} ──`, source];
29
+ // Show outputs for code cells
30
+ if (cell.cell_type === 'code' && cell.outputs && cell.outputs.length > 0) {
31
+ lines.push(' Output:');
32
+ for (const out of cell.outputs) {
33
+ if (out.output_type === 'stream') {
34
+ const text = Array.isArray(out.text) ? out.text.join('') : String(out.text || '');
35
+ lines.push(` ${text}`);
36
+ }
37
+ else if (out.output_type === 'execute_result' || out.output_type === 'display_data') {
38
+ const data = out.data;
39
+ if (data?.['text/plain']) {
40
+ const text = Array.isArray(data['text/plain'])
41
+ ? data['text/plain'].join('')
42
+ : String(data['text/plain']);
43
+ lines.push(` ${text}`);
44
+ }
45
+ }
46
+ else if (out.output_type === 'error') {
47
+ lines.push(` Error: ${out.ename}: ${out.evalue}`);
48
+ }
49
+ }
50
+ }
51
+ return lines.join('\n');
52
+ }
53
+ export function registerNotebookTools() {
54
+ registerTool({
55
+ name: 'notebook_read',
56
+ description: 'Read a Jupyter notebook (.ipynb). Returns all cells with their type, source, and outputs.',
57
+ parameters: {
58
+ path: { type: 'string', description: 'Path to the .ipynb file', required: true },
59
+ cell: { type: 'number', description: 'Read only a specific cell (0-indexed). Omit to read all cells.' },
60
+ },
61
+ tier: 'free',
62
+ async execute(args) {
63
+ try {
64
+ const nb = readNotebook(String(args.path));
65
+ const cellIndex = typeof args.cell === 'number' ? args.cell : undefined;
66
+ if (cellIndex !== undefined) {
67
+ if (cellIndex < 0 || cellIndex >= nb.cells.length) {
68
+ return `Error: Cell ${cellIndex} out of range. Notebook has ${nb.cells.length} cells (0-${nb.cells.length - 1}).`;
69
+ }
70
+ return formatCell(nb.cells[cellIndex], cellIndex);
71
+ }
72
+ const lines = [
73
+ `Notebook: ${args.path} (${nb.cells.length} cells)`,
74
+ `Kernel: ${nb.metadata?.kernelspec?.display_name || 'unknown'}`,
75
+ '',
76
+ ];
77
+ for (let i = 0; i < nb.cells.length; i++) {
78
+ lines.push(formatCell(nb.cells[i], i));
79
+ lines.push('');
80
+ }
81
+ return lines.join('\n');
82
+ }
83
+ catch (err) {
84
+ return `Error: ${err instanceof Error ? err.message : String(err)}`;
85
+ }
86
+ },
87
+ });
88
+ registerTool({
89
+ name: 'notebook_edit',
90
+ description: 'Replace the source of a specific cell in a Jupyter notebook. Cell number is 0-indexed.',
91
+ parameters: {
92
+ path: { type: 'string', description: 'Path to the .ipynb file', required: true },
93
+ cell: { type: 'number', description: 'Cell index (0-based)', required: true },
94
+ source: { type: 'string', description: 'New cell source content', required: true },
95
+ cell_type: { type: 'string', description: 'Change cell type: code, markdown, raw' },
96
+ },
97
+ tier: 'free',
98
+ async execute(args) {
99
+ try {
100
+ const path = String(args.path);
101
+ const nb = readNotebook(path);
102
+ const cellIndex = Number(args.cell);
103
+ if (cellIndex < 0 || cellIndex >= nb.cells.length) {
104
+ return `Error: Cell ${cellIndex} out of range. Notebook has ${nb.cells.length} cells (0-${nb.cells.length - 1}).`;
105
+ }
106
+ const cell = nb.cells[cellIndex];
107
+ cell.source = String(args.source).split('\n').map((line, i, arr) => i < arr.length - 1 ? line + '\n' : line);
108
+ if (args.cell_type) {
109
+ const ct = String(args.cell_type);
110
+ if (!['code', 'markdown', 'raw'].includes(ct)) {
111
+ return `Error: Invalid cell_type "${ct}". Use: code, markdown, raw`;
112
+ }
113
+ cell.cell_type = ct;
114
+ if (ct === 'code' && !cell.outputs)
115
+ cell.outputs = [];
116
+ if (ct !== 'code') {
117
+ delete cell.outputs;
118
+ delete cell.execution_count;
119
+ }
120
+ }
121
+ // Clear outputs on edit (stale)
122
+ if (cell.cell_type === 'code') {
123
+ cell.outputs = [];
124
+ cell.execution_count = null;
125
+ }
126
+ writeNotebook(path, nb);
127
+ return `Edited cell ${cellIndex} in ${path}`;
128
+ }
129
+ catch (err) {
130
+ return `Error: ${err instanceof Error ? err.message : String(err)}`;
131
+ }
132
+ },
133
+ });
134
+ registerTool({
135
+ name: 'notebook_insert',
136
+ description: 'Insert a new cell into a Jupyter notebook at the specified position.',
137
+ parameters: {
138
+ path: { type: 'string', description: 'Path to the .ipynb file', required: true },
139
+ position: { type: 'number', description: 'Position to insert at (0-indexed). Inserts before this index. Use -1 to append.', required: true },
140
+ source: { type: 'string', description: 'Cell source content', required: true },
141
+ cell_type: { type: 'string', description: 'Cell type: code (default), markdown, raw' },
142
+ },
143
+ tier: 'free',
144
+ async execute(args) {
145
+ try {
146
+ const path = String(args.path);
147
+ const nb = readNotebook(path);
148
+ const position = Number(args.position);
149
+ const cellType = (String(args.cell_type || 'code'));
150
+ if (!['code', 'markdown', 'raw'].includes(cellType)) {
151
+ return `Error: Invalid cell_type "${cellType}". Use: code, markdown, raw`;
152
+ }
153
+ const newCell = {
154
+ cell_type: cellType,
155
+ source: String(args.source).split('\n').map((line, i, arr) => i < arr.length - 1 ? line + '\n' : line),
156
+ metadata: {},
157
+ };
158
+ if (cellType === 'code') {
159
+ newCell.outputs = [];
160
+ newCell.execution_count = null;
161
+ }
162
+ // Generate a cell ID if nbformat supports it
163
+ if (nb.nbformat >= 4 && (nb.nbformat_minor || 0) >= 5) {
164
+ newCell.id = Math.random().toString(36).slice(2, 10);
165
+ }
166
+ if (position === -1 || position >= nb.cells.length) {
167
+ nb.cells.push(newCell);
168
+ }
169
+ else {
170
+ nb.cells.splice(Math.max(0, position), 0, newCell);
171
+ }
172
+ writeNotebook(path, nb);
173
+ const insertedAt = position === -1 ? nb.cells.length - 1 : Math.max(0, position);
174
+ return `Inserted ${cellType} cell at position ${insertedAt} in ${path}`;
175
+ }
176
+ catch (err) {
177
+ return `Error: ${err instanceof Error ? err.message : String(err)}`;
178
+ }
179
+ },
180
+ });
181
+ registerTool({
182
+ name: 'notebook_delete',
183
+ description: 'Delete a cell from a Jupyter notebook by index.',
184
+ parameters: {
185
+ path: { type: 'string', description: 'Path to the .ipynb file', required: true },
186
+ cell: { type: 'number', description: 'Cell index to delete (0-based)', required: true },
187
+ },
188
+ tier: 'free',
189
+ async execute(args) {
190
+ try {
191
+ const path = String(args.path);
192
+ const nb = readNotebook(path);
193
+ const cellIndex = Number(args.cell);
194
+ if (cellIndex < 0 || cellIndex >= nb.cells.length) {
195
+ return `Error: Cell ${cellIndex} out of range. Notebook has ${nb.cells.length} cells (0-${nb.cells.length - 1}).`;
196
+ }
197
+ const removed = nb.cells.splice(cellIndex, 1)[0];
198
+ writeNotebook(path, nb);
199
+ return `Deleted cell ${cellIndex} (${removed.cell_type}) from ${path}. ${nb.cells.length} cells remaining.`;
200
+ }
201
+ catch (err) {
202
+ return `Error: ${err instanceof Error ? err.message : String(err)}`;
203
+ }
204
+ },
205
+ });
206
+ }
207
+ //# sourceMappingURL=notebook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebook.js","sourceRoot":"","sources":["../../src/tools/notebook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function registerOpenClawTools(): void;
2
+ //# sourceMappingURL=openclaw.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openclaw.d.ts","sourceRoot":"","sources":["../../src/tools/openclaw.ts"],"names":[],"mappings":"AA4EA,wBAAgB,qBAAqB,IAAI,IAAI,CAkI5C"}