toonify-mcp 0.2.3 → 0.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 (55) hide show
  1. package/README.de.md +270 -0
  2. package/README.es.md +270 -0
  3. package/README.fr.md +270 -0
  4. package/README.id.md +270 -0
  5. package/README.ja.md +270 -0
  6. package/README.ko.md +270 -0
  7. package/README.md +21 -10
  8. package/README.pt.md +270 -0
  9. package/README.ru.md +270 -0
  10. package/README.vi.md +270 -0
  11. package/README.zh-CN.md +270 -0
  12. package/README.zh-TW.md +27 -16
  13. package/dist/metrics/metrics-collector.d.ts +2 -0
  14. package/dist/metrics/metrics-collector.d.ts.map +1 -1
  15. package/dist/metrics/metrics-collector.js +43 -8
  16. package/dist/metrics/metrics-collector.js.map +1 -1
  17. package/dist/optimizer/caching/cache-optimizer.d.ts +53 -0
  18. package/dist/optimizer/caching/cache-optimizer.d.ts.map +1 -0
  19. package/dist/optimizer/caching/cache-optimizer.js +176 -0
  20. package/dist/optimizer/caching/cache-optimizer.js.map +1 -0
  21. package/dist/optimizer/caching/cache-strategies.d.ts +19 -0
  22. package/dist/optimizer/caching/cache-strategies.d.ts.map +1 -0
  23. package/dist/optimizer/caching/cache-strategies.js +62 -0
  24. package/dist/optimizer/caching/cache-strategies.js.map +1 -0
  25. package/dist/optimizer/caching/cache-types.d.ts +36 -0
  26. package/dist/optimizer/caching/cache-types.d.ts.map +1 -0
  27. package/dist/optimizer/caching/cache-types.js +5 -0
  28. package/dist/optimizer/caching/cache-types.js.map +1 -0
  29. package/dist/optimizer/caching/index.d.ts +7 -0
  30. package/dist/optimizer/caching/index.d.ts.map +1 -0
  31. package/dist/optimizer/caching/index.js +7 -0
  32. package/dist/optimizer/caching/index.js.map +1 -0
  33. package/dist/optimizer/multilingual/index.d.ts +7 -0
  34. package/dist/optimizer/multilingual/index.d.ts.map +1 -0
  35. package/dist/optimizer/multilingual/index.js +7 -0
  36. package/dist/optimizer/multilingual/index.js.map +1 -0
  37. package/dist/optimizer/multilingual/language-detector.d.ts +43 -0
  38. package/dist/optimizer/multilingual/language-detector.d.ts.map +1 -0
  39. package/dist/optimizer/multilingual/language-detector.js +161 -0
  40. package/dist/optimizer/multilingual/language-detector.js.map +1 -0
  41. package/dist/optimizer/multilingual/language-profiles.d.ts +34 -0
  42. package/dist/optimizer/multilingual/language-profiles.d.ts.map +1 -0
  43. package/dist/optimizer/multilingual/language-profiles.js +196 -0
  44. package/dist/optimizer/multilingual/language-profiles.js.map +1 -0
  45. package/dist/optimizer/multilingual/tokenizer-adapter.d.ts +47 -0
  46. package/dist/optimizer/multilingual/tokenizer-adapter.d.ts.map +1 -0
  47. package/dist/optimizer/multilingual/tokenizer-adapter.js +96 -0
  48. package/dist/optimizer/multilingual/tokenizer-adapter.js.map +1 -0
  49. package/dist/optimizer/token-optimizer.d.ts +11 -1
  50. package/dist/optimizer/token-optimizer.d.ts.map +1 -1
  51. package/dist/optimizer/token-optimizer.js +49 -8
  52. package/dist/optimizer/token-optimizer.js.map +1 -1
  53. package/dist/optimizer/types.d.ts +15 -0
  54. package/dist/optimizer/types.d.ts.map +1 -1
  55. package/package.json +2 -2
