toonify-mcp 0.2.2 → 0.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/.claude-plugin/plugin.json +1 -1
- package/README.es.md +270 -0
- package/README.id.md +270 -0
- package/README.ja.md +270 -0
- package/README.md +21 -10
- package/README.vi.md +270 -0
- package/README.zh-CN.md +270 -0
- package/README.zh-TW.md +27 -16
- package/dist/metrics/metrics-collector.d.ts +2 -0
- package/dist/metrics/metrics-collector.d.ts.map +1 -1
- package/dist/metrics/metrics-collector.js +43 -8
- package/dist/metrics/metrics-collector.js.map +1 -1
- package/dist/optimizer/caching/cache-optimizer.d.ts +53 -0
- package/dist/optimizer/caching/cache-optimizer.d.ts.map +1 -0
- package/dist/optimizer/caching/cache-optimizer.js +176 -0
- package/dist/optimizer/caching/cache-optimizer.js.map +1 -0
- package/dist/optimizer/caching/cache-strategies.d.ts +19 -0
- package/dist/optimizer/caching/cache-strategies.d.ts.map +1 -0
- package/dist/optimizer/caching/cache-strategies.js +62 -0
- package/dist/optimizer/caching/cache-strategies.js.map +1 -0
- package/dist/optimizer/caching/cache-types.d.ts +36 -0
- package/dist/optimizer/caching/cache-types.d.ts.map +1 -0
- package/dist/optimizer/caching/cache-types.js +5 -0
- package/dist/optimizer/caching/cache-types.js.map +1 -0
- package/dist/optimizer/caching/index.d.ts +7 -0
- package/dist/optimizer/caching/index.d.ts.map +1 -0
- package/dist/optimizer/caching/index.js +7 -0
- package/dist/optimizer/caching/index.js.map +1 -0
- package/dist/optimizer/multilingual/index.d.ts +7 -0
- package/dist/optimizer/multilingual/index.d.ts.map +1 -0
- package/dist/optimizer/multilingual/index.js +7 -0
- package/dist/optimizer/multilingual/index.js.map +1 -0
- package/dist/optimizer/multilingual/language-detector.d.ts +43 -0
- package/dist/optimizer/multilingual/language-detector.d.ts.map +1 -0
- package/dist/optimizer/multilingual/language-detector.js +161 -0
- package/dist/optimizer/multilingual/language-detector.js.map +1 -0
- package/dist/optimizer/multilingual/language-profiles.d.ts +34 -0
- package/dist/optimizer/multilingual/language-profiles.d.ts.map +1 -0
- package/dist/optimizer/multilingual/language-profiles.js +196 -0
- package/dist/optimizer/multilingual/language-profiles.js.map +1 -0
- package/dist/optimizer/multilingual/tokenizer-adapter.d.ts +47 -0
- package/dist/optimizer/multilingual/tokenizer-adapter.d.ts.map +1 -0
- package/dist/optimizer/multilingual/tokenizer-adapter.js +96 -0
- package/dist/optimizer/multilingual/tokenizer-adapter.js.map +1 -0
- package/dist/optimizer/token-optimizer.d.ts +11 -1
- package/dist/optimizer/token-optimizer.d.ts.map +1 -1
- package/dist/optimizer/token-optimizer.js +49 -8
- package/dist/optimizer/token-optimizer.js.map +1 -1
- package/dist/optimizer/types.d.ts +15 -0
- package/dist/optimizer/types.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-profiles.js","sourceRoot":"","sources":["../../../src/optimizer/multilingual/language-profiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tokenizer adapter with multilingual support
|
|
3
|
+
*/
|
|
4
|
+
import type { LanguageProfile } from './language-profiles.js';
|
|
5
|
+
export interface TokenEstimate {
|
|
6
|
+
tokens: number;
|
|
7
|
+
language: LanguageProfile;
|
|
8
|
+
confidence: number;
|
|
9
|
+
baseTokens: number;
|
|
10
|
+
multiplier: number;
|
|
11
|
+
}
|
|
12
|
+
export declare class MultilingualTokenizer {
|
|
13
|
+
private baseTokenizer;
|
|
14
|
+
private languageDetector;
|
|
15
|
+
private cacheEnabled;
|
|
16
|
+
private cache;
|
|
17
|
+
constructor(model?: string, cacheEnabled?: boolean);
|
|
18
|
+
/**
|
|
19
|
+
* Count tokens with language awareness
|
|
20
|
+
*/
|
|
21
|
+
encode(text: string): TokenEstimate;
|
|
22
|
+
/**
|
|
23
|
+
* Simple token count (just returns number for compatibility)
|
|
24
|
+
*/
|
|
25
|
+
count(text: string): number;
|
|
26
|
+
/**
|
|
27
|
+
* Get base tokens without language adjustment
|
|
28
|
+
*/
|
|
29
|
+
countBase(text: string): number;
|
|
30
|
+
/**
|
|
31
|
+
* Analyze language distribution in text
|
|
32
|
+
*/
|
|
33
|
+
analyze(text: string): {
|
|
34
|
+
estimate: TokenEstimate;
|
|
35
|
+
allLanguages: LanguageProfile[];
|
|
36
|
+
isMixed: boolean;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Clear token cache
|
|
40
|
+
*/
|
|
41
|
+
clearCache(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Free tokenizer resources
|
|
44
|
+
*/
|
|
45
|
+
free(): void;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=tokenizer-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenizer-adapter.d.ts","sourceRoot":"","sources":["../../../src/optimizer/multilingual/tokenizer-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,aAAa,CAAW;IAChC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,KAAK,CAA6B;gBAGxC,KAAK,GAAE,MAAgB,EACvB,YAAY,GAAE,OAAc;IAQ9B;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IAuCnC;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI3B;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI/B;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG;QACrB,QAAQ,EAAE,aAAa,CAAC;QACxB,YAAY,EAAE,eAAe,EAAE,CAAC;QAChC,OAAO,EAAE,OAAO,CAAC;KAClB;IAiBD;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,IAAI,IAAI,IAAI;CAIb"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tokenizer adapter with multilingual support
|
|
3
|
+
*/
|
|
4
|
+
import { encoding_for_model } from 'tiktoken';
|
|
5
|
+
import { LanguageDetector } from './language-detector.js';
|
|
6
|
+
export class MultilingualTokenizer {
|
|
7
|
+
baseTokenizer;
|
|
8
|
+
languageDetector;
|
|
9
|
+
cacheEnabled;
|
|
10
|
+
cache;
|
|
11
|
+
constructor(model = 'gpt-4', cacheEnabled = true) {
|
|
12
|
+
this.baseTokenizer = encoding_for_model(model);
|
|
13
|
+
this.languageDetector = new LanguageDetector();
|
|
14
|
+
this.cacheEnabled = cacheEnabled;
|
|
15
|
+
this.cache = new Map();
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Count tokens with language awareness
|
|
19
|
+
*/
|
|
20
|
+
encode(text) {
|
|
21
|
+
// Check cache first
|
|
22
|
+
if (this.cacheEnabled && this.cache.has(text)) {
|
|
23
|
+
return this.cache.get(text);
|
|
24
|
+
}
|
|
25
|
+
// Get base token count
|
|
26
|
+
const baseTokens = this.baseTokenizer.encode(text).length;
|
|
27
|
+
// Detect language
|
|
28
|
+
const detection = this.languageDetector.detect(text);
|
|
29
|
+
// Apply language multiplier
|
|
30
|
+
const multiplier = detection.language.tokenMultiplier;
|
|
31
|
+
const adjustedTokens = Math.ceil(baseTokens * multiplier);
|
|
32
|
+
const estimate = {
|
|
33
|
+
tokens: adjustedTokens,
|
|
34
|
+
language: detection.language,
|
|
35
|
+
confidence: detection.confidence,
|
|
36
|
+
baseTokens,
|
|
37
|
+
multiplier
|
|
38
|
+
};
|
|
39
|
+
// Cache result
|
|
40
|
+
if (this.cacheEnabled) {
|
|
41
|
+
// Limit cache size to prevent memory issues
|
|
42
|
+
if (this.cache.size > 1000) {
|
|
43
|
+
const firstKey = this.cache.keys().next().value;
|
|
44
|
+
if (firstKey !== undefined) {
|
|
45
|
+
this.cache.delete(firstKey);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
this.cache.set(text, estimate);
|
|
49
|
+
}
|
|
50
|
+
return estimate;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Simple token count (just returns number for compatibility)
|
|
54
|
+
*/
|
|
55
|
+
count(text) {
|
|
56
|
+
return this.encode(text).tokens;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get base tokens without language adjustment
|
|
60
|
+
*/
|
|
61
|
+
countBase(text) {
|
|
62
|
+
return this.baseTokenizer.encode(text).length;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Analyze language distribution in text
|
|
66
|
+
*/
|
|
67
|
+
analyze(text) {
|
|
68
|
+
const analysis = this.languageDetector.analyze(text);
|
|
69
|
+
const baseTokens = this.baseTokenizer.encode(text).length;
|
|
70
|
+
return {
|
|
71
|
+
estimate: {
|
|
72
|
+
tokens: Math.ceil(baseTokens * analysis.estimatedMultiplier),
|
|
73
|
+
language: analysis.primary.language,
|
|
74
|
+
confidence: analysis.primary.confidence,
|
|
75
|
+
baseTokens,
|
|
76
|
+
multiplier: analysis.estimatedMultiplier
|
|
77
|
+
},
|
|
78
|
+
allLanguages: analysis.all,
|
|
79
|
+
isMixed: analysis.isMixed
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Clear token cache
|
|
84
|
+
*/
|
|
85
|
+
clearCache() {
|
|
86
|
+
this.cache.clear();
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Free tokenizer resources
|
|
90
|
+
*/
|
|
91
|
+
free() {
|
|
92
|
+
this.baseTokenizer.free();
|
|
93
|
+
this.cache.clear();
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=tokenizer-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenizer-adapter.js","sourceRoot":"","sources":["../../../src/optimizer/multilingual/tokenizer-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
* TokenOptimizer: Core optimization logic using Toonify
|
|
3
3
|
*/
|
|
4
4
|
import type { OptimizationResult, ToolMetadata, OptimizationConfig } from './types.js';
|
|
5
|
+
import { CacheOptimizer } from './caching/index.js';
|
|
5
6
|
export declare class TokenOptimizer {
|
|
6
7
|
private config;
|
|
7
8
|
private tokenEncoder;
|
|
9
|
+
private cacheOptimizer;
|
|
8
10
|
constructor(config?: Partial<OptimizationConfig>);
|
|
9
11
|
/**
|
|
10
12
|
* Main optimization method
|
|
@@ -23,12 +25,20 @@ export declare class TokenOptimizer {
|
|
|
23
25
|
*/
|
|
24
26
|
private parseSimpleCSV;
|
|
25
27
|
/**
|
|
26
|
-
* Count tokens in text
|
|
28
|
+
* Count tokens in text with language awareness
|
|
27
29
|
*/
|
|
28
30
|
private countTokens;
|
|
31
|
+
/**
|
|
32
|
+
* Get detailed token estimate with language info
|
|
33
|
+
*/
|
|
34
|
+
private getTokenEstimate;
|
|
29
35
|
/**
|
|
30
36
|
* Check if tool should be skipped
|
|
31
37
|
*/
|
|
32
38
|
private shouldSkipTool;
|
|
39
|
+
/**
|
|
40
|
+
* Get cache optimizer instance for external access
|
|
41
|
+
*/
|
|
42
|
+
getCacheOptimizer(): CacheOptimizer;
|
|
33
43
|
}
|
|
34
44
|
//# sourceMappingURL=token-optimizer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-optimizer.d.ts","sourceRoot":"","sources":["../../src/optimizer/token-optimizer.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"token-optimizer.d.ts","sourceRoot":"","sources":["../../src/optimizer/token-optimizer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EAEZ,kBAAkB,EACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,YAAY,CAAwB;IAC5C,OAAO,CAAC,cAAc,CAAiB;gBAE3B,MAAM,GAAE,OAAO,CAAC,kBAAkB,CAAM;IA4BpD;;OAEG;IACG,QAAQ,CACZ,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,YAAY,GACtB,OAAO,CAAC,kBAAkB,CAAC;IA8G9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA4B5B;;OAEG;IACH,OAAO,CAAC,YAAY;IAiBpB;;OAEG;IACH,OAAO,CAAC,cAAc;IActB;;OAEG;IACH,OAAO,CAAC,WAAW;IAOnB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;OAEG;IACH,iBAAiB,IAAI,cAAc;CAGpC"}
|
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
* TokenOptimizer: Core optimization logic using Toonify
|
|
3
3
|
*/
|
|
4
4
|
import { encode as toonEncode } from '@toon-format/toon';
|
|
5
|
-
import { encoding_for_model } from 'tiktoken';
|
|
6
5
|
import yaml from 'yaml';
|
|
6
|
+
import { CacheOptimizer } from './caching/index.js';
|
|
7
|
+
import { MultilingualTokenizer } from './multilingual/index.js';
|
|
7
8
|
export class TokenOptimizer {
|
|
8
9
|
config;
|
|
9
10
|
tokenEncoder;
|
|
11
|
+
cacheOptimizer;
|
|
10
12
|
constructor(config = {}) {
|
|
11
13
|
this.config = {
|
|
12
14
|
enabled: true,
|
|
@@ -14,10 +16,23 @@ export class TokenOptimizer {
|
|
|
14
16
|
minSavingsThreshold: 30,
|
|
15
17
|
maxProcessingTime: 50,
|
|
16
18
|
skipToolPatterns: [],
|
|
19
|
+
caching: {
|
|
20
|
+
enabled: true,
|
|
21
|
+
provider: 'auto',
|
|
22
|
+
ttl: '1hour',
|
|
23
|
+
cacheStaticPrompts: true,
|
|
24
|
+
minCacheableTokens: 1024
|
|
25
|
+
},
|
|
26
|
+
multilingual: {
|
|
27
|
+
enabled: true,
|
|
28
|
+
defaultLanguage: 'en'
|
|
29
|
+
},
|
|
17
30
|
...config
|
|
18
31
|
};
|
|
19
|
-
// Use
|
|
20
|
-
this.tokenEncoder =
|
|
32
|
+
// v0.3.0: Use multilingual tokenizer
|
|
33
|
+
this.tokenEncoder = new MultilingualTokenizer('gpt-4', true);
|
|
34
|
+
// Initialize cache optimizer
|
|
35
|
+
this.cacheOptimizer = new CacheOptimizer(this.config.caching);
|
|
21
36
|
}
|
|
22
37
|
/**
|
|
23
38
|
* Main optimization method
|
|
@@ -80,17 +95,28 @@ export class TokenOptimizer {
|
|
|
80
95
|
reason: `Processing timeout: ${elapsed}ms`
|
|
81
96
|
};
|
|
82
97
|
}
|
|
98
|
+
// v0.3.0: Wrap with caching structure
|
|
99
|
+
const cachedContent = this.cacheOptimizer.wrapWithCaching(toonContent, metadata?.toolName || 'unknown', structuredData.type, originalTokens, optimizedTokens);
|
|
100
|
+
// Calculate additional savings from caching
|
|
101
|
+
// Assume 90% cache hit rate after first request
|
|
102
|
+
const cacheSavings = cachedContent.cacheBreakpoint ?
|
|
103
|
+
Math.floor(tokenSavings * 0.9) : 0;
|
|
83
104
|
return {
|
|
84
105
|
optimized: true,
|
|
85
106
|
originalContent: content,
|
|
86
|
-
optimizedContent:
|
|
107
|
+
optimizedContent: cachedContent.cacheBreakpoint ?
|
|
108
|
+
cachedContent.staticPrefix + cachedContent.dynamicContent :
|
|
109
|
+
cachedContent.dynamicContent,
|
|
87
110
|
originalTokens,
|
|
88
111
|
optimizedTokens,
|
|
89
112
|
savings: {
|
|
90
113
|
tokens: tokenSavings,
|
|
91
|
-
percentage: savingsPercentage
|
|
114
|
+
percentage: savingsPercentage,
|
|
115
|
+
withCaching: cacheSavings
|
|
92
116
|
},
|
|
93
|
-
format: structuredData.type
|
|
117
|
+
format: structuredData.type,
|
|
118
|
+
cachedContent,
|
|
119
|
+
cacheMetrics: this.cacheOptimizer.getMetrics()
|
|
94
120
|
};
|
|
95
121
|
}
|
|
96
122
|
catch (error) {
|
|
@@ -168,10 +194,19 @@ export class TokenOptimizer {
|
|
|
168
194
|
});
|
|
169
195
|
}
|
|
170
196
|
/**
|
|
171
|
-
* Count tokens in text
|
|
197
|
+
* Count tokens in text with language awareness
|
|
172
198
|
*/
|
|
173
199
|
countTokens(text) {
|
|
174
|
-
|
|
200
|
+
if (!this.config.multilingual?.enabled) {
|
|
201
|
+
return this.tokenEncoder.countBase(text);
|
|
202
|
+
}
|
|
203
|
+
return this.tokenEncoder.count(text);
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Get detailed token estimate with language info
|
|
207
|
+
*/
|
|
208
|
+
getTokenEstimate(text) {
|
|
209
|
+
return this.tokenEncoder.encode(text);
|
|
175
210
|
}
|
|
176
211
|
/**
|
|
177
212
|
* Check if tool should be skipped
|
|
@@ -182,5 +217,11 @@ export class TokenOptimizer {
|
|
|
182
217
|
return regex.test(toolName);
|
|
183
218
|
}) ?? false;
|
|
184
219
|
}
|
|
220
|
+
/**
|
|
221
|
+
* Get cache optimizer instance for external access
|
|
222
|
+
*/
|
|
223
|
+
getCacheOptimizer() {
|
|
224
|
+
return this.cacheOptimizer;
|
|
225
|
+
}
|
|
185
226
|
}
|
|
186
227
|
//# sourceMappingURL=token-optimizer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-optimizer.js","sourceRoot":"","sources":["../../src/optimizer/token-optimizer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,IAAI,UAAU,EAAwB,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"token-optimizer.js","sourceRoot":"","sources":["../../src/optimizer/token-optimizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Type definitions for token optimization
|
|
3
3
|
*/
|
|
4
|
+
import type { CacheConfig, CachedContent, CacheMetrics } from './caching/cache-types.js';
|
|
4
5
|
export interface OptimizationResult {
|
|
5
6
|
optimized: boolean;
|
|
6
7
|
originalContent: string;
|
|
@@ -10,14 +11,18 @@ export interface OptimizationResult {
|
|
|
10
11
|
savings?: {
|
|
11
12
|
tokens: number;
|
|
12
13
|
percentage: number;
|
|
14
|
+
withCaching?: number;
|
|
13
15
|
};
|
|
14
16
|
format?: 'json' | 'csv' | 'yaml' | 'unknown';
|
|
15
17
|
reason?: string;
|
|
18
|
+
cachedContent?: CachedContent;
|
|
19
|
+
cacheMetrics?: CacheMetrics;
|
|
16
20
|
}
|
|
17
21
|
export interface ToolMetadata {
|
|
18
22
|
toolName: string;
|
|
19
23
|
contentType?: string;
|
|
20
24
|
size: number;
|
|
25
|
+
modelId?: string;
|
|
21
26
|
}
|
|
22
27
|
export interface StructuredData {
|
|
23
28
|
type: 'json' | 'csv' | 'yaml';
|
|
@@ -30,6 +35,11 @@ export interface OptimizationConfig {
|
|
|
30
35
|
minSavingsThreshold: number;
|
|
31
36
|
maxProcessingTime: number;
|
|
32
37
|
skipToolPatterns?: string[];
|
|
38
|
+
caching?: CacheConfig;
|
|
39
|
+
multilingual?: {
|
|
40
|
+
enabled: boolean;
|
|
41
|
+
defaultLanguage: string;
|
|
42
|
+
};
|
|
33
43
|
}
|
|
34
44
|
export interface TokenStats {
|
|
35
45
|
totalRequests: number;
|
|
@@ -38,5 +48,10 @@ export interface TokenStats {
|
|
|
38
48
|
tokensAfterOptimization: number;
|
|
39
49
|
totalSavings: number;
|
|
40
50
|
averageSavingsPercentage: number;
|
|
51
|
+
cacheHits?: number;
|
|
52
|
+
cacheMisses?: number;
|
|
53
|
+
cacheHitRate?: number;
|
|
54
|
+
estimatedCacheSavings?: number;
|
|
41
55
|
}
|
|
56
|
+
export type { CacheConfig, CachedContent, CacheMetrics } from './caching/cache-types.js';
|
|
42
57
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/optimizer/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/optimizer/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEzF,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;IAC9B,IAAI,EAAE,GAAG,CAAC;IACV,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE5B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,YAAY,CAAC,EAAE;QACb,OAAO,EAAE,OAAO,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wBAAwB,EAAE,MAAM,CAAC;IACjC,uBAAuB,EAAE,MAAM,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,wBAAwB,EAAE,MAAM,CAAC;IAEjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAGD,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "toonify-mcp",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "MCP server + Claude Code Plugin for TOON format token optimization.
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "MCP server + Claude Code Plugin for TOON format token optimization. Reduces token usage by 30-65% (typically 50-55%) on JSON/CSV/YAML data via multilingual-aware optimization.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"bin": {
|