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.
- package/dist/cli/InteractiveModeV12.d.ts +4 -0
- package/dist/cli/InteractiveModeV12.d.ts.map +1 -1
- package/dist/cli/InteractiveModeV12.js +57 -1
- package/dist/cli/InteractiveModeV12.js.map +1 -1
- package/dist/cli/commands/SlashCommands.d.ts.map +1 -1
- package/dist/cli/commands/SlashCommands.js +21 -5
- package/dist/cli/commands/SlashCommands.js.map +1 -1
- package/dist/core/cost/__tests__/day1.test.d.ts +9 -0
- package/dist/core/cost/__tests__/day1.test.d.ts.map +1 -0
- package/dist/core/cost/__tests__/day1.test.js +284 -0
- package/dist/core/cost/__tests__/day1.test.js.map +1 -0
- package/dist/core/cost/__tests__/day2.test.d.ts +9 -0
- package/dist/core/cost/__tests__/day2.test.d.ts.map +1 -0
- package/dist/core/cost/__tests__/day2.test.js +414 -0
- package/dist/core/cost/__tests__/day2.test.js.map +1 -0
- package/dist/core/cost/__tests__/day3.test.d.ts +9 -0
- package/dist/core/cost/__tests__/day3.test.d.ts.map +1 -0
- package/dist/core/cost/__tests__/day3.test.js +415 -0
- package/dist/core/cost/__tests__/day3.test.js.map +1 -0
- package/dist/core/cost/__tests__/day4.test.d.ts +9 -0
- package/dist/core/cost/__tests__/day4.test.d.ts.map +1 -0
- package/dist/core/cost/__tests__/day4.test.js +354 -0
- package/dist/core/cost/__tests__/day4.test.js.map +1 -0
- package/dist/core/cost/context-scaler.d.ts +129 -0
- package/dist/core/cost/context-scaler.d.ts.map +1 -0
- package/dist/core/cost/context-scaler.js +336 -0
- package/dist/core/cost/context-scaler.js.map +1 -0
- package/dist/core/cost/index.d.ts +31 -0
- package/dist/core/cost/index.d.ts.map +1 -0
- package/dist/core/cost/index.js +103 -0
- package/dist/core/cost/index.js.map +1 -0
- package/dist/core/cost/integration.d.ts +144 -0
- package/dist/core/cost/integration.d.ts.map +1 -0
- package/dist/core/cost/integration.js +349 -0
- package/dist/core/cost/integration.js.map +1 -0
- package/dist/core/cost/model-router.d.ts +70 -0
- package/dist/core/cost/model-router.d.ts.map +1 -0
- package/dist/core/cost/model-router.js +319 -0
- package/dist/core/cost/model-router.js.map +1 -0
- package/dist/core/cost/prompt-cache.d.ts +98 -0
- package/dist/core/cost/prompt-cache.d.ts.map +1 -0
- package/dist/core/cost/prompt-cache.js +219 -0
- package/dist/core/cost/prompt-cache.js.map +1 -0
- package/dist/core/cost/reflex-layer.d.ts +48 -0
- package/dist/core/cost/reflex-layer.d.ts.map +1 -0
- package/dist/core/cost/reflex-layer.js +295 -0
- package/dist/core/cost/reflex-layer.js.map +1 -0
- package/dist/core/cost/response-cache.d.ts +139 -0
- package/dist/core/cost/response-cache.d.ts.map +1 -0
- package/dist/core/cost/response-cache.js +290 -0
- package/dist/core/cost/response-cache.js.map +1 -0
- package/dist/core/cost/tool-loader.d.ts +94 -0
- package/dist/core/cost/tool-loader.d.ts.map +1 -0
- package/dist/core/cost/tool-loader.js +233 -0
- package/dist/core/cost/tool-loader.js.map +1 -0
- package/dist/core/cost/types.d.ts +93 -0
- package/dist/core/cost/types.d.ts.map +1 -0
- package/dist/core/cost/types.js +29 -0
- package/dist/core/cost/types.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,354 @@
|
|
|
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
|
+
import { describe, test, expect, beforeEach } from 'vitest';
|
|
9
|
+
import {
|
|
10
|
+
// Tool Loading
|
|
11
|
+
TOOL_GROUPS, ALL_TOOLS, INTENT_TOOLS_MAP, getToolsForIntent, getToolsForIntents, getAllTools, getToolsFromGroups, calculateToolMetrics, formatToolMetrics, checkAllToolsOverride, checkToolGroupOverride, describeTools, DEFAULT_TOOL_CONFIG,
|
|
12
|
+
// Response Cache
|
|
13
|
+
ResponseCache, responseCache, getCachedResponse, cacheResponse, isIntentCacheable, invalidateCacheForFile, checkNoCacheOverride, checkClearCacheCommand, UNCACHEABLE_INTENTS, DEFAULT_RESPONSE_CACHE_CONFIG, } from '../index.js';
|
|
14
|
+
// ═══════════════════════════════════════════════════════════════
|
|
15
|
+
// TOOL LOADING TESTS
|
|
16
|
+
// ═══════════════════════════════════════════════════════════════
|
|
17
|
+
describe('Tool Definitions', () => {
|
|
18
|
+
test('all tool groups are defined', () => {
|
|
19
|
+
expect(TOOL_GROUPS.core).toBeDefined();
|
|
20
|
+
expect(TOOL_GROUPS.analysis).toBeDefined();
|
|
21
|
+
expect(TOOL_GROUPS.generation).toBeDefined();
|
|
22
|
+
expect(TOOL_GROUPS.testing).toBeDefined();
|
|
23
|
+
expect(TOOL_GROUPS.mcp).toBeDefined();
|
|
24
|
+
expect(TOOL_GROUPS.web).toBeDefined();
|
|
25
|
+
});
|
|
26
|
+
test('core tools include essentials', () => {
|
|
27
|
+
expect(TOOL_GROUPS.core).toContain('Read');
|
|
28
|
+
expect(TOOL_GROUPS.core).toContain('Bash');
|
|
29
|
+
});
|
|
30
|
+
test('generation tools include write/edit', () => {
|
|
31
|
+
expect(TOOL_GROUPS.generation).toContain('Write');
|
|
32
|
+
expect(TOOL_GROUPS.generation).toContain('Edit');
|
|
33
|
+
});
|
|
34
|
+
test('ALL_TOOLS contains all unique tools', () => {
|
|
35
|
+
expect(ALL_TOOLS.length).toBeGreaterThan(10);
|
|
36
|
+
expect(new Set(ALL_TOOLS).size).toBe(ALL_TOOLS.length);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
describe('Intent to Tools Mapping', () => {
|
|
40
|
+
test('reflex intents have no tools', () => {
|
|
41
|
+
expect(INTENT_TOOLS_MAP.greeting).toEqual([]);
|
|
42
|
+
expect(INTENT_TOOLS_MAP.farewell).toEqual([]);
|
|
43
|
+
expect(INTENT_TOOLS_MAP.gibberish).toEqual([]);
|
|
44
|
+
});
|
|
45
|
+
test('simple intents have core tools only', () => {
|
|
46
|
+
expect(INTENT_TOOLS_MAP.simple_qa).toContain('core');
|
|
47
|
+
expect(INTENT_TOOLS_MAP.simple_qa.length).toBeLessThanOrEqual(2);
|
|
48
|
+
});
|
|
49
|
+
test('generation intents have mcp tools', () => {
|
|
50
|
+
expect(INTENT_TOOLS_MAP.generate).toContain('mcp');
|
|
51
|
+
expect(INTENT_TOOLS_MAP.refactor).toContain('mcp');
|
|
52
|
+
expect(INTENT_TOOLS_MAP.fix_bug).toContain('mcp');
|
|
53
|
+
});
|
|
54
|
+
test('complex intents have many tool groups', () => {
|
|
55
|
+
expect(INTENT_TOOLS_MAP.complex.length).toBeGreaterThan(3);
|
|
56
|
+
expect(INTENT_TOOLS_MAP.architecture.length).toBeGreaterThan(3);
|
|
57
|
+
});
|
|
58
|
+
test('unknown gets many tools', () => {
|
|
59
|
+
expect(INTENT_TOOLS_MAP.unknown.length).toBeGreaterThan(3);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
describe('Tool Loading Functions', () => {
|
|
63
|
+
test('getToolsForIntent returns tools for simple_qa', () => {
|
|
64
|
+
const tools = getToolsForIntent('simple_qa');
|
|
65
|
+
expect(tools).toContain('Read'); // Core tool
|
|
66
|
+
expect(tools).toContain('Bash'); // Core tool
|
|
67
|
+
expect(tools.length).toBeLessThan(ALL_TOOLS.length);
|
|
68
|
+
});
|
|
69
|
+
test('getToolsForIntent returns more tools for generate', () => {
|
|
70
|
+
const simpleTools = getToolsForIntent('simple_qa');
|
|
71
|
+
const genTools = getToolsForIntent('generate');
|
|
72
|
+
expect(genTools.length).toBeGreaterThan(simpleTools.length);
|
|
73
|
+
expect(genTools).toContain('Write');
|
|
74
|
+
expect(genTools).toContain('Edit');
|
|
75
|
+
});
|
|
76
|
+
test('getToolsForIntent always includes core tools', () => {
|
|
77
|
+
const tools = getToolsForIntent('explain');
|
|
78
|
+
expect(tools).toContain('Read');
|
|
79
|
+
expect(tools).toContain('Bash');
|
|
80
|
+
});
|
|
81
|
+
test('getToolsForIntent can disable MCP tools', () => {
|
|
82
|
+
const withMcp = getToolsForIntent('generate', {
|
|
83
|
+
...DEFAULT_TOOL_CONFIG,
|
|
84
|
+
enableMcpTools: true,
|
|
85
|
+
});
|
|
86
|
+
const withoutMcp = getToolsForIntent('generate', {
|
|
87
|
+
...DEFAULT_TOOL_CONFIG,
|
|
88
|
+
enableMcpTools: false,
|
|
89
|
+
});
|
|
90
|
+
expect(withMcp.some(t => t.startsWith('mcp__'))).toBe(true);
|
|
91
|
+
expect(withoutMcp.some(t => t.startsWith('mcp__'))).toBe(false);
|
|
92
|
+
});
|
|
93
|
+
test('getAllTools returns all tools', () => {
|
|
94
|
+
const tools = getAllTools();
|
|
95
|
+
expect(tools.length).toBe(ALL_TOOLS.length);
|
|
96
|
+
});
|
|
97
|
+
test('getToolsForIntents returns union of tools', () => {
|
|
98
|
+
const explainTools = getToolsForIntent('explain');
|
|
99
|
+
const genTools = getToolsForIntent('generate');
|
|
100
|
+
const unionTools = getToolsForIntents(['explain', 'generate']);
|
|
101
|
+
expect(unionTools.length).toBeGreaterThanOrEqual(explainTools.length);
|
|
102
|
+
expect(unionTools.length).toBeGreaterThanOrEqual(genTools.length);
|
|
103
|
+
});
|
|
104
|
+
test('getToolsFromGroups returns tools from specified groups', () => {
|
|
105
|
+
const tools = getToolsFromGroups(['core', 'analysis']);
|
|
106
|
+
expect(tools).toContain('Read');
|
|
107
|
+
expect(tools).toContain('Grep');
|
|
108
|
+
expect(tools).toContain('Glob');
|
|
109
|
+
expect(tools).not.toContain('Write');
|
|
110
|
+
});
|
|
111
|
+
test('respects maxTools limit', () => {
|
|
112
|
+
const tools = getToolsForIntent('complex', {
|
|
113
|
+
...DEFAULT_TOOL_CONFIG,
|
|
114
|
+
maxTools: 3,
|
|
115
|
+
});
|
|
116
|
+
expect(tools.length).toBeLessThanOrEqual(3);
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
describe('Tool Metrics', () => {
|
|
120
|
+
test('calculateToolMetrics returns correct values', () => {
|
|
121
|
+
const tools = getToolsForIntent('simple_qa');
|
|
122
|
+
const metrics = calculateToolMetrics(tools);
|
|
123
|
+
expect(metrics.toolsLoaded).toBe(tools.length);
|
|
124
|
+
expect(metrics.toolsAvailable).toBe(ALL_TOOLS.length);
|
|
125
|
+
expect(metrics.tokensEstimate).toBeGreaterThan(0);
|
|
126
|
+
expect(metrics.savingsPercent).toBeGreaterThan(0);
|
|
127
|
+
});
|
|
128
|
+
test('fewer tools = more savings', () => {
|
|
129
|
+
const simpleMetrics = calculateToolMetrics(getToolsForIntent('simple_qa'));
|
|
130
|
+
const complexMetrics = calculateToolMetrics(getToolsForIntent('complex'));
|
|
131
|
+
expect(simpleMetrics.savingsPercent).toBeGreaterThan(complexMetrics.savingsPercent);
|
|
132
|
+
});
|
|
133
|
+
test('formatToolMetrics returns formatted string', () => {
|
|
134
|
+
const metrics = calculateToolMetrics(getToolsForIntent('simple_qa'));
|
|
135
|
+
const formatted = formatToolMetrics(metrics);
|
|
136
|
+
expect(formatted).toContain('Tools:');
|
|
137
|
+
expect(formatted).toContain('tokens');
|
|
138
|
+
expect(formatted).toContain('saved');
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
describe('Tool Override Detection', () => {
|
|
142
|
+
test('checkAllToolsOverride detects /all-tools', () => {
|
|
143
|
+
const result = checkAllToolsOverride('/all-tools explain this');
|
|
144
|
+
expect(result).not.toBeNull();
|
|
145
|
+
expect(result?.override).toBe(true);
|
|
146
|
+
expect(result?.query).toBe('explain this');
|
|
147
|
+
});
|
|
148
|
+
test('checkAllToolsOverride detects /full-tools', () => {
|
|
149
|
+
const result = checkAllToolsOverride('/full-tools generate code');
|
|
150
|
+
expect(result).not.toBeNull();
|
|
151
|
+
expect(result?.override).toBe(true);
|
|
152
|
+
expect(result?.query).toBe('generate code');
|
|
153
|
+
});
|
|
154
|
+
test('checkAllToolsOverride returns null for no override', () => {
|
|
155
|
+
expect(checkAllToolsOverride('just a query')).toBeNull();
|
|
156
|
+
});
|
|
157
|
+
test('checkToolGroupOverride detects /tools:groups', () => {
|
|
158
|
+
const result = checkToolGroupOverride('/tools:core,analysis explain this');
|
|
159
|
+
expect(result).not.toBeNull();
|
|
160
|
+
expect(result?.groups).toContain('core');
|
|
161
|
+
expect(result?.groups).toContain('analysis');
|
|
162
|
+
expect(result?.query).toBe('explain this');
|
|
163
|
+
});
|
|
164
|
+
test('checkToolGroupOverride ignores invalid groups', () => {
|
|
165
|
+
const result = checkToolGroupOverride('/tools:invalid explain');
|
|
166
|
+
expect(result).toBeNull();
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
describe('Tool Description', () => {
|
|
170
|
+
test('describeTools returns description', () => {
|
|
171
|
+
const tools = getToolsForIntent('generate');
|
|
172
|
+
const desc = describeTools(tools);
|
|
173
|
+
expect(desc).toContain('tools');
|
|
174
|
+
expect(desc).toContain('core');
|
|
175
|
+
expect(desc).toContain('generation');
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
// ═══════════════════════════════════════════════════════════════
|
|
179
|
+
// RESPONSE CACHE TESTS
|
|
180
|
+
// ═══════════════════════════════════════════════════════════════
|
|
181
|
+
describe('Response Cache Configuration', () => {
|
|
182
|
+
test('DEFAULT_RESPONSE_CACHE_CONFIG is defined', () => {
|
|
183
|
+
expect(DEFAULT_RESPONSE_CACHE_CONFIG).toBeDefined();
|
|
184
|
+
expect(DEFAULT_RESPONSE_CACHE_CONFIG.enabled).toBe(true);
|
|
185
|
+
expect(DEFAULT_RESPONSE_CACHE_CONFIG.maxEntries).toBeGreaterThan(0);
|
|
186
|
+
expect(DEFAULT_RESPONSE_CACHE_CONFIG.ttlMs).toBeGreaterThan(0);
|
|
187
|
+
});
|
|
188
|
+
test('cacheable intents are defined', () => {
|
|
189
|
+
expect(DEFAULT_RESPONSE_CACHE_CONFIG.cacheableIntents).toContain('explain');
|
|
190
|
+
expect(DEFAULT_RESPONSE_CACHE_CONFIG.cacheableIntents).toContain('search');
|
|
191
|
+
expect(DEFAULT_RESPONSE_CACHE_CONFIG.cacheableIntents).toContain('simple_qa');
|
|
192
|
+
});
|
|
193
|
+
test('UNCACHEABLE_INTENTS excludes generation', () => {
|
|
194
|
+
expect(UNCACHEABLE_INTENTS).toContain('generate');
|
|
195
|
+
expect(UNCACHEABLE_INTENTS).toContain('refactor');
|
|
196
|
+
expect(UNCACHEABLE_INTENTS).toContain('fix_bug');
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
describe('Response Cache Class', () => {
|
|
200
|
+
let cache;
|
|
201
|
+
beforeEach(() => {
|
|
202
|
+
cache = new ResponseCache();
|
|
203
|
+
});
|
|
204
|
+
test('can set and get cached responses', () => {
|
|
205
|
+
cache.set('what is flutter?', 'Flutter is a UI toolkit.', 'explain');
|
|
206
|
+
const result = cache.get('what is flutter?', 'explain');
|
|
207
|
+
expect(result).toBe('Flutter is a UI toolkit.');
|
|
208
|
+
});
|
|
209
|
+
test('returns undefined for cache miss', () => {
|
|
210
|
+
const result = cache.get('unknown query', 'explain');
|
|
211
|
+
expect(result).toBeUndefined();
|
|
212
|
+
});
|
|
213
|
+
test('does not cache uncacheable intents', () => {
|
|
214
|
+
cache.set('create a widget', 'code here', 'generate');
|
|
215
|
+
const result = cache.get('create a widget', 'generate');
|
|
216
|
+
expect(result).toBeUndefined();
|
|
217
|
+
});
|
|
218
|
+
test('cache is case-insensitive', () => {
|
|
219
|
+
cache.set('What is Flutter?', 'Answer here.', 'explain');
|
|
220
|
+
const result = cache.get('what is flutter?', 'explain');
|
|
221
|
+
expect(result).toBe('Answer here.');
|
|
222
|
+
});
|
|
223
|
+
test('clears cache', () => {
|
|
224
|
+
cache.set('query1', 'response1', 'explain');
|
|
225
|
+
cache.set('query2', 'response2', 'explain');
|
|
226
|
+
cache.clear();
|
|
227
|
+
expect(cache.get('query1', 'explain')).toBeUndefined();
|
|
228
|
+
expect(cache.get('query2', 'explain')).toBeUndefined();
|
|
229
|
+
});
|
|
230
|
+
test('invalidateForFile removes relevant entries', () => {
|
|
231
|
+
cache.set('explain main.dart', 'response about main.dart', 'explain');
|
|
232
|
+
cache.set('what is widget?', 'widgets are...', 'explain');
|
|
233
|
+
cache.invalidateForFile('main.dart');
|
|
234
|
+
expect(cache.get('explain main.dart', 'explain')).toBeUndefined();
|
|
235
|
+
expect(cache.get('what is widget?', 'explain')).toBe('widgets are...');
|
|
236
|
+
});
|
|
237
|
+
test('tracks statistics', () => {
|
|
238
|
+
cache.set('query', 'response', 'explain');
|
|
239
|
+
cache.get('query', 'explain'); // Hit
|
|
240
|
+
cache.get('unknown', 'explain'); // Miss
|
|
241
|
+
const stats = cache.getStats();
|
|
242
|
+
expect(stats.hits).toBe(1);
|
|
243
|
+
expect(stats.misses).toBe(1);
|
|
244
|
+
expect(stats.hitRate).toBe(50);
|
|
245
|
+
});
|
|
246
|
+
test('formatStats returns formatted string', () => {
|
|
247
|
+
cache.set('query', 'response', 'explain');
|
|
248
|
+
cache.get('query', 'explain');
|
|
249
|
+
const formatted = cache.formatStats();
|
|
250
|
+
expect(formatted).toContain('hits');
|
|
251
|
+
expect(formatted).toContain('entries');
|
|
252
|
+
expect(formatted).toContain('hit rate');
|
|
253
|
+
});
|
|
254
|
+
test('evicts LRU when at capacity', () => {
|
|
255
|
+
const smallCache = new ResponseCache({ maxEntries: 2 });
|
|
256
|
+
smallCache.set('query1', 'response1', 'explain');
|
|
257
|
+
smallCache.set('query2', 'response2', 'explain');
|
|
258
|
+
smallCache.get('query1', 'explain'); // Make query1 more recently used
|
|
259
|
+
smallCache.set('query3', 'response3', 'explain'); // Should evict query2
|
|
260
|
+
expect(smallCache.get('query1', 'explain')).toBe('response1');
|
|
261
|
+
expect(smallCache.get('query2', 'explain')).toBeUndefined();
|
|
262
|
+
expect(smallCache.get('query3', 'explain')).toBe('response3');
|
|
263
|
+
});
|
|
264
|
+
test('respects disabled config', () => {
|
|
265
|
+
const disabledCache = new ResponseCache({ enabled: false });
|
|
266
|
+
disabledCache.set('query', 'response', 'explain');
|
|
267
|
+
const result = disabledCache.get('query', 'explain');
|
|
268
|
+
expect(result).toBeUndefined();
|
|
269
|
+
});
|
|
270
|
+
test('isCacheableIntent returns correct values', () => {
|
|
271
|
+
expect(cache.isCacheableIntent('explain')).toBe(true);
|
|
272
|
+
expect(cache.isCacheableIntent('generate')).toBe(false);
|
|
273
|
+
expect(cache.isCacheableIntent('fix_bug')).toBe(false);
|
|
274
|
+
});
|
|
275
|
+
});
|
|
276
|
+
describe('Response Cache Singleton', () => {
|
|
277
|
+
beforeEach(() => {
|
|
278
|
+
responseCache.clear();
|
|
279
|
+
responseCache.resetStats();
|
|
280
|
+
});
|
|
281
|
+
test('convenience functions work', () => {
|
|
282
|
+
cacheResponse('what is flutter?', 'Flutter is...', 'explain');
|
|
283
|
+
const result = getCachedResponse('what is flutter?', 'explain');
|
|
284
|
+
expect(result).toBe('Flutter is...');
|
|
285
|
+
});
|
|
286
|
+
test('isIntentCacheable checks correctly', () => {
|
|
287
|
+
expect(isIntentCacheable('explain')).toBe(true);
|
|
288
|
+
expect(isIntentCacheable('generate')).toBe(false);
|
|
289
|
+
});
|
|
290
|
+
test('invalidateCacheForFile works', () => {
|
|
291
|
+
cacheResponse('about main.dart', 'response', 'explain');
|
|
292
|
+
invalidateCacheForFile('main.dart');
|
|
293
|
+
expect(getCachedResponse('about main.dart', 'explain')).toBeUndefined();
|
|
294
|
+
});
|
|
295
|
+
});
|
|
296
|
+
describe('Cache Override Detection', () => {
|
|
297
|
+
test('checkNoCacheOverride detects /no-cache', () => {
|
|
298
|
+
const result = checkNoCacheOverride('/no-cache explain this');
|
|
299
|
+
expect(result).not.toBeNull();
|
|
300
|
+
expect(result?.bypass).toBe(true);
|
|
301
|
+
expect(result?.query).toBe('explain this');
|
|
302
|
+
});
|
|
303
|
+
test('checkNoCacheOverride detects /fresh', () => {
|
|
304
|
+
const result = checkNoCacheOverride('/fresh explain this');
|
|
305
|
+
expect(result).not.toBeNull();
|
|
306
|
+
expect(result?.bypass).toBe(true);
|
|
307
|
+
expect(result?.query).toBe('explain this');
|
|
308
|
+
});
|
|
309
|
+
test('checkNoCacheOverride returns null for no override', () => {
|
|
310
|
+
expect(checkNoCacheOverride('just a query')).toBeNull();
|
|
311
|
+
});
|
|
312
|
+
test('checkClearCacheCommand detects /clear-cache', () => {
|
|
313
|
+
expect(checkClearCacheCommand('/clear-cache')).toBe(true);
|
|
314
|
+
expect(checkClearCacheCommand('/clear-cache ')).toBe(true);
|
|
315
|
+
expect(checkClearCacheCommand('clear cache')).toBe(false);
|
|
316
|
+
});
|
|
317
|
+
});
|
|
318
|
+
describe('Cache TTL', () => {
|
|
319
|
+
test('expired entries are not returned', async () => {
|
|
320
|
+
const shortTtlCache = new ResponseCache({ ttlMs: 50 }); // 50ms TTL
|
|
321
|
+
shortTtlCache.set('query', 'response', 'explain');
|
|
322
|
+
// Should work immediately
|
|
323
|
+
expect(shortTtlCache.get('query', 'explain')).toBe('response');
|
|
324
|
+
// Wait for TTL to expire
|
|
325
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
326
|
+
// Should be expired
|
|
327
|
+
expect(shortTtlCache.get('query', 'explain')).toBeUndefined();
|
|
328
|
+
});
|
|
329
|
+
});
|
|
330
|
+
// ═══════════════════════════════════════════════════════════════
|
|
331
|
+
// INTEGRATION TESTS
|
|
332
|
+
// ═══════════════════════════════════════════════════════════════
|
|
333
|
+
describe('Tool Loading + Response Cache Integration', () => {
|
|
334
|
+
beforeEach(() => {
|
|
335
|
+
responseCache.clear();
|
|
336
|
+
responseCache.resetStats();
|
|
337
|
+
});
|
|
338
|
+
test('cacheable intents get fewer tools', () => {
|
|
339
|
+
// Cacheable intents (explain, search, etc.) should get fewer tools
|
|
340
|
+
// because they're simpler tasks
|
|
341
|
+
const explainTools = getToolsForIntent('explain');
|
|
342
|
+
const genTools = getToolsForIntent('generate');
|
|
343
|
+
// Explain is cacheable and should have fewer tools than generate
|
|
344
|
+
expect(explainTools.length).toBeLessThanOrEqual(genTools.length);
|
|
345
|
+
expect(isIntentCacheable('explain')).toBe(true);
|
|
346
|
+
expect(isIntentCacheable('generate')).toBe(false);
|
|
347
|
+
});
|
|
348
|
+
test('complex intents not cached and get many tools', () => {
|
|
349
|
+
const complexTools = getToolsForIntent('complex');
|
|
350
|
+
expect(complexTools.length).toBeGreaterThan(5);
|
|
351
|
+
expect(isIntentCacheable('complex')).toBe(false);
|
|
352
|
+
});
|
|
353
|
+
});
|
|
354
|
+
//# sourceMappingURL=day4.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"day4.test.js","sourceRoot":"","sources":["../../../../src/core/cost/__tests__/day4.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DartMind V17.3 - Context Scaling
|
|
3
|
+
*
|
|
4
|
+
* PURPOSE: Match context size to task complexity for optimal cost/quality balance.
|
|
5
|
+
* COST IMPACT: 30-40% savings by reducing unnecessary context
|
|
6
|
+
* QUALITY IMPACT: NONE (right-sized context for each task)
|
|
7
|
+
*
|
|
8
|
+
* CONTEXT TIERS:
|
|
9
|
+
* - T0: Zero (~0 tokens) - Reflex handled, no API call
|
|
10
|
+
* - T1: Minimal (~1K tokens) - Simple Q&A, search, file lookup
|
|
11
|
+
* - T2: Focused (~4K tokens) - Explain code, read files, list items
|
|
12
|
+
* - T3: Standard (~16K tokens) - Generate, fix bugs, refactor
|
|
13
|
+
* - T4: Full (~64K tokens) - Multi-file, architecture, complex tasks
|
|
14
|
+
*
|
|
15
|
+
* SAFETY:
|
|
16
|
+
* - Always defaults UP when uncertain (better quality over savings)
|
|
17
|
+
* - User can override with explicit tier request
|
|
18
|
+
* - Configurable tier assignments per intent
|
|
19
|
+
*
|
|
20
|
+
* @module cost/context-scaler
|
|
21
|
+
* @version 17.3.0
|
|
22
|
+
*/
|
|
23
|
+
import { TaskIntent, ContextTier, ContextTierConfig, ClassificationResult } from './types.js';
|
|
24
|
+
export declare const CONTEXT_TIERS: Record<ContextTier, ContextTierConfig>;
|
|
25
|
+
/**
|
|
26
|
+
* Maps task intents to appropriate context tiers.
|
|
27
|
+
* Design principle: Match context to task needs, not model capabilities.
|
|
28
|
+
*/
|
|
29
|
+
export declare const INTENT_TIER_MAP: Record<TaskIntent, ContextTier>;
|
|
30
|
+
export interface ContextScalerConfig {
|
|
31
|
+
minTier: ContextTier;
|
|
32
|
+
maxTier: ContextTier;
|
|
33
|
+
defaultTier: ContextTier;
|
|
34
|
+
escalateOnLowConfidence: boolean;
|
|
35
|
+
confidenceThreshold: number;
|
|
36
|
+
}
|
|
37
|
+
export declare const DEFAULT_SCALER_CONFIG: ContextScalerConfig;
|
|
38
|
+
/**
|
|
39
|
+
* Determine the appropriate context tier for a classification result.
|
|
40
|
+
*
|
|
41
|
+
* @param classification - The task classification result
|
|
42
|
+
* @param config - Scaler configuration
|
|
43
|
+
* @returns The appropriate context tier config
|
|
44
|
+
*/
|
|
45
|
+
export declare function determineContextTier(classification: ClassificationResult, config?: ContextScalerConfig): ContextTierConfig;
|
|
46
|
+
/**
|
|
47
|
+
* Get tier for an intent directly (without classification object).
|
|
48
|
+
*/
|
|
49
|
+
export declare function getTierForIntent(intent: TaskIntent): ContextTierConfig;
|
|
50
|
+
/**
|
|
51
|
+
* Get tier by number.
|
|
52
|
+
*/
|
|
53
|
+
export declare function getTier(tier: ContextTier): ContextTierConfig;
|
|
54
|
+
export interface ContextBuildOptions {
|
|
55
|
+
systemPrompt?: string;
|
|
56
|
+
tools?: string;
|
|
57
|
+
projectStructure?: string;
|
|
58
|
+
conversationHistory?: Array<{
|
|
59
|
+
role: string;
|
|
60
|
+
content: string;
|
|
61
|
+
}>;
|
|
62
|
+
relevantFiles?: Array<{
|
|
63
|
+
path: string;
|
|
64
|
+
content: string;
|
|
65
|
+
}>;
|
|
66
|
+
patternLibrary?: string;
|
|
67
|
+
}
|
|
68
|
+
export interface BuiltContext {
|
|
69
|
+
content: string;
|
|
70
|
+
tokenEstimate: number;
|
|
71
|
+
includedComponents: string[];
|
|
72
|
+
tier: ContextTier;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Build context based on tier configuration.
|
|
76
|
+
* Respects tier limits and includes appropriate components.
|
|
77
|
+
*
|
|
78
|
+
* @param tierConfig - The context tier configuration
|
|
79
|
+
* @param options - Available context components
|
|
80
|
+
* @returns Built context with token estimate
|
|
81
|
+
*/
|
|
82
|
+
export declare function buildContext(tierConfig: ContextTierConfig, options: ContextBuildOptions): BuiltContext;
|
|
83
|
+
export interface ContextMetrics {
|
|
84
|
+
tier: ContextTier;
|
|
85
|
+
tierName: string;
|
|
86
|
+
maxTokens: number;
|
|
87
|
+
actualTokens: number;
|
|
88
|
+
utilizationPercent: number;
|
|
89
|
+
componentsIncluded: number;
|
|
90
|
+
componentsAvailable: number;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Calculate context metrics for reporting.
|
|
94
|
+
*/
|
|
95
|
+
export declare function calculateContextMetrics(builtContext: BuiltContext, availableComponents: number): ContextMetrics;
|
|
96
|
+
/**
|
|
97
|
+
* Format context metrics for logging.
|
|
98
|
+
*/
|
|
99
|
+
export declare function formatContextMetrics(metrics: ContextMetrics): string;
|
|
100
|
+
/**
|
|
101
|
+
* Calculate cost savings from using right-sized context.
|
|
102
|
+
*
|
|
103
|
+
* @param actualTier - Tier actually used
|
|
104
|
+
* @param defaultTier - Tier that would have been used without scaling
|
|
105
|
+
* @param inputCostPerMillion - Input cost per 1M tokens
|
|
106
|
+
* @returns Estimated savings in dollars
|
|
107
|
+
*/
|
|
108
|
+
export declare function calculateContextSavings(actualTier: ContextTier, defaultTier?: ContextTier, inputCostPerMillion?: number): {
|
|
109
|
+
actualTokens: number;
|
|
110
|
+
defaultTokens: number;
|
|
111
|
+
savings: number;
|
|
112
|
+
savingsPercent: number;
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* Check if user explicitly requested a context tier.
|
|
116
|
+
* Supports: /t0, /t1, /t2, /t3, /t4, /minimal, /focused, /standard, /full
|
|
117
|
+
*
|
|
118
|
+
* @param input - User input
|
|
119
|
+
* @returns Override tier and cleaned query, or null
|
|
120
|
+
*/
|
|
121
|
+
export declare function checkTierOverride(input: string): {
|
|
122
|
+
tier: ContextTier;
|
|
123
|
+
query: string;
|
|
124
|
+
} | null;
|
|
125
|
+
/**
|
|
126
|
+
* Get a description of what each tier includes.
|
|
127
|
+
*/
|
|
128
|
+
export declare function getTierDescription(tier: ContextTier): string;
|
|
129
|
+
//# sourceMappingURL=context-scaler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-scaler.d.ts","sourceRoot":"","sources":["../../../src/core/cost/context-scaler.ts"],"names":[],"mappings":"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"}
|