@@ -24,6 +24,17 @@ export class MetricsCollector {
24
24
  stats.tokensBeforeOptimization += metric.originalTokens;
25
25
  stats.tokensAfterOptimization += metric.optimizedTokens;
26
26
  stats.totalSavings += metric.savings;
27
+ // v0.3.0: Track cache metrics
28
+ if (metric.wasCached) {
29
+ stats.cacheHits = (stats.cacheHits || 0) + 1;
30
+ stats.estimatedCacheSavings = (stats.estimatedCacheSavings || 0) + (metric.cacheSavings || 0);
31
+ }
32
+ else if (metric.wasOptimized) {
33
+ stats.cacheMisses = (stats.cacheMisses || 0) + 1;
34
+ }
35
+ // Calculate cache hit rate
36
+ const totalCacheAttempts = (stats.cacheHits || 0) + (stats.cacheMisses || 0);
37
+ stats.cacheHitRate = totalCacheAttempts > 0 ? (stats.cacheHits || 0) / totalCacheAttempts : 0;
27
38
  // Recalculate average
28
39
  stats.averageSavingsPercentage =
29
40
  stats.optimizedRequests > 0
@@ -61,6 +72,11 @@ export class MetricsCollector {
61
72
  tokensAfterOptimization: 0,
62
73
  totalSavings: 0,
63
74
  averageSavingsPercentage: 0,
75
+ // v0.3.0: Cache stats
76
+ cacheHits: 0,
77
+ cacheMisses: 0,
78
+ cacheHitRate: 0,
79
+ estimatedCacheSavings: 0,
64
80
  };
65
81
  }
66
82
  }
@@ -75,19 +91,38 @@ export class MetricsCollector {
75
91
  */
76
92
  async formatDashboard() {
77
93
  const stats = await this.getStats();
78
- return `
79
- 📊 Token Optimization Stats
80
- ━━━━━━━━━━━━━━━━━━━━━━━━
94
+ const optimizationRate = stats.totalRequests > 0
95
+ ? ((stats.optimizedRequests / stats.totalRequests) * 100).toFixed(1)
96
+ : '0.0';
97
+ // v0.3.0: Calculate total savings including cache
98
+ const totalSavingsWithCache = stats.totalSavings + (stats.estimatedCacheSavings || 0);
99
+ const costSavings = ((totalSavingsWithCache / 1_000_000) * 3).toFixed(2);
100
+ let dashboard = `
101
+ 📊 Token Optimization Stats (v0.3.0)
102
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
81
103
  Total Requests: ${stats.totalRequests}
82
- Optimized: ${stats.optimizedRequests} (${((stats.optimizedRequests / stats.totalRequests) * 100).toFixed(1)}%)
104
+ Optimized: ${stats.optimizedRequests} (${optimizationRate}%)
83
105
 
84
106
  Tokens Before: ${stats.tokensBeforeOptimization.toLocaleString()}
85
107
  Tokens After: ${stats.tokensAfterOptimization.toLocaleString()}
86
- Total Savings: ${stats.totalSavings.toLocaleString()} (${stats.averageSavingsPercentage.toFixed(1)}%)
108
+ Total Savings: ${stats.totalSavings.toLocaleString()} (${stats.averageSavingsPercentage.toFixed(1)}%)`;
109
+ // Add cache stats if available
110
+ if (stats.cacheHits || stats.cacheMisses) {
111
+ const cacheHitRate = (stats.cacheHitRate * 100).toFixed(1);
112
+ dashboard += `
113
+
114
+ 🚀 Prompt Caching Stats
115
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
116
+ Cache Hits: ${stats.cacheHits}
117
+ Cache Misses: ${stats.cacheMisses}
118
+ Hit Rate: ${cacheHitRate}%
119
+ Additional Cache Savings: ${(stats.estimatedCacheSavings || 0).toLocaleString()} tokens`;
120
+ }
121
+ dashboard += `
87
122
 
88
- 💰 Cost Savings (at $3/1M input tokens):
89
- $${((stats.totalSavings / 1_000_000) * 3).toFixed(2)} saved
90
- `.trim();
123
+ 💰 Total Cost Savings (at $3/1M input tokens):
124
+ $${costSavings} saved`;
125
+ return dashboard.trim();
91
126
  }
92
127
  }
