dino-spec 13.6.0 → 14.0.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 (88) hide show
  1. package/bin/dino-hud.js +1 -1
  2. package/bin/dino.js +1 -1
  3. package/dist/core/agents/context-isolation.js +26 -26
  4. package/dist/core/context/__tests__/budget-thresholds.test.d.ts +5 -0
  5. package/dist/core/context/__tests__/budget-thresholds.test.d.ts.map +1 -0
  6. package/dist/core/context/__tests__/budget-thresholds.test.js +223 -0
  7. package/dist/core/context/__tests__/budget-thresholds.test.js.map +1 -0
  8. package/dist/core/context/__tests__/compaction-engine.test.d.ts +5 -0
  9. package/dist/core/context/__tests__/compaction-engine.test.d.ts.map +1 -0
  10. package/dist/core/context/__tests__/compaction-engine.test.js +474 -0
  11. package/dist/core/context/__tests__/compaction-engine.test.js.map +1 -0
  12. package/dist/core/context/__tests__/output-persistence.test.d.ts +5 -0
  13. package/dist/core/context/__tests__/output-persistence.test.d.ts.map +1 -0
  14. package/dist/core/context/__tests__/output-persistence.test.js +246 -0
  15. package/dist/core/context/__tests__/output-persistence.test.js.map +1 -0
  16. package/dist/core/context/budget-thresholds.d.ts +167 -0
  17. package/dist/core/context/budget-thresholds.d.ts.map +1 -0
  18. package/dist/core/context/budget-thresholds.js +234 -0
  19. package/dist/core/context/budget-thresholds.js.map +1 -0
  20. package/dist/core/context/compaction-engine.d.ts +193 -0
  21. package/dist/core/context/compaction-engine.d.ts.map +1 -0
  22. package/dist/core/context/compaction-engine.js +376 -0
  23. package/dist/core/context/compaction-engine.js.map +1 -0
  24. package/dist/core/context/index.d.ts +7 -3
  25. package/dist/core/context/index.d.ts.map +1 -1
  26. package/dist/core/context/index.js +22 -3
  27. package/dist/core/context/index.js.map +1 -1
  28. package/dist/core/context/output-persistence.d.ts +142 -0
  29. package/dist/core/context/output-persistence.d.ts.map +1 -0
  30. package/dist/core/context/output-persistence.js +242 -0
  31. package/dist/core/context/output-persistence.js.map +1 -0
  32. package/dist/core/environment/__tests__/pre-verify.test.d.ts +5 -0
  33. package/dist/core/environment/__tests__/pre-verify.test.d.ts.map +1 -0
  34. package/dist/core/environment/__tests__/pre-verify.test.js +343 -0
  35. package/dist/core/environment/__tests__/pre-verify.test.js.map +1 -0
  36. package/dist/core/environment/index.d.ts +8 -0
  37. package/dist/core/environment/index.d.ts.map +1 -0
  38. package/dist/core/environment/index.js +7 -0
  39. package/dist/core/environment/index.js.map +1 -0
  40. package/dist/core/environment/pre-verify.d.ts +63 -0
  41. package/dist/core/environment/pre-verify.d.ts.map +1 -0
  42. package/dist/core/environment/pre-verify.js +221 -0
  43. package/dist/core/environment/pre-verify.js.map +1 -0
  44. package/dist/core/environment/types.d.ts +37 -0
  45. package/dist/core/environment/types.d.ts.map +1 -0
  46. package/dist/core/environment/types.js +5 -0
  47. package/dist/core/environment/types.js.map +1 -0
  48. package/dist/core/intelligence/context-budget.d.ts +10 -5
  49. package/dist/core/intelligence/context-budget.d.ts.map +1 -1
  50. package/dist/core/intelligence/context-budget.js +12 -5
  51. package/dist/core/intelligence/context-budget.js.map +1 -1
  52. package/dist/mcp/__tests__/dynamic-updates.test.d.ts +5 -0
  53. package/dist/mcp/__tests__/dynamic-updates.test.d.ts.map +1 -0
  54. package/dist/mcp/__tests__/dynamic-updates.test.js +314 -0
  55. package/dist/mcp/__tests__/dynamic-updates.test.js.map +1 -0
  56. package/dist/mcp/dynamic-updates.d.ts +167 -0
  57. package/dist/mcp/dynamic-updates.d.ts.map +1 -0
  58. package/dist/mcp/dynamic-updates.js +313 -0
  59. package/dist/mcp/dynamic-updates.js.map +1 -0
  60. package/dist/mcp/index.d.ts +4 -2
  61. package/dist/mcp/index.d.ts.map +1 -1
  62. package/dist/mcp/index.js +5 -2
  63. package/dist/mcp/index.js.map +1 -1
  64. package/dist/mcp/registry.d.ts +4 -4
  65. package/dist/mcp/registry.d.ts.map +1 -1
  66. package/dist/mcp/registry.js +16 -16
  67. package/dist/mcp/registry.js.map +1 -1
  68. package/dist/mcp/tools/__tests__/environment.test.d.ts +5 -0
  69. package/dist/mcp/tools/__tests__/environment.test.d.ts.map +1 -0
  70. package/dist/mcp/tools/__tests__/environment.test.js +219 -0
  71. package/dist/mcp/tools/__tests__/environment.test.js.map +1 -0
  72. package/dist/mcp/tools/environment.d.ts +27 -0
  73. package/dist/mcp/tools/environment.d.ts.map +1 -0
  74. package/dist/mcp/tools/environment.js +97 -0
  75. package/dist/mcp/tools/environment.js.map +1 -0
  76. package/dist/mcp/tools/index.d.ts +3 -1
  77. package/dist/mcp/tools/index.d.ts.map +1 -1
  78. package/dist/mcp/tools/index.js +13 -1
  79. package/dist/mcp/tools/index.js.map +1 -1
  80. package/dist/mcp/tools/output-persistence.d.ts +44 -0
  81. package/dist/mcp/tools/output-persistence.d.ts.map +1 -0
  82. package/dist/mcp/tools/output-persistence.js +208 -0
  83. package/dist/mcp/tools/output-persistence.js.map +1 -0
  84. package/dist/mcp-server.d.ts +2 -1
  85. package/dist/mcp-server.d.ts.map +1 -1
  86. package/dist/mcp-server.js +27 -2
  87. package/dist/mcp-server.js.map +1 -1
  88. package/package.json +1 -1
