dartmind 17.0.0 → 17.3.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 (60) hide show
  1. package/dist/cli/InteractiveModeV12.d.ts +4 -0
  2. package/dist/cli/InteractiveModeV12.d.ts.map +1 -1
  3. package/dist/cli/InteractiveModeV12.js +57 -1
  4. package/dist/cli/InteractiveModeV12.js.map +1 -1
  5. package/dist/cli/commands/SlashCommands.d.ts.map +1 -1
  6. package/dist/cli/commands/SlashCommands.js +21 -5
  7. package/dist/cli/commands/SlashCommands.js.map +1 -1
  8. package/dist/core/cost/__tests__/day1.test.d.ts +9 -0
  9. package/dist/core/cost/__tests__/day1.test.d.ts.map +1 -0
  10. package/dist/core/cost/__tests__/day1.test.js +284 -0
  11. package/dist/core/cost/__tests__/day1.test.js.map +1 -0
  12. package/dist/core/cost/__tests__/day2.test.d.ts +9 -0
  13. package/dist/core/cost/__tests__/day2.test.d.ts.map +1 -0
  14. package/dist/core/cost/__tests__/day2.test.js +414 -0
  15. package/dist/core/cost/__tests__/day2.test.js.map +1 -0
  16. package/dist/core/cost/__tests__/day3.test.d.ts +9 -0
  17. package/dist/core/cost/__tests__/day3.test.d.ts.map +1 -0
  18. package/dist/core/cost/__tests__/day3.test.js +415 -0
  19. package/dist/core/cost/__tests__/day3.test.js.map +1 -0
  20. package/dist/core/cost/__tests__/day4.test.d.ts +9 -0
  21. package/dist/core/cost/__tests__/day4.test.d.ts.map +1 -0
  22. package/dist/core/cost/__tests__/day4.test.js +354 -0
  23. package/dist/core/cost/__tests__/day4.test.js.map +1 -0
  24. package/dist/core/cost/context-scaler.d.ts +129 -0
  25. package/dist/core/cost/context-scaler.d.ts.map +1 -0
  26. package/dist/core/cost/context-scaler.js +336 -0
  27. package/dist/core/cost/context-scaler.js.map +1 -0
  28. package/dist/core/cost/index.d.ts +31 -0
  29. package/dist/core/cost/index.d.ts.map +1 -0
  30. package/dist/core/cost/index.js +103 -0
  31. package/dist/core/cost/index.js.map +1 -0
  32. package/dist/core/cost/integration.d.ts +144 -0
  33. package/dist/core/cost/integration.d.ts.map +1 -0
  34. package/dist/core/cost/integration.js +349 -0
  35. package/dist/core/cost/integration.js.map +1 -0
  36. package/dist/core/cost/model-router.d.ts +70 -0
  37. package/dist/core/cost/model-router.d.ts.map +1 -0
  38. package/dist/core/cost/model-router.js +319 -0
  39. package/dist/core/cost/model-router.js.map +1 -0
  40. package/dist/core/cost/prompt-cache.d.ts +98 -0
  41. package/dist/core/cost/prompt-cache.d.ts.map +1 -0
  42. package/dist/core/cost/prompt-cache.js +219 -0
  43. package/dist/core/cost/prompt-cache.js.map +1 -0
  44. package/dist/core/cost/reflex-layer.d.ts +48 -0
  45. package/dist/core/cost/reflex-layer.d.ts.map +1 -0
  46. package/dist/core/cost/reflex-layer.js +295 -0
  47. package/dist/core/cost/reflex-layer.js.map +1 -0
  48. package/dist/core/cost/response-cache.d.ts +139 -0
  49. package/dist/core/cost/response-cache.d.ts.map +1 -0
  50. package/dist/core/cost/response-cache.js +290 -0
  51. package/dist/core/cost/response-cache.js.map +1 -0
  52. package/dist/core/cost/tool-loader.d.ts +94 -0
  53. package/dist/core/cost/tool-loader.d.ts.map +1 -0
  54. package/dist/core/cost/tool-loader.js +233 -0
  55. package/dist/core/cost/tool-loader.js.map +1 -0
  56. package/dist/core/cost/types.d.ts +93 -0
  57. package/dist/core/cost/types.d.ts.map +1 -0
  58. package/dist/core/cost/types.js +29 -0
  59. package/dist/core/cost/types.js.map +1 -0
  60. package/package.json +1 -1
