dartmind 17.0.0 → 17.3.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 (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,336 @@
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
+ // ═══════════════════════════════════════════════════════════════
24
+ // CONTEXT TIER DEFINITIONS
25
+ // ═══════════════════════════════════════════════════════════════
26
+ export const CONTEXT_TIERS = {
27
+ 0: {
28
+ tier: 0,
29
+ name: 'Zero',
30
+ maxTokens: 0,
31
+ includeSystemPrompt: false,
32
+ includeTools: false,
33
+ includeProjectStructure: false,
34
+ conversationHistoryLimit: 0,
35
+ includeRelevantFiles: false,
36
+ includePatternLibrary: false,
37
+ },
38
+ 1: {
39
+ tier: 1,
40
+ name: 'Minimal',
41
+ maxTokens: 1024,
42
+ includeSystemPrompt: true,
43
+ includeTools: false,
44
+ includeProjectStructure: false,
45
+ conversationHistoryLimit: 2, // Last 2 messages
46
+ includeRelevantFiles: false,
47
+ includePatternLibrary: false,
48
+ },
49
+ 2: {
50
+ tier: 2,
51
+ name: 'Focused',
52
+ maxTokens: 4096,
53
+ includeSystemPrompt: true,
54
+ includeTools: true,
55
+ includeProjectStructure: false,
56
+ conversationHistoryLimit: 5, // Last 5 messages
57
+ includeRelevantFiles: true, // 1-2 relevant files
58
+ includePatternLibrary: false,
59
+ },
60
+ 3: {
61
+ tier: 3,
62
+ name: 'Standard',
63
+ maxTokens: 16384,
64
+ includeSystemPrompt: true,
65
+ includeTools: true,
66
+ includeProjectStructure: true,
67
+ conversationHistoryLimit: 10, // Last 10 messages
68
+ includeRelevantFiles: true, // Up to 5 relevant files
69
+ includePatternLibrary: true,
70
+ },
71
+ 4: {
72
+ tier: 4,
73
+ name: 'Full',
74
+ maxTokens: 65536,
75
+ includeSystemPrompt: true,
76
+ includeTools: true,
77
+ includeProjectStructure: true,
78
+ conversationHistoryLimit: 20, // Full history (up to 20)
79
+ includeRelevantFiles: true, // All relevant files
80
+ includePatternLibrary: true,
81
+ },
82
+ };
83
+ // ═══════════════════════════════════════════════════════════════
84
+ // INTENT TO TIER MAPPING
85
+ // ═══════════════════════════════════════════════════════════════
86
+ /**
87
+ * Maps task intents to appropriate context tiers.
88
+ * Design principle: Match context to task needs, not model capabilities.
89
+ */
90
+ export const INTENT_TIER_MAP = {
91
+ // T0: Reflex (handled locally, no context needed)
92
+ greeting: 0,
93
+ farewell: 0,
94
+ gibberish: 0,
95
+ affirmation: 0,
96
+ command: 0,
97
+ // T1: Minimal context (simple lookups, quick answers)
98
+ simple_qa: 1,
99
+ search: 1,
100
+ // T2: Focused context (read/explain specific code)
101
+ explain: 2,
102
+ read: 2,
103
+ list: 2,
104
+ // T3: Standard context (code generation, modifications)
105
+ generate: 3,
106
+ refactor: 3,
107
+ fix_bug: 3,
108
+ write_tests: 3,
109
+ // T4: Full context (complex, multi-file operations)
110
+ multi_file: 4,
111
+ architecture: 4,
112
+ security: 4,
113
+ complex: 4,
114
+ // Unknown defaults to Standard (safe choice)
115
+ unknown: 3,
116
+ };
117
+ export const DEFAULT_SCALER_CONFIG = {
118
+ minTier: 1, // Never use T0 for API calls (T0 = reflex)
119
+ maxTier: 4, // Allow full context when needed
120
+ defaultTier: 3, // Standard tier by default
121
+ escalateOnLowConfidence: true,
122
+ confidenceThreshold: 0.5,
123
+ };
124
+ /**
125
+ * Determine the appropriate context tier for a classification result.
126
+ *
127
+ * @param classification - The task classification result
128
+ * @param config - Scaler configuration
129
+ * @returns The appropriate context tier config
130
+ */
131
+ export function determineContextTier(classification, config = DEFAULT_SCALER_CONFIG) {
132
+ // Get base tier from intent
133
+ let tier = INTENT_TIER_MAP[classification.intent];
134
+ // Escalate if confidence is low
135
+ if (config.escalateOnLowConfidence &&
136
+ classification.confidence < config.confidenceThreshold &&
137
+ tier < config.maxTier) {
138
+ tier = Math.min(tier + 1, config.maxTier);
139
+ }
140
+ // Apply bounds
141
+ tier = Math.max(config.minTier, Math.min(config.maxTier, tier));
142
+ return CONTEXT_TIERS[tier];
143
+ }
144
+ /**
145
+ * Get tier for an intent directly (without classification object).
146
+ */
147
+ export function getTierForIntent(intent) {
148
+ const tier = INTENT_TIER_MAP[intent];
149
+ return CONTEXT_TIERS[tier];
150
+ }
151
+ /**
152
+ * Get tier by number.
153
+ */
154
+ export function getTier(tier) {
155
+ return CONTEXT_TIERS[tier];
156
+ }
157
+ /**
158
+ * Build context based on tier configuration.
159
+ * Respects tier limits and includes appropriate components.
160
+ *
161
+ * @param tierConfig - The context tier configuration
162
+ * @param options - Available context components
163
+ * @returns Built context with token estimate
164
+ */
165
+ export function buildContext(tierConfig, options) {
166
+ const parts = [];
167
+ const includedComponents = [];
168
+ let tokenEstimate = 0;
169
+ const estimateTokens = (text) => Math.ceil(text.length / 4);
170
+ const addPart = (name, content) => {
171
+ if (content && tokenEstimate + estimateTokens(content) <= tierConfig.maxTokens) {
172
+ parts.push(content);
173
+ includedComponents.push(name);
174
+ tokenEstimate += estimateTokens(content);
175
+ return true;
176
+ }
177
+ return false;
178
+ };
179
+ // Add components in priority order
180
+ if (tierConfig.includeSystemPrompt && options.systemPrompt) {
181
+ addPart('systemPrompt', options.systemPrompt);
182
+ }
183
+ if (tierConfig.includeTools && options.tools) {
184
+ addPart('tools', options.tools);
185
+ }
186
+ if (tierConfig.includeProjectStructure && options.projectStructure) {
187
+ addPart('projectStructure', options.projectStructure);
188
+ }
189
+ if (tierConfig.includePatternLibrary && options.patternLibrary) {
190
+ addPart('patternLibrary', options.patternLibrary);
191
+ }
192
+ // Add relevant files (up to limit)
193
+ if (tierConfig.includeRelevantFiles && options.relevantFiles) {
194
+ const maxFiles = tierConfig.tier === 2 ? 2 :
195
+ tierConfig.tier === 3 ? 5 : 10;
196
+ for (let i = 0; i < Math.min(options.relevantFiles.length, maxFiles); i++) {
197
+ const file = options.relevantFiles[i];
198
+ const fileContent = `--- ${file.path} ---\n${file.content}\n`;
199
+ if (!addPart(`file:${file.path}`, fileContent)) {
200
+ break; // Stop if we've hit the token limit
201
+ }
202
+ }
203
+ }
204
+ // Add conversation history (most recent first, up to limit)
205
+ if (options.conversationHistory && tierConfig.conversationHistoryLimit > 0) {
206
+ const history = options.conversationHistory.slice(-tierConfig.conversationHistoryLimit);
207
+ for (const msg of history) {
208
+ const msgContent = `${msg.role}: ${msg.content}\n`;
209
+ if (!addPart(`history:${msg.role}`, msgContent)) {
210
+ break; // Stop if we've hit the token limit
211
+ }
212
+ }
213
+ }
214
+ return {
215
+ content: parts.join('\n\n'),
216
+ tokenEstimate,
217
+ includedComponents,
218
+ tier: tierConfig.tier,
219
+ };
220
+ }
221
+ /**
222
+ * Calculate context metrics for reporting.
223
+ */
224
+ export function calculateContextMetrics(builtContext, availableComponents) {
225
+ const tierConfig = CONTEXT_TIERS[builtContext.tier];
226
+ const utilization = tierConfig.maxTokens > 0
227
+ ? (builtContext.tokenEstimate / tierConfig.maxTokens) * 100
228
+ : 0;
229
+ return {
230
+ tier: builtContext.tier,
231
+ tierName: tierConfig.name,
232
+ maxTokens: tierConfig.maxTokens,
233
+ actualTokens: builtContext.tokenEstimate,
234
+ utilizationPercent: utilization,
235
+ componentsIncluded: builtContext.includedComponents.length,
236
+ componentsAvailable: availableComponents,
237
+ };
238
+ }
239
+ /**
240
+ * Format context metrics for logging.
241
+ */
242
+ export function formatContextMetrics(metrics) {
243
+ return [
244
+ `Context T${metrics.tier} (${metrics.tierName})`,
245
+ `${metrics.actualTokens.toLocaleString()}/${metrics.maxTokens.toLocaleString()} tokens`,
246
+ `${metrics.utilizationPercent.toFixed(1)}% used`,
247
+ `${metrics.componentsIncluded}/${metrics.componentsAvailable} components`,
248
+ ].join(' | ');
249
+ }
250
+ // ═══════════════════════════════════════════════════════════════
251
+ // SAVINGS CALCULATION
252
+ // ═══════════════════════════════════════════════════════════════
253
+ /**
254
+ * Calculate cost savings from using right-sized context.
255
+ *
256
+ * @param actualTier - Tier actually used
257
+ * @param defaultTier - Tier that would have been used without scaling
258
+ * @param inputCostPerMillion - Input cost per 1M tokens
259
+ * @returns Estimated savings in dollars
260
+ */
261
+ export function calculateContextSavings(actualTier, defaultTier = 4, inputCostPerMillion = 3.00 // Sonnet default
262
+ ) {
263
+ const actualConfig = CONTEXT_TIERS[actualTier];
264
+ const defaultConfig = CONTEXT_TIERS[defaultTier];
265
+ // Estimate average usage at 60% of max
266
+ const actualTokens = Math.floor(actualConfig.maxTokens * 0.6);
267
+ const defaultTokens = Math.floor(defaultConfig.maxTokens * 0.6);
268
+ const actualCost = (actualTokens / 1_000_000) * inputCostPerMillion;
269
+ const defaultCost = (defaultTokens / 1_000_000) * inputCostPerMillion;
270
+ const savings = defaultCost - actualCost;
271
+ const savingsPercent = defaultCost > 0 ? (savings / defaultCost) * 100 : 0;
272
+ return {
273
+ actualTokens,
274
+ defaultTokens,
275
+ savings,
276
+ savingsPercent,
277
+ };
278
+ }
279
+ // ═══════════════════════════════════════════════════════════════
280
+ // TIER OVERRIDE DETECTION
281
+ // ═══════════════════════════════════════════════════════════════
282
+ /**
283
+ * Check if user explicitly requested a context tier.
284
+ * Supports: /t0, /t1, /t2, /t3, /t4, /minimal, /focused, /standard, /full
285
+ *
286
+ * @param input - User input
287
+ * @returns Override tier and cleaned query, or null
288
+ */
289
+ export function checkTierOverride(input) {
290
+ const trimmed = input.trim();
291
+ // Check for /t0-/t4 prefix
292
+ const tierMatch = trimmed.match(/^\/t([0-4])\s+(.+)$/i);
293
+ if (tierMatch) {
294
+ return {
295
+ tier: parseInt(tierMatch[1]),
296
+ query: tierMatch[2].trim(),
297
+ };
298
+ }
299
+ // Check for named tier prefixes
300
+ const namedTiers = {
301
+ '/minimal': 1,
302
+ '/focused': 2,
303
+ '/standard': 3,
304
+ '/full': 4,
305
+ };
306
+ for (const [prefix, tier] of Object.entries(namedTiers)) {
307
+ if (trimmed.toLowerCase().startsWith(prefix + ' ')) {
308
+ return {
309
+ tier,
310
+ query: trimmed.slice(prefix.length).trim(),
311
+ };
312
+ }
313
+ }
314
+ return null;
315
+ }
316
+ /**
317
+ * Get a description of what each tier includes.
318
+ */
319
+ export function getTierDescription(tier) {
320
+ const config = CONTEXT_TIERS[tier];
321
+ const includes = [];
322
+ if (config.includeSystemPrompt)
323
+ includes.push('system prompt');
324
+ if (config.includeTools)
325
+ includes.push('tools');
326
+ if (config.includeProjectStructure)
327
+ includes.push('project structure');
328
+ if (config.includePatternLibrary)
329
+ includes.push('pattern library');
330
+ if (config.includeRelevantFiles)
331
+ includes.push('relevant files');
332
+ if (config.conversationHistoryLimit > 0)
333
+ includes.push(`${config.conversationHistoryLimit} messages`);
334
+ return `T${tier} ${config.name} (~${config.maxTokens.toLocaleString()} tokens): ${includes.join(', ') || 'none'}`;
335
+ }
336
+ //# sourceMappingURL=context-scaler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-scaler.js","sourceRoot":"","sources":["../../../src/core/cost/context-scaler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * DartMind V17.3 - Cost Optimization Module
3
+ *
4
+ * This module provides 6 layers of cost optimization:
5
+ * 1. Reflex Layer - Handle trivial inputs locally ($0.00)
6
+ * 2. Prompt Caching - Cache static content (90% cheaper)
7
+ * 3. Model Routing - Use cheapest suitable model (Day 2)
8
+ * 4. Context Scaling - Match context to task complexity (Day 3)
9
+ * 5. Tool Loading - Load only needed tools (Day 4)
10
+ * 6. Response Caching - Cache repeated queries locally (Day 4)
11
+ *
12
+ * TOTAL SAVINGS: 85-94%
13
+ *
14
+ * @module cost
15
+ * @version 17.3.0
16
+ */
17
+ export { type ModelTier, MODEL_IDS, MODEL_COSTS, type TaskIntent, type ContextTier, type ContextTierConfig, type ReflexResult, type ClassificationResult, type CostMetrics, type CostControllerConfig, DEFAULT_CONFIG, type TokenUsage, type CostEvent, } from './types.js';
18
+ export { tryReflex, shouldBypassReflex, checkModelOverride, getCommands, } from './reflex-layer.js';
19
+ export { buildCachedSystemBlocks, buildProjectContext, buildSystemMessage, calculateCacheMetrics, formatCacheMetrics, estimateTokens, getSystemBlocksTokenEstimate, SYSTEM_PROMPT_CACHED, TOOL_DEFINITIONS_CACHED, DEFAULT_CACHE_CONFIG, } from './prompt-cache.js';
20
+ export type { CacheableBlock, CacheConfig, ProjectInfo, CacheMetrics, } from './prompt-cache.js';
21
+ export { classifyTask, routeToModel, applyEscalation, estimateCost, calculateSavings, formatClassification, getModelTier, DEFAULT_ROUTER_CONFIG, } from './model-router.js';
22
+ export type { RouterConfig, } from './model-router.js';
23
+ export { CONTEXT_TIERS, INTENT_TIER_MAP, determineContextTier, getTierForIntent, getTier, buildContext, calculateContextMetrics, formatContextMetrics, calculateContextSavings, checkTierOverride, getTierDescription, DEFAULT_SCALER_CONFIG, } from './context-scaler.js';
24
+ export type { ContextScalerConfig, ContextBuildOptions, BuiltContext, ContextMetrics, } from './context-scaler.js';
25
+ export { TOOL_GROUPS, ALL_TOOLS, INTENT_TOOLS_MAP, getToolsForIntent, getToolsForIntents, getAllTools, getToolsFromGroups, calculateToolMetrics, formatToolMetrics, checkAllToolsOverride, checkToolGroupOverride, describeTools, DEFAULT_TOOL_CONFIG, } from './tool-loader.js';
26
+ export type { ToolName, ToolGroup, ToolLoaderConfig, ToolMetrics, } from './tool-loader.js';
27
+ export { ResponseCache, responseCache, getCachedResponse, cacheResponse, isIntentCacheable, invalidateCacheForFile, checkNoCacheOverride, checkClearCacheCommand, UNCACHEABLE_INTENTS, DEFAULT_RESPONSE_CACHE_CONFIG, } from './response-cache.js';
28
+ export type { CachedResponse, ResponseCacheConfig, } from './response-cache.js';
29
+ export { CostOptimizer, costOptimizer, shouldSkipAPI, getLocalResponse, estimateRequestCost, } from './integration.js';
30
+ export type { ProcessedInput, OptimizedRequest, } from './integration.js';
31
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/cost/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,EAEL,KAAK,SAAS,EACd,SAAS,EACT,WAAW,EAGX,KAAK,UAAU,EAGf,KAAK,WAAW,EAChB,KAAK,iBAAiB,EAGtB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAGhB,KAAK,oBAAoB,EACzB,cAAc,EAGd,KAAK,UAAU,EACf,KAAK,SAAS,GACf,MAAM,YAAY,CAAC;AAMpB,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EAEL,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EAGlB,qBAAqB,EACrB,kBAAkB,EAGlB,cAAc,EACd,4BAA4B,EAG5B,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EAEL,YAAY,EAGZ,YAAY,EACZ,eAAe,EAGf,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,EAGZ,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,YAAY,GACb,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EAEL,aAAa,EACb,eAAe,EAGf,oBAAoB,EACpB,gBAAgB,EAChB,OAAO,EAGP,YAAY,EAGZ,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EAGvB,iBAAiB,EACjB,kBAAkB,EAGlB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,cAAc,GACf,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EAEL,WAAW,EACX,SAAS,EACT,gBAAgB,EAGhB,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAGlB,oBAAoB,EACpB,iBAAiB,EAGjB,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EAGb,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,QAAQ,EACR,SAAS,EACT,gBAAgB,EAChB,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAM1B,OAAO,EAEL,aAAa,EAGb,aAAa,EAGb,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,sBAAsB,EAGtB,oBAAoB,EACpB,sBAAsB,EAGtB,mBAAmB,EACnB,6BAA6B,GAC9B,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,cAAc,EACd,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EAEL,aAAa,EAGb,aAAa,EAGb,aAAa,EACb,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,cAAc,EACd,gBAAgB,GACjB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * DartMind V17.3 - Cost Optimization Module
3
+ *
4
+ * This module provides 6 layers of cost optimization:
5
+ * 1. Reflex Layer - Handle trivial inputs locally ($0.00)
6
+ * 2. Prompt Caching - Cache static content (90% cheaper)
7
+ * 3. Model Routing - Use cheapest suitable model (Day 2)
8
+ * 4. Context Scaling - Match context to task complexity (Day 3)
9
+ * 5. Tool Loading - Load only needed tools (Day 4)
10
+ * 6. Response Caching - Cache repeated queries locally (Day 4)
11
+ *
12
+ * TOTAL SAVINGS: 85-94%
13
+ *
14
+ * @module cost
15
+ * @version 17.3.0
16
+ */
17
+ // ═══════════════════════════════════════════════════════════════
18
+ // TYPES
19
+ // ═══════════════════════════════════════════════════════════════
20
+ export { MODEL_IDS, MODEL_COSTS, DEFAULT_CONFIG, } from './types.js';
21
+ // ═══════════════════════════════════════════════════════════════
22
+ // LAYER 1: REFLEX
23
+ // ═══════════════════════════════════════════════════════════════
24
+ export { tryReflex, shouldBypassReflex, checkModelOverride, getCommands, } from './reflex-layer.js';
25
+ // ═══════════════════════════════════════════════════════════════
26
+ // LAYER 2: PROMPT CACHING
27
+ // ═══════════════════════════════════════════════════════════════
28
+ export {
29
+ // Builders
30
+ buildCachedSystemBlocks, buildProjectContext, buildSystemMessage,
31
+ // Metrics
32
+ calculateCacheMetrics, formatCacheMetrics,
33
+ // Token estimation
34
+ estimateTokens, getSystemBlocksTokenEstimate,
35
+ // Constants
36
+ SYSTEM_PROMPT_CACHED, TOOL_DEFINITIONS_CACHED, DEFAULT_CACHE_CONFIG, } from './prompt-cache.js';
37
+ // ═══════════════════════════════════════════════════════════════
38
+ // LAYER 3: MODEL ROUTING
39
+ // ═══════════════════════════════════════════════════════════════
40
+ export {
41
+ // Classification
42
+ classifyTask,
43
+ // Routing
44
+ routeToModel, applyEscalation,
45
+ // Cost helpers
46
+ estimateCost, calculateSavings, formatClassification, getModelTier,
47
+ // Config
48
+ DEFAULT_ROUTER_CONFIG, } from './model-router.js';
49
+ // ═══════════════════════════════════════════════════════════════
50
+ // LAYER 4: CONTEXT SCALING
51
+ // ═══════════════════════════════════════════════════════════════
52
+ export {
53
+ // Tier definitions
54
+ CONTEXT_TIERS, INTENT_TIER_MAP,
55
+ // Context determination
56
+ determineContextTier, getTierForIntent, getTier,
57
+ // Context building
58
+ buildContext,
59
+ // Metrics
60
+ calculateContextMetrics, formatContextMetrics, calculateContextSavings,
61
+ // Override detection
62
+ checkTierOverride, getTierDescription,
63
+ // Config
64
+ DEFAULT_SCALER_CONFIG, } from './context-scaler.js';
65
+ // ═══════════════════════════════════════════════════════════════
66
+ // LAYER 5: TOOL LOADING
67
+ // ═══════════════════════════════════════════════════════════════
68
+ export {
69
+ // Tool definitions
70
+ TOOL_GROUPS, ALL_TOOLS, INTENT_TOOLS_MAP,
71
+ // Tool loading
72
+ getToolsForIntent, getToolsForIntents, getAllTools, getToolsFromGroups,
73
+ // Metrics
74
+ calculateToolMetrics, formatToolMetrics,
75
+ // Override detection
76
+ checkAllToolsOverride, checkToolGroupOverride, describeTools,
77
+ // Config
78
+ DEFAULT_TOOL_CONFIG, } from './tool-loader.js';
79
+ // ═══════════════════════════════════════════════════════════════
80
+ // LAYER 6: RESPONSE CACHING
81
+ // ═══════════════════════════════════════════════════════════════
82
+ export {
83
+ // Cache class
84
+ ResponseCache,
85
+ // Singleton instance
86
+ responseCache,
87
+ // Convenience functions
88
+ getCachedResponse, cacheResponse, isIntentCacheable, invalidateCacheForFile,
89
+ // Override detection
90
+ checkNoCacheOverride, checkClearCacheCommand,
91
+ // Constants
92
+ UNCACHEABLE_INTENTS, DEFAULT_RESPONSE_CACHE_CONFIG, } from './response-cache.js';
93
+ // ═══════════════════════════════════════════════════════════════
94
+ // INTEGRATION
95
+ // ═══════════════════════════════════════════════════════════════
96
+ export {
97
+ // Main class
98
+ CostOptimizer,
99
+ // Singleton instance
100
+ costOptimizer,
101
+ // Convenience functions
102
+ shouldSkipAPI, getLocalResponse, estimateRequestCost, } from './integration.js';
103
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/cost/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,kEAAkE;AAClE,QAAQ;AACR,kEAAkE;AAElE,OAAO,EAGL,SAAS,EACT,WAAW,EAgBX,cAAc,GAKf,MAAM,YAAY,CAAC;AAEpB,kEAAkE;AAClE,kBAAkB;AAClB,kEAAkE;AAElE,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAE3B,kEAAkE;AAClE,0BAA0B;AAC1B,kEAAkE;AAElE,OAAO;AACL,WAAW;AACX,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB;AAElB,UAAU;AACV,qBAAqB,EACrB,kBAAkB;AAElB,mBAAmB;AACnB,cAAc,EACd,4BAA4B;AAE5B,YAAY;AACZ,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAS3B,kEAAkE;AAClE,yBAAyB;AACzB,kEAAkE;AAElE,OAAO;AACL,iBAAiB;AACjB,YAAY;AAEZ,UAAU;AACV,YAAY,EACZ,eAAe;AAEf,eAAe;AACf,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,YAAY;AAEZ,SAAS;AACT,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAM3B,kEAAkE;AAClE,2BAA2B;AAC3B,kEAAkE;AAElE,OAAO;AACL,mBAAmB;AACnB,aAAa,EACb,eAAe;AAEf,wBAAwB;AACxB,oBAAoB,EACpB,gBAAgB,EAChB,OAAO;AAEP,mBAAmB;AACnB,YAAY;AAEZ,UAAU;AACV,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB;AAEvB,qBAAqB;AACrB,iBAAiB,EACjB,kBAAkB;AAElB,SAAS;AACT,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAS7B,kEAAkE;AAClE,wBAAwB;AACxB,kEAAkE;AAElE,OAAO;AACL,mBAAmB;AACnB,WAAW,EACX,SAAS,EACT,gBAAgB;AAEhB,eAAe;AACf,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,kBAAkB;AAElB,UAAU;AACV,oBAAoB,EACpB,iBAAiB;AAEjB,qBAAqB;AACrB,qBAAqB,EACrB,sBAAsB,EACtB,aAAa;AAEb,SAAS;AACT,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAS1B,kEAAkE;AAClE,4BAA4B;AAC5B,kEAAkE;AAElE,OAAO;AACL,cAAc;AACd,aAAa;AAEb,qBAAqB;AACrB,aAAa;AAEb,wBAAwB;AACxB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,sBAAsB;AAEtB,qBAAqB;AACrB,oBAAoB,EACpB,sBAAsB;AAEtB,YAAY;AACZ,mBAAmB,EACnB,6BAA6B,GAC9B,MAAM,qBAAqB,CAAC;AAO7B,kEAAkE;AAClE,cAAc;AACd,kEAAkE;AAElE,OAAO;AACL,aAAa;AACb,aAAa;AAEb,qBAAqB;AACrB,aAAa;AAEb,wBAAwB;AACxB,aAAa,EACb,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * DartMind V17.3 - Cost Optimization Integration
3
+ *
4
+ * This file provides integration helpers to connect the cost optimization
5
+ * module with your existing code WITHOUT modifying core logic.
6
+ *
7
+ * USAGE:
8
+ * 1. Import this module
9
+ * 2. Call processInput() before sending to API
10
+ * 3. Use buildOptimizedRequest() to get API parameters
11
+ *
12
+ * @module cost/integration
13
+ * @version 17.3.0
14
+ */
15
+ import { CacheableBlock } from './prompt-cache.js';
16
+ import { RouterConfig } from './model-router.js';
17
+ import { ContextScalerConfig } from './context-scaler.js';
18
+ import { CostControllerConfig, ModelTier, ClassificationResult, CostMetrics, ContextTier, ContextTierConfig } from './types.js';
19
+ export interface ProcessedInput {
20
+ skipAPI: boolean;
21
+ localResponse?: string;
22
+ reason?: string;
23
+ query: string;
24
+ modelOverride?: ModelTier;
25
+ classification?: ClassificationResult;
26
+ contextTier?: ContextTierConfig;
27
+ }
28
+ export interface OptimizedRequest {
29
+ model: string;
30
+ system: CacheableBlock[];
31
+ }
32
+ export declare class CostOptimizer {
33
+ private config;
34
+ private routerConfig;
35
+ private scalerConfig;
36
+ private projectContext;
37
+ private reflexCount;
38
+ private apiCallCount;
39
+ private totalInputTokens;
40
+ private totalOutputTokens;
41
+ private totalCacheReadTokens;
42
+ private totalCost;
43
+ private totalSavings;
44
+ private modelCounts;
45
+ private tierCounts;
46
+ constructor(config?: Partial<CostControllerConfig>, routerConfig?: Partial<RouterConfig>, scalerConfig?: Partial<ContextScalerConfig>);
47
+ /**
48
+ * Set project context for caching.
49
+ * Call this once when project is loaded.
50
+ */
51
+ setProjectContext(context: string): void;
52
+ /**
53
+ * Update configuration at runtime.
54
+ */
55
+ updateConfig(config: Partial<CostControllerConfig>): void;
56
+ /**
57
+ * Update router configuration at runtime.
58
+ */
59
+ updateRouterConfig(config: Partial<RouterConfig>): void;
60
+ /**
61
+ * Get current configuration.
62
+ */
63
+ getConfig(): CostControllerConfig;
64
+ /**
65
+ * Get current router configuration.
66
+ */
67
+ getRouterConfig(): RouterConfig;
68
+ /**
69
+ * Update scaler configuration at runtime.
70
+ */
71
+ updateScalerConfig(config: Partial<ContextScalerConfig>): void;
72
+ /**
73
+ * Get current scaler configuration.
74
+ */
75
+ getScalerConfig(): ContextScalerConfig;
76
+ /**
77
+ * Process user input through cost optimization layers.
78
+ * Call this BEFORE sending to Anthropic API.
79
+ *
80
+ * @param input - Raw user input
81
+ * @returns ProcessedInput with skip decision and optional local response
82
+ */
83
+ processInput(input: string): ProcessedInput;
84
+ /**
85
+ * Build optimized request parameters for Anthropic API.
86
+ *
87
+ * @param modelOverride - Optional model override from processInput
88
+ * @returns Partial request config with system blocks and model
89
+ */
90
+ buildOptimizedRequest(modelOverride?: ModelTier): OptimizedRequest;
91
+ /**
92
+ * Process API response to extract cache metrics and track costs.
93
+ * Call this after receiving Anthropic API response.
94
+ */
95
+ processResponse(usage: {
96
+ input_tokens: number;
97
+ output_tokens: number;
98
+ cache_creation_input_tokens?: number;
99
+ cache_read_input_tokens?: number;
100
+ }, model?: ModelTier): void;
101
+ /**
102
+ * Get current session metrics.
103
+ */
104
+ getMetrics(): CostMetrics;
105
+ /**
106
+ * Format metrics for display.
107
+ */
108
+ formatMetrics(): string;
109
+ /**
110
+ * Reset metrics (for new session).
111
+ */
112
+ resetMetrics(): void;
113
+ /**
114
+ * Get tier counts for metrics.
115
+ */
116
+ getTierCounts(): Record<ContextTier, number>;
117
+ /**
118
+ * Check if a specific optimization layer is enabled.
119
+ */
120
+ isLayerEnabled(layer: keyof CostControllerConfig): boolean;
121
+ /**
122
+ * Enable/disable a specific layer at runtime.
123
+ */
124
+ setLayerEnabled(layer: keyof CostControllerConfig, enabled: boolean): void;
125
+ private log;
126
+ }
127
+ /**
128
+ * Default cost optimizer instance for easy use.
129
+ * Configure with costOptimizer.updateConfig({ ... })
130
+ */
131
+ export declare const costOptimizer: CostOptimizer;
132
+ /**
133
+ * Quick check if input should skip API (reflex handled).
134
+ */
135
+ export declare function shouldSkipAPI(input: string): boolean;
136
+ /**
137
+ * Get local response if available (for reflex-handled inputs).
138
+ */
139
+ export declare function getLocalResponse(input: string): string | undefined;
140
+ /**
141
+ * Estimate cost for a request before making it.
142
+ */
143
+ export declare function estimateRequestCost(inputTokens: number, outputTokens: number, model?: ModelTier): number;
144
+ //# sourceMappingURL=integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration.d.ts","sourceRoot":"","sources":["../../../src/core/cost/integration.ts"],"names":[],"mappings":"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"}