@kernel.chat/kbot 3.51.0 → 3.52.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 (81) hide show
  1. package/README.md +43 -9
  2. package/dist/agent-protocol.test.d.ts +2 -0
  3. package/dist/agent-protocol.test.d.ts.map +1 -0
  4. package/dist/agent-protocol.test.js +730 -0
  5. package/dist/agent-protocol.test.js.map +1 -0
  6. package/dist/agent.d.ts.map +1 -1
  7. package/dist/agent.js +34 -10
  8. package/dist/agent.js.map +1 -1
  9. package/dist/auth.js +3 -3
  10. package/dist/auth.js.map +1 -1
  11. package/dist/bench.d.ts +64 -0
  12. package/dist/bench.d.ts.map +1 -0
  13. package/dist/bench.js +973 -0
  14. package/dist/bench.js.map +1 -0
  15. package/dist/cli.js +144 -29
  16. package/dist/cli.js.map +1 -1
  17. package/dist/cloud-agent.d.ts +77 -0
  18. package/dist/cloud-agent.d.ts.map +1 -0
  19. package/dist/cloud-agent.js +743 -0
  20. package/dist/cloud-agent.js.map +1 -0
  21. package/dist/context.test.d.ts +2 -0
  22. package/dist/context.test.d.ts.map +1 -0
  23. package/dist/context.test.js +561 -0
  24. package/dist/context.test.js.map +1 -0
  25. package/dist/evolution.d.ts.map +1 -1
  26. package/dist/evolution.js +4 -1
  27. package/dist/evolution.js.map +1 -1
  28. package/dist/github-release.d.ts +61 -0
  29. package/dist/github-release.d.ts.map +1 -0
  30. package/dist/github-release.js +451 -0
  31. package/dist/github-release.js.map +1 -0
  32. package/dist/graph-memory.test.d.ts +2 -0
  33. package/dist/graph-memory.test.d.ts.map +1 -0
  34. package/dist/graph-memory.test.js +946 -0
  35. package/dist/graph-memory.test.js.map +1 -0
  36. package/dist/init-science.d.ts +43 -0
  37. package/dist/init-science.d.ts.map +1 -0
  38. package/dist/init-science.js +477 -0
  39. package/dist/init-science.js.map +1 -0
  40. package/dist/lab.d.ts +45 -0
  41. package/dist/lab.d.ts.map +1 -0
  42. package/dist/lab.js +1020 -0
  43. package/dist/lab.js.map +1 -0
  44. package/dist/lsp-deep.d.ts +101 -0
  45. package/dist/lsp-deep.d.ts.map +1 -0
  46. package/dist/lsp-deep.js +689 -0
  47. package/dist/lsp-deep.js.map +1 -0
  48. package/dist/memory.test.d.ts +2 -0
  49. package/dist/memory.test.d.ts.map +1 -0
  50. package/dist/memory.test.js +369 -0
  51. package/dist/memory.test.js.map +1 -0
  52. package/dist/multi-session.d.ts +164 -0
  53. package/dist/multi-session.d.ts.map +1 -0
  54. package/dist/multi-session.js +885 -0
  55. package/dist/multi-session.js.map +1 -0
  56. package/dist/self-eval.d.ts.map +1 -1
  57. package/dist/self-eval.js +5 -2
  58. package/dist/self-eval.js.map +1 -1
  59. package/dist/streaming.d.ts.map +1 -1
  60. package/dist/streaming.js +0 -1
  61. package/dist/streaming.js.map +1 -1
  62. package/dist/teach.d.ts +136 -0
  63. package/dist/teach.d.ts.map +1 -0
  64. package/dist/teach.js +915 -0
  65. package/dist/teach.js.map +1 -0
  66. package/dist/telemetry.d.ts +1 -1
  67. package/dist/telemetry.d.ts.map +1 -1
  68. package/dist/telemetry.js.map +1 -1
  69. package/dist/tools/browser-agent.js +2 -2
  70. package/dist/tools/browser-agent.js.map +1 -1
  71. package/dist/tools/forge.d.ts.map +1 -1
  72. package/dist/tools/forge.js +15 -26
  73. package/dist/tools/forge.js.map +1 -1
  74. package/dist/tools/git.d.ts.map +1 -1
  75. package/dist/tools/git.js +10 -7
  76. package/dist/tools/git.js.map +1 -1
  77. package/dist/voice-realtime.d.ts +54 -0
  78. package/dist/voice-realtime.d.ts.map +1 -0
  79. package/dist/voice-realtime.js +805 -0
  80. package/dist/voice-realtime.js.map +1 -0
  81. package/package.json +10 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lsp-deep.js","sourceRoot":"","sources":["../src/lsp-deep.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=memory.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.test.d.ts","sourceRoot":"","sources":["../src/memory.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,369 @@
