adaptive-memory-multi-model-router 2.2.5 → 2.2.6

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 (63) hide show
  1. package/README.md +17 -22
  2. package/README.md.bak +836 -0
  3. package/dist/analytics/costAnalytics.d.ts +1 -0
  4. package/dist/cache/cacheKeyGenerator.d.ts +67 -0
  5. package/dist/cache/cacheKeyGenerator.d.ts.map +1 -0
  6. package/dist/cache/cacheKeyGenerator.js +211 -0
  7. package/dist/cache/cacheKeyGenerator.js.map +1 -0
  8. package/dist/cache/semanticCache.d.ts +41 -0
  9. package/dist/cache/semanticCache.d.ts.map +1 -1
  10. package/dist/cache/semanticCache.js +142 -0
  11. package/dist/cache/semanticCache.js.map +1 -1
  12. package/dist/cli.js +35 -478
  13. package/dist/cost/costTracker.js +0 -3
  14. package/dist/cost/preCallCostEstimator.d.ts +114 -0
  15. package/dist/cost/preCallCostEstimator.d.ts.map +1 -0
  16. package/dist/cost/preCallCostEstimator.js +256 -0
  17. package/dist/cost/preCallCostEstimator.js.map +1 -0
  18. package/dist/index.d.ts +16 -0
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +264 -64
  21. package/dist/index.js.map +1 -1
  22. package/dist/inference/speculativeDecoding.d.ts +133 -0
  23. package/dist/inference/speculativeDecoding.d.ts.map +1 -0
  24. package/dist/inference/speculativeDecoding.js +276 -0
  25. package/dist/inference/speculativeDecoding.js.map +1 -0
  26. package/dist/integrations/langchainAdapter.d.ts +1 -0
  27. package/dist/integrations/oauth.d.ts +1 -0
  28. package/dist/memory/autoFetch.d.ts +1 -0
  29. package/dist/memory/memoryTree.d.ts +1 -0
  30. package/dist/memory/obsidianVault.d.ts +1 -0
  31. package/dist/providers/providerConfig.d.ts +1 -0
  32. package/dist/providers/providerConfig.js +2 -0
  33. package/dist/providers/providerHealth.d.ts +117 -0
  34. package/dist/providers/providerHealth.d.ts.map +1 -0
  35. package/dist/providers/providerHealth.js +309 -0
  36. package/dist/providers/providerHealth.js.map +1 -0
  37. package/dist/providers/registry.js +126 -128
  38. package/dist/routing/advancedRouter.js +310 -427
  39. package/dist/routing/difficultyClassifier.d.ts +79 -0
  40. package/dist/routing/difficultyClassifier.d.ts.map +1 -0
  41. package/dist/routing/difficultyClassifier.js +329 -0
  42. package/dist/routing/difficultyClassifier.js.map +1 -0
  43. package/dist/sdk.d.ts +125 -0
  44. package/dist/sdk.d.ts.map +1 -0
  45. package/dist/sdk.js +109 -100
  46. package/dist/sdk.js.map +1 -0
  47. package/dist/security/guardrails.d.ts +1 -0
  48. package/dist/server/dashboard.d.ts +1 -0
  49. package/dist/server/modelMapper.d.ts +1 -0
  50. package/dist/server/proxyServer.d.ts +1 -0
  51. package/package.json +4 -2
  52. package/src/cache/cacheKeyGenerator.ts +242 -0
  53. package/src/cache/semanticCache.ts +148 -0
  54. package/src/cost/preCallCostEstimator.ts +345 -0
  55. package/src/inference/speculativeDecoding.ts +373 -0
  56. package/src/providers/providerHealth.ts +397 -0
  57. package/src/routing/difficultyClassifier.ts +420 -0
  58. package/test/provider-test.js +2 -2
  59. package/test.js +7 -7
  60. package/test.js.bak +376 -0
  61. package/tsconfig.json +15 -5
  62. package/src/index.ts +0 -99
  63. package/src/skills/__tests__/skill_manager.test.ts +0 -328
@@ -75,3 +75,4 @@ export declare class CostAnalytics {
75
75
  private getDaysCovered;
76
76
  }
77
77
  export declare function createCostAnalytics(maxRecords?: number): CostAnalytics;
