@kernel.chat/kbot 2.9.1 → 2.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +5 -5
  2. package/dist/agent.js +1 -1
  3. package/dist/agent.js.map +1 -1
  4. package/dist/cli.js +221 -24
  5. package/dist/cli.js.map +1 -1
  6. package/dist/context-manager.d.ts.map +1 -1
  7. package/dist/context-manager.js +31 -5
  8. package/dist/context-manager.js.map +1 -1
  9. package/dist/context-manager.test.d.ts +2 -0
  10. package/dist/context-manager.test.d.ts.map +1 -0
  11. package/dist/context-manager.test.js +121 -0
  12. package/dist/context-manager.test.js.map +1 -0
  13. package/dist/export.d.ts +20 -0
  14. package/dist/export.d.ts.map +1 -0
  15. package/dist/export.js +301 -0
  16. package/dist/export.js.map +1 -0
  17. package/dist/ide/acp-server.js +2 -2
  18. package/dist/ide/acp-server.js.map +1 -1
  19. package/dist/marketplace.d.ts +25 -0
  20. package/dist/marketplace.d.ts.map +1 -0
  21. package/dist/marketplace.js +327 -0
  22. package/dist/marketplace.js.map +1 -0
  23. package/dist/rate-limiter.d.ts +45 -0
  24. package/dist/rate-limiter.d.ts.map +1 -0
  25. package/dist/rate-limiter.js +200 -0
  26. package/dist/rate-limiter.js.map +1 -0
  27. package/dist/sessions.test.d.ts +2 -0
  28. package/dist/sessions.test.d.ts.map +1 -0
  29. package/dist/sessions.test.js +55 -0
  30. package/dist/sessions.test.js.map +1 -0
  31. package/dist/streaming.d.ts.map +1 -1
  32. package/dist/streaming.js +87 -24
  33. package/dist/streaming.js.map +1 -1
  34. package/dist/streaming.test.d.ts +2 -0
  35. package/dist/streaming.test.d.ts.map +1 -0
  36. package/dist/streaming.test.js +41 -0
  37. package/dist/streaming.test.js.map +1 -0
  38. package/dist/tools/index.d.ts.map +1 -1
  39. package/dist/tools/index.js +3 -1
  40. package/dist/tools/index.js.map +1 -1
  41. package/dist/tools/test-runner.d.ts +2 -0
  42. package/dist/tools/test-runner.d.ts.map +1 -0
  43. package/dist/tools/test-runner.js +550 -0
  44. package/dist/tools/test-runner.js.map +1 -0
  45. package/dist/ui.js +1 -1
  46. package/dist/voice.d.ts +25 -0
  47. package/dist/voice.d.ts.map +1 -0
  48. package/dist/voice.js +336 -0
  49. package/dist/voice.js.map +1 -0
  50. package/dist/watch.d.ts +37 -0
  51. package/dist/watch.d.ts.map +1 -0
  52. package/dist/watch.js +369 -0
  53. package/dist/watch.js.map +1 -0
  54. package/package.json +3 -3
