@kernel.chat/kbot 2.14.1 → 2.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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.0",
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",