@kernel.chat/kbot 3.42.0 → 3.43.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,432 @@
1
+ // kbot Doctor Tests
2
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
3
+ // ── Mocks ──
4
+ // Mock child_process.execSync (used by execQuiet for npm, git, kbot version checks)
5
+ vi.mock('node:child_process', () => ({
6
+ execSync: vi.fn((cmd) => {
7
+ if (cmd === 'npm --version')
8
+ return '10.2.0\n';
9
+ if (cmd === 'git --version')
10
+ return 'git version 2.43.0\n';
11
+ if (cmd.includes('npm view @kernel.chat/kbot version'))
12
+ return '3.42.0\n';
13
+ throw new Error(`Command not found: ${cmd}`);
14
+ }),
15
+ }));
16
+ // Mock auth.js — provide sensible defaults for a configured setup
17
+ vi.mock('./auth.js', () => ({
18
+ loadConfig: vi.fn(() => ({
19
+ byok_enabled: true,
20
+ byok_provider: 'anthropic',
21
+ byok_key: 'sk-ant-test-key',
22
+ })),
23
+ isByokEnabled: vi.fn(() => true),
24
+ getByokProvider: vi.fn(() => 'anthropic'),
25
+ isLocalProvider: vi.fn((p) => p === 'ollama' || p === 'kbot-local'),
26
+ isKeylessProvider: vi.fn((p) => p === 'ollama'),
27
+ PROVIDERS: {
28
+ anthropic: {
29
+ name: 'Anthropic',
30
+ apiUrl: 'https://api.anthropic.com/v1/messages',
31
+ apiStyle: 'anthropic',
32
+ defaultModel: 'claude-sonnet-4-20250514',
33
+ fastModel: 'claude-haiku-35-20241022',
34
+ inputCost: 3,
35
+ outputCost: 15,
36
+ },
37
+ openai: {
38
+ name: 'OpenAI',
39
+ apiUrl: 'https://api.openai.com/v1/chat/completions',
40
+ apiStyle: 'openai',
41
+ defaultModel: 'gpt-4o',
42
+ fastModel: 'gpt-4o-mini',
43
+ inputCost: 5,
44
+ outputCost: 15,
45
+ },
46
+ ollama: {
47
+ name: 'Ollama',
48
+ apiUrl: 'http://localhost:11434/v1/chat/completions',
49
+ apiStyle: 'openai',
50
+ defaultModel: 'llama3.1:8b',
51
+ fastModel: 'llama3.1:8b',
52
+ inputCost: 0,
53
+ outputCost: 0,
54
+ },
55
+ },
56
+ isOllamaRunning: vi.fn(async () => false),
57
+ KBOT_DIR: '/tmp/.kbot-doctor-test',
58
+ }));
59
+ // Mock learning.js
60
+ vi.mock('./learning.js', () => ({
61
+ getExtendedStats: vi.fn(() => ({
62
+ patternsCount: 12,
63
+ solutionsCount: 5,
64
+ knowledgeCount: 3,
65
+ correctionsCount: 1,
66
+ projectsCount: 2,
67
+ })),
68
+ }));
69
+ // Mock machine.js
70
+ vi.mock('./machine.js', () => ({
71
+ getMachineProfile: vi.fn(() => ({
72
+ cpu: { chip: 'Apple M2 Pro', model: 'Apple M2 Pro', cores: 12, performanceCores: 8, efficiencyCores: 4, arch: 'arm64' },
73
+ gpu: [{ model: 'Apple M2 Pro', cores: 19, metal: '3', cuda: false, vram: 'shared' }],
74
+ memory: { total: '16 GB', free: '8 GB', pressure: 'normal' },
75
+ disk: { total: '500 GB', available: '200 GB', usedPercent: 60 },
76
+ displays: [{ resolution: '3024x1964', type: 'Retina' }],
77
+ gpuAcceleration: 'metal',
78
+ recommendedModelSize: '13B',
79
+ battery: { present: true, percent: 85, charging: false },
80
+ })),
81
+ probeMachine: vi.fn(),
82
+ }));
83
+ // Mock fs — only the functions doctor.ts uses directly
84
+ vi.mock('node:fs', async () => {
85
+ const actual = await vi.importActual('node:fs');
86
+ return {
87
+ ...actual,
88
+ existsSync: vi.fn((p) => {
89
+ // KBOT_DIR exists by default
90
+ if (p === '/tmp/.kbot-doctor-test')
91
+ return true;
92
+ return false;
93
+ }),
94
+ readdirSync: vi.fn(() => []),
95
+ statSync: vi.fn(() => ({ size: 0, isFile: () => true, isDirectory: () => false })),
96
+ };
97
+ });
98
+ // ── Tests ──
99
+ // We need to import after mocks are set up
100
+ const { runDoctor, formatDoctorReport } = await import('./doctor.js');
101
+ // Access mocked modules for per-test overrides
102
+ const { execSync } = await import('node:child_process');
103
+ const { existsSync } = await import('node:fs');
104
+ const auth = await import('./auth.js');
105
+ const learning = await import('./learning.js');
106
+ const machine = await import('./machine.js');
107
+ // Save original process.version and SHELL
108
+ const originalVersion = process.version;
109
+ const originalShell = process.env.SHELL;
110
+ beforeEach(() => {
111
+ vi.clearAllMocks();
112
+ // Re-apply default mock implementations after clearAllMocks
113
+ vi.mocked(execSync).mockImplementation((cmd) => {
114
+ if (typeof cmd !== 'string')
115
+ throw new Error('unexpected');
116
+ if (cmd === 'npm --version')
117
+ return '10.2.0\n';
118
+ if (cmd === 'git --version')
119
+ return 'git version 2.43.0\n';
120
+ if (cmd.includes('npm view @kernel.chat/kbot version'))
121
+ return '3.42.0\n';
122
+ throw new Error(`Command not found: ${cmd}`);
123
+ });
124
+ vi.mocked(auth.loadConfig).mockReturnValue({
125
+ byok_enabled: true,
126
+ byok_provider: 'anthropic',
127
+ byok_key: 'sk-ant-test-key',
128
+ });
129
+ vi.mocked(auth.isByokEnabled).mockReturnValue(true);
130
+ vi.mocked(auth.getByokProvider).mockReturnValue('anthropic');
131
+ vi.mocked(auth.isLocalProvider).mockImplementation((p) => p === 'ollama' || p === 'kbot-local');
132
+ vi.mocked(auth.isOllamaRunning).mockResolvedValue(false);
133
+ vi.mocked(existsSync).mockImplementation((p) => {
134
+ if (p === '/tmp/.kbot-doctor-test')
135
+ return true;
136
+ return false;
137
+ });
138
+ vi.mocked(learning.getExtendedStats).mockReturnValue({
139
+ patternsCount: 12,
140
+ solutionsCount: 5,
141
+ knowledgeCount: 3,
142
+ correctionsCount: 1,
143
+ projectsCount: 2,
144
+ });
145
+ vi.mocked(machine.getMachineProfile).mockReturnValue({
146
+ cpu: { chip: 'Apple M2 Pro', model: 'Apple M2 Pro', cores: 12, performanceCores: 8, efficiencyCores: 4, arch: 'arm64' },
147
+ gpu: [{ model: 'Apple M2 Pro', cores: 19, metal: '3', cuda: false, vram: 'shared' }],
148
+ memory: { total: '16 GB', free: '8 GB', pressure: 'normal' },
149
+ disk: { total: '500 GB', available: '200 GB', usedPercent: 60 },
150
+ displays: [{ resolution: '3024x1964', type: 'Retina' }],
151
+ gpuAcceleration: 'metal',
152
+ recommendedModelSize: '13B',
153
+ battery: { present: true, percent: 85, charging: false },
154
+ });
155
+ process.env.SHELL = '/bin/zsh';
156
+ // Mock global fetch for provider reachability and local runtime checks
157
+ global.fetch = vi.fn(async (url) => {
158
+ const urlStr = typeof url === 'string' ? url : url instanceof URL ? url.toString() : url.url;
159
+ // Cloud provider HEAD check — return 200
160
+ if (urlStr.includes('api.anthropic.com') || urlStr.includes('api.openai.com')) {
161
+ return new Response(null, { status: 200 });
162
+ }
163
+ // Local runtimes — all down by default
164
+ throw new TypeError('fetch failed');
165
+ });
166
+ });
167
+ afterEach(() => {
168
+ Object.defineProperty(process, 'version', { value: originalVersion, writable: true });
169
+ process.env.SHELL = originalShell;
170
+ });
171
+ describe('runDoctor', () => {
172
+ it('returns a valid report with all checks on happy path', async () => {
173
+ const report = await runDoctor();
174
+ expect(report).toHaveProperty('checks');
175
+ expect(report).toHaveProperty('timestamp');
176
+ expect(report).toHaveProperty('overall');
177
+ expect(Array.isArray(report.checks)).toBe(true);
178
+ expect(report.checks.length).toBeGreaterThan(0);
179
+ // Every check has required fields
180
+ for (const check of report.checks) {
181
+ expect(check).toHaveProperty('name');
182
+ expect(check).toHaveProperty('status');
183
+ expect(check).toHaveProperty('message');
184
+ expect(['pass', 'warn', 'fail']).toContain(check.status);
185
+ }
186
+ // Timestamp is ISO format
187
+ expect(new Date(report.timestamp).toISOString()).toBe(report.timestamp);
188
+ });
189
+ it('passes all core checks when everything is configured', async () => {
190
+ const report = await runDoctor();
191
+ const byName = (n) => report.checks.find(c => c.name === n);
192
+ expect(byName('Node.js')?.status).toBe('pass');
193
+ expect(byName('npm')?.status).toBe('pass');
194
+ expect(byName('npm')?.message).toContain('10.2.0');
195
+ expect(byName('API key')?.status).toBe('pass');
196
+ expect(byName('API key')?.message).toContain('Anthropic');
197
+ expect(byName('Git')?.status).toBe('pass');
198
+ expect(byName('Git')?.message).toContain('git version');
199
+ expect(byName('Shell')?.status).toBe('pass');
200
+ expect(byName('Shell')?.message).toContain('zsh');
201
+ expect(byName('Learning data')?.status).toBe('pass');
202
+ expect(byName('Learning data')?.message).toContain('12 patterns');
203
+ });
204
+ it('overall is pass when no checks fail or warn', async () => {
205
+ // Provider reachable returns pass for cloud provider
206
+ const report = await runDoctor();
207
+ // There may be warns from local runtimes detection, so check overall is at worst 'warn'
208
+ expect(['pass', 'warn']).toContain(report.overall);
209
+ });
210
+ });
211
+ describe('runDoctor — failure cases', () => {
212
+ it('fails Git check when git is not found', async () => {
213
+ vi.mocked(execSync).mockImplementation((cmd) => {
214
+ if (typeof cmd !== 'string')
215
+ throw new Error('unexpected');
216
+ if (cmd === 'npm --version')
217
+ return '10.2.0\n';
218
+ if (cmd === 'git --version')
219
+ throw new Error('not found');
220
+ if (cmd.includes('npm view'))
221
+ return '3.42.0\n';
222
+ throw new Error(`Command not found: ${cmd}`);
223
+ });
224
+ const report = await runDoctor();
225
+ const git = report.checks.find(c => c.name === 'Git');
226
+ expect(git?.status).toBe('fail');
227
+ expect(git?.message).toContain('not found');
228
+ expect(report.overall).toBe('fail');
229
+ });
230
+ it('fails API key check when no config exists', async () => {
231
+ vi.mocked(auth.loadConfig).mockReturnValue(null);
232
+ vi.mocked(auth.isByokEnabled).mockReturnValue(false);
233
+ const report = await runDoctor();
234
+ const apiKey = report.checks.find(c => c.name === 'API key');
235
+ expect(apiKey?.status).toBe('fail');
236
+ expect(apiKey?.message).toContain('no config found');
237
+ });
238
+ it('warns npm check when npm is not found', async () => {
239
+ vi.mocked(execSync).mockImplementation((cmd) => {
240
+ if (typeof cmd !== 'string')
241
+ throw new Error('unexpected');
242
+ if (cmd === 'npm --version')
243
+ throw new Error('not found');
244
+ if (cmd === 'git --version')
245
+ return 'git version 2.43.0\n';
246
+ if (cmd.includes('npm view'))
247
+ throw new Error('not found');
248
+ throw new Error(`Command not found: ${cmd}`);
249
+ });
250
+ const report = await runDoctor();
251
+ const npm = report.checks.find(c => c.name === 'npm');
252
+ expect(npm?.status).toBe('warn');
253
+ expect(npm?.message).toContain('not found');
254
+ });
255
+ it('warns when provider host is unreachable', async () => {
256
+ global.fetch = vi.fn(async () => {
257
+ throw new TypeError('fetch failed');
258
+ });
259
+ const report = await runDoctor();
260
+ // After refactor, individual providers appear as separate checks (e.g. "Anthropic (Claude) (active)")
261
+ const providerCheck = report.checks.find(c => c.name === 'Provider reachable' ||
262
+ c.name.includes('Anthropic') ||
263
+ c.name.includes('(active)'));
264
+ // Provider check may be warn or may not exist if all providers failed silently
265
+ if (providerCheck) {
266
+ expect(['warn', 'fail']).toContain(providerCheck.status);
267
+ }
268
+ });
269
+ it('warns when no learning data exists', async () => {
270
+ vi.mocked(learning.getExtendedStats).mockReturnValue({
271
+ patternsCount: 0,
272
+ solutionsCount: 0,
273
+ knowledgeCount: 0,
274
+ correctionsCount: 0,
275
+ projectsCount: 0,
276
+ });
277
+ const report = await runDoctor();
278
+ const ld = report.checks.find(c => c.name === 'Learning data');
279
+ expect(ld?.status).toBe('warn');
280
+ expect(ld?.message).toContain('no data yet');
281
+ });
282
+ it('warns Shell check when SHELL env var is not set', async () => {
283
+ delete process.env.SHELL;
284
+ const report = await runDoctor();
285
+ const shell = report.checks.find(c => c.name === 'Shell');
286
+ expect(shell?.status).toBe('warn');
287
+ expect(shell?.message).toContain('SHELL env var not set');
288
+ });
289
+ });
290
+ describe('runDoctor — overall status logic', () => {
291
+ it('overall is fail when any check fails', async () => {
292
+ // Force git to fail
293
+ vi.mocked(execSync).mockImplementation((cmd) => {
294
+ if (typeof cmd !== 'string')
295
+ throw new Error('unexpected');
296
+ if (cmd === 'npm --version')
297
+ return '10.2.0\n';
298
+ if (cmd === 'git --version')
299
+ throw new Error('not found');
300
+ if (cmd.includes('npm view'))
301
+ return '3.42.0\n';
302
+ throw new Error(`Command not found: ${cmd}`);
303
+ });
304
+ const report = await runDoctor();
305
+ expect(report.overall).toBe('fail');
306
+ });
307
+ it('overall is warn when there are only warnings (no fails)', async () => {
308
+ // Learning data returns empty (warn) but nothing fails
309
+ vi.mocked(learning.getExtendedStats).mockReturnValue({
310
+ patternsCount: 0,
311
+ solutionsCount: 0,
312
+ knowledgeCount: 0,
313
+ correctionsCount: 0,
314
+ projectsCount: 0,
315
+ });
316
+ const report = await runDoctor();
317
+ const hasAnyFail = report.checks.some(c => c.status === 'fail');
318
+ const hasAnyWarn = report.checks.some(c => c.status === 'warn');
319
+ if (!hasAnyFail && hasAnyWarn) {
320
+ expect(report.overall).toBe('warn');
321
+ }
322
+ else if (!hasAnyFail && !hasAnyWarn) {
323
+ expect(report.overall).toBe('pass');
324
+ }
325
+ // Either way overall should not be 'fail'
326
+ expect(report.overall).not.toBe('fail');
327
+ });
328
+ });
329
+ describe('runDoctor — hardware checks', () => {
330
+ it('includes hardware info from machine profile', async () => {
331
+ const report = await runDoctor();
332
+ const cpu = report.checks.find(c => c.name === 'CPU');
333
+ const gpu = report.checks.find(c => c.name === 'GPU');
334
+ const memory = report.checks.find(c => c.name === 'Memory');
335
+ expect(cpu?.status).toBe('pass');
336
+ expect(cpu?.message).toContain('Apple M2 Pro');
337
+ expect(gpu?.status).toBe('pass');
338
+ expect(gpu?.message).toContain('Apple M2 Pro');
339
+ expect(memory?.status).toBe('pass');
340
+ expect(memory?.message).toContain('16 GB');
341
+ });
342
+ it('warns when machine profile is unavailable', async () => {
343
+ vi.mocked(machine.getMachineProfile).mockReturnValue(null);
344
+ vi.mocked(machine.probeMachine).mockRejectedValue(new Error('probe failed'));
345
+ const report = await runDoctor();
346
+ const hw = report.checks.find(c => c.name === 'Hardware');
347
+ expect(hw?.status).toBe('warn');
348
+ expect(hw?.message).toContain('could not probe');
349
+ });
350
+ });
351
+ describe('formatDoctorReport', () => {
352
+ it('formats a passing report', () => {
353
+ const report = {
354
+ checks: [
355
+ { name: 'Node.js', status: 'pass', message: 'v20.11.0' },
356
+ { name: 'npm', status: 'pass', message: 'v10.2.0' },
357
+ { name: 'Git', status: 'pass', message: 'git version 2.43.0' },
358
+ ],
359
+ timestamp: new Date().toISOString(),
360
+ overall: 'pass',
361
+ };
362
+ const output = formatDoctorReport(report);
363
+ expect(output).toContain('kbot Doctor');
364
+ expect(output).toContain('Node.js');
365
+ expect(output).toContain('v20.11.0');
366
+ expect(output).toContain('npm');
367
+ expect(output).toContain('Git');
368
+ expect(output).toContain('All checks passed');
369
+ });
370
+ it('formats a report with warnings', () => {
371
+ const report = {
372
+ checks: [
373
+ { name: 'Node.js', status: 'pass', message: 'v20.11.0' },
374
+ { name: 'Local runtimes', status: 'warn', message: 'none detected' },
375
+ ],
376
+ timestamp: new Date().toISOString(),
377
+ overall: 'warn',
378
+ };
379
+ const output = formatDoctorReport(report);
380
+ expect(output).toContain('kbot Doctor');
381
+ expect(output).toContain('1 warning');
382
+ expect(output).toContain('kbot will work');
383
+ });
384
+ it('formats a report with failures', () => {
385
+ const report = {
386
+ checks: [
387
+ { name: 'Node.js', status: 'fail', message: 'v16.0.0 — requires >= 20' },
388
+ { name: 'Git', status: 'fail', message: 'not found' },
389
+ ],
390
+ timestamp: new Date().toISOString(),
391
+ overall: 'fail',
392
+ };
393
+ const output = formatDoctorReport(report);
394
+ expect(output).toContain('kbot Doctor');
395
+ expect(output).toContain('2 issues found');
396
+ expect(output).toContain('Fix the items');
397
+ });
398
+ it('pluralizes warning/failure counts correctly', () => {
399
+ const singleWarn = {
400
+ checks: [{ name: 'Test', status: 'warn', message: 'x' }],
401
+ timestamp: new Date().toISOString(),
402
+ overall: 'warn',
403
+ };
404
+ const multiWarn = {
405
+ checks: [
406
+ { name: 'A', status: 'warn', message: 'x' },
407
+ { name: 'B', status: 'warn', message: 'y' },
408
+ ],
409
+ timestamp: new Date().toISOString(),
410
+ overall: 'warn',
411
+ };
412
+ expect(formatDoctorReport(singleWarn)).toContain('1 warning.');
413
+ expect(formatDoctorReport(multiWarn)).toContain('2 warnings.');
414
+ });
415
+ it('includes all check names and messages in output', () => {
416
+ const report = {
417
+ checks: [
418
+ { name: 'Node.js', status: 'pass', message: 'v22.0.0' },
419
+ { name: 'API key', status: 'pass', message: 'configured (Anthropic)' },
420
+ { name: 'Shell', status: 'pass', message: 'zsh' },
421
+ ],
422
+ timestamp: new Date().toISOString(),
423
+ overall: 'pass',
424
+ };
425
+ const output = formatDoctorReport(report);
426
+ for (const check of report.checks) {
427
+ expect(output).toContain(check.name);
428
+ expect(output).toContain(check.message);
429
+ }
430
+ });
431
+ });
432
+ //# sourceMappingURL=doctor.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.test.js","sourceRoot":"","sources":["../src/doctor.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function registerHypothesisEngineTools(): void;
2
+ //# sourceMappingURL=hypothesis-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hypothesis-engine.d.ts","sourceRoot":"","sources":["../../src/tools/hypothesis-engine.ts"],"names":[],"mappings":"AAiQA,wBAAgB,6BAA6B,IAAI,IAAI,CAqpEpD"}