@kernel.chat/kbot 2.14.0 → 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.
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +65 -4
- package/dist/agent.js.map +1 -1
- package/dist/tools/containers.d.ts +2 -0
- package/dist/tools/containers.d.ts.map +1 -0
- package/dist/tools/containers.js +432 -0
- package/dist/tools/containers.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +5 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/research.d.ts +2 -0
- package/dist/tools/research.d.ts.map +1 -0
- package/dist/tools/research.js +413 -0
- package/dist/tools/research.js.map +1 -0
- package/package.json +39 -7
|
@@ -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.
|
|
4
|
-
"description": "
|
|
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
|
-
"
|
|
29
|
-
"terminal
|
|
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
|
-
"
|
|
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",
|