@nanocollective/nanocoder 1.15.1 → 1.16.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.
Files changed (145) hide show
  1. package/README.md +8 -1
  2. package/dist/ai-sdk-client.d.ts +5 -0
  3. package/dist/ai-sdk-client.d.ts.map +1 -1
  4. package/dist/ai-sdk-client.js +21 -3
  5. package/dist/ai-sdk-client.js.map +1 -1
  6. package/dist/app/utils/appUtils.d.ts.map +1 -1
  7. package/dist/app/utils/appUtils.js +5 -3
  8. package/dist/app/utils/appUtils.js.map +1 -1
  9. package/dist/commands/index.d.ts +1 -0
  10. package/dist/commands/index.d.ts.map +1 -1
  11. package/dist/commands/index.js +1 -0
  12. package/dist/commands/index.js.map +1 -1
  13. package/dist/commands/usage.d.ts +7 -0
  14. package/dist/commands/usage.d.ts.map +1 -0
  15. package/dist/commands/usage.js +69 -0
  16. package/dist/commands/usage.js.map +1 -0
  17. package/dist/commands.d.ts +3 -2
  18. package/dist/commands.d.ts.map +1 -1
  19. package/dist/commands.js.map +1 -1
  20. package/dist/components/usage/progress-bar.d.ts +14 -0
  21. package/dist/components/usage/progress-bar.d.ts.map +1 -0
  22. package/dist/components/usage/progress-bar.js +14 -0
  23. package/dist/components/usage/progress-bar.js.map +1 -0
  24. package/dist/components/usage/usage-display.d.ts +18 -0
  25. package/dist/components/usage/usage-display.d.ts.map +1 -0
  26. package/dist/components/usage/usage-display.js +50 -0
  27. package/dist/components/usage/usage-display.js.map +1 -0
  28. package/dist/config/paths.d.ts +0 -4
  29. package/dist/config/paths.d.ts.map +1 -1
  30. package/dist/config/paths.js +2 -18
  31. package/dist/config/paths.js.map +1 -1
  32. package/dist/hooks/useAppInitialization.d.ts.map +1 -1
  33. package/dist/hooks/useAppInitialization.js +2 -1
  34. package/dist/hooks/useAppInitialization.js.map +1 -1
  35. package/dist/hooks/useAppState.d.ts +2 -0
  36. package/dist/hooks/useAppState.d.ts.map +1 -1
  37. package/dist/hooks/useAppState.js +27 -5
  38. package/dist/hooks/useAppState.js.map +1 -1
  39. package/dist/hooks/useChatHandler.d.ts.map +1 -1
  40. package/dist/hooks/useChatHandler.js +45 -9
  41. package/dist/hooks/useChatHandler.js.map +1 -1
  42. package/dist/models/index.d.ts +2 -0
  43. package/dist/models/index.d.ts.map +1 -0
  44. package/dist/models/index.js +2 -0
  45. package/dist/models/index.js.map +1 -0
  46. package/dist/models/models-cache.d.ts +8 -0
  47. package/dist/models/models-cache.d.ts.map +1 -0
  48. package/dist/models/models-cache.js +63 -0
  49. package/dist/models/models-cache.js.map +1 -0
  50. package/dist/models/models-dev-client.d.ts +10 -0
  51. package/dist/models/models-dev-client.d.ts.map +1 -0
  52. package/dist/models/models-dev-client.js +268 -0
  53. package/dist/models/models-dev-client.js.map +1 -0
  54. package/dist/models/models-types.d.ts +66 -0
  55. package/dist/models/models-types.d.ts.map +1 -0
  56. package/dist/models/models-types.js +5 -0
  57. package/dist/models/models-types.js.map +1 -0
  58. package/dist/recommendations/model-database.d.ts.map +1 -1
  59. package/dist/recommendations/model-database.js +45 -0
  60. package/dist/recommendations/model-database.js.map +1 -1
  61. package/dist/tokenization/index.d.ts +2 -0
  62. package/dist/tokenization/index.d.ts.map +1 -0
  63. package/dist/tokenization/index.js +2 -0
  64. package/dist/tokenization/index.js.map +1 -0
  65. package/dist/tokenization/tokenizer-factory.d.ts +14 -0
  66. package/dist/tokenization/tokenizer-factory.d.ts.map +1 -0
  67. package/dist/tokenization/tokenizer-factory.js +90 -0
  68. package/dist/tokenization/tokenizer-factory.js.map +1 -0
  69. package/dist/tokenization/tokenizer-factory.spec.d.ts +5 -0
  70. package/dist/tokenization/tokenizer-factory.spec.d.ts.map +1 -0
  71. package/dist/tokenization/tokenizer-factory.spec.js +137 -0
  72. package/dist/tokenization/tokenizer-factory.spec.js.map +1 -0
  73. package/dist/tokenization/tokenizers/anthropic-tokenizer.d.ts +17 -0
  74. package/dist/tokenization/tokenizers/anthropic-tokenizer.d.ts.map +1 -0
  75. package/dist/tokenization/tokenizers/anthropic-tokenizer.js +35 -0
  76. package/dist/tokenization/tokenizers/anthropic-tokenizer.js.map +1 -0
  77. package/dist/tokenization/tokenizers/anthropic-tokenizer.spec.d.ts +5 -0
  78. package/dist/tokenization/tokenizers/anthropic-tokenizer.spec.d.ts.map +1 -0
  79. package/dist/tokenization/tokenizers/anthropic-tokenizer.spec.js +152 -0
  80. package/dist/tokenization/tokenizers/anthropic-tokenizer.spec.js.map +1 -0
  81. package/dist/tokenization/tokenizers/fallback-tokenizer.d.ts +13 -0
  82. package/dist/tokenization/tokenizers/fallback-tokenizer.d.ts.map +1 -0
  83. package/dist/tokenization/tokenizers/fallback-tokenizer.js +20 -0
  84. package/dist/tokenization/tokenizers/fallback-tokenizer.js.map +1 -0
  85. package/dist/tokenization/tokenizers/fallback-tokenizer.spec.d.ts +5 -0
  86. package/dist/tokenization/tokenizers/fallback-tokenizer.spec.d.ts.map +1 -0
  87. package/dist/tokenization/tokenizers/fallback-tokenizer.spec.js +183 -0
  88. package/dist/tokenization/tokenizers/fallback-tokenizer.spec.js.map +1 -0
  89. package/dist/tokenization/tokenizers/llama-tokenizer.d.ts +14 -0
  90. package/dist/tokenization/tokenizers/llama-tokenizer.d.ts.map +1 -0
  91. package/dist/tokenization/tokenizers/llama-tokenizer.js +33 -0
  92. package/dist/tokenization/tokenizers/llama-tokenizer.js.map +1 -0
  93. package/dist/tokenization/tokenizers/llama-tokenizer.spec.d.ts +5 -0
  94. package/dist/tokenization/tokenizers/llama-tokenizer.spec.d.ts.map +1 -0
  95. package/dist/tokenization/tokenizers/llama-tokenizer.spec.js +170 -0
  96. package/dist/tokenization/tokenizers/llama-tokenizer.spec.js.map +1 -0
  97. package/dist/tokenization/tokenizers/openai-tokenizer.d.ts +22 -0
  98. package/dist/tokenization/tokenizers/openai-tokenizer.d.ts.map +1 -0
  99. package/dist/tokenization/tokenizers/openai-tokenizer.js +48 -0
  100. package/dist/tokenization/tokenizers/openai-tokenizer.js.map +1 -0
  101. package/dist/tokenization/tokenizers/openai-tokenizer.spec.d.ts +5 -0
  102. package/dist/tokenization/tokenizers/openai-tokenizer.spec.d.ts.map +1 -0
  103. package/dist/tokenization/tokenizers/openai-tokenizer.spec.js +140 -0
  104. package/dist/tokenization/tokenizers/openai-tokenizer.spec.js.map +1 -0
  105. package/dist/types/commands.d.ts +1 -0
  106. package/dist/types/commands.d.ts.map +1 -1
  107. package/dist/types/tokenization.d.ts +31 -0
  108. package/dist/types/tokenization.d.ts.map +1 -0
  109. package/dist/types/tokenization.js +5 -0
  110. package/dist/types/tokenization.js.map +1 -0
  111. package/dist/types/usage.d.ts +55 -0
  112. package/dist/types/usage.d.ts.map +1 -0
  113. package/dist/types/usage.js +2 -0
  114. package/dist/types/usage.js.map +1 -0
  115. package/dist/usage/calculator.d.ts +28 -0
  116. package/dist/usage/calculator.d.ts.map +1 -0
  117. package/dist/usage/calculator.js +81 -0
  118. package/dist/usage/calculator.js.map +1 -0
  119. package/dist/usage/calculator.spec.d.ts +2 -0
  120. package/dist/usage/calculator.spec.d.ts.map +1 -0
  121. package/dist/usage/calculator.spec.js +303 -0
  122. package/dist/usage/calculator.spec.js.map +1 -0
  123. package/dist/usage/storage.d.ts +19 -0
  124. package/dist/usage/storage.d.ts.map +1 -0
  125. package/dist/usage/storage.js +134 -0
  126. package/dist/usage/storage.js.map +1 -0
  127. package/dist/usage/storage.spec.d.ts +2 -0
  128. package/dist/usage/storage.spec.d.ts.map +1 -0
  129. package/dist/usage/storage.spec.js +417 -0
  130. package/dist/usage/storage.spec.js.map +1 -0
  131. package/dist/usage/tracker.d.ts +28 -0
  132. package/dist/usage/tracker.d.ts.map +1 -0
  133. package/dist/usage/tracker.js +75 -0
  134. package/dist/usage/tracker.js.map +1 -0
  135. package/dist/usage/tracker.spec.d.ts +2 -0
  136. package/dist/usage/tracker.spec.d.ts.map +1 -0
  137. package/dist/usage/tracker.spec.js +347 -0
  138. package/dist/usage/tracker.spec.js.map +1 -0
  139. package/dist/utils/paste-roundtrip.spec.d.ts.map +1 -0
  140. package/dist/utils/paste-roundtrip.spec.js.map +1 -0
  141. package/package.json +7 -2
  142. package/dist/integration/paste-roundtrip.spec.d.ts.map +0 -1
  143. package/dist/integration/paste-roundtrip.spec.js.map +0 -1
  144. /package/dist/{integration → utils}/paste-roundtrip.spec.d.ts +0 -0
  145. /package/dist/{integration → utils}/paste-roundtrip.spec.js +0 -0
