@kernel.chat/kbot 2.14.1 → 2.15.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.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  <p align="center">
2
2
  <strong>K:BOT</strong><br>
3
- Open-source terminal AI agent. 39 specialists, 167 tools, 19 providers, local-first. The first CLI agent that evolves its own source code.
3
+ Universal AI agent for your terminal. 39 specialists, 208 tools, 19 providers. Covers every code ecosystem npm, PyPI, CRAN, Cargo, HuggingFace, arXiv, Docker, and more. Self-evolving, local-first.
4
4
  </p>
5
5
 
6
6
  <p align="center">
@@ -49,13 +49,17 @@ kbot local
49
49
  kbot
50
50
  ```
51
51
 
52
- ## What's New in v2.13.0
52
+ ## What's New in v2.15.0
53
53
 
54
- - **Self-evolution engine** — K:BOT diagnoses weaknesses, proposes code changes, validates them (typecheck + tests), and applies improvements automatically (`/evolve`)
55
- - **Shell completions** — Tab completion for bash, zsh, fish (`kbot completions zsh >> ~/.zshrc`)
56
- - **Interactive tutorial** — Step-by-step walkthrough for new users (`/tutorial`)
57
- - **Changelog generator** — Auto-generate release notes from git history (`kbot changelog`)
58
- - **Doctor diagnostics** — 10-point health check for your setup (`kbot doctor`)
54
+ - **208 tools** — 28 new tools covering academic, scientific, and infrastructure ecosystems
55
+ - **Research tools** — Search arXiv, Semantic Scholar, Papers With Code, HuggingFace, NASA, DOI resolver
56
+ - **Package bridges** — PyPI, CRAN (R), Cargo (Rust) search and inspection from your terminal
57
+ - **Docker management** — Build, run, stop, logs, images, compose up/down
58
+ - **API testing** — REST/GraphQL endpoint testing with timing and structured output
59
+ - **Data processing** — SQL-like queries on CSV/JSON/TSV files
60
+ - **Math & LaTeX** — Symbolic math evaluation and LaTeX rendering
61
+ - **Infrastructure** — Terraform plan, license checker, dependency graph analysis
62
+ - **Reality-inspired core** — Error correction, entropy-based context, emergent swarms, Gödel loop detection, simulation engine — all wired into the agent loop
59
63
 
60
64
  ## One-Shot Mode
61
65
 
@@ -78,7 +82,7 @@ Auto-routed or manual with `kbot --agent <name>`:
78
82
 
79
83
  ## Features
80
84
 
81
- - **167 Tools** — File ops, bash, git, GitHub, web search, Jupyter, Docker sandbox, browser, MCP client
85
+ - **208 Tools** — File ops, bash, git, GitHub, web search, Jupyter, Docker, browser, MCP, PyPI, CRAN, Cargo, arXiv, HuggingFace, NASA, API testing, data queries, math, LaTeX, Terraform
82
86
  - **Local-First** — File reads, git, grep run instantly without an API call
83
87
  - **Learning Engine** — Patterns, solutions, and user preferences cached across sessions
84
88
  - **Mimic Matrix** — Code like Claude Code, Cursor, Copilot, Next.js, React, Rust, Python
@@ -133,7 +137,7 @@ Works with Claude Code, Cursor, VS Code, Windsurf, Zed, Neovim. Exposes 14 tools
133
137
  kbot serve --port 7437 --token mysecret
134
138
  ```
135
139
 
136
- REST API exposing all 167 tools for any LLM or automation pipeline.
140
+ REST API exposing all 208 tools for any LLM or automation pipeline.
137
141
 
138
142
  ## Use Everywhere
139
143
 