@@ -0,0 +1,415 @@
1
+ /**
2
+ * Day 3 Tests - Context Scaling
3
+ *
4
+ * Run with: npx vitest run src/core/cost/__tests__/day3.test.ts
5
+ *
6
+ * @module cost/__tests__/day3
7
+ */
8
+ import { describe, test, expect } from 'vitest';
9
+ import {
10
+ // Context tier definitions
11
+ CONTEXT_TIERS, INTENT_TIER_MAP,
12
+ // Context determination
13
+ determineContextTier, getTierForIntent, getTier,
14
+ // Context building
15
+ buildContext,
16
+ // Metrics
17
+ calculateContextMetrics, formatContextMetrics, calculateContextSavings,
18
+ // Override detection
19
+ checkTierOverride, getTierDescription,
20
+ // Config
21
+ DEFAULT_SCALER_CONFIG,
22
+ // Integration
23
+ CostOptimizer, MODEL_IDS, } from '../index.js';
24
+ describe('Context Tier Definitions', () => {
25
+ test('all 5 tiers are defined', () => {
26
+ expect(CONTEXT_TIERS[0]).toBeDefined();
27
+ expect(CONTEXT_TIERS[1]).toBeDefined();
28
+ expect(CONTEXT_TIERS[2]).toBeDefined();
29
+ expect(CONTEXT_TIERS[3]).toBeDefined();
30
+ expect(CONTEXT_TIERS[4]).toBeDefined();
31
+ });
32
+ test('tiers have increasing max tokens', () => {
33
+ expect(CONTEXT_TIERS[0].maxTokens).toBe(0);
34
+ expect(CONTEXT_TIERS[1].maxTokens).toBeLessThan(CONTEXT_TIERS[2].maxTokens);
35
+ expect(CONTEXT_TIERS[2].maxTokens).toBeLessThan(CONTEXT_TIERS[3].maxTokens);
36
+ expect(CONTEXT_TIERS[3].maxTokens).toBeLessThan(CONTEXT_TIERS[4].maxTokens);
37
+ });
38
+ test('T0 has no context', () => {
39
+ const t0 = CONTEXT_TIERS[0];
40
+ expect(t0.includeSystemPrompt).toBe(false);
41
+ expect(t0.includeTools).toBe(false);
42
+ expect(t0.includeProjectStructure).toBe(false);
43
+ expect(t0.conversationHistoryLimit).toBe(0);
44
+ });
45
+ test('T4 has full context', () => {
46
+ const t4 = CONTEXT_TIERS[4];
47
+ expect(t4.includeSystemPrompt).toBe(true);
48
+ expect(t4.includeTools).toBe(true);
49
+ expect(t4.includeProjectStructure).toBe(true);
50
+ expect(t4.includeRelevantFiles).toBe(true);
51
+ expect(t4.includePatternLibrary).toBe(true);
52
+ expect(t4.conversationHistoryLimit).toBeGreaterThan(0);
53
+ });
54
+ test('tier names are human-readable', () => {
55
+ expect(CONTEXT_TIERS[0].name).toBe('Zero');
56
+ expect(CONTEXT_TIERS[1].name).toBe('Minimal');
57
+ expect(CONTEXT_TIERS[2].name).toBe('Focused');
58
+ expect(CONTEXT_TIERS[3].name).toBe('Standard');
59
+ expect(CONTEXT_TIERS[4].name).toBe('Full');
60
+ });
61
+ });
62
+ describe('Intent to Tier Mapping', () => {
63
+ test('reflex intents map to T0', () => {
64
+ expect(INTENT_TIER_MAP.greeting).toBe(0);
65
+ expect(INTENT_TIER_MAP.farewell).toBe(0);
66
+ expect(INTENT_TIER_MAP.gibberish).toBe(0);
67
+ expect(INTENT_TIER_MAP.affirmation).toBe(0);
68
+ expect(INTENT_TIER_MAP.command).toBe(0);
69
+ });
70
+ test('simple intents map to T1', () => {
71
+ expect(INTENT_TIER_MAP.simple_qa).toBe(1);
72
+ expect(INTENT_TIER_MAP.search).toBe(1);
73
+ });
74
+ test('read/explain intents map to T2', () => {
75
+ expect(INTENT_TIER_MAP.explain).toBe(2);
76
+ expect(INTENT_TIER_MAP.read).toBe(2);
77
+ expect(INTENT_TIER_MAP.list).toBe(2);
78
+ });
79
+ test('generation intents map to T3', () => {
80
+ expect(INTENT_TIER_MAP.generate).toBe(3);
81
+ expect(INTENT_TIER_MAP.refactor).toBe(3);
82
+ expect(INTENT_TIER_MAP.fix_bug).toBe(3);
83
+ expect(INTENT_TIER_MAP.write_tests).toBe(3);
84
+ });
85
+ test('complex intents map to T4', () => {
86
+ expect(INTENT_TIER_MAP.multi_file).toBe(4);
87
+ expect(INTENT_TIER_MAP.architecture).toBe(4);
88
+ expect(INTENT_TIER_MAP.security).toBe(4);
89
+ expect(INTENT_TIER_MAP.complex).toBe(4);
90
+ });
91
+ test('unknown defaults to T3', () => {
92
+ expect(INTENT_TIER_MAP.unknown).toBe(3);
93
+ });
94
+ });
95
+ describe('Context Tier Determination', () => {
96
+ test('determines tier from classification', () => {
97
+ const classification = {
98
+ intent: 'explain',
99
+ model: 'haiku',
100
+ modelId: MODEL_IDS.haiku,
101
+ confidence: 0.8,
102
+ reason: 'Test'
103
+ };
104
+ const tier = determineContextTier(classification);
105
+ expect(tier.tier).toBe(2); // explain maps to T2
106
+ expect(tier.name).toBe('Focused');
107
+ });
108
+ test('escalates tier on low confidence', () => {
109
+ const classification = {
110
+ intent: 'explain',
111
+ model: 'haiku',
112
+ modelId: MODEL_IDS.haiku,
113
+ confidence: 0.3, // Below 0.5 threshold
114
+ reason: 'Test'
115
+ };
116
+ const tier = determineContextTier(classification, {
117
+ ...DEFAULT_SCALER_CONFIG,
118
+ escalateOnLowConfidence: true,
119
+ confidenceThreshold: 0.5
120
+ });
121
+ // Should escalate from T2 to T3
122
+ expect(tier.tier).toBe(3);
123
+ });
124
+ test('respects minTier bound', () => {
125
+ const classification = {
126
+ intent: 'greeting', // T0
127
+ model: 'haiku',
128
+ modelId: MODEL_IDS.haiku,
129
+ confidence: 1.0,
130
+ reason: 'Test'
131
+ };
132
+ const tier = determineContextTier(classification, {
133
+ ...DEFAULT_SCALER_CONFIG,
134
+ minTier: 2 // Force minimum T2
135
+ });
136
+ expect(tier.tier).toBe(2);
137
+ });
138
+ test('respects maxTier bound', () => {
139
+ const classification = {
140
+ intent: 'architecture', // T4
141
+ model: 'sonnet',
142
+ modelId: MODEL_IDS.sonnet,
143
+ confidence: 1.0,
144
+ reason: 'Test'
145
+ };
146
+ const tier = determineContextTier(classification, {
147
+ ...DEFAULT_SCALER_CONFIG,
148
+ maxTier: 3 // Cap at T3
149
+ });
150
+ expect(tier.tier).toBe(3);
151
+ });
152
+ test('getTierForIntent returns correct tier config', () => {
153
+ const tier = getTierForIntent('generate');
154
+ expect(tier.tier).toBe(3);
155
+ expect(tier.name).toBe('Standard');
156
+ });
157
+ test('getTier returns tier by number', () => {
158
+ const tier = getTier(2);
159
+ expect(tier.tier).toBe(2);
160
+ expect(tier.name).toBe('Focused');
161
+ });
162
+ });
163
+ describe('Context Building', () => {
164
+ const testOptions = {
165
+ systemPrompt: 'System prompt content here',
166
+ tools: 'Tool definitions here',
167
+ projectStructure: 'Project structure here',
168
+ conversationHistory: [
169
+ { role: 'user', content: 'Hello' },
170
+ { role: 'assistant', content: 'Hi there!' },
171
+ { role: 'user', content: 'Help me with code' },
172
+ ],
173
+ relevantFiles: [
174
+ { path: 'lib/main.dart', content: 'void main() {}' },
175
+ { path: 'lib/app.dart', content: 'class App {}' },
176
+ ],
177
+ patternLibrary: 'Pattern library here',
178
+ };
179
+ test('T1 includes only system prompt and limited history', () => {
180
+ const tierConfig = CONTEXT_TIERS[1];
181
+ const result = buildContext(tierConfig, testOptions);
182
+ expect(result.includedComponents).toContain('systemPrompt');
183
+ expect(result.includedComponents).not.toContain('tools');
184
+ expect(result.includedComponents).not.toContain('projectStructure');
185
+ expect(result.tier).toBe(1);
186
+ });
187
+ test('T2 includes tools and relevant files', () => {
188
+ const tierConfig = CONTEXT_TIERS[2];
189
+ const result = buildContext(tierConfig, testOptions);
190
+ expect(result.includedComponents).toContain('systemPrompt');
191
+ expect(result.includedComponents).toContain('tools');
192
+ expect(result.includedComponents.some(c => c.startsWith('file:'))).toBe(true);
193
+ expect(result.tier).toBe(2);
194
+ });
195
+ test('T3 includes project structure and pattern library', () => {
196
+ const tierConfig = CONTEXT_TIERS[3];
197
+ const result = buildContext(tierConfig, testOptions);
198
+ expect(result.includedComponents).toContain('projectStructure');
199
+ expect(result.includedComponents).toContain('patternLibrary');
200
+ expect(result.tier).toBe(3);
201
+ });
202
+ test('T4 includes everything', () => {
203
+ const tierConfig = CONTEXT_TIERS[4];
204
+ const result = buildContext(tierConfig, testOptions);
205
+ expect(result.includedComponents).toContain('systemPrompt');
206
+ expect(result.includedComponents).toContain('tools');
207
+ expect(result.includedComponents).toContain('projectStructure');
208
+ expect(result.includedComponents).toContain('patternLibrary');
209
+ expect(result.tier).toBe(4);
210
+ });
211
+ test('respects token limits', () => {
212
+ const tierConfig = CONTEXT_TIERS[1]; // 1024 tokens max
213
+ const largeOptions = {
214
+ ...testOptions,
215
+ systemPrompt: 'x'.repeat(5000), // ~1250 tokens, exceeds limit
216
+ };
217
+ const result = buildContext(tierConfig, largeOptions);
218
+ expect(result.tokenEstimate).toBeLessThanOrEqual(tierConfig.maxTokens);
219
+ });
220
+ test('returns token estimate', () => {
221
+ const tierConfig = CONTEXT_TIERS[3];
222
+ const result = buildContext(tierConfig, testOptions);
223
+ expect(result.tokenEstimate).toBeGreaterThan(0);
224
+ expect(typeof result.tokenEstimate).toBe('number');
225
+ });
226
+ });
227
+ describe('Context Metrics', () => {
228
+ test('calculateContextMetrics returns correct values', () => {
229
+ const builtContext = {
230
+ content: 'test content',
231
+ tokenEstimate: 2000,
232
+ includedComponents: ['systemPrompt', 'tools', 'file:main.dart'],
233
+ tier: 3,
234
+ };
235
+ const metrics = calculateContextMetrics(builtContext, 5);
236
+ expect(metrics.tier).toBe(3);
237
+ expect(metrics.tierName).toBe('Standard');
238
+ expect(metrics.actualTokens).toBe(2000);
239
+ expect(metrics.maxTokens).toBe(16384);
240
+ expect(metrics.utilizationPercent).toBeCloseTo(12.2, 0);
241
+ expect(metrics.componentsIncluded).toBe(3);
242
+ expect(metrics.componentsAvailable).toBe(5);
243
+ });
244
+ test('formatContextMetrics returns formatted string', () => {
245
+ const metrics = {
246
+ tier: 3,
247
+ tierName: 'Standard',
248
+ maxTokens: 16384,
249
+ actualTokens: 2000,
250
+ utilizationPercent: 12.2,
251
+ componentsIncluded: 3,
252
+ componentsAvailable: 5,
253
+ };
254
+ const formatted = formatContextMetrics(metrics);
255
+ expect(formatted).toContain('T3');
256
+ expect(formatted).toContain('Standard');
257
+ expect(formatted).toContain('2,000');
258
+ expect(formatted).toContain('16,384');
259
+ expect(formatted).toContain('12.2%');
260
+ expect(formatted).toContain('3/5');
261
+ });
262
+ });
263
+ describe('Context Savings', () => {
264
+ test('calculates savings for lower tier vs T4', () => {
265
+ const savings = calculateContextSavings(1, 4);
266
+ expect(savings.actualTokens).toBeLessThan(savings.defaultTokens);
267
+ expect(savings.savings).toBeGreaterThan(0);
268
+ expect(savings.savingsPercent).toBeGreaterThan(95); // T1 is ~98% less than T4
269
+ });
270
+ test('T4 vs T4 has zero savings', () => {
271
+ const savings = calculateContextSavings(4, 4);
272
+ expect(savings.savings).toBe(0);
273
+ expect(savings.savingsPercent).toBe(0);
274
+ });
275
+ test('calculates dollar savings based on cost', () => {
276
+ const savings = calculateContextSavings(1, 4, 3.00); // Sonnet price
277
+ expect(savings.savings).toBeGreaterThan(0);
278
+ expect(typeof savings.savings).toBe('number');
279
+ });
280
+ });
281
+ describe('Tier Override Detection', () => {
282
+ test('detects /t0-/t4 prefixes', () => {
283
+ expect(checkTierOverride('/t1 explain this')).toEqual({ tier: 1, query: 'explain this' });
284
+ expect(checkTierOverride('/t2 read file')).toEqual({ tier: 2, query: 'read file' });
285
+ expect(checkTierOverride('/t3 generate code')).toEqual({ tier: 3, query: 'generate code' });
286
+ expect(checkTierOverride('/t4 architecture')).toEqual({ tier: 4, query: 'architecture' });
287
+ });
288
+ test('detects named tier prefixes', () => {
289
+ expect(checkTierOverride('/minimal explain this')).toEqual({ tier: 1, query: 'explain this' });
290
+ expect(checkTierOverride('/focused read file')).toEqual({ tier: 2, query: 'read file' });
291
+ expect(checkTierOverride('/standard generate')).toEqual({ tier: 3, query: 'generate' });
292
+ expect(checkTierOverride('/full architecture')).toEqual({ tier: 4, query: 'architecture' });
293
+ });
294
+ test('returns null for no override', () => {
295
+ expect(checkTierOverride('just a normal query')).toBeNull();
296
+ expect(checkTierOverride('create a widget')).toBeNull();
297
+ });
298
+ test('is case insensitive', () => {
299
+ expect(checkTierOverride('/T2 test')).toEqual({ tier: 2, query: 'test' });
300
+ expect(checkTierOverride('/MINIMAL test')).toEqual({ tier: 1, query: 'test' });
301
+ });
302
+ });
303
+ describe('Tier Description', () => {
304
+ test('getTierDescription returns descriptive string', () => {
305
+ const desc = getTierDescription(3);
306
+ expect(desc).toContain('T3');
307
+ expect(desc).toContain('Standard');
308
+ expect(desc).toContain('16,384');
309
+ expect(desc).toContain('system prompt');
310
+ expect(desc).toContain('tools');
311
+ });
312
+ test('T0 description shows none', () => {
313
+ const desc = getTierDescription(0);
314
+ expect(desc).toContain('none');
315
+ });
316
+ });
317
+ describe('CostOptimizer Context Scaling Integration', () => {
318
+ test('processInput includes context tier when enabled', () => {
319
+ const optimizer = new CostOptimizer({
320
+ debug: false,
321
+ enableModelRouting: true,
322
+ enableContextScaling: true
323
+ });
324
+ const result = optimizer.processInput('explain how this works');
325
+ expect(result.contextTier).toBeDefined();
326
+ expect(result.contextTier?.tier).toBe(2); // explain -> T2
327
+ expect(result.contextTier?.name).toBe('Focused');
328
+ });
329
+ test('processInput respects tier override', () => {
330
+ const optimizer = new CostOptimizer({
331
+ debug: false,
332
+ enableModelRouting: true,
333
+ enableContextScaling: true
334
+ });
335
+ const result = optimizer.processInput('/t4 explain this');
336
+ expect(result.contextTier).toBeDefined();
337
+ expect(result.contextTier?.tier).toBe(4); // Overridden to T4
338
+ expect(result.query).toBe('explain this'); // Query stripped of override
339
+ });
340
+ test('processInput skips context scaling when disabled', () => {
341
+ const optimizer = new CostOptimizer({
342
+ debug: false,
343
+ enableModelRouting: true,
344
+ enableContextScaling: false
345
+ });
346
+ const result = optimizer.processInput('explain how this works');
347
+ expect(result.contextTier).toBeUndefined();
348
+ });
349
+ test('tracks tier usage', () => {
350
+ const optimizer = new CostOptimizer({
351
+ debug: false,
352
+ enableModelRouting: true,
353
+ enableContextScaling: true
354
+ }, {}, {
355
+ // Disable escalation so we can test exact tier mapping
356
+ escalateOnLowConfidence: false
357
+ });
358
+ // Process different queries that should use different tiers
359
+ // Using queries verified in Day 2 tests
360
+ optimizer.processInput('find the main file'); // T1 (search -> Haiku)
361
+ optimizer.processInput('explain how this works'); // T2 (explain -> Haiku)
362
+ optimizer.processInput('create a login screen'); // T3 (generate -> Sonnet)
363
+ optimizer.processInput('design the app architecture'); // T4 (architecture -> Sonnet)
364
+ const tierCounts = optimizer.getTierCounts();
365
+ expect(tierCounts[1]).toBeGreaterThan(0); // At least one T1 (search)
366
+ expect(tierCounts[2]).toBeGreaterThan(0); // At least one T2 (explain)
367
+ expect(tierCounts[3]).toBeGreaterThan(0); // At least one T3 (generate)
368
+ expect(tierCounts[4]).toBeGreaterThan(0); // At least one T4 (architecture)
369
+ });
370
+ test('scaler config can be updated', () => {
371
+ const optimizer = new CostOptimizer({
372
+ debug: false,
373
+ enableContextScaling: true
374
+ });
375
+ optimizer.updateScalerConfig({ maxTier: 2 });
376
+ const config = optimizer.getScalerConfig();
377
+ expect(config.maxTier).toBe(2);
378
+ });
379
+ test('formatMetrics includes tier counts', () => {
380
+ const optimizer = new CostOptimizer({
381
+ debug: false,
382
+ enableModelRouting: true,
383
+ enableContextScaling: true
384
+ });
385
+ optimizer.processInput('explain this'); // T2
386
+ const formatted = optimizer.formatMetrics();
387
+ expect(formatted).toContain('Tiers:');
388
+ expect(formatted).toContain('T0:');
389
+ expect(formatted).toContain('T2:');
390
+ });
391
+ test('resetMetrics clears tier counts', () => {
392
+ const optimizer = new CostOptimizer({
393
+ debug: false,
394
+ enableModelRouting: true,
395
+ enableContextScaling: true
396
+ });
397
+ optimizer.processInput('explain this');
398
+ optimizer.resetMetrics();
399
+ const tierCounts = optimizer.getTierCounts();
400
+ expect(Object.values(tierCounts).every(c => c === 0)).toBe(true);
401
+ });
402
+ });
403
+ describe('Context Scaling Savings Scenarios', () => {
404
+ test('simple Q&A uses less context than code generation', () => {
405
+ const qaResult = calculateContextSavings(1, 4); // T1 vs T4
406
+ const codeResult = calculateContextSavings(3, 4); // T3 vs T4
407
+ expect(qaResult.savingsPercent).toBeGreaterThan(codeResult.savingsPercent);
408
+ });
409
+ test('explanation uses less context than multi-file', () => {
410
+ const explainResult = calculateContextSavings(2, 4); // T2 vs T4
411
+ const multiFileResult = calculateContextSavings(4, 4); // T4 vs T4
412
+ expect(explainResult.savingsPercent).toBeGreaterThan(multiFileResult.savingsPercent);
413
+ });
414
+ });
415
+ //# sourceMappingURL=day3.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"day3.test.js","sourceRoot":"","sources":["../../../../src/core/cost/__tests__/day3.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Day 4 Tests - Tool Loading + Response Cache
3
+ *
4
+ * Run with: npx vitest run src/core/cost/__tests__/day4.test.ts
5
+ *
6
+ * @module cost/__tests__/day4
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=day4.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"day4.test.d.ts","sourceRoot":"","sources":["../../../../src/core/cost/__tests__/day4.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}