1
+ // Tests for kbot Memory — persistent memory + session history
2
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
3
+ // Mock node:fs before importing the module under test
4
+ vi.mock('node:fs', () => ({
5
+ existsSync: vi.fn(),
6
+ readFileSync: vi.fn(),
7
+ writeFileSync: vi.fn(),
8
+ mkdirSync: vi.fn(),
9
+ appendFileSync: vi.fn(),
10
+ }));
11
+ vi.mock('node:os', () => ({
12
+ homedir: vi.fn(() => '/mock-home'),
13
+ }));
14
+ import { loadMemory, appendMemory, clearMemory, getMemoryPrompt, addTurn, getHistory, clearHistory, getPreviousMessages, compactHistory, restoreHistory, } from './memory.js';
15
+ import { existsSync, readFileSync, writeFileSync, mkdirSync, appendFileSync } from 'node:fs';
16
+ const mockedExistsSync = vi.mocked(existsSync);
17
+ const mockedReadFileSync = vi.mocked(readFileSync);
18
+ const mockedWriteFileSync = vi.mocked(writeFileSync);
19
+ const mockedMkdirSync = vi.mocked(mkdirSync);
20
+ const mockedAppendFileSync = vi.mocked(appendFileSync);
21
+ const MEMORY_DIR = '/mock-home/.kbot/memory';
22
+ const CONTEXT_FILE = '/mock-home/.kbot/memory/context.md';
23
+ beforeEach(() => {
24
+ vi.clearAllMocks();
25
+ clearHistory();
26
+ });
27
+ // ─── loadMemory ──────────────────────────────────────────────────────────
28
+ describe('loadMemory', () => {
29
+ it('creates memory dir if it does not exist', () => {
30
+ mockedExistsSync.mockReturnValueOnce(false); // dir check
31
+ mockedExistsSync.mockReturnValueOnce(false); // file check
32
+ loadMemory();
33
+ expect(mockedMkdirSync).toHaveBeenCalledWith(MEMORY_DIR, { recursive: true });
34
+ });
35
+ it('returns empty string when context file does not exist', () => {
36
+ mockedExistsSync.mockReturnValueOnce(true); // dir exists
37
+ mockedExistsSync.mockReturnValueOnce(false); // file does not exist
38
+ expect(loadMemory()).toBe('');
39
+ });
40
+ it('reads and returns content when file exists and is under size limit', () => {
41
+ mockedExistsSync.mockReturnValue(true);
42
+ mockedReadFileSync.mockReturnValue('Some memory content');
43
+ expect(loadMemory()).toBe('Some memory content');
44
+ expect(mockedReadFileSync).toHaveBeenCalledWith(CONTEXT_FILE, 'utf-8');
45
+ });
46
+ it('truncates content that exceeds MAX_MEMORY_SIZE (50KB)', () => {
47
+ mockedExistsSync.mockReturnValue(true);
48
+ // Build content that exceeds 50,000 chars — 600 lines of ~100 chars each
49
+ const lines = Array.from({ length: 600 }, (_, i) => `Line ${i}: ${'x'.repeat(90)}`);
50
+ const bigContent = lines.join('\n');
51
+ expect(bigContent.length).toBeGreaterThan(50_000);
52
+ mockedReadFileSync.mockReturnValue(bigContent);
53
+ const result = loadMemory();
54
+ // Should have written truncated content back to file
55
+ expect(mockedWriteFileSync).toHaveBeenCalledWith(CONTEXT_FILE, expect.any(String));
56
+ // Truncated to last 500 lines
57
+ const writtenContent = mockedWriteFileSync.mock.calls[0][1];
58
+ expect(writtenContent.split('\n')).toHaveLength(500);
59
+ // Result should match what was written
60
+ expect(result).toBe(writtenContent);
61
+ });
62
+ it('returns empty string when readFileSync throws', () => {
63
+ mockedExistsSync.mockReturnValue(true);
64
+ mockedReadFileSync.mockImplementation(() => {
65
+ throw new Error('EACCES: permission denied');
66
+ });
67
+ expect(loadMemory()).toBe('');
68
+ });
69
+ it('does not truncate content exactly at the 50KB boundary', () => {
70
+ mockedExistsSync.mockReturnValue(true);
71
+ const exactContent = 'a'.repeat(50_000);
72
+ mockedReadFileSync.mockReturnValue(exactContent);
73
+ const result = loadMemory();
74
+ // At exactly 50,000 chars, the > check should NOT truncate
75
+ expect(mockedWriteFileSync).not.toHaveBeenCalled();
76
+ expect(result).toBe(exactContent);
77
+ });
78
+ it('does not create dir if it already exists', () => {
79
+ mockedExistsSync.mockReturnValueOnce(true); // dir exists
80
+ mockedExistsSync.mockReturnValueOnce(false); // file doesn't exist
81
+ loadMemory();
82
+ expect(mockedMkdirSync).not.toHaveBeenCalled();
83
+ });
84
+ });
85
+ // ─── appendMemory ────────────────────────────────────────────────────────
86
+ describe('appendMemory', () => {
87
+ it('appends a timestamped entry to the context file', () => {
88
+ mockedExistsSync.mockReturnValue(true);
89
+ vi.useFakeTimers();
90
+ vi.setSystemTime(new Date('2026-03-29T12:00:00Z'));
91
+ appendMemory('User prefers TypeScript.');
92
+ expect(mockedAppendFileSync).toHaveBeenCalledWith(CONTEXT_FILE, '\n## 2026-03-29\nUser prefers TypeScript.\n');
93
+ vi.useRealTimers();
94
+ });
95
+ it('creates memory dir if it does not exist', () => {
96
+ mockedExistsSync.mockReturnValueOnce(false);
97
+ vi.useFakeTimers();
98
+ vi.setSystemTime(new Date('2026-01-01T00:00:00Z'));
99
+ appendMemory('test');
100
+ expect(mockedMkdirSync).toHaveBeenCalledWith(MEMORY_DIR, { recursive: true });
101
+ vi.useRealTimers();
102
+ });
103
+ it('handles empty entry string', () => {
104
+ mockedExistsSync.mockReturnValue(true);
105
+ vi.useFakeTimers();
106
+ vi.setSystemTime(new Date('2026-06-15T00:00:00Z'));
107
+ appendMemory('');
108
+ expect(mockedAppendFileSync).toHaveBeenCalledWith(CONTEXT_FILE, '\n## 2026-06-15\n\n');
109
+ vi.useRealTimers();
110
+ });
111
+ });
112
+ // ─── clearMemory ─────────────────────────────────────────────────────────
113
+ describe('clearMemory', () => {
114
+ it('writes the default header to the context file', () => {
115
+ mockedExistsSync.mockReturnValue(true);
116
+ clearMemory();
117
+ expect(mockedWriteFileSync).toHaveBeenCalledWith(CONTEXT_FILE, '# kbot Memory\n\nPersistent knowledge across sessions.\n');
118
+ });
119
+ it('creates memory dir if needed', () => {
120
+ mockedExistsSync.mockReturnValueOnce(false);
121
+ clearMemory();
122
+ expect(mockedMkdirSync).toHaveBeenCalledWith(MEMORY_DIR, { recursive: true });
123
+ });
124
+ });
125
+ // ─── getMemoryPrompt ─────────────────────────────────────────────────────
126
+ describe('getMemoryPrompt', () => {
127
+ it('returns empty string when memory is empty', () => {
128
+ mockedExistsSync.mockReturnValueOnce(true); // dir
129
+ mockedExistsSync.mockReturnValueOnce(false); // file
130
+ expect(getMemoryPrompt()).toBe('');
131
+ });
132
+ it('returns empty string when memory is only whitespace', () => {
133
+ mockedExistsSync.mockReturnValue(true);
134
+ mockedReadFileSync.mockReturnValue(' \n\n ');
135
+ expect(getMemoryPrompt()).toBe('');
136
+ });
137
+ it('wraps memory content in [Persistent Memory] block', () => {
138
+ mockedExistsSync.mockReturnValue(true);
139
+ mockedReadFileSync.mockReturnValue('User uses Ableton Live.');
140
+ const result = getMemoryPrompt();
141
+ expect(result).toContain('[Persistent Memory]');
142
+ expect(result).toContain('User uses Ableton Live.');
143
+ });
144
+ });
145
+ // ─── addTurn / getHistory ────────────────────────────────────────────────
146
+ describe('addTurn / getHistory', () => {
147
+ it('starts with empty history', () => {
148
+ expect(getHistory()).toEqual([]);
149
+ });
150
+ it('adds a user turn', () => {
151
+ addTurn({ role: 'user', content: 'Hello' });
152
+ expect(getHistory()).toHaveLength(1);
153
+ expect(getHistory()[0]).toEqual({ role: 'user', content: 'Hello' });
154
+ });
155
+ it('adds multiple turns in order', () => {
156
+ addTurn({ role: 'user', content: 'Hi' });
157
+ addTurn({ role: 'assistant', content: 'Hello!' });
158
+ addTurn({ role: 'user', content: 'How are you?' });
159
+ const history = getHistory();
160
+ expect(history).toHaveLength(3);
161
+ expect(history[0].role).toBe('user');
162
+ expect(history[1].role).toBe('assistant');
163
+ expect(history[2].role).toBe('user');
164
+ });
165
+ it('caps history at 20 turns, keeping the most recent', () => {
166
+ for (let i = 0; i < 25; i++) {
167
+ addTurn({ role: i % 2 === 0 ? 'user' : 'assistant', content: `msg-${i}` });
168
+ }
169
+ const history = getHistory();
170
+ expect(history).toHaveLength(20);
171
+ // First entry should be msg-5 (25 - 20 = 5)
172
+ expect(history[0].content).toBe('msg-5');
173
+ // Last entry should be msg-24
174
+ expect(history[19].content).toBe('msg-24');
175
+ });
176
+ it('handles empty content in a turn', () => {
177
+ addTurn({ role: 'user', content: '' });
178
+ expect(getHistory()).toHaveLength(1);
179
+ expect(getHistory()[0].content).toBe('');
180
+ });
181
+ });
182
+ // ─── clearHistory ────────────────────────────────────────────────────────
183
+ describe('clearHistory', () => {
184
+ it('resets history to empty', () => {
185
+ addTurn({ role: 'user', content: 'test' });
186
+ addTurn({ role: 'assistant', content: 'reply' });
187
+ expect(getHistory()).toHaveLength(2);
188
+ clearHistory();
189
+ expect(getHistory()).toEqual([]);
190
+ });
191
+ it('is safe to call when already empty', () => {
192
+ clearHistory();
193
+ expect(getHistory()).toEqual([]);
194
+ });
195
+ });
196
+ // ─── getPreviousMessages ─────────────────────────────────────────────────
197
+ describe('getPreviousMessages', () => {
198
+ it('returns empty array when history is empty', () => {
199
+ expect(getPreviousMessages()).toEqual([]);
200
+ });
201
+ it('returns all turns when fewer than 16', () => {
202
+ addTurn({ role: 'user', content: 'a' });
203
+ addTurn({ role: 'assistant', content: 'b' });
204
+ const msgs = getPreviousMessages();
205
+ expect(msgs).toHaveLength(2);
206
+ expect(msgs[0]).toEqual({ role: 'user', content: 'a' });
207
+ });
208
+ it('returns only the last 16 turns when history is larger', () => {
209
+ for (let i = 0; i < 20; i++) {
210
+ addTurn({ role: i % 2 === 0 ? 'user' : 'assistant', content: `m-${i}` });
211
+ }
212
+ const msgs = getPreviousMessages();
213
+ expect(msgs).toHaveLength(16);
214
+ // First message in the slice should be m-4 (20 - 16 = 4)
215
+ expect(msgs[0].content).toBe('m-4');
216
+ expect(msgs[15].content).toBe('m-19');
217
+ });
218
+ it('returns plain objects with role and content only', () => {
219
+ addTurn({ role: 'user', content: 'test' });
220
+ const msgs = getPreviousMessages();
221
+ expect(Object.keys(msgs[0])).toEqual(['role', 'content']);
222
+ });
223
+ });
224
+ // ─── compactHistory ──────────────────────────────────────────────────────
225
+ describe('compactHistory', () => {
226
+ it('does not compact when history has 4 or fewer turns', () => {
227
+ addTurn({ role: 'user', content: 'one' });
228
+ addTurn({ role: 'assistant', content: 'two' });
229
+ const result = compactHistory();
230
+ expect(result.before).toBe(2);
231
+ expect(result.after).toBe(2);
232
+ expect(result.summary).toContain('too short');
233
+ });
234
+ it('does not compact when history has exactly 4 turns', () => {
235
+ for (let i = 0; i < 4; i++) {
236
+ addTurn({ role: i % 2 === 0 ? 'user' : 'assistant', content: `turn-${i}` });
237
+ }
238
+ const result = compactHistory();
239
+ expect(result.before).toBe(4);
240
+ expect(result.after).toBe(4);
241
+ expect(result.summary).toContain('too short');
242
+ });
243
+ it('compacts history with more than 4 turns', () => {
244
+ for (let i = 0; i < 10; i++) {
245
+ addTurn({ role: i % 2 === 0 ? 'user' : 'assistant', content: `turn-${i}` });
246
+ }
247
+ const result = compactHistory();
248
+ expect(result.before).toBe(10);
249
+ // After: 1 summary turn + 4 verbatim = 5
250
+ expect(result.after).toBe(5);
251
+ expect(result.summary).toContain('Compacted 10 turns');
252
+ });
253
+ it('preserves the last 4 turns verbatim after compaction', () => {
254
+ for (let i = 0; i < 8; i++) {
255
+ addTurn({ role: i % 2 === 0 ? 'user' : 'assistant', content: `msg-${i}` });
256
+ }
257
+ compactHistory();
258
+ const history = getHistory();
259
+ // Last 4 should be msg-4, msg-5, msg-6, msg-7
260
+ expect(history[history.length - 4].content).toBe('msg-4');
261
+ expect(history[history.length - 3].content).toBe('msg-5');
262
+ expect(history[history.length - 2].content).toBe('msg-6');
263
+ expect(history[history.length - 1].content).toBe('msg-7');
264
+ });
265
+ it('creates a summary turn as the first entry', () => {
266
+ for (let i = 0; i < 6; i++) {
267
+ addTurn({ role: i % 2 === 0 ? 'user' : 'assistant', content: `topic-${i}` });
268
+ }
269
+ compactHistory();
270
+ const history = getHistory();
271
+ expect(history[0].role).toBe('assistant');
272
+ expect(history[0].content).toContain('Conversation summary');
273
+ });
274
+ it('includes user messages in the summary', () => {
275
+ addTurn({ role: 'user', content: 'How do I deploy to production?' });
276
+ addTurn({ role: 'assistant', content: 'You can use the deploy command.' });
277
+ addTurn({ role: 'user', content: 'What about staging?' });
278
+ addTurn({ role: 'assistant', content: 'Use the staging flag.' });
279
+ addTurn({ role: 'user', content: 'Thanks!' });
280
+ addTurn({ role: 'assistant', content: 'Welcome!' });
281
+ // First 2 turns will be summarized (the rest are kept verbatim)
282
+ compactHistory();
283
+ const summary = getHistory()[0].content;
284
+ expect(summary).toContain('User asked about');
285
+ expect(summary).toContain('deploy to production');
286
+ });
287
+ it('includes assistant topics in the summary', () => {
288
+ addTurn({ role: 'user', content: 'Help me' });
289
+ addTurn({ role: 'assistant', content: 'I can help with deployments.\nHere are the details...' });
290
+ addTurn({ role: 'user', content: 'Next' });
291
+ addTurn({ role: 'assistant', content: 'Moving on...' });
292
+ addTurn({ role: 'user', content: 'Final' });
293
+ addTurn({ role: 'assistant', content: 'Done' });
294
+ compactHistory();
295
+ const summary = getHistory()[0].content;
296
+ expect(summary).toContain('Topics covered');
297
+ expect(summary).toContain('I can help with deployments');
298
+ });
299
+ it('truncates long user messages in summary to 100 chars', () => {
300
+ const longMessage = 'A'.repeat(200);
301
+ addTurn({ role: 'user', content: longMessage });
302
+ addTurn({ role: 'assistant', content: 'ok' });
303
+ addTurn({ role: 'user', content: 'keep1' });
304
+ addTurn({ role: 'assistant', content: 'keep2' });
305
+ addTurn({ role: 'user', content: 'keep3' });
306
+ addTurn({ role: 'assistant', content: 'keep4' });
307
+ compactHistory();
308
+ const summary = getHistory()[0].content;
309
+ // The long message should be sliced to 100 chars in the summary
310
+ expect(summary).not.toContain('A'.repeat(200));
311
+ expect(summary).toContain('A'.repeat(100));
312
+ });
313
+ it('is idempotent on already-compacted history', () => {
314
+ for (let i = 0; i < 10; i++) {
315
+ addTurn({ role: i % 2 === 0 ? 'user' : 'assistant', content: `x-${i}` });
316
+ }
317
+ const first = compactHistory();
318
+ // Now history is 5 turns — compacting again should produce 5 again
319
+ const second = compactHistory();
320
+ expect(second.before).toBe(first.after);
321
+ expect(second.after).toBe(5);
322
+ });
323
+ });
324
+ // ─── restoreHistory ──────────────────────────────────────────────────────
325
+ describe('restoreHistory', () => {
326
+ it('restores turns into session history', () => {
327
+ const turns = [
328
+ { role: 'user', content: 'restored message' },
329
+ { role: 'assistant', content: 'restored reply' },
330
+ ];
331
+ restoreHistory(turns);
332
+ expect(getHistory()).toHaveLength(2);
333
+ expect(getHistory()[0].content).toBe('restored message');
334
+ });
335
+ it('caps restored history at 20 turns', () => {
336
+ const turns = Array.from({ length: 30 }, (_, i) => ({
337
+ role: (i % 2 === 0 ? 'user' : 'assistant'),
338
+ content: `restored-${i}`,
339
+ }));
340
+ restoreHistory(turns);
341
+ const history = getHistory();
342
+ expect(history).toHaveLength(20);
343
+ // Should keep the last 20 (indices 10-29)
344
+ expect(history[0].content).toBe('restored-10');
345
+ expect(history[19].content).toBe('restored-29');
346
+ });
347
+ it('does not mutate the original array', () => {
348
+ const turns = [
349
+ { role: 'user', content: 'original' },
350
+ ];
351
+ restoreHistory(turns);
352
+ addTurn({ role: 'assistant', content: 'new' });
353
+ // The original array should still have just 1 element
354
+ expect(turns).toHaveLength(1);
355
+ });
356
+ it('replaces any existing history', () => {
357
+ addTurn({ role: 'user', content: 'old' });
358
+ addTurn({ role: 'assistant', content: 'old reply' });
359
+ restoreHistory([{ role: 'user', content: 'fresh' }]);
360
+ expect(getHistory()).toHaveLength(1);
361
+ expect(getHistory()[0].content).toBe('fresh');
362
+ });
363
+ it('handles empty array', () => {
364
+ addTurn({ role: 'user', content: 'something' });
365
+ restoreHistory([]);
366
+ expect(getHistory()).toEqual([]);
367
+ });
368
+ });
369
+ //# sourceMappingURL=memory.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.test.js","sourceRoot":"","sources":["../src/memory.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,164 @@
1
+ export interface ManagedSession {
2
+ /** Unique session ID (slug or generated) */
3
+ id: string;
4
+ /** Human-readable name */
5
+ name: string;
6
+ /** PID if running in background */
7
+ pid?: number;
8
+ /** Session status */
9
+ status: 'active' | 'paused' | 'background' | 'completed';
10
+ /** Specialist agent assigned to this session */
11
+ agent?: string;
12
+ /** Description of what this session is working on */
13
+ task?: string;
14
+ /** Conversation history (isolated per session) */
15
+ history: Array<{
16
+ role: string;
17
+ content: string;
18
+ }>;
19
+ /** When the session was created */
20
+ createdAt: string;
21
+ /** When the session was last active */
22
+ lastActiveAt: string;
23
+ /** Token usage tracking */
24
+ tokenUsage: {
25
+ input: number;
26
+ output: number;
27
+ };
28
+ /** Number of tool calls made */
29
+ toolCalls: number;
30
+ }
31
+ export interface SessionMessage {
32
+ /** Session ID that sent the message */
33
+ from: string;
34
+ /** Message content */
35
+ message: string;
36
+ /** ISO timestamp */
37
+ timestamp: string;
38
+ }
39
+ /**
40
+ * Create a new named session.
41
+ * Each session starts with empty history and tracks its own token usage.
42
+ */
43
+ export declare function createSession(opts: {
44
+ name: string;
45
+ agent?: string;
46
+ task?: string;
47
+ }): ManagedSession;
48
+ /**
49
+ * List all managed sessions, newest first.
50
+ * Cleans up stale background sessions whose processes are no longer running.
51
+ */
52
+ export declare function listSessions(): ManagedSession[];
53
+ /**
54
+ * Switch the active foreground session.
55
+ * The previous active session is paused. Returns the newly active session.
56
+ */
57
+ export declare function switchSession(nameOrId: string): ManagedSession | null;
58
+ /**
59
+ * Send a message to a background session.
60
+ * The message is delivered via the message bus and the session's
61
+ * background process picks it up on its next iteration.
62
+ */
63
+ export declare function sendToSession(nameOrId: string, message: string): Promise<string>;
64
+ /**
65
+ * Pause a session — preserve context, free resources.
66
+ * Background sessions have their child process killed.
67
+ */
68
+ export declare function pauseSession(nameOrId: string): boolean;
69
+ /**
70
+ * Resume a paused session back to active status.
71
+ */
72
+ export declare function resumeSession(nameOrId: string): ManagedSession | null;
73
+ /**
74
+ * Kill a session — terminate background process, mark as completed.
75
+ */
76
+ export declare function killSession(nameOrId: string): boolean;
77
+ /**
78
+ * Get a session by name or ID.
79
+ */
80
+ export declare function getSession(nameOrId: string): ManagedSession | null;
81
+ /**
82
+ * Get the currently active foreground session.
83
+ */
84
+ export declare function getActiveSession(): ManagedSession | null;
85
+ /**
86
+ * Set the active session ID without changing status.
87
+ * Used internally when restoring state on startup.
88
+ */
89
+ export declare function setActiveSessionId(id: string | null): void;
90
+ /**
91
+ * Append a turn to a session's conversation history.
92
+ * Enforces MAX_HISTORY_TURNS — compacts when exceeded.
93
+ */
94
+ export declare function appendToSessionHistory(nameOrId: string, turn: {
95
+ role: string;
96
+ content: string;
97
+ }): boolean;
98
+ /**
99
+ * Update token usage counters for a session.
100
+ */
101
+ export declare function updateSessionTokens(nameOrId: string, input: number, output: number, toolCalls?: number): boolean;
102
+ /**
103
+ * Move a session to background execution.
104
+ * Forks a child process that continues the session independently.
105
+ * The child shares ~/.kbot/ learning data but has isolated history.
106
+ */
107
+ export declare function backgroundSession(nameOrId: string, scriptPath?: string): ManagedSession | null;
108
+ /**
109
+ * Broadcast a message to all active/background sessions.
110
+ * Messages are delivered via the file-based bus — each session has an inbox.
111
+ */
112
+ export declare function broadcastToSessions(message: string, fromSession?: string): void;
113
+ /**
114
+ * Get pending messages for a session and clear the inbox.
115
+ */
116
+ export declare function getSessionMessages(sessionId: string): SessionMessage[];
117
+ /**
118
+ * Peek at messages without clearing (non-destructive read).
119
+ */
120
+ export declare function peekSessionMessages(sessionId: string): SessionMessage[];
121
+ /**
122
+ * Remove completed sessions older than the stale threshold.
123
+ */
124
+ export declare function pruneCompletedSessions(maxAge?: number): number;
125
+ /**
126
+ * Delete a session entirely — removes all data.
127
+ */
128
+ export declare function deleteSession(nameOrId: string): boolean;
129
+ /**
130
+ * Format a list of sessions as a table for terminal display.
131
+ */
132
+ export declare function formatSessionList(sessions: ManagedSession[]): string;
133
+ /**
134
+ * Format a single session's status for detailed display.
135
+ */
136
+ export declare function formatSessionStatus(session: ManagedSession): string;
137
+ /**
138
+ * Export a session as a portable JSON snapshot.
139
+ * Useful for sharing or archiving.
140
+ */
141
+ export declare function exportSession(nameOrId: string): string | null;
142
+ /**
143
+ * Import a session from a JSON snapshot.
144
+ */
145
+ export declare function importSession(json: string): ManagedSession;
146
+ /**
147
+ * Get a high-level summary of all sessions for inclusion in system prompts.
148
+ * Keeps it compact — just names, statuses, and tasks.
149
+ */
150
+ export declare function getSessionContextSummary(): string;
151
+ /**
152
+ * Get aggregate stats across all sessions.
153
+ */
154
+ export declare function getMultiSessionStats(): {
155
+ totalSessions: number;
156
+ active: number;
157
+ paused: number;
158
+ background: number;
159
+ completed: number;
160
+ totalTokensIn: number;
161
+ totalTokensOut: number;
162
+ totalToolCalls: number;
163
+ };
164
+ //# sourceMappingURL=multi-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-session.d.ts","sourceRoot":"","sources":["../src/multi-session.ts"],"names":[],"mappings":"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"}