@@ -0,0 +1,268 @@
1
+ /**
2
+ * API client for models.dev
3
+ * Fetches and caches model metadata
4
+ */
5
+ import { request } from 'undici';
6
+ import { readCache, writeCache } from './models-cache.js';
7
+ const MODELS_DEV_API_URL = 'https://models.dev/api.json';
8
+ /**
9
+ * Fallback context limits for common Ollama model architectures
10
+ * Used when models.dev doesn't have the model data
11
+ */
12
+ const OLLAMA_MODEL_CONTEXT_LIMITS = {
13
+ // Llama 3.2 models
14
+ 'llama3.2': 128000,
15
+ 'llama3.2:1b': 128000,
16
+ 'llama3.2:3b': 128000,
17
+ // Llama 3.1 models
18
+ 'llama3.1': 128000,
19
+ 'llama3.1:8b': 128000,
20
+ 'llama3.1:70b': 128000,
21
+ 'llama3.1:405b': 128000,
22
+ // Llama 3 models
23
+ llama3: 8192,
24
+ 'llama3:8b': 8192,
25
+ 'llama3:70b': 8192,
26
+ // Llama 2 models
27
+ llama2: 4096,
28
+ 'llama2:7b': 4096,
29
+ 'llama2:13b': 4096,
30
+ 'llama2:70b': 4096,
31
+ // Mistral models
32
+ mistral: 32000,
33
+ 'mistral:7b': 32000,
34
+ mixtral: 32000,
35
+ 'mixtral:8x7b': 32000,
36
+ 'mixtral:8x22b': 64000,
37
+ // Qwen models
38
+ qwen: 32000,
39
+ 'qwen:7b': 32000,
40
+ 'qwen:14b': 32000,
41
+ qwen2: 32000,
42
+ 'qwen2:7b': 32000,
43
+ 'qwen2.5': 128000,
44
+ 'qwen2.5:7b': 128000,
45
+ qwen3: 128000,
46
+ 'qwen3:7b': 128000,
47
+ 'qwen3:14b': 128000,
48
+ 'qwen3:32b': 128000,
49
+ // Gemma models
50
+ gemma: 8192,
51
+ 'gemma:2b': 8192,
52
+ 'gemma:7b': 8192,
53
+ gemma2: 8192,
54
+ 'gemma2:9b': 8192,
55
+ 'gemma2:27b': 8192,
56
+ // Command-R models
57
+ 'command-r': 128000,
58
+ 'command-r-plus': 128000,
59
+ // DeepSeek models
60
+ 'deepseek-coder': 16000,
61
+ 'deepseek-coder-v2': 128000,
62
+ // Phi models
63
+ phi3: 128000,
64
+ 'phi3:mini': 128000,
65
+ 'phi3:medium': 128000,
66
+ // Cloud models
67
+ 'qwen3-coder:480b-cloud': 256000,
68
+ 'gpt-oss:120b-cloud': 128000,
69
+ 'gpt-oss:20b-cloud': 128000,
70
+ 'deepseek-v3.1:671b-cloud': 128000,
71
+ 'minimax-m2:cloud': 196608,
72
+ 'glm-4.6:cloud': 200000,
73
+ 'kimi-k2:1t-cloud': 256000,
74
+ 'kimi-k2-thinking:cloud': 256000,
75
+ };
76
+ /**
77
+ * Extract base model architecture from Ollama model name
78
+ * e.g., "llama3.1:8b-instruct-q4_0" -> "llama3.1:8b"
79
+ */
80
+ function extractOllamaModelBase(modelName) {
81
+ const lower = modelName.toLowerCase();
82
+ // Try exact matches first
83
+ for (const key of Object.keys(OLLAMA_MODEL_CONTEXT_LIMITS)) {
84
+ if (lower === key ||
85
+ lower.startsWith(`${key}-`) ||
86
+ lower.startsWith(`${key}:`)) {
87
+ return key;
88
+ }
89
+ }
90
+ // Try to match base architecture
91
+ if (lower.includes('llama3.2'))
92
+ return 'llama3.2';
93
+ if (lower.includes('llama3.1'))
94
+ return 'llama3.1';
95
+ if (lower.includes('llama3'))
96
+ return 'llama3';
97
+ if (lower.includes('llama2'))
98
+ return 'llama2';
99
+ if (lower.includes('mixtral:8x22b'))
100
+ return 'mixtral:8x22b';
101
+ if (lower.includes('mixtral'))
102
+ return 'mixtral';
103
+ if (lower.includes('mistral'))
104
+ return 'mistral';
105
+ if (lower.includes('qwen2.5'))
106
+ return 'qwen2.5';
107
+ if (lower.includes('qwen2'))
108
+ return 'qwen2';
109
+ if (lower.includes('qwen'))
110
+ return 'qwen';
111
+ if (lower.includes('gemma2'))
112
+ return 'gemma2';
113
+ if (lower.includes('gemma'))
114
+ return 'gemma';
115
+ if (lower.includes('command-r-plus'))
116
+ return 'command-r-plus';
117
+ if (lower.includes('command-r'))
118
+ return 'command-r';
119
+ if (lower.includes('deepseek-coder-v2'))
120
+ return 'deepseek-coder-v2';
121
+ if (lower.includes('deepseek'))
122
+ return 'deepseek-coder';
123
+ if (lower.includes('phi3'))
124
+ return 'phi3';
125
+ return null;
126
+ }
127
+ /**
128
+ * Get fallback context limit for Ollama models
129
+ */
130
+ function getOllamaFallbackContextLimit(modelName) {
131
+ const baseModel = extractOllamaModelBase(modelName);
132
+ if (!baseModel) {
133
+ return null;
134
+ }
135
+ return OLLAMA_MODEL_CONTEXT_LIMITS[baseModel] || null;
136
+ }
137
+ /**
138
+ * Fetch models data from models.dev API
139
+ * Falls back to cache if API is unavailable
140
+ */
141
+ async function fetchModelsData() {
142
+ try {
143
+ const response = await request(MODELS_DEV_API_URL, {
144
+ method: 'GET',
145
+ headersTimeout: 10000,
146
+ bodyTimeout: 30000,
147
+ });
148
+ if (response.statusCode !== 200) {
149
+ throw new Error(`Failed to fetch models data: HTTP ${response.statusCode}`);
150
+ }
151
+ const body = await response.body.json();
152
+ const data = body;
153
+ // Cache the successful response
154
+ writeCache(data);
155
+ return data;
156
+ }
157
+ catch (error) {
158
+ console.warn('Failed to fetch from models.dev:', error);
159
+ // Try to use cached data as fallback
160
+ const cached = readCache();
161
+ if (cached) {
162
+ console.log('Using cached models data');
163
+ return cached.data;
164
+ }
165
+ return null;
166
+ }
167
+ }
168
+ /**
169
+ * Get models data, preferring cache if valid
170
+ */
171
+ async function getModelsData() {
172
+ // Try cache first
173
+ const cached = readCache();
174
+ if (cached) {
175
+ return cached.data;
176
+ }
177
+ // Fetch fresh data if cache is invalid
178
+ return fetchModelsData();
179
+ }
180
+ /**
181
+ * Find a model by ID across all providers
182
+ * Returns the model info and provider name
183
+ */
184
+ async function findModelById(modelId) {
185
+ const data = await getModelsData();
186
+ if (!data) {
187
+ return null;
188
+ }
189
+ // Search through all providers
190
+ for (const [_providerId, provider] of Object.entries(data)) {
191
+ const model = provider.models[modelId];
192
+ if (model) {
193
+ return {
194
+ id: model.id,
195
+ name: model.name,
196
+ provider: provider.name,
197
+ contextLimit: model.limit.context,
198
+ outputLimit: model.limit.output,
199
+ supportsToolCalls: model.tool_call,
200
+ cost: {
201
+ input: model.cost.input,
202
+ output: model.cost.output,
203
+ },
204
+ };
205
+ }
206
+ }
207
+ return null;
208
+ }
209
+ /**
210
+ * Find a model by partial name match
211
+ * Useful for local models where exact ID might not match
212
+ */
213
+ async function findModelByName(modelName) {
214
+ const data = await getModelsData();
215
+ if (!data) {
216
+ return null;
217
+ }
218
+ const lowerName = modelName.toLowerCase();
219
+ // Search through all providers
220
+ for (const [_providerId, provider] of Object.entries(data)) {
221
+ for (const [_modelId, model] of Object.entries(provider.models)) {
222
+ if (model.id.toLowerCase().includes(lowerName) ||
223
+ model.name.toLowerCase().includes(lowerName)) {
224
+ return {
225
+ id: model.id,
226
+ name: model.name,
227
+ provider: provider.name,
228
+ contextLimit: model.limit.context,
229
+ outputLimit: model.limit.output,
230
+ supportsToolCalls: model.tool_call,
231
+ cost: {
232
+ input: model.cost.input,
233
+ output: model.cost.output,
234
+ },
235
+ };
236
+ }
237
+ }
238
+ }
239
+ return null;
240
+ }
241
+ /**
242
+ * Get context limit for a model
243
+ * Returns null if model not found and no fallback available
244
+ */
245
+ export async function getModelContextLimit(modelId) {
246
+ // Strip :cloud or -cloud suffix if present (Ollama cloud models)
247
+ const normalizedModelId = modelId.endsWith(':cloud') || modelId.endsWith('-cloud')
248
+ ? modelId.slice(0, -6) // Remove ":cloud" or "-cloud"
249
+ : modelId;
250
+ // Try exact ID match first
251
+ let modelInfo = await findModelById(normalizedModelId);
252
+ // Try partial name match if exact match fails
253
+ if (!modelInfo) {
254
+ modelInfo = await findModelByName(normalizedModelId);
255
+ }
256
+ // If found in models.dev, return that
257
+ if (modelInfo) {
258
+ return modelInfo.contextLimit;
259
+ }
260
+ // Fall back to Ollama model defaults
261
+ const ollamaLimit = getOllamaFallbackContextLimit(normalizedModelId);
262
+ if (ollamaLimit) {
263
+ return ollamaLimit;
264
+ }
265
+ // No context limit found
266
+ return null;
267
+ }
268
+ //# sourceMappingURL=models-dev-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models-dev-client.js","sourceRoot":"","sources":["../../source/models/models-dev-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Type definitions for models.dev API data structures
3
+ */
4
+ export type ModelsDevModel = {
5
+ id: string;
6
+ name: string;
7
+ release_date: string;
8
+ attachment: boolean;
9
+ reasoning: boolean;
10
+ temperature: boolean;
11
+ tool_call: boolean;
12
+ cost: {
13
+ input: number;
14
+ output: number;
15
+ cache_read?: number;
16
+ cache_write?: number;
17
+ };
18
+ limit: {
19
+ context: number;
20
+ output: number;
21
+ };
22
+ modalities?: {
23
+ input: Array<'text' | 'audio' | 'image' | 'video' | 'pdf'>;
24
+ output: Array<'text' | 'audio' | 'image' | 'video' | 'pdf'>;
25
+ };
26
+ experimental?: boolean;
27
+ status?: 'alpha' | 'beta' | 'deprecated';
28
+ options: Record<string, unknown>;
29
+ headers?: Record<string, string>;
30
+ provider?: {
31
+ npm: string;
32
+ };
33
+ };
34
+ export type ModelsDevProvider = {
35
+ api?: string;
36
+ name: string;
37
+ env: string[];
38
+ id: string;
39
+ npm?: string;
40
+ models: Record<string, ModelsDevModel>;
41
+ };
42
+ export type ModelsDevDatabase = Record<string, ModelsDevProvider>;
43
+ /**
44
+ * Cached models data with metadata
45
+ */
46
+ export interface CachedModelsData {
47
+ data: ModelsDevDatabase;
48
+ fetchedAt: number;
49
+ expiresAt: number;
50
+ }
51
+ /**
52
+ * Model lookup result
53
+ */
54
+ export interface ModelInfo {
55
+ id: string;
56
+ name: string;
57
+ provider: string;
58
+ contextLimit: number;
59
+ outputLimit: number;
60
+ supportsToolCalls: boolean;
61
+ cost: {
62
+ input: number;
63
+ output: number;
64
+ };
65
+ }
66
+ //# sourceMappingURL=models-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models-types.d.ts","sourceRoot":"","sources":["../../source/models/models-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,cAAc,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,KAAK,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KACf,CAAC;IACF,UAAU,CAAC,EAAE;QACZ,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC;QAC3D,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC;KAC5D,CAAC;IACF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,YAAY,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,iBAAiB,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,IAAI,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KACf,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Type definitions for models.dev API data structures
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=models-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models-types.js","sourceRoot":"","sources":["../../source/models/models-types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1 +1 @@
1
- {"version":3,"file":"model-database.d.ts","sourceRoot":"","sources":["../../source/recommendations/model-database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAqdzC,qBAAa,aAAa;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IAEvC,MAAM,CAAC,WAAW,IAAI,aAAa;IAOnC,YAAY,IAAI,UAAU,EAAE;CAG5B;AAED,eAAO,MAAM,aAAa,eAA8B,CAAC"}
1
+ {"version":3,"file":"model-database.d.ts","sourceRoot":"","sources":["../../source/recommendations/model-database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAqgBzC,qBAAa,aAAa;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IAEvC,MAAM,CAAC,WAAW,IAAI,aAAa;IAOnC,YAAY,IAAI,UAAU,EAAE;CAG5B;AAED,eAAO,MAAM,aAAa,eAA8B,CAAC"}
@@ -1,4 +1,34 @@
1
1
  const MODEL_DATABASE = [
2
+ {
3
+ name: 'minimax/minimax-m2',
4
+ author: 'MiniMax',
5
+ size: '230B',
6
+ local: true,
7
+ api: true,
8
+ minMemoryGB: 160,
9
+ quality: {
10
+ agentic: 9,
11
+ local: 2,
12
+ cost: 7,
13
+ },
14
+ costType: 'free',
15
+ costDetails: 'Free to run locally. API: from $0.25/M input, $1.02/M output.',
16
+ },
17
+ {
18
+ name: 'moonshotai/kimi-k2-thinking',
19
+ author: 'Moonshot AI',
20
+ size: '1T',
21
+ local: true,
22
+ api: true,
23
+ minMemoryGB: 500,
24
+ quality: {
25
+ agentic: 8,
26
+ local: 1,
27
+ cost: 7,
28
+ },
29
+ costType: 'free',
30
+ costDetails: 'Free to run locally. API: from $0.60/M input, $2.50/M output.',
31
+ },
2
32
  {
3
33
  name: 'qwen2.5-coder:0.5b',
4
34
  author: 'Alibaba',
@@ -269,6 +299,21 @@ const MODEL_DATABASE = [
269
299
  costType: 'free',
270
300
  costDetails: 'Free to run locally. API: from $0.07/M input, $0.28/M output.',
271
301
  },
302
+ {
303
+ name: 'mistralai/voxtral-small-24b-2507',
304
+ author: 'Mistral',
305
+ size: '24B',
306
+ local: true,
307
+ api: true,
308
+ minMemoryGB: 18,
309
+ quality: {
310
+ agentic: 5,
311
+ local: 7,
312
+ cost: 8.5,
313
+ },
314
+ costType: 'free',
315
+ costDetails: 'Free to run locally. API: from $0.10/M input, $0.30/M output.',
316
+ },
272
317
  {
273
318
  name: 'devstral-medium',
274
319
  author: 'Mistral',
@@ -1 +1 @@
1
- {"version":3,"file":"model-database.js","sourceRoot":"","sources":["../../source/recommendations/model-database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-database.js","sourceRoot":"","sources":["../../source/recommendations/model-database.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { createTokenizer } from './tokenizer-factory.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/tokenization/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createTokenizer } from './tokenizer-factory.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/tokenization/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Tokenizer factory
3
+ * Creates appropriate tokenizer based on provider and model
4
+ */
5
+ import type { Tokenizer, TokenizerProvider } from '../types/tokenization.js';
6
+ /**
7
+ * Create a tokenizer based on provider and model
8
+ */
9
+ export declare function createTokenizer(providerName: string, modelId: string): Tokenizer;
10
+ /**
11
+ * Create a tokenizer with explicit provider
12
+ */
13
+ export declare function createTokenizerForProvider(provider: TokenizerProvider, modelId?: string): Tokenizer;
14
+ //# sourceMappingURL=tokenizer-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenizer-factory.d.ts","sourceRoot":"","sources":["../../source/tokenization/tokenizer-factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAE,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AA2D3E;;GAEG;AACH,wBAAgB,eAAe,CAC9B,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,GACb,SAAS,CAuBX;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACzC,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,CAAC,EAAE,MAAM,GACd,SAAS,CAuBX"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Tokenizer factory
3
+ * Creates appropriate tokenizer based on provider and model
4
+ */
5
+ import { OpenAITokenizer } from './tokenizers/openai-tokenizer.js';
6
+ import { AnthropicTokenizer } from './tokenizers/anthropic-tokenizer.js';
7
+ import { LlamaTokenizer } from './tokenizers/llama-tokenizer.js';
8
+ import { FallbackTokenizer } from './tokenizers/fallback-tokenizer.js';
9
+ /**
10
+ * Detect provider from model ID or provider name
11
+ */
12
+ function detectProvider(providerName, modelId) {
13
+ const lowerProvider = providerName.toLowerCase();
14
+ const lowerModel = modelId.toLowerCase();
15
+ // Check provider name
16
+ if (lowerProvider.includes('openai')) {
17
+ return 'openai';
18
+ }
19
+ if (lowerProvider.includes('anthropic') || lowerProvider.includes('claude')) {
20
+ return 'anthropic';
21
+ }
22
+ // Check model ID for common patterns
23
+ if (lowerModel.includes('gpt') || lowerModel.includes('openai')) {
24
+ return 'openai';
25
+ }
26
+ if (lowerModel.includes('claude')) {
27
+ return 'anthropic';
28
+ }
29
+ if (lowerModel.includes('llama') ||
30
+ lowerModel.includes('mistral') ||
31
+ lowerModel.includes('qwen') ||
32
+ lowerModel.includes('gemma') ||
33
+ lowerModel.includes('phi') ||
34
+ lowerModel.includes('codellama') ||
35
+ lowerModel.includes('deepseek') ||
36
+ lowerModel.includes('mixtral')) {
37
+ return 'llama';
38
+ }
39
+ // Default to llama for local models (most common for local inference)
40
+ if (lowerProvider.includes('ollama') ||
41
+ lowerProvider.includes('llama.cpp') ||
42
+ lowerProvider.includes('local')) {
43
+ return 'llama';
44
+ }
45
+ return 'fallback';
46
+ }
47
+ /**
48
+ * Create a tokenizer based on provider and model
49
+ */
50
+ export function createTokenizer(providerName, modelId) {
51
+ // Strip :cloud suffix if present (Ollama cloud models)
52
+ const normalizedModelId = modelId.endsWith(':cloud') || modelId.endsWith('-cloud')
53
+ ? modelId.slice(0, -6)
54
+ : modelId;
55
+ const provider = detectProvider(providerName, normalizedModelId);
56
+ switch (provider) {
57
+ case 'openai':
58
+ return new OpenAITokenizer(normalizedModelId);
59
+ case 'anthropic':
60
+ return new AnthropicTokenizer(normalizedModelId);
61
+ case 'llama':
62
+ return new LlamaTokenizer(normalizedModelId);
63
+ case 'fallback':
64
+ default:
65
+ return new FallbackTokenizer();
66
+ }
67
+ }
68
+ /**
69
+ * Create a tokenizer with explicit provider
70
+ */
71
+ export function createTokenizerForProvider(provider, modelId) {
72
+ switch (provider) {
73
+ case 'openai':
74
+ return new OpenAITokenizer(modelId);
75
+ case 'anthropic':
76
+ return new AnthropicTokenizer(modelId);
77
+ case 'llama':
78
+ return new LlamaTokenizer(modelId);
79
+ case 'auto':
80
+ // Auto-detect based on model ID if provided
81
+ if (modelId) {
82
+ return createTokenizer('', modelId);
83
+ }
84
+ return new FallbackTokenizer();
85
+ case 'fallback':
86
+ default:
87
+ return new FallbackTokenizer();
88
+ }
89
+ }
90
+ //# sourceMappingURL=tokenizer-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenizer-factory.js","sourceRoot":"","sources":["../../source/tokenization/tokenizer-factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for tokenizer-factory.ts
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=tokenizer-factory.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenizer-factory.spec.d.ts","sourceRoot":"","sources":["../../source/tokenization/tokenizer-factory.spec.ts"],"names":[],"mappings":"AAAA;;GAEG"}