@kernel.chat/kbot 3.56.0 → 3.58.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.
Files changed (45) hide show
  1. package/dist/auth.js +8 -8
  2. package/dist/auth.js.map +1 -1
  3. package/dist/gitagent-export.d.ts +42 -0
  4. package/dist/gitagent-export.d.ts.map +1 -0
  5. package/dist/gitagent-export.js +161 -0
  6. package/dist/gitagent-export.js.map +1 -0
  7. package/dist/migrate.d.ts +17 -0
  8. package/dist/migrate.d.ts.map +1 -0
  9. package/dist/migrate.js +378 -0
  10. package/dist/migrate.js.map +1 -0
  11. package/dist/tools/ctf.d.ts +2 -0
  12. package/dist/tools/ctf.d.ts.map +1 -0
  13. package/dist/tools/ctf.js +2968 -0
  14. package/dist/tools/ctf.js.map +1 -0
  15. package/dist/tools/hacker-toolkit.d.ts +2 -0
  16. package/dist/tools/hacker-toolkit.d.ts.map +1 -0
  17. package/dist/tools/hacker-toolkit.js +3697 -0
  18. package/dist/tools/hacker-toolkit.js.map +1 -0
  19. package/dist/tools/index.d.ts.map +1 -1
  20. package/dist/tools/index.js +6 -0
  21. package/dist/tools/index.js.map +1 -1
  22. package/dist/tools/mcp-marketplace.d.ts.map +1 -1
  23. package/dist/tools/mcp-marketplace.js +24 -0
  24. package/dist/tools/mcp-marketplace.js.map +1 -1
  25. package/dist/tools/pentest.d.ts +2 -0
  26. package/dist/tools/pentest.d.ts.map +1 -0
  27. package/dist/tools/pentest.js +2225 -0
  28. package/dist/tools/pentest.js.map +1 -0
  29. package/dist/tools/redblue.d.ts +2 -0
  30. package/dist/tools/redblue.d.ts.map +1 -0
  31. package/dist/tools/redblue.js +3468 -0
  32. package/dist/tools/redblue.js.map +1 -0
  33. package/dist/tools/security-brain.d.ts +2 -0
  34. package/dist/tools/security-brain.d.ts.map +1 -0
  35. package/dist/tools/security-brain.js +2453 -0
  36. package/dist/tools/security-brain.js.map +1 -0
  37. package/dist/tools/visa-payments.d.ts +2 -0
  38. package/dist/tools/visa-payments.d.ts.map +1 -0
  39. package/dist/tools/visa-payments.js +166 -0
  40. package/dist/tools/visa-payments.js.map +1 -0
  41. package/dist/voice.d.ts +1 -1
  42. package/dist/voice.d.ts.map +1 -1
  43. package/dist/voice.js +26 -0
  44. package/dist/voice.js.map +1 -1
  45. package/package.json +3 -3