93
128
  //# sourceMappingURL=metrics-collector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metrics-collector.js","sourceRoot":"","sources":["../../src/metrics/metrics-collector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metrics-collector.js","sourceRoot":"","sources":["../../src/metrics/metrics-collector.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAkBpB,MAAM,OAAO,gBAAgB;IACnB,SAAS,CAAS;IAE1B;QACE,iDAAiD;QACjD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CACxB,EAAE,CAAC,OAAO,EAAE,EACZ,SAAS,EACT,kBAAkB,CACnB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,MAA0B;QACrC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YAErC,0BAA0B;YAC1B,KAAK,CAAC,aAAa,EAAE,CAAC;YACtB,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,CAAC;YAED,KAAK,CAAC,wBAAwB,IAAI,MAAM,CAAC,cAAc,CAAC;YACxD,KAAK,CAAC,uBAAuB,IAAI,MAAM,CAAC,eAAe,CAAC;YACxD,KAAK,CAAC,YAAY,IAAI,MAAM,CAAC,OAAO,CAAC;YAErC,8BAA8B;YAC9B,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,KAAK,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC7C,KAAK,CAAC,qBAAqB,GAAG,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;YAChG,CAAC;iBAAM,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBAC/B,KAAK,CAAC,WAAW,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACnD,CAAC;YAED,2BAA2B;YAC3B,MAAM,kBAAkB,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;YAC7E,KAAK,CAAC,YAAY,GAAG,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;YAE9F,sBAAsB;YACtB,KAAK,CAAC,wBAAwB;gBAC5B,KAAK,CAAC,iBAAiB,GAAG,CAAC;oBACzB,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,wBAAwB,CAAC,GAAG,GAAG;oBAC7D,CAAC,CAAC,CAAC,CAAC;YAER,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,4DAA4D;YAC5D,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,OAAO,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,SAAS;QACrB,IAAI,CAAC;YACH,0BAA0B;YAC1B,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAElE,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACxD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,2CAA2C;YAC3C,OAAO;gBACL,aAAa,EAAE,CAAC;gBAChB,iBAAiB,EAAE,CAAC;gBACpB,wBAAwB,EAAE,CAAC;gBAC3B,uBAAuB,EAAE,CAAC;gBAC1B,YAAY,EAAE,CAAC;gBACf,wBAAwB,EAAE,CAAC;gBAC3B,sBAAsB;gBACtB,SAAS,EAAE,CAAC;gBACZ,WAAW,EAAE,CAAC;gBACd,YAAY,EAAE,CAAC;gBACf,qBAAqB,EAAE,CAAC;aACzB,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,SAAS,CAAC,KAAiB;QACvC,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAC9B,OAAO,CACR,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEpC,MAAM,gBAAgB,GAAG,KAAK,CAAC,aAAa,GAAG,CAAC;YAC9C,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YACpE,CAAC,CAAC,KAAK,CAAC;QAEV,kDAAkD;QAClD,MAAM,qBAAqB,GAAG,KAAK,CAAC,YAAY,GAAG,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,CAAC,CAAC;QACtF,MAAM,WAAW,GAAG,CAAC,CAAC,qBAAqB,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAEzE,IAAI,SAAS,GAAG;;;kBAGF,KAAK,CAAC,aAAa;aACxB,KAAK,CAAC,iBAAiB,KAAK,gBAAgB;;iBAExC,KAAK,CAAC,wBAAwB,CAAC,cAAc,EAAE;gBAChD,KAAK,CAAC,uBAAuB,CAAC,cAAc,EAAE;iBAC7C,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,KAAK,KAAK,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAEnG,+BAA+B;QAC/B,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACzC,MAAM,YAAY,GAAG,CAAC,KAAK,CAAC,YAAa,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC5D,SAAS,IAAI;;;;cAIL,KAAK,CAAC,SAAS;gBACb,KAAK,CAAC,WAAW;YACrB,YAAY;4BACI,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,SAAS,CAAC;QACrF,CAAC;QAED,SAAS,IAAI;;;MAGX,WAAW,QAAQ,CAAC;QAEtB,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;CACF"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Cache Optimizer: Structures content for prompt caching