78
+ //# sourceMappingURL=costAnalytics.d.ts.map
@@ -0,0 +1,67 @@
1
+ /**
2
+ * A3M Router - Cross-Provider Cache Key Generator
3
+ *
4
+ * Normalizes prompts so same semantic content maps to same cache key
5
+ * regardless of provider-specific formatting, system prompts, etc.
6
+ *
7
+ * Usage:
8
+ * const cacheKey = generateCacheKey("What is Python?", { provider: "openai" });
9
+ * const key2 = generateCacheKey("What is Python?", { provider: "anthropic" });
10
+ * // key === key2 (same semantic content = same key)
11
+ */
12
+ export interface CacheKeyOptions {
13
+ /** Target provider (affects normalization rules) */
14
+ provider?: string;
15
+ /** Target model (for model-specific normalization) */
16
+ model?: string;
17
+ /** Whether to include system prompt in normalization */
18
+ includeSystemPrompt?: boolean;
19
+ /** Custom normalization rules */
20
+ customRules?: NormalizationRule[];
21
+ }
22
+ export interface NormalizationRule {
23
+ pattern: RegExp;
24
+ replacement: string;
25
+ }
26
+ export interface CacheKeyResult {
27
+ /** The normalized cache key string */
28
+ key: string;
29
+ /** Hash of the normalized content */
30
+ hash: string;
31
+ /** Metadata about what was normalized */
32
+ metadata: {
33
+ originalLength: number;
34
+ normalizedLength: number;
35
+ rulesApplied: number;
36
+ provider?: string;
37
+ };
38
+ }
39
+ /**
40
+ * Normalize text for cross-provider cache key generation.
41
+ * Removes provider-specific formatting while preserving semantic content.
42
+ */
43
+ export declare function normalizeForCacheKey(text: string, options?: CacheKeyOptions): string;
44
+ /**
45
+ * Generate a deterministic cache key from a query.
46
+ * Same semantic content = same key across providers.
47
+ */
48
+ export declare function generateCacheKey(query: string, options?: CacheKeyOptions): CacheKeyResult;
49
+ /**
50
+ * Add cross-provider cache key methods to existing SemanticCache.
51
+ * Call this to enhance the cache with provider-normalized lookups.
52
+ */
53
+ export declare function createCacheKeyGenerator(defaultOptions?: CacheKeyOptions): {
54
+ generateKey: (query: string, options?: CacheKeyOptions) => CacheKeyResult;
55
+ createNormalizedMatcher: (cache: Map<string, any>) => (query: string, options?: CacheKeyOptions) => string | null;
56
+ };
57
+ /**
58
+ * Quick cache key generation (simplified API).
59
+ * Use this for simple cross-provider cache lookups.
60
+ *
61
+ * @example
62
+ * const key1 = toCacheKey("What is Python?", "openai");
63
+ * const key2 = toCacheKey("What is Python?", "anthropic");
64
+ * console.log(key1 === key2); // true
65
+ */
66
+ export declare function toCacheKey(query: string, provider?: string): string;
67
+ //# sourceMappingURL=cacheKeyGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cacheKeyGenerator.d.ts","sourceRoot":"","sources":["../../src/cache/cacheKeyGenerator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,MAAM,WAAW,eAAe;IAC9B,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,iCAAiC;IACjC,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,sCAAsC;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,QAAQ,EAAE;QACR,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AA2BD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,eAAoB,GAC5B,MAAM,CA8CR;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,eAAoB,GAC5B,cAAc,CAwChB;AAMD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,CAAC,EAAE,eAAe,GAC/B;IACD,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,cAAc,CAAC;IAC1E,uBAAuB,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,MAAM,GAAG,IAAI,CAAC;CACnH,CAkCA;AAMD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnE"}
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ /**
3
+ * A3M Router - Cross-Provider Cache Key Generator
4
+ *
5
+ * Normalizes prompts so same semantic content maps to same cache key
6
+ * regardless of provider-specific formatting, system prompts, etc.
7
+ *
8
+ * Usage:
9
+ * const cacheKey = generateCacheKey("What is Python?", { provider: "openai" });
10
+ * const key2 = generateCacheKey("What is Python?", { provider: "anthropic" });
11
+ * // key === key2 (same semantic content = same key)
12
+ */
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || (function () {
30
+ var ownKeys = function(o) {
31
+ ownKeys = Object.getOwnPropertyNames || function (o) {
32
+ var ar = [];
33
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
34
+ return ar;
35
+ };
36
+ return ownKeys(o);
37
+ };
38
+ return function (mod) {
39
+ if (mod && mod.__esModule) return mod;
40
+ var result = {};
41
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
42
+ __setModuleDefault(result, mod);
43
+ return result;
44
+ };
45
+ })();
46
+ Object.defineProperty(exports, "__esModule", { value: true });
47
+ exports.normalizeForCacheKey = normalizeForCacheKey;
48
+ exports.generateCacheKey = generateCacheKey;
49
+ exports.createCacheKeyGenerator = createCacheKeyGenerator;
50
+ exports.toCacheKey = toCacheKey;
51
+ const crypto = __importStar(require("crypto"));
52
+ // ============================================================
53
+ // Provider-specific system prompt patterns
54
+ // ============================================================
55
+ const PROVIDER_SYSTEM_PATTERNS = {
56
+ anthropic: [
57
+ /<anthropic_thinking>[\s\S]*?<\/anthropic_thinking>/gi,
58
+ /<thinking>[\s\S]*?<\/thinking>/gi,
59
+ /Human:/gi,
60
+ /Assistant:/gi,
61
+ ],
62
+ openai: [
63
+ /<|im_start|>/gi,
64
+ /<|im_end|>/gi,
65
+ ],
66
+ google: [
67
+ /<content>[\s\S]*?<\/content>/gi,
68
+ /[\Parts|thought]/gi,
69
+ ],
70
+ };
71
+ // ============================================================
72
+ // Core normalizer
73
+ // ============================================================
74
+ /**
75
+ * Normalize text for cross-provider cache key generation.
76
+ * Removes provider-specific formatting while preserving semantic content.
77
+ */
78
+ function normalizeForCacheKey(text, options = {}) {
79
+ let normalized = text;
80
+ // Step 1: Unicode normalization (NFC)
81
+ normalized = normalized.normalize('NFC');
82
+ // Step 2: Collapse whitespace
83
+ normalized = normalized.replace(/\s+/g, ' ');
84
+ // Step 3: Remove control characters
85
+ normalized = normalized.replace(/[\x00-\x1F\x7F]/g, '');
86
+ // Step 4: Strip provider-specific formatting
87
+ if (options.provider) {
88
+ const patterns = PROVIDER_SYSTEM_PATTERNS[options.provider] || [];
89
+ for (const pattern of patterns) {
90
+ normalized = normalized.replace(pattern, '');
91
+ }
92
+ }
93
+ // Step 5: General system/assistant role removal
94
+ normalized = normalized
95
+ .replace(/\b(system|user|assistant|human|bot)\s*:/gi, '')
96
+ .replace(/^(system|user|assistant|human|bot)\s*/gim, '');
97
+ // Step 6: Remove markdown formatting (often provider-specific)
98
+ normalized = normalized
99
+ .replace(/```[\s\S]*?```/g, '[CODE_BLOCK]') // Preserve code block indicator
100
+ .replace(/`([^`]+)`/g, '$1') // Inline code content
101
+ .replace(/\*\*([^*]+)\*\*/g, '$1') // Bold
102
+ .replace(/_([^_]+)_/g, '$1') // Italic
103
+ .replace(/#+\s*/g, '') // Headers
104
+ .replace(/^\s*[-*+]\s+/gm, '') // List bullets
105
+ .replace(/^\s*\d+\.\s+/gm, ''); // Numbered lists
106
+ // Step 7: Apply custom rules
107
+ if (options.customRules) {
108
+ for (const rule of options.customRules) {
109
+ normalized = normalized.replace(rule.pattern, rule.replacement);
110
+ }
111
+ }
112
+ // Step 8: Collapse whitespace again after removals
113
+ normalized = normalized.replace(/\s+/g, ' ').trim();
114
+ return normalized;
115
+ }
116
+ /**
117
+ * Generate a deterministic cache key from a query.
118
+ * Same semantic content = same key across providers.
119
+ */
120
+ function generateCacheKey(query, options = {}) {
121
+ const originalLength = query.length;
122
+ // Normalize the query
123
+ let normalized = normalizeForCacheKey(query, {
124
+ ...options,
125
+ includeSystemPrompt: false, // Always exclude for user query matching
126
+ });
127
+ // Count rules that were applied (approximate)
128
+ let rulesApplied = 3; // Base normalizations
129
+ if (options.provider)
130
+ rulesApplied += 2;
131
+ if (options.customRules)
132
+ rulesApplied += options.customRules.length;
133
+ // Generate hash
134
+ const hash = crypto
135
+ .createHash('sha256')
136
+ .update(normalized)
137
+ .digest('hex')
138
+ .substring(0, 16); // First 16 chars = 64-bit key
139
+ // Final key format: v1:{hash}:{provider?[:model]?}
140
+ let key = `v1:${hash}`;
141
+ if (options.provider) {
142
+ key += `:${options.provider}`;
143
+ if (options.model) {
144
+ key += `:${options.model}`;
145
+ }
146
+ }
147
+ return {
148
+ key,
149
+ hash,
150
+ metadata: {
151
+ originalLength,
152
+ normalizedLength: normalized.length,
153
+ rulesApplied,
154
+ provider: options.provider,
155
+ },
156
+ };
157
+ }
158
+ // ============================================================
159
+ // SemanticCache enhancement
160
+ // ============================================================
161
+ /**
162
+ * Add cross-provider cache key methods to existing SemanticCache.
163
+ * Call this to enhance the cache with provider-normalized lookups.
164
+ */
165
+ function createCacheKeyGenerator(defaultOptions) {
166
+ return {
167
+ /**
168
+ * Generate a cache key for a query.
169
+ */
170
+ generateKey: (query, options) => {
171
+ return generateCacheKey(query, { ...defaultOptions, ...options });
172
+ },
173
+ /**
174
+ * Create a matcher function that finds existing cache entries
175
+ * by comparing normalized keys.
176
+ */
177
+ createNormalizedMatcher: (cache) => {
178
+ return (query, options) => {
179
+ const { key } = generateCacheKey(query, { ...defaultOptions, ...options });
180
+ // Check exact match
181
+ if (cache.has(key)) {
182
+ return key;
183
+ }
184
+ // Check hash-only match (v1:{hash} prefix)
185
+ const hashPrefix = key.split(':').slice(0, 2).join(':');
186
+ for (const cachedKey of cache.keys()) {
187
+ if (cachedKey.startsWith(hashPrefix + ':')) {
188
+ return cachedKey;
189
+ }
190
+ }
191
+ return null;
192
+ };
193
+ },
194
+ };
195
+ }
196
+ // ============================================================
197
+ // Convenience exports
198
+ // ============================================================
199
+ /**
200
+ * Quick cache key generation (simplified API).
201
+ * Use this for simple cross-provider cache lookups.
202
+ *
203
+ * @example
204
+ * const key1 = toCacheKey("What is Python?", "openai");
205
+ * const key2 = toCacheKey("What is Python?", "anthropic");
206
+ * console.log(key1 === key2); // true
207
+ */
208
+ function toCacheKey(query, provider) {
209
+ return generateCacheKey(query, { provider }).key;
210
+ }
211
+ //# sourceMappingURL=cacheKeyGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cacheKeyGenerator.js","sourceRoot":"","sources":["../../src/cache/cacheKeyGenerator.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,8 @@
7
7
  * No external embedding API needed. Trigram overlap catches paraphrases like:
8
8
  * "What is Python?" ≈ "Tell me about Python" ≈ "Explain Python"
9
9
  * "Write a sort fn" ≈ "Create a sorting fn" ≈ "How to sort an array"
10
+ *
11
+ * Also supports cross-provider cache key generation via generateCacheKey().
10
12
  */
11
13
  export interface CachedResponse {
12
14
  query: string;
@@ -26,6 +28,44 @@ export interface SemanticCacheStats {
26
28
  hitRate: number;
27
29
  size: number;
28
30
  }
31
+ export interface GenerateCacheKeyOptions {
32
+ /** Target provider (affects normalization rules) */
33
+ provider?: string;
34
+ /** Target model (for model-specific normalization) */
35
+ model?: string;
36
+ /** Custom normalization rules */
37
+ customRules?: Array<{
38
+ pattern: RegExp;
39
+ replacement: string;
40
+ }>;
41
+ }
42
+ export interface CacheKeyResult {
43
+ /** The normalized cache key string */
44
+ key: string;
45
+ /** Hash of the normalized content */
46
+ hash: string;
47
+ /** Metadata about what was normalized */
48
+ metadata: {
49
+ originalLength: number;
50
+ normalizedLength: number;
51
+ rulesApplied: number;
52
+ provider?: string;
53
+ };
54
+ }
55
+ /**
56
+ * Generate a deterministic cache key from a query.
57
+ * Same semantic content = same key across providers.
58
+ *
59
+ * @example
60
+ * const key1 = semanticCache.generateCacheKey("What is Python?", { provider: "openai" });
61
+ * const key2 = semanticCache.generateCacheKey("What is Python?", { provider: "anthropic" });
62
+ * // key1.key === key2.key (same semantic content = same key)
63
+ */
64
+ export declare function generateCacheKey(query: string, options?: GenerateCacheKeyOptions): CacheKeyResult;
65
+ /**
66
+ * Quick cache key generation (simplified API).
67
+ */
68
+ export declare function toCacheKey(query: string, provider?: string): string;
29
69
  export declare class SemanticCache {
30
70
  private entries;
31
71
  private maxSize;
@@ -60,3 +100,4 @@ export declare class SemanticCache {
60
100
  */
61
101
  private evictOldest;
62
102
  }
103
+ //# sourceMappingURL=semanticCache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"semanticCache.d.ts","sourceRoot":"","sources":["../../src/cache/semanticCache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAOD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AA+CD,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,MAAM,CAAK;gBAEP,OAAO,CAAC,EAAE,oBAAoB;IAM1C;;;OAGG;IACG,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAkCxD;;OAEG;IACG,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCzE;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,QAAQ,IAAI,kBAAkB;IAU9B;;OAEG;IACH,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACH,OAAO,CAAC,WAAW;CAYpB"}
1
+ {"version":3,"file":"semanticCache.d.ts","sourceRoot":"","sources":["../../src/cache/semanticCache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAOD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAwCD,MAAM,WAAW,uBAAuB;IACtC,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,cAAc;IAC7B,sCAAsC;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,QAAQ,EAAE;QACR,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,uBAA4B,GACpC,cAAc,CA4EhB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnE;AAiCD,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,MAAM,CAAK;gBAEP,OAAO,CAAC,EAAE,oBAAoB;IAM1C;;;OAGG;IACG,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAkCxD;;OAEG;IACG,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCzE;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,QAAQ,IAAI,kBAAkB;IAU9B;;OAEG;IACH,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACH,OAAO,CAAC,WAAW;CAYpB"}
@@ -8,9 +8,47 @@
8
8
  * No external embedding API needed. Trigram overlap catches paraphrases like:
9
9
  * "What is Python?" ≈ "Tell me about Python" ≈ "Explain Python"
10
10
  * "Write a sort fn" ≈ "Create a sorting fn" ≈ "How to sort an array"
11
+ *
12
+ * Also supports cross-provider cache key generation via generateCacheKey().
11
13
  */
14
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ var desc = Object.getOwnPropertyDescriptor(m, k);
17
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
18
+ desc = { enumerable: true, get: function() { return m[k]; } };
19
+ }
20
+ Object.defineProperty(o, k2, desc);
21
+ }) : (function(o, m, k, k2) {
22
+ if (k2 === undefined) k2 = k;
23
+ o[k2] = m[k];
24
+ }));
25
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
26
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
27
+ }) : function(o, v) {
28
+ o["default"] = v;
29
+ });
30
+ var __importStar = (this && this.__importStar) || (function () {
31
+ var ownKeys = function(o) {
32
+ ownKeys = Object.getOwnPropertyNames || function (o) {
33
+ var ar = [];
34
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
35
+ return ar;
36
+ };
37
+ return ownKeys(o);
38
+ };
39
+ return function (mod) {
40
+ if (mod && mod.__esModule) return mod;
41
+ var result = {};
42
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
43
+ __setModuleDefault(result, mod);
44
+ return result;
45
+ };
46
+ })();
12
47
  Object.defineProperty(exports, "__esModule", { value: true });
13
48
  exports.SemanticCache = void 0;
49
+ exports.generateCacheKey = generateCacheKey;
50
+ exports.toCacheKey = toCacheKey;
51
+ const crypto = __importStar(require("crypto"));
14
52
  // ============================================================
15
53
  // N-gram utilities
16
54
  // ============================================================
@@ -23,6 +61,110 @@ function normalize(text) {
23
61
  .replace(/\s+/g, " ")
24
62
  .trim();
25
63
  }
64
+ // ============================================================
65
+ // Cross-Provider Cache Key Generation
66
+ // ============================================================
67
+ /**
68
+ * Provider-specific formatting patterns to strip for cross-provider cache keys.
69
+ */
70
+ const PROVIDER_SYSTEM_PATTERNS = {
71
+ anthropic: [
72
+ /<anthropic_thinking>[\s\S]*?<\/anthropic_thinking>/gi,
73
+ /<thinking>[\s\S]*?<\/thinking>/gi,
74
+ /Human:/gi,
75
+ /Assistant:/gi,
76
+ ],
77
+ openai: [
78
+ /<|im_start|>/gi,
79
+ /<|im_end|>/gi,
80
+ ],
81
+ google: [
82
+ /<content>[\s\S]*?<\/content>/gi,
83
+ /[Parts|thought]/gi,
84
+ ],
85
+ };
86
+ /**
87
+ * Generate a deterministic cache key from a query.
88
+ * Same semantic content = same key across providers.
89
+ *
90
+ * @example
91
+ * const key1 = semanticCache.generateCacheKey("What is Python?", { provider: "openai" });
92
+ * const key2 = semanticCache.generateCacheKey("What is Python?", { provider: "anthropic" });
93
+ * // key1.key === key2.key (same semantic content = same key)
94
+ */
95
+ function generateCacheKey(query, options = {}) {
96
+ const originalLength = query.length;
97
+ // Step 1: Unicode normalization (NFC)
98
+ let normalized = query.normalize('NFC');
99
+ // Step 2: Collapse whitespace
100
+ normalized = normalized.replace(/\s+/g, ' ');
101
+ // Step 3: Remove control characters
102
+ normalized = normalized.replace(/[\x00-\x1F\x7F]/g, '');
103
+ // Step 4: Strip provider-specific formatting
104
+ if (options.provider) {
105
+ const patterns = PROVIDER_SYSTEM_PATTERNS[options.provider] || [];
106
+ for (const pattern of patterns) {
107
+ normalized = normalized.replace(pattern, '');
108
+ }
109
+ }
110
+ // Step 5: General system/assistant role removal
111
+ normalized = normalized
112
+ .replace(/\b(system|user|assistant|human|bot)\s*:/gi, '')
113
+ .replace(/^(system|user|assistant|human|bot)\s*/gim, '');
114
+ // Step 6: Remove markdown formatting
115
+ normalized = normalized
116
+ .replace(/```[\s\S]*?```/g, '[CODE_BLOCK]')
117
+ .replace(/`([^`]+)`/g, '$1')
118
+ .replace(/\*\*([^*]+)\*\*/g, '$1')
119
+ .replace(/_([^_]+)_/g, '$1')
120
+ .replace(/#+\s*/g, '')
121
+ .replace(/^\s*[-*+]\s+/gm, '')
122
+ .replace(/^\s*\d+\.\s+/gm, '');
123
+ // Step 7: Apply custom rules
124
+ if (options.customRules) {
125
+ for (const rule of options.customRules) {
126
+ normalized = normalized.replace(rule.pattern, rule.replacement);
127
+ }
128
+ }
129
+ // Step 8: Final whitespace collapse
130
+ normalized = normalized.replace(/\s+/g, ' ').trim();
131
+ // Count rules applied
132
+ let rulesApplied = 3; // Base normalizations
133
+ if (options.provider)
134
+ rulesApplied += 2;
135
+ if (options.customRules)
136
+ rulesApplied += options.customRules.length;
137
+ // Generate hash
138
+ const hash = crypto
139
+ .createHash('sha256')
140
+ .update(normalized)
141
+ .digest('hex')
142
+ .substring(0, 16);
143
+ // Build key
144
+ let key = `v1:${hash}`;
145
+ if (options.provider) {
146
+ key += `:${options.provider}`;
147
+ if (options.model) {
148
+ key += `:${options.model}`;
149
+ }
150
+ }
151
+ return {
152
+ key,
153
+ hash,
154
+ metadata: {
155
+ originalLength,
156
+ normalizedLength: normalized.length,
157
+ rulesApplied,
158
+ provider: options.provider,
159
+ },
160
+ };
161
+ }
162
+ /**
163
+ * Quick cache key generation (simplified API).
164
+ */
165
+ function toCacheKey(query, provider) {
166
+ return generateCacheKey(query, { provider }).key;
167
+ }
26
168
  /**
27
169
  * Extract character trigrams from text.
28
170
  * Pads with spaces so short words still produce trigrams.
@@ -1 +1 @@
1
- {"version":3,"file":"semanticCache.js","sourceRoot":"","sources":["../../src/cache/semanticCache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"semanticCache.js","sourceRoot":"","sources":["../../src/cache/semanticCache.ts"],"names":[],"mappings":"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"}