utilitas 1999.1.39 → 1999.1.41

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/lib/alan.mjs CHANGED
@@ -55,37 +55,36 @@ const [
55
55
 
56
56
  const [
57
57
  OPENAI, GEMINI, OPENAI_TRAINING, OLLAMA, GPT_4O_MINI, GPT_4O, GPT_O1,
58
- GPT_O3_MINI, GEMINI_20_FLASH, GEMINI_20_FLASH_THINKING, GEMINI_20_PRO, NOVA,
59
- DEEPSEEK_R1, MD_CODE, TEXT_EMBEDDING_3_SMALL, TEXT_EMBEDDING_3_LARGE,
60
- CLOUD_37_SONNET, AUDIO, WAV, ATTACHMENTS, CHAT, OPENAI_VOICE, MEDIUM, LOW,
61
- HIGH, GPT_REASONING_EFFORT, THINK, THINK_STR, THINK_END, AZURE, TOOLS_STR,
62
- TOOLS_END, TOOLS, TEXT, THINKING, OK, FUNC, GPT_45, REDACTED_THINKING,
63
- GEMMA_3_27B, AZURE_OPENAI, ANTHROPIC, VERTEX_ANTHROPIC, GEMMA327B, v8k, ais,
64
- MAX_TOOL_RECURSION, LOG, name, user, system, assistant, MODEL, JSON_OBJECT,
65
- TOOL, silent, GEMINI_EMBEDDING_M, INVALID_FILE, tokenSafeRatio,
66
- GPT_QUERY_LIMIT, CONTENT_IS_REQUIRED, OPENAI_HI_RES_SIZE, k, kT, m, minute,
67
- hour, gb, trimTailing, EBD, GEMINI_20_FLASH_EXP, IMAGE, JINA,
68
- JINA_DEEPSEARCH, JINA_CLIP, VERTEX, GEMINI_25_PRO
58
+ GPT_O3_MINI, GEMINI_20_FLASH, NOVA, DEEPSEEK_R1, MD_CODE,
59
+ TEXT_EMBEDDING_3_SMALL, TEXT_EMBEDDING_3_LARGE, CLOUD_37_SONNET, AUDIO, WAV,
60
+ ATTACHMENTS, CHAT, OPENAI_VOICE, MEDIUM, LOW, HIGH, GPT_REASONING_EFFORT,
61
+ THINK, THINK_STR, THINK_END, AZURE, TOOLS_STR, TOOLS_END, TOOLS, TEXT,
62
+ THINKING, OK, FUNC, GPT_45, REDACTED_THINKING, GEMMA_3_27B, AZURE_OPENAI,
63
+ ANTHROPIC, VERTEX_ANTHROPIC, GEMMA327B, v8k, ais, MAX_TOOL_RECURSION, LOG,
64
+ name, user, system, assistant, MODEL, JSON_OBJECT, TOOL, silent,
65
+ GEMINI_EMBEDDING_M, INVALID_FILE, tokenSafeRatio, GPT_QUERY_LIMIT,
66
+ CONTENT_IS_REQUIRED, OPENAI_HI_RES_SIZE, k, kT, m, minute, hour, gb,
67
+ trimTailing, EBD, GEMINI_20_FLASH_EXP, IMAGE, JINA, JINA_DEEPSEARCH,
68
+ JINA_CLIP, VERTEX, GEMINI_25_PRO, SILICONFLOW, SF_DEEPSEEK_V3,
69
69
  ] = [
70
70
  'OpenAI', 'Gemini', 'OPENAI_TRAINING', 'Ollama', 'gpt-4o-mini',
71
- 'gpt-4o', 'o1', 'o3-mini', 'gemini-2.0-flash',
72
- 'gemini-2.0-flash-thinking-exp', 'gemini-2.0-pro-exp', 'nova',
73
- 'deepseek-r1', '```', 'text-embedding-3-small',
74
- 'text-embedding-3-large', 'claude-3-7-sonnet@20250219', 'audio', 'wav',
75
- '[ATTACHMENTS]', 'CHAT', 'OPENAI_VOICE', 'medium', 'low', 'high',
76
- 'medium', 'think', '<think>', '</think>', 'AZURE', '<tools>',
77
- '</tools>', 'tools', 'text', 'thinking', 'OK', 'function',
78
- 'gpt-4.5-preview', 'redacted_thinking', 'gemma-3-27b-it',
79
- 'Azure Openai', 'Anthropic', 'Vertex Anthropic', 'gemma3:27b',
80
- 7680 * 4320, [], 10, { log: true }, 'Alan', 'user', 'system',
81
- 'assistant', 'model', 'json_object', 'tool', true,
71
+ 'gpt-4o', 'o1', 'o3-mini', 'gemini-2.0-flash', 'nova', 'deepseek-r1',
72
+ '```', 'text-embedding-3-small', 'text-embedding-3-large',
73
+ 'claude-3-7-sonnet@20250219', 'audio', 'wav', '[ATTACHMENTS]', 'CHAT',
74
+ 'OPENAI_VOICE', 'medium', 'low', 'high', 'medium', 'think', '<think>',
75
+ '</think>', 'AZURE', '<tools>', '</tools>', 'tools', 'text', 'thinking',
76
+ 'OK', 'function', 'gpt-4.5-preview', 'redacted_thinking',
77
+ 'gemma-3-27b-it', 'Azure Openai', 'Anthropic', 'Vertex Anthropic',
78
+ 'gemma3:27b', 7680 * 4320, [], 10, { log: true }, 'Alan', 'user',
79
+ 'system', 'assistant', 'model', 'json_object', 'tool', true,
82
80
  'gemini-embedding-exp-03-07', 'Invalid file data.', 1.1, 100,
83
81
  'Content is required.', 2000 * 768, x => 1024 * x, x => 1000 * x,
84
82
  x => 1024 * 1024 * x, x => 60 * x, x => 60 * 60 * x,
85
83
  x => 1024 * 1024 * 1024 * x, x => x.replace(/[\.\s]*$/, ''),
86
84
  { embedding: true }, 'gemini-2.0-flash-exp', 'image', 'Jina',
87
85
  'jina-deepsearch-v1', 'jina-clip-v2', 'Vertex',
88
- 'gemini-2.5-pro-exp-03-25',
86
+ 'gemini-2.5-pro-exp-03-25', 'SiliconFlow',
87
+ 'Pro/deepseek-ai/DeepSeek-V3',
89
88
  ];
90
89
 
91
90
  const [tool, messages, text]
@@ -151,14 +150,6 @@ const MODELS = {
151
150
  ...GEMINI_RULES, contextWindow: m(1), maxOutputTokens: k(8),
152
151
  fast: true, json: true, tools: true,
153
152
  },
154
- [GEMINI_20_FLASH_THINKING]: {
155
- ...GEMINI_RULES, contextWindow: m(1), maxOutputTokens: k(64),
156
- reasoning: true,
157
- },
158
- [GEMINI_20_PRO]: {
159
- ...GEMINI_RULES, contextWindow: m(2), maxOutputTokens: k(8),
160
- json: true,
161
- },
162
153
  [GEMINI_25_PRO]: {
163
154
  ...GEMINI_RULES, contextWindow: m(1), maxOutputTokens: k(64),
164
155
  json: true, reasoning: true, tools: true,
@@ -176,9 +167,13 @@ const MODELS = {
176
167
  json: true, vision: true, deepsearch: true, defaultProvider: JINA,
177
168
  },
178
169
  [DEEPSEEK_R1]: {
179
- contextWindow: kT(128), maxOutputTokens: k(32),
170
+ contextWindow: kT(128), maxOutputTokens: k(8),
180
171
  reasoning: true,
181
- }, // ERROR: column cannot have more than 2000 dimensions for hnsw index
172
+ },
173
+ [SF_DEEPSEEK_V3]: {
174
+ contextWindow: kT(128), maxOutputTokens: k(8),
175
+ defaultProvider: SILICONFLOW,
176
+ },// ERROR: column cannot have more than 2000 dimensions for hnsw index
182
177
  [TEXT_EMBEDDING_3_LARGE]: { ...OPENAI_EBD, dimension: k(3) },
183
178
  [TEXT_EMBEDDING_3_SMALL]: { ...OPENAI_EBD, dimension: k(1.5) },
184
179
  [GEMINI_EMBEDDING_M]: { ...EBD, maxInputTokens: k(8), dimension: k(3) },
@@ -226,6 +221,7 @@ MODELS[GEMMA327B] = { // Ollama Alias
226
221
  const DEFAULT_MODELS = {
227
222
  [OPENAI]: GPT_4O,
228
223
  [AZURE_OPENAI]: GPT_4O,
224
+ [SILICONFLOW]: SF_DEEPSEEK_V3,
229
225
  [GEMINI]: GEMINI_20_FLASH,
230
226
  [ANTHROPIC]: CLOUD_37_SONNET,
231
227
  [VERTEX_ANTHROPIC]: CLOUD_37_SONNET,
@@ -244,7 +240,7 @@ const DEFAULT_EMBEDDING = {
244
240
  const PROVIDER_ICONS = {
245
241
  [OPENAI]: '⚛️', [AZURE_OPENAI]: '⚛️', [AZURE]: '☁️', [JINA]: '✴️',
246
242
  [GEMINI]: '♊️', [VERTEX]: '📖', [OLLAMA]: '🦙',
247
- [ANTHROPIC]: '✳️', [VERTEX_ANTHROPIC]: '✳️',
243
+ [ANTHROPIC]: '✳️', [VERTEX_ANTHROPIC]: '✳️', [SILICONFLOW]: '🧬',
248
244
  };
249
245
 
250
246
  const FEATURE_ICONS = {
@@ -268,7 +264,7 @@ let tokeniser;
268
264
  const unifyProvider = provider => {
269
265
  assert(provider = (provider || '').trim(), 'AI provider is required.');
270
266
  for (let type of [OPENAI, AZURE_OPENAI, AZURE, GEMINI, VERTEX, ANTHROPIC,
271
- VERTEX_ANTHROPIC, JINA, OLLAMA]) {
267
+ VERTEX_ANTHROPIC, JINA, OLLAMA, SILICONFLOW]) {
272
268
  if (insensitiveCompare(provider, type)) { return type; }
273
269
  }
274
270
  throwError(`Invalid AI provider: ${provider}.`);
@@ -435,6 +431,12 @@ const init = async (options = {}) => {
435
431
  var client = await OpenAI(options);
436
432
  setupAi({ provider, model, client, prompt: promptOpenAI });
437
433
  break;
434
+ case SILICONFLOW:
435
+ assertApiKey(provider, options);
436
+ var client = await OpenAI({ baseURL: 'https://api.siliconflow.cn/v1', ...options });
437
+ var model = models[0];
438
+ setupAi({ provider, model, client, prompt: promptOpenAI });
439
+ break;
438
440
  case GEMINI:
439
441
  assert(options.apiKey, `${provider} api key is required.`);
440
442
  var { GoogleGenAI } = await need('@google/genai');
@@ -1537,7 +1539,6 @@ export {
1537
1539
  DEFAULT_MODELS,
1538
1540
  FEATURE_ICONS,
1539
1541
  FUNCTION,
1540
- GEMINI_20_FLASH_THINKING,
1541
1542
  GEMINI_20_FLASH,
1542
1543
  GPT_45,
1543
1544
  GPT_4O_MINI,
package/lib/manifest.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  const manifest = {
2
2
  "name": "utilitas",
3
3
  "description": "Just another common utility for JavaScript.",
4
- "version": "1999.1.39",
4
+ "version": "1999.1.41",
5
5
  "private": false,
6
6
  "homepage": "https://github.com/Leask/utilitas",
7
7
  "main": "index.mjs",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "utilitas",
3
3
  "description": "Just another common utility for JavaScript.",
4
- "version": "1999.1.39",
4
+ "version": "1999.1.41",
5
5
  "private": false,
6
6
  "homepage": "https://github.com/Leask/utilitas",
7
7
  "main": "index.mjs",