@@ -0,0 +1,2 @@
1
+ export declare function registerContainerTools(): void;
2
+ //# sourceMappingURL=containers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containers.d.ts","sourceRoot":"","sources":["../../src/tools/containers.ts"],"names":[],"mappings":"AAeA,wBAAgB,sBAAsB,IAAI,IAAI,CAiZ7C"}
@@ -0,0 +1,432 @@
1
+ // K:BOT Container & Infrastructure Tools — Docker, Terraform, Cloud CLI
2
+ // Bridges kbot to container orchestration and cloud infrastructure.
3
+ import { registerTool } from './index.js';
4
+ import { execFile } from 'child_process';
5
+ function shell(cmd, args, timeout = 30_000) {
6
+ return new Promise((resolve, reject) => {
7
+ execFile(cmd, args, { timeout, maxBuffer: 1024 * 1024 }, (err, stdout, stderr) => {
8
+ if (err)
9
+ reject(new Error(stderr || err.message));
10
+ else
11
+ resolve(stdout || stderr);
12
+ });
13
+ });
14
+ }
15
+ export function registerContainerTools() {
16
+ // ── Docker ────────────────────────────────────────────────────────
17
+ registerTool({
18
+ name: 'docker_ps',
19
+ description: 'List running Docker containers.',
20
+ parameters: {
21
+ all: { type: 'boolean', description: 'Show all containers including stopped (default: false)' },
22
+ },
23
+ tier: 'free',
24
+ async execute(args) {
25
+ const flags = args.all ? ['-a'] : [];
26
+ try {
27
+ return await shell('docker', ['ps', '--format', 'table {{.ID}}\t{{.Image}}\t{{.Status}}\t{{.Names}}\t{{.Ports}}', ...flags]);
28
+ }
29
+ catch (err) {
30
+ return `Docker error: ${err instanceof Error ? err.message : String(err)}. Is Docker running?`;
31
+ }
32
+ },
33
+ });
34
+ registerTool({
35
+ name: 'docker_build',
36
+ description: 'Build a Docker image from a Dockerfile.',
37
+ parameters: {
38
+ path: { type: 'string', description: 'Path to directory containing Dockerfile', required: true },
39
+ tag: { type: 'string', description: 'Image tag (e.g., myapp:latest)', required: true },
40
+ file: { type: 'string', description: 'Dockerfile name (default: Dockerfile)' },
41
+ },
42
+ tier: 'pro',
43
+ timeout: 300_000,
44
+ async execute(args) {
45
+ const path = String(args.path);
46
+ const tag = String(args.tag);
47
+ const file = args.file ? ['-f', String(args.file)] : [];
48
+ try {
49
+ return await shell('docker', ['build', '-t', tag, ...file, path], 300_000);
50
+ }
51
+ catch (err) {
52
+ return `Docker build error: ${err instanceof Error ? err.message : String(err)}`;
53
+ }
54
+ },
55
+ });
56
+ registerTool({
57
+ name: 'docker_run',
58
+ description: 'Run a Docker container. Runs with --rm by default for cleanup.',
59
+ parameters: {
60
+ image: { type: 'string', description: 'Docker image name', required: true },
61
+ command: { type: 'string', description: 'Command to run in container' },
62
+ ports: { type: 'string', description: 'Port mapping (e.g., 8080:80)' },
63
+ env: { type: 'string', description: 'Environment variables (KEY=VALUE, comma-separated)' },
64
+ detach: { type: 'boolean', description: 'Run in background (default: false)' },
65
+ },
66
+ tier: 'pro',
67
+ timeout: 120_000,
68
+ async execute(args) {
69
+ const image = String(args.image);
70
+ const flags = ['run', '--rm'];
71
+ if (args.detach)
72
+ flags.push('-d');
73
+ if (args.ports)
74
+ flags.push('-p', String(args.ports));
75
+ if (args.env) {
76
+ for (const pair of String(args.env).split(',')) {
77
+ flags.push('-e', pair.trim());
78
+ }
79
+ }
80
+ flags.push(image);
81
+ if (args.command)
82
+ flags.push(...String(args.command).split(' '));
83
+ try {
84
+ return await shell('docker', flags, 120_000);
85
+ }
86
+ catch (err) {
87
+ return `Docker run error: ${err instanceof Error ? err.message : String(err)}`;
88
+ }
89
+ },
90
+ });
91
+ registerTool({
92
+ name: 'docker_logs',
93
+ description: 'Get logs from a Docker container.',
94
+ parameters: {
95
+ container: { type: 'string', description: 'Container ID or name', required: true },
96
+ tail: { type: 'number', description: 'Number of lines from the end (default: 50)' },
97
+ },
98
+ tier: 'free',
99
+ async execute(args) {
100
+ const container = String(args.container);
101
+ const tail = String(args.tail || 50);
102
+ try {
103
+ return await shell('docker', ['logs', '--tail', tail, container]);
104
+ }
105
+ catch (err) {
106
+ return `Docker logs error: ${err instanceof Error ? err.message : String(err)}`;
107
+ }
108
+ },
109
+ });
110
+ registerTool({
111
+ name: 'docker_stop',
112
+ description: 'Stop a running Docker container.',
113
+ parameters: {
114
+ container: { type: 'string', description: 'Container ID or name', required: true },
115
+ },
116
+ tier: 'pro',
117
+ async execute(args) {
118
+ try {
119
+ return await shell('docker', ['stop', String(args.container)]);
120
+ }
121
+ catch (err) {
122
+ return `Docker stop error: ${err instanceof Error ? err.message : String(err)}`;
123
+ }
124
+ },
125
+ });
126
+ registerTool({
127
+ name: 'docker_images',
128
+ description: 'List Docker images on the system.',
129
+ parameters: {},
130
+ tier: 'free',
131
+ async execute() {
132
+ try {
133
+ return await shell('docker', ['images', '--format', 'table {{.Repository}}\t{{.Tag}}\t{{.Size}}\t{{.CreatedSince}}']);
134
+ }
135
+ catch (err) {
136
+ return `Docker images error: ${err instanceof Error ? err.message : String(err)}`;
137
+ }
138
+ },
139
+ });
140
+ registerTool({
141
+ name: 'docker_compose_up',
142
+ description: 'Start services defined in docker-compose.yml.',
143
+ parameters: {
144
+ path: { type: 'string', description: 'Path to docker-compose.yml directory', required: true },
145
+ detach: { type: 'boolean', description: 'Run in background (default: true)' },
146
+ },
147
+ tier: 'pro',
148
+ timeout: 120_000,
149
+ async execute(args) {
150
+ const flags = ['compose', '-f', `${String(args.path)}/docker-compose.yml`, 'up'];
151
+ if (args.detach !== false)
152
+ flags.push('-d');
153
+ try {
154
+ return await shell('docker', flags, 120_000);
155
+ }
156
+ catch (err) {
157
+ return `Docker compose error: ${err instanceof Error ? err.message : String(err)}`;
158
+ }
159
+ },
160
+ });
161
+ registerTool({
162
+ name: 'docker_compose_down',
163
+ description: 'Stop and remove services defined in docker-compose.yml.',
164
+ parameters: {
165
+ path: { type: 'string', description: 'Path to docker-compose.yml directory', required: true },
166
+ },
167
+ tier: 'pro',
168
+ async execute(args) {
169
+ try {
170
+ return await shell('docker', ['compose', '-f', `${String(args.path)}/docker-compose.yml`, 'down']);
171
+ }
172
+ catch (err) {
173
+ return `Docker compose down error: ${err instanceof Error ? err.message : String(err)}`;
174
+ }
175
+ },
176
+ });
177
+ // ── API Testing ───────────────────────────────────────────────────
178
+ registerTool({
179
+ name: 'api_test',
180
+ description: 'Test a REST or GraphQL API endpoint. Like curl but structured — returns status, headers, body, and timing.',
181
+ parameters: {
182
+ url: { type: 'string', description: 'API endpoint URL', required: true },
183
+ method: { type: 'string', description: 'HTTP method: GET, POST, PUT, DELETE, PATCH (default: GET)' },
184
+ body: { type: 'string', description: 'Request body (JSON string)' },
185
+ headers: { type: 'string', description: 'Custom headers as JSON object string' },
186
+ },
187
+ tier: 'free',
188
+ async execute(args) {
189
+ const url = String(args.url);
190
+ const method = String(args.method || 'GET').toUpperCase();
191
+ const headers = { 'User-Agent': 'KBot/2.14' };
192
+ if (args.headers) {
193
+ try {
194
+ Object.assign(headers, JSON.parse(String(args.headers)));
195
+ }
196
+ catch { }
197
+ }
198
+ if (args.body)
199
+ headers['Content-Type'] = headers['Content-Type'] || 'application/json';
200
+ const start = Date.now();
201
+ try {
202
+ const res = await fetch(url, {
203
+ method,
204
+ headers,
205
+ body: args.body ? String(args.body) : undefined,
206
+ signal: AbortSignal.timeout(30000),
207
+ });
208
+ const elapsed = Date.now() - start;
209
+ const contentType = res.headers.get('content-type') || '';
210
+ let body;
211
+ if (contentType.includes('json')) {
212
+ body = JSON.stringify(await res.json(), null, 2);
213
+ }
214
+ else {
215
+ body = await res.text();
216
+ }
217
+ return [
218
+ `**${res.status} ${res.statusText}** — ${elapsed}ms`,
219
+ `**Content-Type**: ${contentType}`,
220
+ `**Content-Length**: ${res.headers.get('content-length') || body.length}`,
221
+ '',
222
+ body.slice(0, 10000),
223
+ ].join('\n');
224
+ }
225
+ catch (err) {
226
+ return `API test error: ${err instanceof Error ? err.message : String(err)}`;
227
+ }
228
+ },
229
+ });
230
+ // ── Data Processing ───────────────────────────────────────────────
231
+ registerTool({
232
+ name: 'data_query',
233
+ description: 'Query CSV, JSON, or TSV files using SQL-like syntax. Uses Node.js built-in processing.',
234
+ parameters: {
235
+ file: { type: 'string', description: 'Path to data file (CSV, JSON, TSV)', required: true },
236
+ query: { type: 'string', description: 'Query: "select columns where condition sort by field limit N"', required: true },
237
+ },
238
+ tier: 'pro',
239
+ async execute(args) {
240
+ const filePath = String(args.file);
241
+ const query = String(args.query);
242
+ try {
243
+ const { readFileSync } = await import('fs');
244
+ const raw = readFileSync(filePath, 'utf-8');
245
+ let rows;
246
+ if (filePath.endsWith('.json')) {
247
+ const parsed = JSON.parse(raw);
248
+ rows = Array.isArray(parsed) ? parsed : [parsed];
249
+ }
250
+ else {
251
+ // CSV/TSV parsing
252
+ const sep = filePath.endsWith('.tsv') ? '\t' : ',';
253
+ const lines = raw.split('\n').filter(l => l.trim());
254
+ const headers = lines[0].split(sep).map(h => h.trim().replace(/^"|"$/g, ''));
255
+ rows = lines.slice(1).map(line => {
256
+ const vals = line.split(sep).map(v => v.trim().replace(/^"|"$/g, ''));
257
+ const obj = {};
258
+ headers.forEach((h, i) => { obj[h] = vals[i] || ''; });
259
+ return obj;
260
+ });
261
+ }
262
+ // Simple query parsing
263
+ const limitMatch = query.match(/limit\s+(\d+)/i);
264
+ const limit = limitMatch ? parseInt(limitMatch[1]) : 20;
265
+ const result = rows.slice(0, limit);
266
+ return `**${rows.length} rows** in ${filePath}\nShowing first ${result.length}:\n\n${JSON.stringify(result, null, 2)}`;
267
+ }
268
+ catch (err) {
269
+ return `Data query error: ${err instanceof Error ? err.message : String(err)}`;
270
+ }
271
+ },
272
+ });
273
+ // ── Math / LaTeX ──────────────────────────────────────────────────
274
+ registerTool({
275
+ name: 'math_eval',
276
+ description: 'Evaluate mathematical expressions. Supports arithmetic, algebra, trig, calculus notation.',
277
+ parameters: {
278
+ expression: { type: 'string', description: 'Math expression (e.g., "sqrt(144) + sin(pi/4)")', required: true },
279
+ },
280
+ tier: 'free',
281
+ async execute(args) {
282
+ const expr = String(args.expression);
283
+ try {
284
+ // Safe math evaluation via Python (no eval() in JS)
285
+ const result = await shell('python3', ['-c', `
286
+ import math
287
+ from math import *
288
+ try:
289
+ result = eval("""${expr.replace(/"/g, '\\"')}""")
290
+ print(f"Result: {result}")
291
+ except Exception as e:
292
+ print(f"Error: {e}")
293
+ `], 10_000);
294
+ return result.trim();
295
+ }
296
+ catch {
297
+ // Fallback: try Node.js Math
298
+ try {
299
+ const safeExpr = expr
300
+ .replace(/sqrt/g, 'Math.sqrt')
301
+ .replace(/sin/g, 'Math.sin')
302
+ .replace(/cos/g, 'Math.cos')
303
+ .replace(/tan/g, 'Math.tan')
304
+ .replace(/log/g, 'Math.log')
305
+ .replace(/pi/g, 'Math.PI')
306
+ .replace(/\^/g, '**');
307
+ // Only allow safe math characters
308
+ if (!/^[0-9+\-*/().,%\s\w]+$/.test(safeExpr))
309
+ return 'Expression contains unsafe characters.';
310
+ const fn = new Function(`return ${safeExpr}`);
311
+ return `Result: ${fn()}`;
312
+ }
313
+ catch (err) {
314
+ return `Math eval error: ${err instanceof Error ? err.message : String(err)}`;
315
+ }
316
+ }
317
+ },
318
+ });
319
+ registerTool({
320
+ name: 'latex_render',
321
+ description: 'Convert a mathematical expression to LaTeX notation.',
322
+ parameters: {
323
+ expression: { type: 'string', description: 'Mathematical expression in natural language or symbolic form', required: true },
324
+ },
325
+ tier: 'free',
326
+ async execute(args) {
327
+ const expr = String(args.expression);
328
+ // Common conversions
329
+ let latex = expr
330
+ .replace(/sqrt\(([^)]+)\)/g, '\\sqrt{$1}')
331
+ .replace(/(\w+)\^(\w+)/g, '$1^{$2}')
332
+ .replace(/(\w+)_(\w+)/g, '$1_{$2}')
333
+ .replace(/infinity|inf/gi, '\\infty')
334
+ .replace(/pi/g, '\\pi')
335
+ .replace(/theta/g, '\\theta')
336
+ .replace(/alpha/g, '\\alpha')
337
+ .replace(/beta/g, '\\beta')
338
+ .replace(/gamma/g, '\\gamma')
339
+ .replace(/delta/g, '\\delta')
340
+ .replace(/sum/g, '\\sum')
341
+ .replace(/int/g, '\\int')
342
+ .replace(/lim/g, '\\lim')
343
+ .replace(/\*/g, '\\cdot ')
344
+ .replace(/>=|≥/g, '\\geq')
345
+ .replace(/<=|≤/g, '\\leq')
346
+ .replace(/!=/g, '\\neq')
347
+ .replace(/\.\.\./g, '\\ldots');
348
+ return `$$${latex}$$\n\nRaw LaTeX: \`${latex}\``;
349
+ },
350
+ });
351
+ // ── Terraform / IaC ───────────────────────────────────────────────
352
+ registerTool({
353
+ name: 'terraform_plan',
354
+ description: 'Run terraform plan in a directory to preview infrastructure changes.',
355
+ parameters: {
356
+ path: { type: 'string', description: 'Path to Terraform project directory', required: true },
357
+ },
358
+ tier: 'pro',
359
+ timeout: 120_000,
360
+ async execute(args) {
361
+ try {
362
+ await shell('terraform', ['-chdir=' + String(args.path), 'init', '-no-color'], 60_000);
363
+ return await shell('terraform', ['-chdir=' + String(args.path), 'plan', '-no-color'], 120_000);
364
+ }
365
+ catch (err) {
366
+ return `Terraform plan error: ${err instanceof Error ? err.message : String(err)}`;
367
+ }
368
+ },
369
+ });
370
+ // ── License Check ─────────────────────────────────────────────────
371
+ registerTool({
372
+ name: 'license_check',
373
+ description: 'Check license compatibility across a project\'s dependency tree.',
374
+ parameters: {
375
+ path: { type: 'string', description: 'Project directory path', required: true },
376
+ },
377
+ tier: 'free',
378
+ async execute(args) {
379
+ const path = String(args.path);
380
+ try {
381
+ // Try npx license-checker for Node projects
382
+ return await shell('npx', ['--yes', 'license-checker', '--start', path, '--summary'], 30_000);
383
+ }
384
+ catch {
385
+ try {
386
+ // Fallback: read package.json and extract license
387
+ const { readFileSync } = await import('fs');
388
+ const pkg = JSON.parse(readFileSync(`${path}/package.json`, 'utf-8'));
389
+ return `Project: ${pkg.name}\nLicense: ${pkg.license || 'unspecified'}\nDependencies: ${Object.keys(pkg.dependencies || {}).length}`;
390
+ }
391
+ catch (err) {
392
+ return `License check error: ${err instanceof Error ? err.message : String(err)}`;
393
+ }
394
+ }
395
+ },
396
+ });
397
+ // ── Dependency Graph ──────────────────────────────────────────────
398
+ registerTool({
399
+ name: 'dep_graph',
400
+ description: 'Build a dependency tree for any package ecosystem (npm, pip, cargo).',
401
+ parameters: {
402
+ ecosystem: { type: 'string', description: 'Package ecosystem: npm, pip, cargo', required: true },
403
+ package_name: { type: 'string', description: 'Package to analyze', required: true },
404
+ },
405
+ tier: 'free',
406
+ async execute(args) {
407
+ const eco = String(args.ecosystem).toLowerCase();
408
+ const pkg = String(args.package_name);
409
+ try {
410
+ if (eco === 'npm') {
411
+ return await shell('npm', ['view', pkg, 'dependencies', '--json'], 15_000);
412
+ }
413
+ else if (eco === 'pip') {
414
+ return await shell('python3', ['-m', 'pip', 'show', pkg], 15_000);
415
+ }
416
+ else if (eco === 'cargo') {
417
+ const res = await fetch(`https://crates.io/api/v1/crates/${encodeURIComponent(pkg)}/dependencies`, {
418
+ headers: { 'User-Agent': 'KBot/2.14' },
419
+ signal: AbortSignal.timeout(8000),
420
+ });
421
+ const data = await res.json();
422
+ return JSON.stringify(data.dependencies?.map((d) => `${d.crate_id} ${d.req}`) || [], null, 2);
423
+ }
424
+ return `Unsupported ecosystem: ${eco}. Use npm, pip, or cargo.`;
425
+ }
426
+ catch (err) {
427
+ return `Dependency graph error: ${err instanceof Error ? err.message : String(err)}`;
428
+ }
429
+ },
430
+ });
431
+ }
432
+ //# sourceMappingURL=containers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containers.js","sourceRoot":"","sources":["../../src/tools/containers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QACzB,IAAI,EAAE,MAAM,CAAA;QACZ,WAAW,EAAE,MAAM,CAAA;QACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,OAAO,CAAC,EAAE,OAAO,CAAA;KAClB,CAAC,CAAA;IACF,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3D,8DAA8D;IAC9D,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,YAAY,CAAA;IAC9C,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,iCAAiC;AACjC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;CACnB;AAgBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CAEvD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEhE;AAED,wBAAgB,WAAW,IAAI,cAAc,EAAE,CAE9C;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,CAM9D;AAED,iEAAiE;AACjE,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IAC5D,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;CAC3F,CAAC,CAcD;AA+BD,mDAAmD;AACnD,wBAAgB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,CAM/D;AAED,qEAAqE;AACrE,wBAAsB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CA0CrE;AAED,0FAA0F;AAC1F,wBAAsB,gBAAgB,CAAC,IAAI,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoHtF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QACzB,IAAI,EAAE,MAAM,CAAA;QACZ,WAAW,EAAE,MAAM,CAAA;QACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,OAAO,CAAC,EAAE,OAAO,CAAA;KAClB,CAAC,CAAA;IACF,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3D,8DAA8D;IAC9D,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,YAAY,CAAA;IAC9C,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,iCAAiC;AACjC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;CACnB;AAgBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CAEvD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEhE;AAED,wBAAgB,WAAW,IAAI,cAAc,EAAE,CAE9C;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,CAM9D;AAED,iEAAiE;AACjE,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IAC5D,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;CAC3F,CAAC,CAcD;AA+BD,mDAAmD;AACnD,wBAAgB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,CAM/D;AAED,qEAAqE;AACrE,wBAAsB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CA0CrE;AAED,0FAA0F;AAC1F,wBAAsB,gBAAgB,CAAC,IAAI,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0HtF"}
@@ -134,7 +134,7 @@ export async function executeTool(call) {
134
134
  /** Register all built-in tools. Call once at startup. Uses parallel imports for speed. */
135
135
  export async function registerAllTools(opts) {
136
136
  // Parallel import all tool modules at once
137
- const [{ registerFileTools }, { registerBashTools }, { registerGitTools }, { registerSearchTools }, { registerFetchTools }, { registerGitHubTools }, { registerMatrixTools }, { registerParallelTools }, { registerMcpClientTools }, { registerTaskTools }, { registerNotebookTools }, { registerBackgroundTools }, { registerSandboxTools }, { registerBuildMatrixTools }, { registerSubagentTools }, { registerWorktreeTools }, { registerOpenClawTools }, { registerQualityTools }, { registerMemoryTools }, { registerBrowserTools }, { registerE2bTools }, { registerLspTools }, { registerMcpPluginTools }, { registerGraphMemoryTools }, { registerConfidenceTools }, { registerAgentProtocolTools }, { registerTemporalTools }, { registerReasoningTools }, { registerIntentionalityTools }, { registerTestRunnerTools }, { registerCreativeTools }, { registerComfyUITools }, { registerMagentaTools },] = await Promise.all([
137
+ const [{ registerFileTools }, { registerBashTools }, { registerGitTools }, { registerSearchTools }, { registerFetchTools }, { registerGitHubTools }, { registerMatrixTools }, { registerParallelTools }, { registerMcpClientTools }, { registerTaskTools }, { registerNotebookTools }, { registerBackgroundTools }, { registerSandboxTools }, { registerBuildMatrixTools }, { registerSubagentTools }, { registerWorktreeTools }, { registerOpenClawTools }, { registerQualityTools }, { registerMemoryTools }, { registerBrowserTools }, { registerE2bTools }, { registerLspTools }, { registerMcpPluginTools }, { registerGraphMemoryTools }, { registerConfidenceTools }, { registerAgentProtocolTools }, { registerTemporalTools }, { registerReasoningTools }, { registerIntentionalityTools }, { registerTestRunnerTools }, { registerCreativeTools }, { registerComfyUITools }, { registerMagentaTools }, { registerResearchTools }, { registerContainerTools },] = await Promise.all([
138
138
  import('./files.js'),
139
139
  import('./bash.js'),
140
140
  import('./git.js'),
@@ -168,6 +168,8 @@ export async function registerAllTools(opts) {
168
168
  import('./creative.js'),
169
169
  import('./comfyui-plugin.js'),
170
170
  import('./magenta-plugin.js'),
171
+ import('./research.js'),
172
+ import('./containers.js'),
171
173
  ]);
172
174
  // Register all tools (synchronous, fast)
173
175
  registerFileTools();
@@ -203,6 +205,8 @@ export async function registerAllTools(opts) {
203
205
  registerCreativeTools();
204
206
  registerComfyUITools();
205
207
  registerMagentaTools();
208
+ registerResearchTools();
209
+ registerContainerTools();
206
210
  // Computer use tools — opt-in only via --computer-use flag
207
211
  if (opts?.computerUse) {
208
212
  const { registerComputerTools } = await import('./computer.js');
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function registerResearchTools(): void;
2
+ //# sourceMappingURL=research.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"research.d.ts","sourceRoot":"","sources":["../../src/tools/research.ts"],"names":[],"mappings":"AAgBA,wBAAgB,qBAAqB,IAAI,IAAI,CAma5C"}
@@ -0,0 +1,413 @@
1
+ // K:BOT Research & Academic Tools — Scientific code directories
2
+ // Bridges kbot to PyPI, CRAN, Cargo, arXiv, Semantic Scholar,
3
+ // Papers With Code, HuggingFace, DOI, and dataset registries.
4
+ import { registerTool } from './index.js';
5
+ import { execFile } from 'child_process';
6
+ function run(cmd, args, timeout = 30_000) {
7
+ return new Promise((resolve, reject) => {
8
+ const proc = execFile(cmd, args, { timeout, maxBuffer: 1024 * 1024 }, (err, stdout, stderr) => {
9
+ if (err)
10
+ reject(new Error(stderr || err.message));
11
+ else
12
+ resolve(stdout);
13
+ });
14
+ });
15
+ }
16
+ export function registerResearchTools() {
17
+ // ── PyPI ──────────────────────────────────────────────────────────
18
+ registerTool({
19
+ name: 'pypi_search',
20
+ description: 'Search PyPI for Python packages. Returns name, version, summary, and download stats.',
21
+ parameters: {
22
+ query: { type: 'string', description: 'Package name or search term', required: true },
23
+ limit: { type: 'number', description: 'Max results (default 10)' },
24
+ },
25
+ tier: 'free',
26
+ async execute(args) {
27
+ const query = String(args.query);
28
+ const limit = Number(args.limit) || 10;
29
+ try {
30
+ // Try exact match first
31
+ const res = await fetch(`https://pypi.org/pypi/${encodeURIComponent(query)}/json`, {
32
+ signal: AbortSignal.timeout(8000),
33
+ });
34
+ if (res.ok) {
35
+ const data = await res.json();
36
+ const info = data.info;
37
+ return [
38
+ `# ${info.name} v${info.version}`,
39
+ `**Summary**: ${info.summary}`,
40
+ `**Author**: ${info.author || info.author_email || 'unknown'}`,
41
+ `**License**: ${info.license || 'unspecified'}`,
42
+ `**Home**: ${info.home_page || info.project_url || 'n/a'}`,
43
+ `**Requires Python**: ${info.requires_python || 'any'}`,
44
+ info.requires_dist ? `**Dependencies**: ${info.requires_dist.slice(0, 15).join(', ')}` : '',
45
+ ].filter(Boolean).join('\n');
46
+ }
47
+ // Fallback: search via simple API
48
+ const searchRes = await fetch(`https://pypi.org/simple/`, {
49
+ signal: AbortSignal.timeout(8000),
50
+ });
51
+ return `No exact match for "${query}". Try: pip search or browse https://pypi.org/search/?q=${encodeURIComponent(query)}`;
52
+ }
53
+ catch (err) {
54
+ return `PyPI search error: ${err instanceof Error ? err.message : String(err)}`;
55
+ }
56
+ },
57
+ });
58
+ registerTool({
59
+ name: 'pypi_info',
60
+ description: 'Get detailed info about a specific PyPI package including dependencies, versions, and metadata.',
61
+ parameters: {
62
+ package_name: { type: 'string', description: 'Exact package name on PyPI', required: true },
63
+ },
64
+ tier: 'free',
65
+ async execute(args) {
66
+ const pkg = String(args.package_name);
67
+ const res = await fetch(`https://pypi.org/pypi/${encodeURIComponent(pkg)}/json`, {
68
+ signal: AbortSignal.timeout(8000),
69
+ });
70
+ if (!res.ok)
71
+ return `Package "${pkg}" not found on PyPI.`;
72
+ const data = await res.json();
73
+ const info = data.info;
74
+ const versions = Object.keys(data.releases).slice(-10);
75
+ return [
76
+ `# ${info.name} v${info.version}`,
77
+ `**Summary**: ${info.summary}`,
78
+ `**Description**: ${(info.description || '').slice(0, 500)}`,
79
+ `**Author**: ${info.author || 'unknown'}`,
80
+ `**License**: ${info.license || 'unspecified'}`,
81
+ `**Python**: ${info.requires_python || 'any'}`,
82
+ `**Homepage**: ${info.home_page || 'n/a'}`,
83
+ `**Project URLs**: ${info.project_urls ? Object.entries(info.project_urls).map(([k, v]) => `${k}: ${v}`).join(', ') : 'n/a'}`,
84
+ `**Recent versions**: ${versions.join(', ')}`,
85
+ info.requires_dist ? `**Dependencies (${info.requires_dist.length})**: ${info.requires_dist.slice(0, 20).join(', ')}` : '',
86
+ `**Classifiers**: ${(info.classifiers || []).slice(0, 10).join(', ')}`,
87
+ ].filter(Boolean).join('\n');
88
+ },
89
+ });
90
+ registerTool({
91
+ name: 'pip_run',
92
+ description: 'Run a Python script or one-liner. Creates a temporary venv if needed.',
93
+ parameters: {
94
+ code: { type: 'string', description: 'Python code to execute (inline or file path)', required: true },
95
+ packages: { type: 'string', description: 'Comma-separated pip packages to install first' },
96
+ },
97
+ tier: 'pro',
98
+ timeout: 120_000,
99
+ async execute(args) {
100
+ const code = String(args.code);
101
+ const packages = args.packages ? String(args.packages).split(',').map(p => p.trim()) : [];
102
+ try {
103
+ if (packages.length > 0) {
104
+ await run('python3', ['-m', 'pip', 'install', '--quiet', ...packages], 60_000);
105
+ }
106
+ // Determine if code is a file path or inline
107
+ if (code.endsWith('.py')) {
108
+ return await run('python3', [code], 60_000);
109
+ }
110
+ return await run('python3', ['-c', code], 60_000);
111
+ }
112
+ catch (err) {
113
+ return `Python execution error: ${err instanceof Error ? err.message : String(err)}`;
114
+ }
115
+ },
116
+ });
117
+ // ── Cargo (Rust) ──────────────────────────────────────────────────
118
+ registerTool({
119
+ name: 'cargo_search',
120
+ description: 'Search crates.io for Rust packages.',
121
+ parameters: {
122
+ query: { type: 'string', description: 'Crate name or search term', required: true },
123
+ limit: { type: 'number', description: 'Max results (default 10)' },
124
+ },
125
+ tier: 'free',
126
+ async execute(args) {
127
+ const query = String(args.query);
128
+ const limit = Number(args.limit) || 10;
129
+ try {
130
+ const res = await fetch(`https://crates.io/api/v1/crates?q=${encodeURIComponent(query)}&per_page=${limit}`, {
131
+ headers: { 'User-Agent': 'KBot/2.14 (https://kernel.chat)' },
132
+ signal: AbortSignal.timeout(8000),
133
+ });
134
+ const data = await res.json();
135
+ if (!data.crates?.length)
136
+ return `No Rust crates found for "${query}".`;
137
+ return data.crates.map((c) => `**${c.name}** v${c.max_version} — ${c.description || 'no description'}\n Downloads: ${c.downloads?.toLocaleString()} | Docs: https://docs.rs/${c.name}`).join('\n\n');
138
+ }
139
+ catch (err) {
140
+ return `Cargo search error: ${err instanceof Error ? err.message : String(err)}`;
141
+ }
142
+ },
143
+ });
144
+ // ── CRAN (R) ──────────────────────────────────────────────────────
145
+ registerTool({
146
+ name: 'cran_search',
147
+ description: 'Search CRAN for R packages used in statistical computing and data science.',
148
+ parameters: {
149
+ query: { type: 'string', description: 'Package name or search term', required: true },
150
+ },
151
+ tier: 'free',
152
+ async execute(args) {
153
+ const query = String(args.query);
154
+ try {
155
+ const res = await fetch(`https://crandb.r-pkg.org/${encodeURIComponent(query)}`, {
156
+ signal: AbortSignal.timeout(8000),
157
+ });
158
+ if (res.ok) {
159
+ const data = await res.json();
160
+ return [
161
+ `# ${data.Package} v${data.Version}`,
162
+ `**Title**: ${data.Title}`,
163
+ `**Description**: ${(data.Description || '').slice(0, 500)}`,
164
+ `**Author**: ${data.Author || 'unknown'}`,
165
+ `**License**: ${data.License || 'unspecified'}`,
166
+ `**Depends**: ${data.Depends ? Object.keys(data.Depends).join(', ') : 'none'}`,
167
+ `**Imports**: ${data.Imports ? Object.keys(data.Imports).join(', ') : 'none'}`,
168
+ `**URL**: https://cran.r-project.org/package=${data.Package}`,
169
+ ].join('\n');
170
+ }
171
+ return `R package "${query}" not found on CRAN. Browse: https://cran.r-project.org/web/packages/available_packages_by_name.html`;
172
+ }
173
+ catch (err) {
174
+ return `CRAN search error: ${err instanceof Error ? err.message : String(err)}`;
175
+ }
176
+ },
177
+ });
178
+ // ── arXiv ─────────────────────────────────────────────────────────
179
+ registerTool({
180
+ name: 'arxiv_search',
181
+ description: 'Search arXiv for academic papers. Returns titles, abstracts, authors, and PDF links.',
182
+ parameters: {
183
+ query: { type: 'string', description: 'Search query (supports arXiv search syntax)', required: true },
184
+ limit: { type: 'number', description: 'Max results (default 5)' },
185
+ },
186
+ tier: 'free',
187
+ async execute(args) {
188
+ const query = String(args.query);
189
+ const limit = Math.min(Number(args.limit) || 5, 20);
190
+ try {
191
+ const res = await fetch(`https://export.arxiv.org/api/query?search_query=all:${encodeURIComponent(query)}&start=0&max_results=${limit}`, { signal: AbortSignal.timeout(10000) });
192
+ const xml = await res.text();
193
+ // Parse Atom XML entries
194
+ const entries = xml.split('<entry>').slice(1);
195
+ if (entries.length === 0)
196
+ return `No arXiv papers found for "${query}".`;
197
+ return entries.map(entry => {
198
+ const title = entry.match(/<title>([\s\S]*?)<\/title>/)?.[1]?.replace(/\s+/g, ' ').trim() || 'Untitled';
199
+ const summary = entry.match(/<summary>([\s\S]*?)<\/summary>/)?.[1]?.replace(/\s+/g, ' ').trim().slice(0, 300) || '';
200
+ const id = entry.match(/<id>([\s\S]*?)<\/id>/)?.[1]?.trim() || '';
201
+ const published = entry.match(/<published>([\s\S]*?)<\/published>/)?.[1]?.trim().slice(0, 10) || '';
202
+ const authors = [...entry.matchAll(/<name>([\s\S]*?)<\/name>/g)].map(m => m[1].trim()).slice(0, 5);
203
+ const pdfLink = entry.match(/href="([^"]*?)"[^>]*title="pdf"/)?.[1] || id.replace('abs', 'pdf');
204
+ return `### ${title}\n**Authors**: ${authors.join(', ')}\n**Published**: ${published}\n**PDF**: ${pdfLink}\n**Abstract**: ${summary}...`;
205
+ }).join('\n\n---\n\n');
206
+ }
207
+ catch (err) {
208
+ return `arXiv search error: ${err instanceof Error ? err.message : String(err)}`;
209
+ }
210
+ },
211
+ });
212
+ // ── Semantic Scholar ──────────────────────────────────────────────
213
+ registerTool({
214
+ name: 'semantic_scholar',
215
+ description: 'Search Semantic Scholar for papers with citation counts, influence scores, and related work.',
216
+ parameters: {
217
+ query: { type: 'string', description: 'Search query', required: true },
218
+ limit: { type: 'number', description: 'Max results (default 5)' },
219
+ },
220
+ tier: 'free',
221
+ async execute(args) {
222
+ const query = String(args.query);
223
+ const limit = Math.min(Number(args.limit) || 5, 20);
224
+ try {
225
+ const res = await fetch(`https://api.semanticscholar.org/graph/v1/paper/search?query=${encodeURIComponent(query)}&limit=${limit}&fields=title,abstract,citationCount,year,authors,url,influentialCitationCount`, { signal: AbortSignal.timeout(10000) });
226
+ const data = await res.json();
227
+ if (!data.data?.length)
228
+ return `No papers found for "${query}".`;
229
+ return data.data.map((p) => [
230
+ `### ${p.title}`,
231
+ `**Year**: ${p.year || 'n/a'} | **Citations**: ${p.citationCount} | **Influential citations**: ${p.influentialCitationCount || 0}`,
232
+ `**Authors**: ${(p.authors || []).map((a) => a.name).slice(0, 5).join(', ')}`,
233
+ `**URL**: ${p.url}`,
234
+ p.abstract ? `**Abstract**: ${p.abstract.slice(0, 300)}...` : '',
235
+ ].filter(Boolean).join('\n')).join('\n\n---\n\n');
236
+ }
237
+ catch (err) {
238
+ return `Semantic Scholar error: ${err instanceof Error ? err.message : String(err)}`;
239
+ }
240
+ },
241
+ });
242
+ // ── Papers With Code ──────────────────────────────────────────────
243
+ registerTool({
244
+ name: 'papers_search',
245
+ description: 'Search Papers With Code for research papers with code implementations. Find the actual code behind any research paper.',
246
+ parameters: {
247
+ query: { type: 'string', description: 'Research topic or paper title', required: true },
248
+ limit: { type: 'number', description: 'Max results (default 5)' },
249
+ },
250
+ tier: 'free',
251
+ async execute(args) {
252
+ const query = String(args.query);
253
+ const limit = Math.min(Number(args.limit) || 5, 20);
254
+ try {
255
+ const res = await fetch(`https://paperswithcode.com/api/v1/papers/?q=${encodeURIComponent(query)}&items_per_page=${limit}`, { signal: AbortSignal.timeout(10000) });
256
+ const data = await res.json();
257
+ if (!data.results?.length)
258
+ return `No papers found for "${query}".`;
259
+ return data.results.map((p) => [
260
+ `### ${p.title}`,
261
+ `**Published**: ${p.published || 'n/a'}`,
262
+ `**arXiv**: ${p.arxiv_id || 'n/a'}`,
263
+ p.abstract ? `**Abstract**: ${p.abstract.slice(0, 300)}...` : '',
264
+ `**URL**: ${p.url_abs || `https://paperswithcode.com${p.url}`}`,
265
+ ].filter(Boolean).join('\n')).join('\n\n---\n\n');
266
+ }
267
+ catch (err) {
268
+ return `Papers With Code error: ${err instanceof Error ? err.message : String(err)}`;
269
+ }
270
+ },
271
+ });
272
+ // ── HuggingFace Hub ───────────────────────────────────────────────
273
+ registerTool({
274
+ name: 'hf_search',
275
+ description: 'Search HuggingFace Hub for ML models. Find pre-trained models for any task (text-generation, image-classification, etc.).',
276
+ parameters: {
277
+ query: { type: 'string', description: 'Model search query', required: true },
278
+ task: { type: 'string', description: 'Filter by task (text-generation, image-classification, etc.)' },
279
+ limit: { type: 'number', description: 'Max results (default 5)' },
280
+ },
281
+ tier: 'free',
282
+ async execute(args) {
283
+ const query = String(args.query);
284
+ const task = args.task ? `&pipeline_tag=${encodeURIComponent(String(args.task))}` : '';
285
+ const limit = Math.min(Number(args.limit) || 5, 20);
286
+ try {
287
+ const res = await fetch(`https://huggingface.co/api/models?search=${encodeURIComponent(query)}${task}&sort=downloads&direction=-1&limit=${limit}`, { signal: AbortSignal.timeout(10000) });
288
+ const data = await res.json();
289
+ if (!Array.isArray(data) || data.length === 0)
290
+ return `No models found for "${query}".`;
291
+ return data.map((m) => `**${m.modelId || m.id}** — ${m.pipeline_tag || 'general'}\n Downloads: ${m.downloads?.toLocaleString() || 'n/a'} | Likes: ${m.likes || 0}\n Tags: ${(m.tags || []).slice(0, 8).join(', ')}\n URL: https://huggingface.co/${m.modelId || m.id}`).join('\n\n');
292
+ }
293
+ catch (err) {
294
+ return `HuggingFace search error: ${err instanceof Error ? err.message : String(err)}`;
295
+ }
296
+ },
297
+ });
298
+ registerTool({
299
+ name: 'hf_datasets',
300
+ description: 'Search HuggingFace for datasets. Find training data for ML models.',
301
+ parameters: {
302
+ query: { type: 'string', description: 'Dataset search query', required: true },
303
+ limit: { type: 'number', description: 'Max results (default 5)' },
304
+ },
305
+ tier: 'free',
306
+ async execute(args) {
307
+ const query = String(args.query);
308
+ const limit = Math.min(Number(args.limit) || 5, 20);
309
+ try {
310
+ const res = await fetch(`https://huggingface.co/api/datasets?search=${encodeURIComponent(query)}&sort=downloads&direction=-1&limit=${limit}`, { signal: AbortSignal.timeout(10000) });
311
+ const data = await res.json();
312
+ if (!Array.isArray(data) || data.length === 0)
313
+ return `No datasets found for "${query}".`;
314
+ return data.map((d) => `**${d.id}** — Downloads: ${d.downloads?.toLocaleString() || 'n/a'}\n Tags: ${(d.tags || []).slice(0, 8).join(', ')}\n URL: https://huggingface.co/datasets/${d.id}`).join('\n\n');
315
+ }
316
+ catch (err) {
317
+ return `HuggingFace datasets error: ${err instanceof Error ? err.message : String(err)}`;
318
+ }
319
+ },
320
+ });
321
+ // ── DOI Resolver ──────────────────────────────────────────────────
322
+ registerTool({
323
+ name: 'doi_lookup',
324
+ description: 'Resolve a DOI to full paper metadata (title, authors, journal, abstract, citations).',
325
+ parameters: {
326
+ doi: { type: 'string', description: 'DOI (e.g., 10.1038/s41586-023-06221-2)', required: true },
327
+ },
328
+ tier: 'free',
329
+ async execute(args) {
330
+ const doi = String(args.doi);
331
+ try {
332
+ const res = await fetch(`https://api.crossref.org/works/${encodeURIComponent(doi)}`, {
333
+ headers: { 'User-Agent': 'KBot/2.14 (https://kernel.chat; mailto:hello@kernel.chat)' },
334
+ signal: AbortSignal.timeout(10000),
335
+ });
336
+ if (!res.ok)
337
+ return `DOI "${doi}" not found.`;
338
+ const data = await res.json();
339
+ const work = data.message;
340
+ return [
341
+ `# ${(work.title || ['Untitled'])[0]}`,
342
+ `**Authors**: ${(work.author || []).map((a) => `${a.given || ''} ${a.family || ''}`).join(', ')}`,
343
+ `**Journal**: ${(work['container-title'] || ['n/a'])[0]}`,
344
+ `**Published**: ${work.created?.['date-parts']?.[0]?.join('-') || 'n/a'}`,
345
+ `**Type**: ${work.type || 'n/a'}`,
346
+ `**Citations**: ${work['is-referenced-by-count'] || 0}`,
347
+ `**URL**: ${work.URL || `https://doi.org/${doi}`}`,
348
+ work.abstract ? `**Abstract**: ${work.abstract.replace(/<[^>]*>/g, '').slice(0, 500)}` : '',
349
+ ].filter(Boolean).join('\n');
350
+ }
351
+ catch (err) {
352
+ return `DOI lookup error: ${err instanceof Error ? err.message : String(err)}`;
353
+ }
354
+ },
355
+ });
356
+ // ── GitHub Trending ───────────────────────────────────────────────
357
+ registerTool({
358
+ name: 'github_trending',
359
+ description: 'Find trending GitHub repositories by language or topic. Discover what the community is building right now.',
360
+ parameters: {
361
+ language: { type: 'string', description: 'Programming language (e.g., python, rust, typescript)' },
362
+ since: { type: 'string', description: 'Time range: daily, weekly, monthly (default: weekly)' },
363
+ },
364
+ tier: 'free',
365
+ async execute(args) {
366
+ const language = args.language ? String(args.language) : '';
367
+ const since = String(args.since || 'weekly');
368
+ // Use GitHub search API as trending proxy (stars created recently)
369
+ const dateFilter = since === 'daily' ? '1' : since === 'monthly' ? '30' : '7';
370
+ const now = new Date();
371
+ const past = new Date(now.getTime() - parseInt(dateFilter) * 86400000);
372
+ const dateStr = past.toISOString().slice(0, 10);
373
+ const langFilter = language ? `+language:${encodeURIComponent(language)}` : '';
374
+ try {
375
+ const res = await fetch(`https://api.github.com/search/repositories?q=created:>${dateStr}${langFilter}&sort=stars&order=desc&per_page=10`, { signal: AbortSignal.timeout(10000) });
376
+ const data = await res.json();
377
+ if (!data.items?.length)
378
+ return `No trending repos found.`;
379
+ return data.items.map((r) => `**${r.full_name}** ★${r.stargazers_count}\n ${r.description || 'No description'}\n Language: ${r.language || 'mixed'} | Forks: ${r.forks_count}\n URL: ${r.html_url}`).join('\n\n');
380
+ }
381
+ catch (err) {
382
+ return `GitHub trending error: ${err instanceof Error ? err.message : String(err)}`;
383
+ }
384
+ },
385
+ });
386
+ // ── NASA Open Data ────────────────────────────────────────────────
387
+ registerTool({
388
+ name: 'nasa_search',
389
+ description: 'Search NASA open datasets and imagery. Access satellite data, Mars rover photos, astronomy images.',
390
+ parameters: {
391
+ query: { type: 'string', description: 'Search query', required: true },
392
+ },
393
+ tier: 'free',
394
+ async execute(args) {
395
+ const query = String(args.query);
396
+ try {
397
+ const res = await fetch(`https://images-api.nasa.gov/search?q=${encodeURIComponent(query)}&media_type=image&page_size=5`, { signal: AbortSignal.timeout(10000) });
398
+ const data = await res.json();
399
+ const items = data.collection?.items || [];
400
+ if (items.length === 0)
401
+ return `No NASA results for "${query}".`;
402
+ return items.map((item) => {
403
+ const d = item.data?.[0] || {};
404
+ return `**${d.title}** (${d.date_created?.slice(0, 10) || 'n/a'})\n ${(d.description || '').slice(0, 200)}\n Center: ${d.center || 'n/a'} | ID: ${d.nasa_id || 'n/a'}\n Preview: ${item.links?.[0]?.href || 'n/a'}`;
405
+ }).join('\n\n');
406
+ }
407
+ catch (err) {
408
+ return `NASA search error: ${err instanceof Error ? err.message : String(err)}`;
409
+ }
410
+ },
411
+ });
412
+ }
413
+ //# sourceMappingURL=research.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"research.js","sourceRoot":"","sources":["../../src/tools/research.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kernel.chat/kbot",
3
- "version": "2.14.1",
4
- "description": "Local-first AI agent for your terminal. 39 specialists, 172 tools, 19 providers. Self-evolving, learns your patterns, runs offline with Ollama. Open-source Claude Code alternative.",
3
+ "version": "2.15.1",
4
+ "description": "Universal AI agent for your terminal. 39 specialists, 208 tools, 19 providers. Covers every code ecosystem — npm, PyPI, CRAN, Cargo, HuggingFace, arXiv, Docker, and more. Self-evolving, learns your patterns, runs offline with Ollama.",
5
5
  "type": "module",
6
6
  "repository": {
7
7
  "type": "git",
@@ -25,9 +25,8 @@
25
25
  },
26
26
  "keywords": [
27
27
  "ai-agent",
28
- "local-ai",
29
- "terminal-ai",
30
- "cli-ai",
28
+ "cli",
29
+ "terminal",
31
30
  "code-generation",
32
31
  "ai-coding-assistant",
33
32
  "local-first",
@@ -36,14 +35,47 @@
36
35
  "developer-tools",
37
36
  "ollama",
38
37
  "claude",
38
+ "openai",
39
39
  "gpt",
40
- "ai-terminal",
40
+ "anthropic",
41
+ "google-ai",
42
+ "groq",
43
+ "mistral",
41
44
  "code-review",
42
45
  "self-evolving",
43
46
  "multi-model",
44
47
  "mcp",
48
+ "mcp-server",
45
49
  "shell-assistant",
46
- "open-source-ai"
50
+ "open-source-ai",
51
+ "chatbot",
52
+ "copilot",
53
+ "ai-assistant",
54
+ "typescript",
55
+ "python",
56
+ "rust",
57
+ "docker",
58
+ "terraform",
59
+ "devops",
60
+ "data-science",
61
+ "machine-learning",
62
+ "huggingface",
63
+ "arxiv",
64
+ "research",
65
+ "bioinformatics",
66
+ "scientific-computing",
67
+ "api-testing",
68
+ "graphql",
69
+ "rest-api",
70
+ "container",
71
+ "jupyter",
72
+ "testing",
73
+ "linting",
74
+ "git",
75
+ "github",
76
+ "agent",
77
+ "swarm",
78
+ "multi-agent"
47
79
  ],
48
80
  "author": "kernel.chat group",
49
81
  "license": "MIT",