3
+ */
4
+ import type { CacheConfig, CachedContent, CacheMetrics } from './cache-types.js';
5
+ export declare class CacheOptimizer {
6
+ private config;
7
+ private metrics;
8
+ constructor(config?: Partial<CacheConfig>);
9
+ /**
10
+ * Wrap optimized TOON content with cache-friendly structure
11
+ */
12
+ wrapWithCaching(toonContent: string, toolName: string, format: 'json' | 'csv' | 'yaml', originalTokens: number, optimizedTokens: number): CachedContent;
13
+ /**
14
+ * Create cacheable static prefix with TOON format instructions
15
+ */
16
+ private createStaticPrefix;
17
+ /**
18
+ * Format TOON output with metadata
19
+ */
20
+ private formatTOONOutput;
21
+ /**
22
+ * Format for Anthropic cache_control API
23
+ */
24
+ formatForAnthropic(cached: CachedContent): any[];
25
+ /**
26
+ * Format for OpenAI (structured but no explicit cache control)
27
+ */
28
+ formatForOpenAI(cached: CachedContent): {
29
+ system: string;
30
+ user: string;
31
+ };
32
+ /**
33
+ * Get current cache metrics
34
+ */
35
+ getMetrics(): CacheMetrics;
36
+ /**
37
+ * Record a cache hit (when static prefix is reused)
38
+ */
39
+ recordCacheHit(savedTokens: number): void;
40
+ /**
41
+ * Record a cache miss (when static prefix is not cached)
42
+ */
43
+ recordCacheMiss(): void;
44
+ /**
45
+ * Update cache hit rate
46
+ */
47
+ private updateHitRate;
48
+ /**
49
+ * Reset metrics
50
+ */
51
+ resetMetrics(): void;
52
+ }
53
+ //# sourceMappingURL=cache-optimizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-optimizer.d.ts","sourceRoot":"","sources":["../../../src/optimizer/caching/cache-optimizer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAiB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhG,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,OAAO,CAAe;gBAElB,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM;IAoB7C;;OAEG;IACH,eAAe,CACb,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,EAC/B,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,GACtB,aAAa;IAgDhB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA6B1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,GAAG,EAAE;IAkBhD;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAOxE;;OAEG;IACH,UAAU,IAAI,YAAY;IAI1B;;OAEG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAMzC;;OAEG;IACH,eAAe,IAAI,IAAI;IAKvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAKrB;;OAEG;IACH,YAAY,IAAI,IAAI;CAUrB"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Cache Optimizer: Structures content for prompt caching
3
+ */
4
+ import { getStrategy } from './cache-strategies.js';
5
+ export class CacheOptimizer {
6
+ config;
7
+ metrics;
8
+ constructor(config = {}) {
9
+ this.config = {
10
+ enabled: true,
11
+ provider: 'auto',
12
+ ttl: '1hour',
13
+ cacheStaticPrompts: true,
14
+ minCacheableTokens: 1024,
15
+ ...config
16
+ };
17
+ this.metrics = {
18
+ cacheHits: 0,
19
+ cacheMisses: 0,
20
+ cacheHitRate: 0,
21
+ estimatedCacheSavings: 0,
22
+ totalCacheableTokens: 0,
23
+ averageCacheReuseCount: 0
24
+ };
25
+ }
26
+ /**
27
+ * Wrap optimized TOON content with cache-friendly structure
28
+ */
29
+ wrapWithCaching(toonContent, toolName, format, originalTokens, optimizedTokens) {
30
+ if (!this.config.enabled || !this.config.cacheStaticPrompts) {
31
+ // Return non-cached structure
32
+ return {
33
+ staticPrefix: '',
34
+ dynamicContent: this.formatTOONOutput(toonContent, toolName, format),
35
+ cacheBreakpoint: false
36
+ };
37
+ }
38
+ // Check if content is large enough for caching
39
+ const strategy = getStrategy(this.config.provider);
40
+ if (!strategy.shouldCache(toonContent, optimizedTokens)) {
41
+ return {
42
+ staticPrefix: '',
43
+ dynamicContent: this.formatTOONOutput(toonContent, toolName, format),
44
+ cacheBreakpoint: false
45
+ };
46
+ }
47
+ // Create cacheable static prefix
48
+ const staticPrefix = this.createStaticPrefix(toolName, format);
49
+ // Dynamic content (cache breakpoint here)
50
+ const dynamicContent = `\n[DATA]\n${toonContent}`;
51
+ // Estimate cache size
52
+ const estimatedCacheSize = staticPrefix.length / 4; // Rough estimate
53
+ const metadata = {
54
+ provider: this.config.provider === 'auto' ?
55
+ (process.env.ANTHROPIC_API_KEY ? 'anthropic' : 'openai') :
56
+ this.config.provider,
57
+ estimatedCacheSize,
58
+ ttl: this.config.ttl
59
+ };
60
+ // Update metrics
61
+ this.metrics.totalCacheableTokens += estimatedCacheSize;
62
+ return {
63
+ staticPrefix,
64
+ dynamicContent,
65
+ cacheBreakpoint: true,
66
+ cacheMetadata: metadata
67
+ };
68
+ }
69
+ /**
70
+ * Create cacheable static prefix with TOON format instructions
71
+ */
72
+ createStaticPrefix(toolName, format) {
73
+ return `[SYSTEM] Token-Optimized Data from ${toolName}
74
+
75
+ The following data has been converted to TOON format for token efficiency.
76
+
77
+ TOON Format Specification:
78
+ - Arrays: name[size]{fields}: value1,value2
79
+ Example: users[2]{id,name}: 1,Alice 2,Bob
80
+
81
+ - Objects: key: value
82
+ Example: config.port: 8080
83
+
84
+ - Nested structures: parent.child: value
85
+ Example: server.config.timeout: 30
86
+
87
+ - Mixed types supported: strings, numbers, booleans, null
88
+
89
+ Source Format: ${format.toUpperCase()}
90
+ Optimization: ~60-95% token reduction
91
+
92
+ Instructions:
93
+ 1. Parse the TOON-formatted data below
94
+ 2. Interpret field names from the schema
95
+ 3. Reconstruct the original data structure if needed
96
+ 4. Use the data to answer the user's request
97
+
98
+ ---`;
99
+ }
100
+ /**
101
+ * Format TOON output with metadata
102
+ */
103
+ formatTOONOutput(toonContent, toolName, format) {
104
+ return `[TOON-${format.toUpperCase()}]\n${toonContent}`;
105
+ }
106
+ /**
107
+ * Format for Anthropic cache_control API
108
+ */
109
+ formatForAnthropic(cached) {
110
+ if (!cached.cacheBreakpoint) {
111
+ return [{ type: 'text', text: cached.dynamicContent }];
112
+ }
113
+ return [
114
+ {
115
+ type: 'text',
116
+ text: cached.staticPrefix,
117
+ cache_control: { type: 'ephemeral' }
118
+ },
119
+ {
120
+ type: 'text',
121
+ text: cached.dynamicContent
122
+ }
123
+ ];
124
+ }
125
+ /**
126
+ * Format for OpenAI (structured but no explicit cache control)
127
+ */
128
+ formatForOpenAI(cached) {
129
+ return {
130
+ system: cached.staticPrefix || 'Process the following TOON-formatted data:',
131
+ user: cached.dynamicContent
132
+ };
133
+ }
134
+ /**
135
+ * Get current cache metrics
136
+ */
137
+ getMetrics() {
138
+ return { ...this.metrics };
139
+ }
140
+ /**
141
+ * Record a cache hit (when static prefix is reused)
142
+ */
143
+ recordCacheHit(savedTokens) {
144
+ this.metrics.cacheHits++;
145
+ this.metrics.estimatedCacheSavings += savedTokens;
146
+ this.updateHitRate();
147
+ }
148
+ /**
149
+ * Record a cache miss (when static prefix is not cached)
150
+ */
151
+ recordCacheMiss() {
152
+ this.metrics.cacheMisses++;
153
+ this.updateHitRate();
154
+ }
155
+ /**
156
+ * Update cache hit rate
157
+ */
158
+ updateHitRate() {
159
+ const total = this.metrics.cacheHits + this.metrics.cacheMisses;
160
+ this.metrics.cacheHitRate = total > 0 ? this.metrics.cacheHits / total : 0;
161
+ }
162
+ /**
163
+ * Reset metrics
164
+ */
165
+ resetMetrics() {
166
+ this.metrics = {
167
+ cacheHits: 0,
168
+ cacheMisses: 0,
169
+ cacheHitRate: 0,
170
+ estimatedCacheSavings: 0,
171
+ totalCacheableTokens: 0,
172
+ averageCacheReuseCount: 0
173
+ };
174
+ }
175
+ }
176
+ //# sourceMappingURL=cache-optimizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-optimizer.js","sourceRoot":"","sources":["../../../src/optimizer/caching/cache-optimizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Caching strategies for different providers
3
+ */
4
+ import type { CacheStrategy } from './cache-types.js';
5
+ /**
6
+ * Anthropic Prompt Caching Strategy
7
+ * https://docs.anthropic.com/claude/docs/prompt-caching
8
+ */
9
+ export declare const anthropicStrategy: CacheStrategy;
10
+ /**
11
+ * OpenAI Prompt Caching Strategy (Placeholder)
12
+ * Note: OpenAI's caching is automatic and not configurable via API
13
+ */
14
+ export declare const openaiStrategy: CacheStrategy;
15
+ /**
16
+ * Get strategy by provider name
17
+ */
18
+ export declare function getStrategy(provider: 'anthropic' | 'openai' | 'auto'): CacheStrategy;
19
+ //# sourceMappingURL=cache-strategies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-strategies.d.ts","sourceRoot":"","sources":["../../../src/optimizer/caching/cache-strategies.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,kBAAkB,CAAC;AAErE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,aAsB/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,aAiB5B,CAAC;AAEF;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,aAAa,CAUpF"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Caching strategies for different providers
3
+ */
4
+ /**
5
+ * Anthropic Prompt Caching Strategy
6
+ * https://docs.anthropic.com/claude/docs/prompt-caching
7
+ */
8
+ export const anthropicStrategy = {
9
+ name: 'anthropic',
10
+ shouldCache(content, tokens) {
11
+ // Anthropic requires minimum 1024 tokens for cache breakpoints
12
+ // and minimum 2048 tokens for effective caching
13
+ return tokens >= 1024;
14
+ },
15
+ formatCacheStructure(cached) {
16
+ return [
17
+ {
18
+ type: 'text',
19
+ text: cached.staticPrefix,
20
+ cache_control: { type: 'ephemeral' }
21
+ },
22
+ {
23
+ type: 'text',
24
+ text: cached.dynamicContent
25
+ }
26
+ ];
27
+ }
28
+ };
29
+ /**
30
+ * OpenAI Prompt Caching Strategy (Placeholder)
31
+ * Note: OpenAI's caching is automatic and not configurable via API
32
+ */
33
+ export const openaiStrategy = {
34
+ name: 'openai',
35
+ shouldCache(content, tokens) {
36
+ // OpenAI's caching is automatic
37
+ // We still structure prompts for better reuse
38
+ return tokens >= 500;
39
+ },
40
+ formatCacheStructure(cached) {
41
+ // OpenAI doesn't have explicit cache_control
42
+ // Just return structured content
43
+ return {
44
+ system: cached.staticPrefix,
45
+ user: cached.dynamicContent
46
+ };
47
+ }
48
+ };
49
+ /**
50
+ * Get strategy by provider name
51
+ */
52
+ export function getStrategy(provider) {
53
+ if (provider === 'auto') {
54
+ // Auto-detect based on environment
55
+ if (process.env.ANTHROPIC_API_KEY) {
56
+ return anthropicStrategy;
57
+ }
58
+ return openaiStrategy;
59
+ }
60
+ return provider === 'anthropic' ? anthropicStrategy : openaiStrategy;
61
+ }
62
+ //# sourceMappingURL=cache-strategies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-strategies.js","sourceRoot":"","sources":["../../../src/optimizer/caching/cache-strategies.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAkB;IAC9C,IAAI,EAAE,WAAW;IAEjB,WAAW,CAAC,OAAe,EAAE,MAAc;QACzC,+DAA+D;QAC/D,gDAAgD;QAChD,OAAO,MAAM,IAAI,IAAI,CAAC;IACxB,CAAC;IAED,oBAAoB,CAAC,MAAqB;QACxC,OAAO;YACL;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM,CAAC,YAAY;gBACzB,aAAa,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;aACrC;YACD;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM,CAAC,cAAc;aAC5B;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C,IAAI,EAAE,QAAQ;IAEd,WAAW,CAAC,OAAe,EAAE,MAAc;QACzC,gCAAgC;QAChC,8CAA8C;QAC9C,OAAO,MAAM,IAAI,GAAG,CAAC;IACvB,CAAC;IAED,oBAAoB,CAAC,MAAqB;QACxC,6CAA6C;QAC7C,iCAAiC;QACjC,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,YAAY;YAC3B,IAAI,EAAE,MAAM,CAAC,cAAc;SAC5B,CAAC;IACJ,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,QAAyC;IACnE,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,mCAAmC;QACnC,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;YAClC,OAAO,iBAAiB,CAAC;QAC3B,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC;AACvE,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Type definitions for prompt caching integration
3
+ */
4
+ export interface CacheConfig {
5
+ enabled: boolean;
6
+ provider: 'anthropic' | 'openai' | 'auto';
7
+ ttl?: '5min' | '1hour';
8
+ cacheStaticPrompts: boolean;
9
+ minCacheableTokens?: number;
10
+ }
11
+ export interface CachedContent {
12
+ staticPrefix: string;
13
+ dynamicContent: string;
14
+ cacheBreakpoint: boolean;
15
+ cacheMetadata?: CacheMetadata;
16
+ }
17
+ export interface CacheMetadata {
18
+ provider: 'anthropic' | 'openai';
19
+ estimatedCacheSize: number;
20
+ cacheKey?: string;
21
+ ttl?: string;
22
+ }
23
+ export interface CacheMetrics {
24
+ cacheHits: number;
25
+ cacheMisses: number;
26
+ cacheHitRate: number;
27
+ estimatedCacheSavings: number;
28
+ totalCacheableTokens: number;
29
+ averageCacheReuseCount: number;
30
+ }
31
+ export interface CacheStrategy {
32
+ name: string;
33
+ shouldCache: (content: string, tokens: number) => boolean;
34
+ formatCacheStructure: (content: CachedContent) => any;
35
+ }
36
+ //# sourceMappingURL=cache-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-types.d.ts","sourceRoot":"","sources":["../../../src/optimizer/caching/cache-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC1C,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,WAAW,GAAG,QAAQ,CAAC;IACjC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1D,oBAAoB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,GAAG,CAAC;CACvD"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Type definitions for prompt caching integration
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=cache-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-types.js","sourceRoot":"","sources":["../../../src/optimizer/caching/cache-types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Caching module exports
3
+ */
4
+ export * from './cache-types.js';
5
+ export * from './cache-strategies.js';
6
+ export { CacheOptimizer } from './cache-optimizer.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/optimizer/caching/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Caching module exports
3
+ */
4
+ export * from './cache-types.js';
5
+ export * from './cache-strategies.js';
6
+ export { CacheOptimizer } from './cache-optimizer.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/optimizer/caching/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Multilingual tokenizer module exports
3
+ */
4
+ export * from './language-profiles.js';
5
+ export * from './language-detector.js';
6
+ export * from './tokenizer-adapter.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/optimizer/multilingual/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Multilingual tokenizer module exports
3
+ */
4
+ export * from './language-profiles.js';
5
+ export * from './language-detector.js';
6
+ export * from './tokenizer-adapter.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/optimizer/multilingual/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Language detection for token estimation
3
+ */
4
+ import { type LanguageProfile } from './language-profiles.js';
5
+ export interface LanguageDetectionResult {
6
+ language: LanguageProfile;
7
+ confidence: number;
8
+ detectedPatterns: number;
9
+ }
10
+ export declare class LanguageDetector {
11
+ private sampleSize;
12
+ constructor(sampleSize?: number);
13
+ /**
14
+ * Detect language from text content
15
+ */
16
+ detect(text: string): LanguageDetectionResult;
17
+ /**
18
+ * Detect if text is mixed-language
19
+ */
20
+ detectMixed(text: string): LanguageProfile[];
21
+ /**
22
+ * Estimate token multiplier for mixed-language content
23
+ */
24
+ estimateMultiplierForMixed(languages: LanguageProfile[]): number;
25
+ /**
26
+ * Estimate tokens with language awareness
27
+ */
28
+ estimateTokens(text: string, baseTokens: number): number;
29
+ /**
30
+ * Estimate tokens for mixed-language content
31
+ */
32
+ estimateTokensMixed(text: string, baseTokens: number): number;
33
+ /**
34
+ * Get detailed language breakdown
35
+ */
36
+ analyze(text: string): {
37
+ primary: LanguageDetectionResult;
38
+ all: LanguageProfile[];
39
+ estimatedMultiplier: number;
40
+ isMixed: boolean;
41
+ };
42
+ }
43
+ //# sourceMappingURL=language-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-detector.d.ts","sourceRoot":"","sources":["../../../src/optimizer/multilingual/language-detector.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEjF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,eAAe,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,UAAU,CAAS;gBAEf,UAAU,GAAE,MAAY;IAIpC;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB;IA+E7C;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE;IAgC5C;;OAEG;IACH,0BAA0B,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,MAAM;IAahE;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAYxD;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAM7D;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG;QACrB,OAAO,EAAE,uBAAuB,CAAC;QACjC,GAAG,EAAE,eAAe,EAAE,CAAC;QACvB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,OAAO,EAAE,OAAO,CAAC;KAClB;CAeF"}