@@ -0,0 +1,474 @@
1
+ /**
2
+ * Auto Compaction Engine Tests - v14.0.0
3
+ */
4
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
5
+ import { join } from 'path';
6
+ import { mkdir, rm, writeFile, readFile } from 'fs/promises';
7
+ import { AUTO_COMPACT_THRESHOLD, COMPACT_OUTPUT_DIR, AUTO_COMPACT_FEATURE_FLAG, shouldAutoCompact, getUsagePercent, generateSessionId, extractDecisions, extractBlockers, extractProgress, createStructuredCompaction, persistStructuredCompaction, listCompactions, runAutoCompaction, formatCompactionEngineResult, getCompactionEngineStats, } from '../compaction-engine.js';
8
+ describe('Auto Compaction Engine', () => {
9
+ const testDir = join(process.cwd(), 'test-compaction-engine-temp');
10
+ beforeEach(async () => {
11
+ await mkdir(testDir, { recursive: true });
12
+ await mkdir(join(testDir, '.dino'), { recursive: true });
13
+ });
14
+ afterEach(async () => {
15
+ try {
16
+ await rm(testDir, { recursive: true, force: true });
17
+ }
18
+ catch {
19
+ // Ignore errors
20
+ }
21
+ });
22
+ describe('Constants', () => {
23
+ it('should have correct auto-compact threshold', () => {
24
+ expect(AUTO_COMPACT_THRESHOLD).toBe(0.75);
25
+ });
26
+ it('should have correct output directory', () => {
27
+ expect(COMPACT_OUTPUT_DIR).toBe('.dino/compacted');
28
+ });
29
+ it('should have correct feature flag name', () => {
30
+ expect(AUTO_COMPACT_FEATURE_FLAG).toBe('enableAutoCompaction');
31
+ });
32
+ });
33
+ describe('shouldAutoCompact', () => {
34
+ it('should return false when below threshold', () => {
35
+ expect(shouldAutoCompact(100_000, 200_000, 0.75)).toBe(false);
36
+ });
37
+ it('should return true when at threshold', () => {
38
+ expect(shouldAutoCompact(150_000, 200_000, 0.75)).toBe(true);
39
+ });
40
+ it('should return true when above threshold', () => {
41
+ expect(shouldAutoCompact(170_000, 200_000, 0.75)).toBe(true);
42
+ });
43
+ it('should use default threshold if not specified', () => {
44
+ // 150K / 200K = 75% = exactly at threshold
45
+ expect(shouldAutoCompact(150_000, 200_000)).toBe(true);
46
+ // 140K / 200K = 70% = below threshold
47
+ expect(shouldAutoCompact(140_000, 200_000)).toBe(false);
48
+ });
49
+ it('should use default limit if not specified', () => {
50
+ expect(shouldAutoCompact(150_000)).toBe(true); // 150K / 200K = 75%
51
+ });
52
+ it('should respect custom threshold', () => {
53
+ expect(shouldAutoCompact(100_000, 200_000, 0.5)).toBe(true); // 50%
54
+ expect(shouldAutoCompact(90_000, 200_000, 0.5)).toBe(false); // 45%
55
+ });
56
+ });
57
+ describe('getUsagePercent', () => {
58
+ it('should calculate correct percentage', () => {
59
+ expect(getUsagePercent(100_000, 200_000)).toBe(50);
60
+ expect(getUsagePercent(150_000, 200_000)).toBe(75);
61
+ expect(getUsagePercent(200_000, 200_000)).toBe(100);
62
+ });
63
+ it('should round to whole number', () => {
64
+ expect(getUsagePercent(133_333, 200_000)).toBe(67);
65
+ });
66
+ });
67
+ describe('generateSessionId', () => {
68
+ it('should generate valid session ID', () => {
69
+ const id = generateSessionId();
70
+ expect(id).toMatch(/^\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}$/);
71
+ });
72
+ it('should generate unique IDs', () => {
73
+ const id1 = generateSessionId();
74
+ // Wait a tiny bit to ensure different timestamp
75
+ const id2 = generateSessionId();
76
+ // They might be same if called in same second, which is OK
77
+ expect(typeof id1).toBe('string');
78
+ expect(typeof id2).toBe('string');
79
+ });
80
+ });
81
+ describe('extractDecisions', () => {
82
+ it('should extract decisions from notes section', () => {
83
+ const sections = [{
84
+ name: 'Notes',
85
+ content: '- Decided to use TypeScript for better type safety',
86
+ lines: ['- Decided to use TypeScript for better type safety'],
87
+ }];
88
+ const decisions = extractDecisions(sections);
89
+ expect(decisions.length).toBe(1);
90
+ expect(decisions[0].text).toContain('TypeScript');
91
+ expect(decisions[0].type).toBe('approach');
92
+ });
93
+ it('should extract choice type decisions', () => {
94
+ const sections = [{
95
+ name: 'Session Notes',
96
+ content: '- Chose Redux over MobX for state management',
97
+ lines: ['- Chose Redux over MobX for state management'],
98
+ }];
99
+ const decisions = extractDecisions(sections);
100
+ expect(decisions.length).toBe(1);
101
+ expect(decisions[0].type).toBe('choice');
102
+ });
103
+ it('should extract topic and choice', () => {
104
+ const sections = [{
105
+ name: 'Notes',
106
+ content: '- Decided to use ESM because CommonJS is outdated',
107
+ lines: ['- Decided to use ESM because CommonJS is outdated'],
108
+ }];
109
+ const decisions = extractDecisions(sections);
110
+ expect(decisions.length).toBe(1);
111
+ expect(decisions[0].choice).toContain('ESM');
112
+ expect(decisions[0].rationale).toContain('CommonJS');
113
+ });
114
+ it('should handle empty sections', () => {
115
+ const sections = [{
116
+ name: 'Notes',
117
+ content: '',
118
+ lines: [],
119
+ }];
120
+ const decisions = extractDecisions(sections);
121
+ expect(decisions).toEqual([]);
122
+ });
123
+ });
124
+ describe('extractBlockers', () => {
125
+ it('should extract blockers from blocker section', () => {
126
+ const sections = [{
127
+ name: 'Blockers',
128
+ content: '- Fix failing test in auth module',
129
+ lines: ['- Fix failing test in auth module'],
130
+ }];
131
+ const blockers = extractBlockers(sections);
132
+ expect(blockers.length).toBe(1);
133
+ expect(blockers[0].text).toBe('Fix failing test in auth module');
134
+ expect(blockers[0].status).toBe('active');
135
+ });
136
+ it('should skip empty blocker placeholder', () => {
137
+ const sections = [{
138
+ name: 'Blockers',
139
+ content: '_No active blockers._',
140
+ lines: ['- _No active blockers._'],
141
+ }];
142
+ const blockers = extractBlockers(sections);
143
+ expect(blockers).toEqual([]);
144
+ });
145
+ it('should extract timestamp from blocker', () => {
146
+ const sections = [{
147
+ name: 'Blockers',
148
+ content: '- 2026-01-27: Fix failing test',
149
+ lines: ['- 2026-01-27: Fix failing test'],
150
+ }];
151
+ const blockers = extractBlockers(sections);
152
+ expect(blockers.length).toBe(1);
153
+ expect(blockers[0].addedAt).toBe('2026-01-27');
154
+ expect(blockers[0].text).toBe('Fix failing test');
155
+ });
156
+ });
157
+ describe('extractProgress', () => {
158
+ it('should extract progress signals', () => {
159
+ const sections = [{
160
+ name: 'Progress',
161
+ content: '- 2026-01-27 10:00: tests-fixed - All tests now passing',
162
+ lines: ['- 2026-01-27 10:00: tests-fixed - All tests now passing'],
163
+ }];
164
+ const progress = extractProgress(sections);
165
+ expect(progress.length).toBe(1);
166
+ expect(progress[0].type).toBe('tests-fixed');
167
+ expect(progress[0].text).toBe('All tests now passing');
168
+ expect(progress[0].timestamp).toBe('2026-01-27 10:00');
169
+ });
170
+ it('should handle empty progress section', () => {
171
+ const sections = [{
172
+ name: 'Progress',
173
+ content: '',
174
+ lines: [],
175
+ }];
176
+ const progress = extractProgress(sections);
177
+ expect(progress).toEqual([]);
178
+ });
179
+ });
180
+ describe('createStructuredCompaction', () => {
181
+ it('should create complete structured output', () => {
182
+ const sections = [
183
+ {
184
+ name: 'Notes',
185
+ content: '- Decided to use TypeScript',
186
+ lines: ['- Decided to use TypeScript'],
187
+ },
188
+ {
189
+ name: 'Blockers',
190
+ content: '- Fix failing test',
191
+ lines: ['- Fix failing test'],
192
+ },
193
+ {
194
+ name: 'Progress',
195
+ content: '- 2026-01-27 10:00: tests-fixed - Tests passing',
196
+ lines: ['- 2026-01-27 10:00: tests-fixed - Tests passing'],
197
+ },
198
+ ];
199
+ const output = createStructuredCompaction(sections, 10000, 3000, 'test-session');
200
+ expect(output.sessionId).toBe('test-session');
201
+ expect(output.originalTokens).toBe(10000);
202
+ expect(output.tokensRecovered).toBe(3000);
203
+ expect(output.decisions.length).toBe(1);
204
+ expect(output.blockers.length).toBe(1);
205
+ expect(output.progress.length).toBe(1);
206
+ expect(output.timestamp).toBeTruthy();
207
+ });
208
+ it('should generate session ID if not provided', () => {
209
+ const output = createStructuredCompaction([], 1000, 500);
210
+ expect(output.sessionId).toMatch(/^\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}$/);
211
+ });
212
+ });
213
+ describe('persistStructuredCompaction', () => {
214
+ it('should persist compaction to disk', async () => {
215
+ const compaction = {
216
+ decisions: [],
217
+ blockers: [],
218
+ progress: [],
219
+ timestamp: new Date().toISOString(),
220
+ sessionId: 'test-persist',
221
+ originalTokens: 5000,
222
+ tokensRecovered: 2000,
223
+ };
224
+ const outputPath = await persistStructuredCompaction(compaction, testDir);
225
+ // Use path-agnostic assertion (Windows uses backslashes)
226
+ expect(outputPath.replace(/\\/g, '/')).toBe('.dino/compacted/test-persist.json');
227
+ // Verify file exists and content is correct
228
+ const content = await readFile(join(testDir, outputPath), 'utf-8');
229
+ const saved = JSON.parse(content);
230
+ expect(saved.sessionId).toBe('test-persist');
231
+ expect(saved.originalTokens).toBe(5000);
232
+ });
233
+ it('should create compacted directory if not exists', async () => {
234
+ const compaction = {
235
+ decisions: [],
236
+ blockers: [],
237
+ progress: [],
238
+ timestamp: new Date().toISOString(),
239
+ sessionId: 'test-mkdir',
240
+ originalTokens: 1000,
241
+ tokensRecovered: 500,
242
+ };
243
+ const outputPath = await persistStructuredCompaction(compaction, testDir);
244
+ expect(outputPath).toContain('test-mkdir.json');
245
+ });
246
+ });
247
+ describe('listCompactions', () => {
248
+ it('should return empty array when no compactions', async () => {
249
+ const compactions = await listCompactions(testDir);
250
+ expect(compactions).toEqual([]);
251
+ });
252
+ it('should list persisted compactions', async () => {
253
+ // Create multiple compactions
254
+ const compaction1 = {
255
+ decisions: [],
256
+ blockers: [],
257
+ progress: [],
258
+ timestamp: '2026-01-27T10:00:00.000Z',
259
+ sessionId: 'session-1',
260
+ originalTokens: 5000,
261
+ tokensRecovered: 2000,
262
+ };
263
+ const compaction2 = {
264
+ decisions: [],
265
+ blockers: [],
266
+ progress: [],
267
+ timestamp: '2026-01-27T11:00:00.000Z',
268
+ sessionId: 'session-2',
269
+ originalTokens: 6000,
270
+ tokensRecovered: 2500,
271
+ };
272
+ await persistStructuredCompaction(compaction1, testDir);
273
+ await persistStructuredCompaction(compaction2, testDir);
274
+ const compactions = await listCompactions(testDir);
275
+ expect(compactions.length).toBe(2);
276
+ // Should be sorted by timestamp (newest first)
277
+ expect(compactions[0].sessionId).toBe('session-2');
278
+ expect(compactions[1].sessionId).toBe('session-1');
279
+ });
280
+ });
281
+ describe('runAutoCompaction', () => {
282
+ beforeEach(async () => {
283
+ // Create a session.md file
284
+ const sessionContent = `# Session
285
+
286
+ ## Notes
287
+ - Decided to use TypeScript for type safety
288
+ - Regular note
289
+
290
+ ## Blockers
291
+ - Fix failing test
292
+
293
+ ## Progress
294
+ - 2026-01-27 10:00: tests-fixed - Tests now passing
295
+ `;
296
+ await writeFile(join(testDir, '.dino', 'session.md'), sessionContent);
297
+ });
298
+ it('should not trigger when below threshold', async () => {
299
+ const result = await runAutoCompaction({
300
+ projectDir: testDir,
301
+ threshold: 0.99, // Very high threshold
302
+ limit: 200_000,
303
+ });
304
+ expect(result.triggered).toBe(false);
305
+ expect(result.executed).toBe(false);
306
+ expect(result.reason).toContain('below threshold');
307
+ });
308
+ it('should trigger with force option', async () => {
309
+ const result = await runAutoCompaction({
310
+ projectDir: testDir,
311
+ force: true,
312
+ persistOutput: true,
313
+ });
314
+ expect(result.triggered).toBe(true);
315
+ expect(result.executed).toBe(true);
316
+ expect(result.reason).toBe('Forced compaction');
317
+ expect(result.compactionResult).toBeTruthy();
318
+ });
319
+ it('should support dry run mode', async () => {
320
+ const result = await runAutoCompaction({
321
+ projectDir: testDir,
322
+ force: true,
323
+ dryRun: true,
324
+ });
325
+ expect(result.triggered).toBe(true);
326
+ expect(result.executed).toBe(false);
327
+ expect(result.reason).toBe('Dry run - compaction not executed');
328
+ expect(result.structuredOutput).toBeTruthy();
329
+ expect(result.compactionResult).toBeUndefined();
330
+ });
331
+ it('should extract structured output when triggered', async () => {
332
+ const result = await runAutoCompaction({
333
+ projectDir: testDir,
334
+ force: true,
335
+ persistOutput: false,
336
+ });
337
+ expect(result.structuredOutput).toBeTruthy();
338
+ expect(result.structuredOutput.decisions.length).toBeGreaterThanOrEqual(1);
339
+ expect(result.structuredOutput.blockers.length).toBe(1);
340
+ expect(result.structuredOutput.progress.length).toBe(1);
341
+ });
342
+ it('should persist structured output when enabled', async () => {
343
+ const result = await runAutoCompaction({
344
+ projectDir: testDir,
345
+ force: true,
346
+ persistOutput: true,
347
+ sessionId: 'test-run',
348
+ });
349
+ // Use path-agnostic assertion (Windows uses backslashes)
350
+ expect(result.outputPath.replace(/\\/g, '/')).toBe('.dino/compacted/test-run.json');
351
+ // Verify file was created
352
+ const compactions = await listCompactions(testDir);
353
+ expect(compactions.length).toBe(1);
354
+ expect(compactions[0].sessionId).toBe('test-run');
355
+ });
356
+ it('should include compaction result when executed', async () => {
357
+ const result = await runAutoCompaction({
358
+ projectDir: testDir,
359
+ force: true,
360
+ });
361
+ expect(result.compactionResult).toBeTruthy();
362
+ expect(result.compactionResult.originalTokens).toBeGreaterThan(0);
363
+ expect(result.compactionResult.compactedTokens).toBeGreaterThan(0);
364
+ });
365
+ });
366
+ describe('formatCompactionEngineResult', () => {
367
+ it('should format non-triggered result', () => {
368
+ const result = {
369
+ triggered: false,
370
+ executed: false,
371
+ reason: 'Context usage (50%) below threshold (75%)',
372
+ usagePercent: 50,
373
+ currentTokens: 100_000,
374
+ limit: 200_000,
375
+ };
376
+ const formatted = formatCompactionEngineResult(result);
377
+ expect(formatted).toContain('Not Triggered');
378
+ expect(formatted).toContain('50%');
379
+ expect(formatted).toContain('100,000');
380
+ });
381
+ it('should format dry run result', () => {
382
+ const result = {
383
+ triggered: true,
384
+ executed: false,
385
+ reason: 'Dry run - compaction not executed',
386
+ usagePercent: 80,
387
+ currentTokens: 160_000,
388
+ limit: 200_000,
389
+ structuredOutput: {
390
+ decisions: [{ text: 'test', topic: 't', choice: 'c', type: 'decision' }],
391
+ blockers: [],
392
+ progress: [],
393
+ timestamp: '2026-01-27T10:00:00Z',
394
+ sessionId: 'test',
395
+ originalTokens: 160_000,
396
+ tokensRecovered: 50_000,
397
+ },
398
+ };
399
+ const formatted = formatCompactionEngineResult(result);
400
+ expect(formatted).toContain('Dry Run');
401
+ expect(formatted).toContain('Decisions: 1');
402
+ expect(formatted).toContain('50,000');
403
+ });
404
+ it('should format executed result', () => {
405
+ const result = {
406
+ triggered: true,
407
+ executed: true,
408
+ reason: 'Context usage (80%) exceeded threshold (75%)',
409
+ usagePercent: 80,
410
+ currentTokens: 160_000,
411
+ limit: 200_000,
412
+ compactionResult: {
413
+ originalTokens: 160_000,
414
+ compactedTokens: 100_000,
415
+ reductionPercent: 37,
416
+ preservedDecisions: ['test'],
417
+ archivedItems: 5,
418
+ deduplicatedBlockers: 1,
419
+ decisionsExtractedToMemory: 2,
420
+ learningsExtractedToMemory: 1,
421
+ },
422
+ outputPath: '.dino/compacted/test.json',
423
+ };
424
+ const formatted = formatCompactionEngineResult(result);
425
+ expect(formatted).toContain('Executed');
426
+ expect(formatted).toContain('Reduction: 37%');
427
+ expect(formatted).toContain('Archived items: 5');
428
+ expect(formatted).toContain('.dino/compacted/test.json');
429
+ });
430
+ });
431
+ describe('getCompactionEngineStats', () => {
432
+ it('should return zero stats when no compactions', async () => {
433
+ const stats = await getCompactionEngineStats(testDir);
434
+ expect(stats.compactionCount).toBe(0);
435
+ expect(stats.totalTokensRecovered).toBe(0);
436
+ expect(stats.totalDecisionsExtracted).toBe(0);
437
+ expect(stats.totalBlockersExtracted).toBe(0);
438
+ expect(stats.latestCompaction).toBeNull();
439
+ });
440
+ it('should calculate correct stats', async () => {
441
+ // Create compactions
442
+ const compaction1 = {
443
+ decisions: [{ text: 'd1', topic: 't', choice: 'c', type: 'decision' }],
444
+ blockers: [{ text: 'b1', status: 'active' }],
445
+ progress: [],
446
+ timestamp: '2026-01-27T10:00:00.000Z',
447
+ sessionId: 'session-1',
448
+ originalTokens: 10000,
449
+ tokensRecovered: 3000,
450
+ };
451
+ const compaction2 = {
452
+ decisions: [
453
+ { text: 'd2', topic: 't', choice: 'c', type: 'decision' },
454
+ { text: 'd3', topic: 't', choice: 'c', type: 'decision' },
455
+ ],
456
+ blockers: [],
457
+ progress: [],
458
+ timestamp: '2026-01-27T11:00:00.000Z',
459
+ sessionId: 'session-2',
460
+ originalTokens: 8000,
461
+ tokensRecovered: 2500,
462
+ };
463
+ await persistStructuredCompaction(compaction1, testDir);
464
+ await persistStructuredCompaction(compaction2, testDir);
465
+ const stats = await getCompactionEngineStats(testDir);
466
+ expect(stats.compactionCount).toBe(2);
467
+ expect(stats.totalTokensRecovered).toBe(5500);
468
+ expect(stats.totalDecisionsExtracted).toBe(3);
469
+ expect(stats.totalBlockersExtracted).toBe(1);
470
+ expect(stats.latestCompaction).toBe('2026-01-27T11:00:00.000Z');
471
+ });
472
+ });
473
+ });
474
+ //# sourceMappingURL=compaction-engine.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compaction-engine.test.js","sourceRoot":"","sources":["../../../../src/core/context/__tests__/compaction-engine.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Output Persistence Tests - v14.0.0
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=output-persistence.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-persistence.test.d.ts","sourceRoot":"","sources":["../../../../src/core/context/__tests__/output-persistence.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}