package/dist/watch.js ADDED
@@ -0,0 +1,369 @@
1
+ import { watch, statSync, readFileSync } from 'node:fs';
2
+ import { join, extname } from 'node:path';
3
+ import chalk from 'chalk';
4
+ // ---------------------------------------------------------------------------
5
+ // Constants
6
+ // ---------------------------------------------------------------------------
7
+ const DEFAULT_EXTENSIONS = [
8
+ '.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs',
9
+ '.py', '.rs', '.go', '.rb', '.java', '.kt',
10
+ '.c', '.cpp', '.h', '.hpp', '.cs', '.swift',
11
+ '.vue', '.svelte', '.astro',
12
+ ];
13
+ const IGNORED_DIRS = new Set([
14
+ 'node_modules',
15
+ '.git',
16
+ 'dist',
17
+ 'build',
18
+ 'coverage',
19
+ '.next',
20
+ '.nuxt',
21
+ '__pycache__',
22
+ '.turbo',
23
+ '.cache',
24
+ ]);
25
+ const IGNORED_EXTENSIONS = new Set([
26
+ '.map',
27
+ '.lock',
28
+ '.log',
29
+ ]);
30
+ const DEBOUNCE_MS = 500;
31
+ const MAX_CHANGE_LOG = 20;
32
+ // ---------------------------------------------------------------------------
33
+ // Module state
34
+ // ---------------------------------------------------------------------------
35
+ let activeWatcher = null;
36
+ let changeLog = [];
37
+ const debounceTimers = new Map();
38
+ // ---------------------------------------------------------------------------
39
+ // Analysis helpers
40
+ // ---------------------------------------------------------------------------
41
+ function shouldIgnore(filePath) {
42
+ const parts = filePath.split(/[/\\]/);
43
+ for (const part of parts) {
44
+ if (IGNORED_DIRS.has(part))
45
+ return true;
46
+ }
47
+ const ext = extname(filePath);
48
+ if (IGNORED_EXTENSIONS.has(ext))
49
+ return true;
50
+ return false;
51
+ }
52
+ function isSourceFile(filePath, extensions) {
53
+ const ext = extname(filePath).toLowerCase();
54
+ return extensions.includes(ext);
55
+ }
56
+ /**
57
+ * Perform lightweight static analysis on a source file.
58
+ * This is intentionally heuristic-based — no AST parsing.
59
+ */
60
+ function analyzeFile(filePath) {
61
+ const analysis = {
62
+ todos: 0,
63
+ debugStatements: 0,
64
+ syntaxIssues: [],
65
+ lineCount: 0,
66
+ };
67
+ let content;
68
+ try {
69
+ content = readFileSync(filePath, 'utf-8');
70
+ }
71
+ catch {
72
+ return analysis;
73
+ }
74
+ const lines = content.split('\n');
75
+ analysis.lineCount = lines.length;
76
+ // --- TODO / FIXME detection ---
77
+ const todoPattern = /\b(TODO|FIXME|HACK|XXX|WARN)\b/i;
78
+ for (const line of lines) {
79
+ if (todoPattern.test(line)) {
80
+ analysis.todos++;
81
+ }
82
+ }
83
+ // --- Debug statement detection ---
84
+ const ext = extname(filePath).toLowerCase();
85
+ const debugPatterns = [];
86
+ if (['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs', '.vue', '.svelte'].includes(ext)) {
87
+ debugPatterns.push(/\bconsole\.(log|debug|info|warn|error|trace|dir|table)\s*\(/, /\bdebugger\b/);
88
+ }
89
+ else if (ext === '.py') {
90
+ debugPatterns.push(/\bprint\s*\(/, /\bbreakpoint\s*\(/, /\bpdb\.set_trace\s*\(/);
91
+ }
92
+ else if (ext === '.rs') {
93
+ debugPatterns.push(/\bprintln!\s*\(/, /\bdbg!\s*\(/, /\beprintln!\s*\(/);
94
+ }
95
+ else if (ext === '.go') {
96
+ debugPatterns.push(/\bfmt\.Print(ln|f)?\s*\(/, /\blog\.Print(ln|f)?\s*\(/);
97
+ }
98
+ else if (ext === '.rb') {
99
+ debugPatterns.push(/\bputs\b/, /\bpp\b/, /\bbinding\.pry\b/);
100
+ }
101
+ for (const line of lines) {
102
+ // Skip lines that are comments (rough heuristic)
103
+ const trimmed = line.trimStart();
104
+ if (trimmed.startsWith('//') || trimmed.startsWith('#') || trimmed.startsWith('*'))
105
+ continue;
106
+ for (const pattern of debugPatterns) {
107
+ if (pattern.test(line)) {
108
+ analysis.debugStatements++;
109
+ break; // count once per line
110
+ }
111
+ }
112
+ }
113
+ // --- Syntax issue detection (basic heuristics) ---
114
+ detectSyntaxIssues(content, lines, ext, analysis);
115
+ return analysis;
116
+ }
117
+ function detectSyntaxIssues(content, lines, ext, analysis) {
118
+ // Check unmatched braces/brackets/parens (for brace-based languages)
119
+ if (['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs', '.rs', '.go', '.java', '.c', '.cpp', '.cs', '.kt', '.swift'].includes(ext)) {
120
+ let braces = 0;
121
+ let brackets = 0;
122
+ let parens = 0;
123
+ let inString = false;
124
+ let stringChar = '';
125
+ let inLineComment = false;
126
+ let inBlockComment = false;
127
+ for (let i = 0; i < content.length; i++) {
128
+ const ch = content[i];
129
+ const next = content[i + 1];
130
+ // Track comments
131
+ if (!inString && !inBlockComment && ch === '/' && next === '/') {
132
+ inLineComment = true;
133
+ continue;
134
+ }
135
+ if (!inString && !inLineComment && ch === '/' && next === '*') {
136
+ inBlockComment = true;
137
+ i++;
138
+ continue;
139
+ }
140
+ if (inBlockComment && ch === '*' && next === '/') {
141
+ inBlockComment = false;
142
+ i++;
143
+ continue;
144
+ }
145
+ if (inLineComment && ch === '\n') {
146
+ inLineComment = false;
147
+ continue;
148
+ }
149
+ if (inLineComment || inBlockComment)
150
+ continue;
151
+ // Track strings
152
+ if (!inString && (ch === '"' || ch === "'" || ch === '`')) {
153
+ inString = true;
154
+ stringChar = ch;
155
+ continue;
156
+ }
157
+ if (inString && ch === stringChar && content[i - 1] !== '\\') {
158
+ inString = false;
159
+ continue;
160
+ }
161
+ if (inString)
162
+ continue;
163
+ // Count delimiters
164
+ if (ch === '{')
165
+ braces++;
166
+ else if (ch === '}')
167
+ braces--;
168
+ else if (ch === '[')
169
+ brackets++;
170
+ else if (ch === ']')
171
+ brackets--;
172
+ else if (ch === '(')
173
+ parens++;
174
+ else if (ch === ')')
175
+ parens--;
176
+ }
177
+ if (braces !== 0) {
178
+ analysis.syntaxIssues.push(`Unmatched braces (balance: ${braces > 0 ? '+' : ''}${braces})`);
179
+ }
180
+ if (brackets !== 0) {
181
+ analysis.syntaxIssues.push(`Unmatched brackets (balance: ${brackets > 0 ? '+' : ''}${brackets})`);
182
+ }
183
+ if (parens !== 0) {
184
+ analysis.syntaxIssues.push(`Unmatched parentheses (balance: ${parens > 0 ? '+' : ''}${parens})`);
185
+ }
186
+ // Check if still inside a string at EOF
187
+ if (inString) {
188
+ analysis.syntaxIssues.push(`Unclosed string literal (opened with ${stringChar})`);
189
+ }
190
+ }
191
+ // Check for unclosed template literals in JS/TS
192
+ if (['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs'].includes(ext)) {
193
+ let backtickCount = 0;
194
+ let inRegularString = false;
195
+ let regularStringChar = '';
196
+ for (let i = 0; i < content.length; i++) {
197
+ const ch = content[i];
198
+ if (!inRegularString && (ch === '"' || ch === "'")) {
199
+ inRegularString = true;
200
+ regularStringChar = ch;
201
+ continue;
202
+ }
203
+ if (inRegularString && ch === regularStringChar && content[i - 1] !== '\\') {
204
+ inRegularString = false;
205
+ continue;
206
+ }
207
+ if (inRegularString)
208
+ continue;
209
+ if (ch === '`' && content[i - 1] !== '\\') {
210
+ backtickCount++;
211
+ }
212
+ }
213
+ if (backtickCount % 2 !== 0) {
214
+ analysis.syntaxIssues.push('Unclosed template literal (odd number of backticks)');
215
+ }
216
+ }
217
+ }
218
+ // ---------------------------------------------------------------------------
219
+ // Display
220
+ // ---------------------------------------------------------------------------
221
+ function formatEvent(event) {
222
+ const relPath = event.file;
223
+ const time = event.timestamp.toLocaleTimeString('en-US', { hour12: false });
224
+ const parts = [];
225
+ if (event.analysis) {
226
+ const a = event.analysis;
227
+ if (a.syntaxIssues.length > 0) {
228
+ parts.push(chalk.red(`${a.syntaxIssues.length} syntax issue${a.syntaxIssues.length > 1 ? 's' : ''}`));
229
+ }
230
+ if (a.todos > 0) {
231
+ parts.push(chalk.yellow(`${a.todos} TODO${a.todos > 1 ? 's' : ''}`));
232
+ }
233
+ if (a.debugStatements > 0) {
234
+ parts.push(chalk.cyan(`${a.debugStatements} debug stmt${a.debugStatements > 1 ? 's' : ''}`));
235
+ }
236
+ }
237
+ const summary = parts.length > 0
238
+ ? ` — ${parts.join(', ')}`
239
+ : '';
240
+ const typeLabel = event.type === 'rename'
241
+ ? chalk.magenta('renamed')
242
+ : chalk.blue('changed');
243
+ return ` ${chalk.dim(time)} ${chalk.bold('watch:')} ${chalk.green(relPath)} ${typeLabel}${summary}`;
244
+ }
245
+ function printSyntaxDetails(analysis) {
246
+ for (const issue of analysis.syntaxIssues) {
247
+ console.log(` ${chalk.red('!')} ${issue}`);
248
+ }
249
+ }
250
+ // ---------------------------------------------------------------------------
251
+ // Core watcher
252
+ // ---------------------------------------------------------------------------
253
+ export async function startWatch(path, options) {
254
+ // Stop any existing watcher
255
+ if (activeWatcher) {
256
+ stopWatch();
257
+ }
258
+ const watchPath = path ?? options?.path ?? process.cwd();
259
+ const extensions = options?.extensions ?? DEFAULT_EXTENSIONS;
260
+ const shouldAnalyze = options?.analyze !== false;
261
+ // Verify the path exists and is a directory
262
+ try {
263
+ const stat = statSync(watchPath);
264
+ if (!stat.isDirectory()) {
265
+ console.log(chalk.red(` watch: ${watchPath} is not a directory`));
266
+ return;
267
+ }
268
+ }
269
+ catch {
270
+ console.log(chalk.red(` watch: ${watchPath} does not exist`));
271
+ return;
272
+ }
273
+ console.log(chalk.bold('\n watch: ') + chalk.dim(`Watching ${watchPath}`));
274
+ console.log(chalk.dim(` Extensions: ${extensions.join(', ')}`));
275
+ console.log(chalk.dim(` Analysis: ${shouldAnalyze ? 'enabled' : 'disabled'}`));
276
+ console.log(chalk.dim(` Press Ctrl+C to stop\n`));
277
+ changeLog = [];
278
+ try {
279
+ activeWatcher = watch(watchPath, { recursive: true }, (eventType, filename) => {
280
+ if (!filename)
281
+ return;
282
+ const filePath = join(watchPath, filename);
283
+ // Ignore filtered paths
284
+ if (shouldIgnore(filename))
285
+ return;
286
+ // Only watch configured extensions
287
+ if (!isSourceFile(filename, extensions))
288
+ return;
289
+ // Debounce: clear any pending timer for this file
290
+ const existing = debounceTimers.get(filePath);
291
+ if (existing) {
292
+ clearTimeout(existing);
293
+ }
294
+ debounceTimers.set(filePath, setTimeout(() => {
295
+ debounceTimers.delete(filePath);
296
+ // Verify the file still exists (it might have been deleted)
297
+ let fileExists = false;
298
+ try {
299
+ statSync(filePath);
300
+ fileExists = true;
301
+ }
302
+ catch {
303
+ // File was deleted
304
+ }
305
+ const event = {
306
+ file: filename,
307
+ type: eventType === 'rename' ? 'rename' : 'change',
308
+ timestamp: new Date(),
309
+ };
310
+ // Run analysis if enabled and file exists
311
+ if (shouldAnalyze && fileExists && event.type === 'change') {
312
+ event.analysis = analyzeFile(filePath);
313
+ }
314
+ // Add to change log (keep last N)
315
+ changeLog.push(event);
316
+ if (changeLog.length > MAX_CHANGE_LOG) {
317
+ changeLog.shift();
318
+ }
319
+ // Display
320
+ console.log(formatEvent(event));
321
+ if (event.analysis && event.analysis.syntaxIssues.length > 0) {
322
+ printSyntaxDetails(event.analysis);
323
+ }
324
+ // Fire callback
325
+ if (options?.onChange) {
326
+ options.onChange(event);
327
+ }
328
+ }, DEBOUNCE_MS));
329
+ });
330
+ activeWatcher.on('error', (err) => {
331
+ console.log(chalk.red(` watch: Error — ${err.message}`));
332
+ });
333
+ }
334
+ catch (err) {
335
+ const message = err instanceof Error ? err.message : String(err);
336
+ console.log(chalk.red(` watch: Failed to start — ${message}`));
337
+ }
338
+ }
339
+ export function stopWatch() {
340
+ if (activeWatcher) {
341
+ activeWatcher.close();
342
+ activeWatcher = null;
343
+ // Clear all pending debounce timers
344
+ for (const timer of debounceTimers.values()) {
345
+ clearTimeout(timer);
346
+ }
347
+ debounceTimers.clear();
348
+ console.log(chalk.dim('\n watch: Stopped'));
349
+ }
350
+ }
351
+ /**
352
+ * Get the recent change log (last 20 file changes).
353
+ */
354
+ export function getChangeLog() {
355
+ return [...changeLog];
356
+ }
357
+ /**
358
+ * Clear the change log.
359
+ */
360
+ export function clearChangeLog() {
361
+ changeLog = [];
362
+ }
363
+ /**
364
+ * Check whether the watcher is currently active.
365
+ */
366
+ export function isWatching() {
367
+ return activeWatcher !== null;
368
+ }
369
+ //# sourceMappingURL=watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../src/watch.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.9.1",
4
- "description": "K:BOT — Open-source terminal AI agent. 37 specialists, 151 tools, 19 providers, local-first.",
3
+ "version": "2.10.1",
4
+ "description": "K:BOT — Open-source terminal AI agent. 37 specialists, 153 tools, 19 providers, local-first.",
5
5
  "type": "module",
6
6
  "repository": {
7
7
  "type": "git",
@@ -39,7 +39,7 @@
39
39
  "multi-model",
40
40
  "openclaw"
41
41
  ],
42
- "author": "Antigravity Group",
42
+ "author": "kernel.chat group",
43
43
  "license": "MIT",
44
44
  "dependencies": {
45
45
  "@modelcontextprotocol/sdk": "^1.0.0",