@@ -0,0 +1,378 @@
1
+ // kbot Migrate — Import configurations and history from other AI CLI agents
2
+ // Supports: Claude Code, Junie CLI, Codex CLI, Aider, Cursor, Cline
3
+ //
4
+ // Usage: kbot migrate --from claude-code
5
+ // kbot migrate --from junie
6
+ // kbot migrate --from aider
7
+ import { homedir } from 'node:os';
8
+ import { join } from 'node:path';
9
+ import { existsSync, readFileSync, writeFileSync, mkdirSync, readdirSync } from 'node:fs';
10
+ import chalk from 'chalk';
11
+ const KBOT_DIR = join(homedir(), '.kbot');
12
+ function combinedResult(results) {
13
+ return {
14
+ success: results.every(r => r.success),
15
+ imported: results.reduce((s, r) => s + r.imported, 0),
16
+ skipped: results.reduce((s, r) => s + r.skipped, 0),
17
+ errors: results.flatMap(r => r.errors),
18
+ details: results.flatMap(r => r.details),
19
+ };
20
+ }
21
+ function emptyResult() {
22
+ return { success: true, imported: 0, skipped: 0, errors: [], details: [] };
23
+ }
24
+ // ── Claude Code ──
25
+ function detectClaudeCode() {
26
+ return existsSync(join(homedir(), '.claude')) || existsSync(join(homedir(), '.claude', 'settings.json'));
27
+ }
28
+ function migrateClaudeCodeConfig() {
29
+ const result = emptyResult();
30
+ const claudeDir = join(homedir(), '.claude');
31
+ // Import CLAUDE.md project instructions as kbot memory
32
+ const claudeMd = join(process.cwd(), 'CLAUDE.md');
33
+ if (existsSync(claudeMd)) {
34
+ try {
35
+ const content = readFileSync(claudeMd, 'utf-8');
36
+ const memDir = join(KBOT_DIR, 'memory');
37
+ mkdirSync(memDir, { recursive: true });
38
+ const memFile = join(memDir, 'imported-claude-md.json');
39
+ writeFileSync(memFile, JSON.stringify({
40
+ source: 'claude-code',
41
+ type: 'project-instructions',
42
+ content,
43
+ importedAt: new Date().toISOString(),
44
+ }, null, 2));
45
+ result.imported++;
46
+ result.details.push('Imported CLAUDE.md as project memory');
47
+ }
48
+ catch (err) {
49
+ result.errors.push(`Failed to import CLAUDE.md: ${err instanceof Error ? err.message : String(err)}`);
50
+ }
51
+ }
52
+ // Import Claude Code settings
53
+ const settingsFile = join(claudeDir, 'settings.json');
54
+ if (existsSync(settingsFile)) {
55
+ try {
56
+ const settings = JSON.parse(readFileSync(settingsFile, 'utf-8'));
57
+ const importFile = join(KBOT_DIR, 'imports', 'claude-code-settings.json');
58
+ mkdirSync(join(KBOT_DIR, 'imports'), { recursive: true });
59
+ writeFileSync(importFile, JSON.stringify({
60
+ source: 'claude-code',
61
+ type: 'settings',
62
+ original: settings,
63
+ importedAt: new Date().toISOString(),
64
+ }, null, 2));
65
+ result.imported++;
66
+ result.details.push('Imported Claude Code settings');
67
+ }
68
+ catch (err) {
69
+ result.errors.push(`Failed to import settings: ${err instanceof Error ? err.message : String(err)}`);
70
+ }
71
+ }
72
+ return result;
73
+ }
74
+ function migrateClaudeCodeHistory() {
75
+ const result = emptyResult();
76
+ const claudeDir = join(homedir(), '.claude');
77
+ const projectsDir = join(claudeDir, 'projects');
78
+ if (!existsSync(projectsDir))
79
+ return result;
80
+ try {
81
+ const projects = readdirSync(projectsDir, { withFileTypes: true }).filter((d) => d.isDirectory());
82
+ const sessionsDir = join(KBOT_DIR, 'sessions');
83
+ mkdirSync(sessionsDir, { recursive: true });
84
+ for (const project of projects) {
85
+ const convDir = join(projectsDir, project.name);
86
+ const files = readdirSync(convDir).filter((f) => f.endsWith('.json'));
87
+ for (const file of files.slice(0, 10)) { // limit to 10 most recent
88
+ try {
89
+ const data = JSON.parse(readFileSync(join(convDir, file), 'utf-8'));
90
+ const sessionId = `imported-cc-${project.name}-${file.replace('.json', '')}`;
91
+ const sessionFile = join(sessionsDir, `${sessionId}.json`);
92
+ if (existsSync(sessionFile)) {
93
+ result.skipped++;
94
+ continue;
95
+ }
96
+ writeFileSync(sessionFile, JSON.stringify({
97
+ id: sessionId,
98
+ name: `[Claude Code] ${project.name}`,
99
+ created: data.created || new Date().toISOString(),
100
+ updated: data.updated || new Date().toISOString(),
101
+ cwd: data.cwd || process.cwd(),
102
+ turnCount: Array.isArray(data.messages) ? data.messages.length : 0,
103
+ preview: 'Imported from Claude Code',
104
+ history: Array.isArray(data.messages)
105
+ ? data.messages.slice(0, 50).map((m) => ({
106
+ role: m.role || 'user',
107
+ content: typeof m.content === 'string' ? m.content : JSON.stringify(m.content),
108
+ }))
109
+ : [],
110
+ source: 'claude-code',
111
+ }, null, 2));
112
+ result.imported++;
113
+ }
114
+ catch {
115
+ result.skipped++;
116
+ }
117
+ }
118
+ }
119
+ if (result.imported > 0) {
120
+ result.details.push(`Imported ${result.imported} conversation(s) from Claude Code`);
121
+ }
122
+ }
123
+ catch (err) {
124
+ result.errors.push(`History migration failed: ${err instanceof Error ? err.message : String(err)}`);
125
+ }
126
+ return result;
127
+ }
128
+ // ── Junie CLI ──
129
+ function detectJunie() {
130
+ return existsSync(join(homedir(), '.junie')) || existsSync(join(homedir(), '.config', 'junie'));
131
+ }
132
+ function migrateJunieConfig() {
133
+ const result = emptyResult();
134
+ const junieDirs = [join(homedir(), '.junie'), join(homedir(), '.config', 'junie')];
135
+ for (const dir of junieDirs) {
136
+ const configFile = join(dir, 'config.json');
137
+ if (existsSync(configFile)) {
138
+ try {
139
+ const config = JSON.parse(readFileSync(configFile, 'utf-8'));
140
+ mkdirSync(join(KBOT_DIR, 'imports'), { recursive: true });
141
+ writeFileSync(join(KBOT_DIR, 'imports', 'junie-config.json'), JSON.stringify({
142
+ source: 'junie',
143
+ type: 'config',
144
+ original: config,
145
+ importedAt: new Date().toISOString(),
146
+ }, null, 2));
147
+ result.imported++;
148
+ result.details.push('Imported Junie CLI configuration');
149
+ // Map Junie provider keys to kbot format
150
+ if (config.apiKey && config.provider) {
151
+ result.details.push(`Detected ${config.provider} API key — run 'kbot auth' to configure provider`);
152
+ }
153
+ }
154
+ catch (err) {
155
+ result.errors.push(`Failed to read Junie config: ${err instanceof Error ? err.message : String(err)}`);
156
+ }
157
+ break;
158
+ }
159
+ }
160
+ return result;
161
+ }
162
+ function migrateJunieHistory() {
163
+ return emptyResult(); // Junie CLI is new — history format TBD
164
+ }
165
+ // ── Aider ──
166
+ function detectAider() {
167
+ return existsSync(join(homedir(), '.aider.conf.yml')) ||
168
+ existsSync(join(homedir(), '.aider'));
169
+ }
170
+ function migrateAiderConfig() {
171
+ const result = emptyResult();
172
+ const confFile = join(homedir(), '.aider.conf.yml');
173
+ if (existsSync(confFile)) {
174
+ try {
175
+ const content = readFileSync(confFile, 'utf-8');
176
+ mkdirSync(join(KBOT_DIR, 'imports'), { recursive: true });
177
+ writeFileSync(join(KBOT_DIR, 'imports', 'aider-config.yml'), content);
178
+ result.imported++;
179
+ result.details.push('Imported Aider configuration');
180
+ // Parse YAML-like key detection
181
+ if (content.includes('openai-api-key') || content.includes('OPENAI_API_KEY')) {
182
+ result.details.push('Detected OpenAI API key reference — run \'kbot auth\' to configure');
183
+ }
184
+ if (content.includes('anthropic-api-key') || content.includes('ANTHROPIC_API_KEY')) {
185
+ result.details.push('Detected Anthropic API key reference — run \'kbot auth\' to configure');
186
+ }
187
+ }
188
+ catch (err) {
189
+ result.errors.push(`Failed to read Aider config: ${err instanceof Error ? err.message : String(err)}`);
190
+ }
191
+ }
192
+ return result;
193
+ }
194
+ function migrateAiderHistory() {
195
+ const result = emptyResult();
196
+ // Aider stores chat history in .aider.chat.history.md
197
+ const historyFile = join(process.cwd(), '.aider.chat.history.md');
198
+ if (existsSync(historyFile)) {
199
+ try {
200
+ const content = readFileSync(historyFile, 'utf-8');
201
+ const sessionsDir = join(KBOT_DIR, 'sessions');
202
+ mkdirSync(sessionsDir, { recursive: true });
203
+ const sessionFile = join(sessionsDir, 'imported-aider-history.json');
204
+ if (!existsSync(sessionFile)) {
205
+ writeFileSync(sessionFile, JSON.stringify({
206
+ id: 'imported-aider-history',
207
+ name: '[Aider] Chat History',
208
+ created: new Date().toISOString(),
209
+ updated: new Date().toISOString(),
210
+ cwd: process.cwd(),
211
+ turnCount: 1,
212
+ preview: 'Imported from Aider chat history',
213
+ history: [{ role: 'assistant', content: content.slice(0, 50_000) }],
214
+ source: 'aider',
215
+ }, null, 2));
216
+ result.imported++;
217
+ result.details.push('Imported Aider chat history');
218
+ }
219
+ else {
220
+ result.skipped++;
221
+ }
222
+ }
223
+ catch (err) {
224
+ result.errors.push(`Failed to import Aider history: ${err instanceof Error ? err.message : String(err)}`);
225
+ }
226
+ }
227
+ return result;
228
+ }
229
+ // ── Codex CLI ──
230
+ function detectCodex() {
231
+ return existsSync(join(homedir(), '.codex')) || existsSync(join(homedir(), '.config', 'codex'));
232
+ }
233
+ function migrateCodexConfig() {
234
+ const result = emptyResult();
235
+ const codexDirs = [join(homedir(), '.codex'), join(homedir(), '.config', 'codex')];
236
+ for (const dir of codexDirs) {
237
+ if (existsSync(dir)) {
238
+ try {
239
+ const files = readdirSync(dir).filter((f) => f.endsWith('.json'));
240
+ mkdirSync(join(KBOT_DIR, 'imports'), { recursive: true });
241
+ for (const file of files) {
242
+ const content = readFileSync(join(dir, file), 'utf-8');
243
+ writeFileSync(join(KBOT_DIR, 'imports', `codex-${file}`), content);
244
+ result.imported++;
245
+ }
246
+ if (result.imported > 0) {
247
+ result.details.push(`Imported ${result.imported} Codex config file(s)`);
248
+ }
249
+ }
250
+ catch (err) {
251
+ result.errors.push(`Failed to read Codex config: ${err instanceof Error ? err.message : String(err)}`);
252
+ }
253
+ break;
254
+ }
255
+ }
256
+ return result;
257
+ }
258
+ function migrateCodexHistory() {
259
+ return emptyResult();
260
+ }
261
+ // ── Source Registry ──
262
+ const SOURCES = [
263
+ {
264
+ id: 'claude-code',
265
+ name: 'Claude Code',
266
+ configPaths: [join(homedir(), '.claude')],
267
+ historyPaths: [join(homedir(), '.claude', 'projects')],
268
+ detect: detectClaudeCode,
269
+ migrateConfig: migrateClaudeCodeConfig,
270
+ migrateHistory: migrateClaudeCodeHistory,
271
+ },
272
+ {
273
+ id: 'junie',
274
+ name: 'Junie CLI',
275
+ configPaths: [join(homedir(), '.junie'), join(homedir(), '.config', 'junie')],
276
+ historyPaths: [],
277
+ detect: detectJunie,
278
+ migrateConfig: migrateJunieConfig,
279
+ migrateHistory: migrateJunieHistory,
280
+ },
281
+ {
282
+ id: 'aider',
283
+ name: 'Aider',
284
+ configPaths: [join(homedir(), '.aider.conf.yml')],
285
+ historyPaths: [join(process.cwd(), '.aider.chat.history.md')],
286
+ detect: detectAider,
287
+ migrateConfig: migrateAiderConfig,
288
+ migrateHistory: migrateAiderHistory,
289
+ },
290
+ {
291
+ id: 'codex',
292
+ name: 'Codex CLI',
293
+ configPaths: [join(homedir(), '.codex'), join(homedir(), '.config', 'codex')],
294
+ historyPaths: [],
295
+ detect: detectCodex,
296
+ migrateConfig: migrateCodexConfig,
297
+ migrateHistory: migrateCodexHistory,
298
+ },
299
+ ];
300
+ // ── Public API ──
301
+ export function detectInstalledAgents() {
302
+ return SOURCES.filter(s => s.detect()).map(s => ({ id: s.id, name: s.name }));
303
+ }
304
+ export function migrate(sourceId) {
305
+ const source = SOURCES.find(s => s.id === sourceId);
306
+ if (!source) {
307
+ return {
308
+ success: false,
309
+ imported: 0,
310
+ skipped: 0,
311
+ errors: [`Unknown source: ${sourceId}. Available: ${SOURCES.map(s => s.id).join(', ')}`],
312
+ details: [],
313
+ };
314
+ }
315
+ if (!source.detect()) {
316
+ return {
317
+ success: false,
318
+ imported: 0,
319
+ skipped: 0,
320
+ errors: [`${source.name} not detected on this system.`],
321
+ details: [],
322
+ };
323
+ }
324
+ mkdirSync(KBOT_DIR, { recursive: true });
325
+ const configResult = source.migrateConfig();
326
+ const historyResult = source.migrateHistory();
327
+ return combinedResult([configResult, historyResult]);
328
+ }
329
+ export function migrateAll() {
330
+ const detected = detectInstalledAgents();
331
+ if (detected.length === 0) {
332
+ return {
333
+ success: true,
334
+ imported: 0,
335
+ skipped: 0,
336
+ errors: [],
337
+ details: ['No other AI agents detected on this system.'],
338
+ };
339
+ }
340
+ const results = detected.map(d => migrate(d.id));
341
+ return combinedResult(results);
342
+ }
343
+ export function formatMigrationResult(result) {
344
+ const lines = [];
345
+ if (result.success && result.imported > 0) {
346
+ lines.push(chalk.green(`Migration complete: ${result.imported} item(s) imported`));
347
+ }
348
+ else if (result.imported === 0 && result.errors.length === 0) {
349
+ lines.push(chalk.yellow('Nothing to import.'));
350
+ }
351
+ else if (!result.success) {
352
+ lines.push(chalk.red('Migration completed with errors.'));
353
+ }
354
+ if (result.skipped > 0) {
355
+ lines.push(chalk.dim(` Skipped: ${result.skipped} (already imported)`));
356
+ }
357
+ for (const detail of result.details) {
358
+ lines.push(chalk.dim(` ${detail}`));
359
+ }
360
+ for (const error of result.errors) {
361
+ lines.push(chalk.red(` Error: ${error}`));
362
+ }
363
+ return lines.join('\n');
364
+ }
365
+ export function formatDetectedAgents() {
366
+ const detected = detectInstalledAgents();
367
+ if (detected.length === 0) {
368
+ return chalk.dim('No other AI agents detected.');
369
+ }
370
+ const lines = ['Detected AI agents:', ''];
371
+ for (const agent of detected) {
372
+ lines.push(` ${chalk.green('●')} ${agent.name} (${agent.id})`);
373
+ }
374
+ lines.push('');
375
+ lines.push(`Run ${chalk.cyan('kbot migrate --from <id>')} to import, or ${chalk.cyan('kbot migrate --all')} to import all.`);
376
+ return lines.join('\n');
377
+ }
378
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function registerCtfTools(): void;
2
+ //# sourceMappingURL=ctf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ctf.d.ts","sourceRoot":"","sources":["../../src/tools/ctf.ts"],"names":[],"mappings":"AAitFA,wBAAgB,gBAAgB,IAAI,IAAI,CAsZvC"}