@just-every/ensemble 0.2.267 → 0.2.269

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/README.md CHANGED
@@ -35,12 +35,13 @@ See the [demo README](demo/README.md) for detailed information about each demo.
35
35
  - 📊 **Cost & Quota Tracking** - Built-in usage monitoring and cost calculation
36
36
  - 🎯 **Smart Result Processing** - Automatic summarization and truncation for long outputs
37
37
 
38
- ## Model Updates (Dec 2025)
38
+ ## Model Highlights
39
39
 
40
40
  - OpenAI: Added GPT-5.2 (base + chat-latest + pro) and refreshed GPT-5.1/GPT-5/Codex pricing
41
41
  - Anthropic: Claude 4.5 (Sonnet/Haiku, incl. 1M context) and Claude Opus 4.1
42
- - Google: Gemini 3 (Pro/Flash/Ultra) and refreshed Gemini 2.5 pricing incl. image/TTS/native-audio
42
+ - Google: Gemini 3.6 Flash, Gemini 3.5 Flash/Lite, Gemini 3.1 Pro/Image/Live/TTS, and Gemini 2.5
43
43
  - xAI: Grok 4.5 with current `grok-build-latest` aliasing and reasoning controls, Grok 4.1 Fast / Grok 4 Fast variants, and Grok Imagine image generation/editing support (`grok-imagine-image`, `grok-imagine-image-pro`)
44
+ - OpenRouter: Kimi K3, LongCat 2.0, Inkling, Muse Spark 1.1, and KAT-Coder Pro/Air V2.5 with current routing, capability, context, and pricing metadata
44
45
 
45
46
  \*Codex-Max pricing reflects current published rates and may change if OpenAI updates pricing.
46
47
 
@@ -228,7 +229,7 @@ Gemini 3 native thinking levels can be requested directly:
228
229
  ```ts
229
230
  const result = await ensembleResult(
230
231
  ensembleRequest([{ type: 'message', role: 'user', content: 'Solve this carefully.' }], {
231
- model: 'gemini-3-flash-preview',
232
+ model: 'gemini-3.6-flash',
232
233
  modelSettings: {
233
234
  thinking_level: 'high',
234
235
  },
@@ -240,6 +241,7 @@ For Gemini, `thinking_level` is mutually exclusive with numeric `thinking_budget
240
241
  When a Gemini model supports native thinking levels, suffixes like `-none`, `-minimal`, `-low`, `-medium`, `-high`, and `-max` are sent as `thinkingLevel` values instead of numeric budgets.
241
242
  For native Gemini thinking-level models, numeric `thinking_budget` values are also translated to the closest supported `thinkingLevel`; Gemini 2.5 models still receive `thinkingBudget`.
242
243
  For Gemini 3 Flash-family models, `-none` maps to the provider-native `minimal` level because Gemini does not support full thinking-off.
244
+ Gemini 3.6 Flash and Gemini 3.5 Flash-Lite ignore deprecated sampling settings (`temperature`, `top_p`, and `top_k`), so Ensemble omits them from those requests. Their message histories must end with a user turn rather than a prefilled model response.
243
245
 
244
246
  ### Multimodal Input (Images)
245
247
 
@@ -271,7 +273,7 @@ const messages = [
271
273
  },
272
274
  ];
273
275
 
274
- for await (const event of ensembleRequest(messages, { model: 'gemini-3-flash-preview' })) {
276
+ for await (const event of ensembleRequest(messages, { model: 'gemini-3.6-flash' })) {
275
277
  if (event.type === 'message_complete' && 'content' in event) {
276
278
  console.log(event.content);
277
279
  }
@@ -290,9 +292,8 @@ The example below combines **image input** with **JSON output**:
290
292
  import { ensembleRequest, ensembleResult } from '@just-every/ensemble';
291
293
 
292
294
  const agent = {
293
- model: 'gemini-3-flash-preview',
295
+ model: 'gemini-3.6-flash',
294
296
  modelSettings: {
295
- temperature: 0.2,
296
297
  json_schema: {
297
298
  name: 'image_analysis',
298
299
  type: 'json_schema',
@@ -7,7 +7,7 @@ exports.MODEL_CLASSES = {
7
7
  standard: {
8
8
  models: [
9
9
  'gpt-5.5',
10
- 'gemini-3-flash-preview',
10
+ 'gemini-3.6-flash',
11
11
  'claude-sonnet-5',
12
12
  'grok-4.5',
13
13
  ],
@@ -16,7 +16,7 @@ exports.MODEL_CLASSES = {
16
16
  mini: {
17
17
  models: [
18
18
  'gpt-5.4-nano',
19
- 'gemini-2.5-flash-lite',
19
+ 'gemini-3.5-flash-lite',
20
20
  'claude-haiku-4-5-20251001',
21
21
  'grok-3-mini',
22
22
  ],
@@ -43,7 +43,7 @@ exports.MODEL_CLASSES = {
43
43
  reasoning_mini: {
44
44
  models: [
45
45
  'gpt-5.4-mini',
46
- 'gemini-3-flash-preview',
46
+ 'gemini-3.5-flash-lite',
47
47
  'claude-sonnet-5',
48
48
  'grok-3-mini',
49
49
  ],
@@ -80,7 +80,7 @@ exports.MODEL_CLASSES = {
80
80
  writing: {
81
81
  models: [
82
82
  'gpt-5.5',
83
- 'gemini-3-flash-preview',
83
+ 'gemini-3.6-flash',
84
84
  'claude-sonnet-5',
85
85
  'grok-4.5',
86
86
  ],
@@ -89,7 +89,7 @@ exports.MODEL_CLASSES = {
89
89
  summary: {
90
90
  models: [
91
91
  'gpt-5-nano',
92
- 'gemini-2.5-flash-lite',
92
+ 'gemini-3.5-flash-lite',
93
93
  'claude-haiku-4-5-20251001',
94
94
  'grok-3-mini',
95
95
  ],
@@ -107,7 +107,7 @@ exports.MODEL_CLASSES = {
107
107
  vision_mini: {
108
108
  models: [
109
109
  'gpt-5.4-mini',
110
- 'gemini-3-flash-preview',
110
+ 'gemini-3.5-flash-lite',
111
111
  'claude-haiku-4-5-20251001',
112
112
  'grok-3-mini',
113
113
  ],
@@ -2369,6 +2369,27 @@ exports.MODEL_REGISTRY = [
2369
2369
  class: 'standard',
2370
2370
  description: 'Gemini 3 Flash Preview - fast multimodal model with 1M context window.',
2371
2371
  },
2372
+ {
2373
+ id: 'gemini-3.6-flash',
2374
+ aliases: ['gemini-flash-latest', 'models/gemini-3.6-flash', 'models/gemini-flash-latest'],
2375
+ provider: 'google',
2376
+ cost: {
2377
+ input_per_million: 1.5,
2378
+ output_per_million: 7.5,
2379
+ cached_input_per_million: 0.15,
2380
+ },
2381
+ features: {
2382
+ context_length: 1048576,
2383
+ input_modality: ['text', 'image', 'video', 'audio'],
2384
+ output_modality: ['text'],
2385
+ tool_use: true,
2386
+ streaming: true,
2387
+ json_output: true,
2388
+ max_output_tokens: 65536,
2389
+ },
2390
+ class: 'standard',
2391
+ description: 'Gemini 3.6 Flash - stable frontier multimodal model optimized for agentic execution, coding, spatial reasoning, and efficient tool use.',
2392
+ },
2372
2393
  {
2373
2394
  id: 'gemini-3.5-flash',
2374
2395
  provider: 'google',
@@ -2390,6 +2411,27 @@ exports.MODEL_REGISTRY = [
2390
2411
  score: 88,
2391
2412
  description: 'Gemini 3.5 Flash - fast multimodal reasoning model with 1M context and native thinking levels.',
2392
2413
  },
2414
+ {
2415
+ id: 'gemini-3.5-flash-lite',
2416
+ aliases: ['gemini-flash-lite-latest', 'models/gemini-3.5-flash-lite', 'models/gemini-flash-lite-latest'],
2417
+ provider: 'google',
2418
+ cost: {
2419
+ input_per_million: 0.3,
2420
+ output_per_million: 2.5,
2421
+ cached_input_per_million: 0.03,
2422
+ },
2423
+ features: {
2424
+ context_length: 1048576,
2425
+ input_modality: ['text', 'image', 'video', 'audio'],
2426
+ output_modality: ['text'],
2427
+ tool_use: true,
2428
+ streaming: true,
2429
+ json_output: true,
2430
+ max_output_tokens: 65536,
2431
+ },
2432
+ class: 'reasoning_mini',
2433
+ description: 'Gemini 3.5 Flash-Lite - stable low-latency multimodal model for high-throughput subagents, document parsing, extraction, and structured data tasks.',
2434
+ },
2393
2435
  {
2394
2436
  id: 'gemini-3.1-flash-lite',
2395
2437
  aliases: ['gemini-3.1-flash-lite-preview'],
@@ -3923,6 +3965,143 @@ exports.MODEL_REGISTRY = [
3923
3965
  class: 'code',
3924
3966
  description: 'MoonshotAI Kimi K2.7 Code via OpenRouter. Coding-focused long-context model for software engineering and agentic coding workflows.',
3925
3967
  },
3968
+ {
3969
+ id: 'moonshotai/kimi-k3',
3970
+ aliases: ['Kimi K3', 'kimi-k3'],
3971
+ provider: 'openrouter',
3972
+ openrouter_id: 'moonshotai/kimi-k3',
3973
+ cost: {
3974
+ input_per_million: 3.0,
3975
+ cached_input_per_million: 0.3,
3976
+ output_per_million: 15.0,
3977
+ },
3978
+ features: {
3979
+ context_length: 1_048_576,
3980
+ input_modality: ['text', 'image'],
3981
+ output_modality: ['text'],
3982
+ tool_use: true,
3983
+ streaming: true,
3984
+ json_output: true,
3985
+ structured_output: true,
3986
+ reasoning_output: true,
3987
+ },
3988
+ class: 'reasoning',
3989
+ description: 'MoonshotAI Kimi K3 via OpenRouter. Open-weight multimodal model for complex coding, knowledge work, and long-horizon agentic workflows with 1M context.',
3990
+ },
3991
+ {
3992
+ id: 'meituan/longcat-2.0',
3993
+ aliases: ['LongCat 2.0', 'LongCat-2.0', 'longcat-2.0', 'longcat-2'],
3994
+ provider: 'openrouter',
3995
+ openrouter_id: 'meituan/longcat-2.0',
3996
+ cost: {
3997
+ input_per_million: 0.3,
3998
+ cached_input_per_million: 0.006,
3999
+ output_per_million: 1.2,
4000
+ },
4001
+ features: {
4002
+ context_length: 1_048_576,
4003
+ input_modality: ['text'],
4004
+ output_modality: ['text'],
4005
+ tool_use: true,
4006
+ streaming: true,
4007
+ json_output: false,
4008
+ max_output_tokens: 262144,
4009
+ reasoning_output: true,
4010
+ },
4011
+ class: 'reasoning',
4012
+ description: 'Meituan LongCat 2.0 via OpenRouter. Sparse MoE model for repository-level coding, long-horizon problem solving, and agentic workflows with 1M context.',
4013
+ },
4014
+ {
4015
+ id: 'thinkingmachines/inkling',
4016
+ aliases: ['Inkling', 'inkling'],
4017
+ provider: 'openrouter',
4018
+ openrouter_id: 'thinkingmachines/inkling',
4019
+ cost: {
4020
+ input_per_million: 1.0,
4021
+ cached_input_per_million: 0.17,
4022
+ output_per_million: 4.05,
4023
+ },
4024
+ features: {
4025
+ context_length: 1_048_576,
4026
+ input_modality: ['text', 'image', 'audio'],
4027
+ output_modality: ['text'],
4028
+ tool_use: true,
4029
+ streaming: true,
4030
+ json_output: false,
4031
+ reasoning_output: true,
4032
+ },
4033
+ class: 'reasoning',
4034
+ description: 'Thinking Machines Inkling via OpenRouter. Open-weight multimodal model for general reasoning, coding, tool use, and agentic applications with 1M context.',
4035
+ },
4036
+ {
4037
+ id: 'meta/muse-spark-1.1',
4038
+ aliases: ['Muse Spark 1.1', 'Muse-Spark-1.1', 'muse-spark-1.1'],
4039
+ provider: 'openrouter',
4040
+ openrouter_id: 'meta/muse-spark-1.1',
4041
+ cost: {
4042
+ input_per_million: 1.25,
4043
+ cached_input_per_million: 0.15,
4044
+ output_per_million: 4.25,
4045
+ },
4046
+ features: {
4047
+ context_length: 1_048_576,
4048
+ input_modality: ['text', 'image', 'audio', 'video'],
4049
+ output_modality: ['text'],
4050
+ tool_use: true,
4051
+ streaming: true,
4052
+ json_output: true,
4053
+ structured_output: true,
4054
+ reasoning_output: true,
4055
+ },
4056
+ class: 'reasoning',
4057
+ description: 'Meta Muse Spark 1.1 via OpenRouter. Multimodal reasoning model for agentic workflows, coding, tool use, and visual-to-code generation with 1M context.',
4058
+ },
4059
+ {
4060
+ id: 'kwaipilot/kat-coder-pro-v2.5',
4061
+ aliases: ['KAT-Coder-Pro V2.5', 'KAT-Coder-Pro-V2.5', 'kat-coder-pro-v2.5', 'kat-coder-pro-v2-5'],
4062
+ provider: 'openrouter',
4063
+ openrouter_id: 'kwaipilot/kat-coder-pro-v2.5',
4064
+ cost: {
4065
+ input_per_million: 0.74,
4066
+ cached_input_per_million: 0.15,
4067
+ output_per_million: 2.96,
4068
+ },
4069
+ features: {
4070
+ context_length: 256000,
4071
+ input_modality: ['text'],
4072
+ output_modality: ['text'],
4073
+ tool_use: true,
4074
+ streaming: true,
4075
+ json_output: true,
4076
+ structured_output: true,
4077
+ max_output_tokens: 80000,
4078
+ },
4079
+ class: 'code',
4080
+ description: 'Kwaipilot KAT-Coder Pro V2.5 via OpenRouter. Agentic coding model for autonomous repository-level software engineering and tool-driven workflows.',
4081
+ },
4082
+ {
4083
+ id: 'kwaipilot/kat-coder-air-v2.5',
4084
+ aliases: ['KAT-Coder-Air V2.5', 'KAT-Coder-Air-V2.5', 'kat-coder-air-v2.5', 'kat-coder-air-v2-5'],
4085
+ provider: 'openrouter',
4086
+ openrouter_id: 'kwaipilot/kat-coder-air-v2.5',
4087
+ cost: {
4088
+ input_per_million: 0.15,
4089
+ cached_input_per_million: 0.03,
4090
+ output_per_million: 0.6,
4091
+ },
4092
+ features: {
4093
+ context_length: 256000,
4094
+ input_modality: ['text'],
4095
+ output_modality: ['text'],
4096
+ tool_use: true,
4097
+ streaming: true,
4098
+ json_output: true,
4099
+ structured_output: true,
4100
+ max_output_tokens: 80000,
4101
+ },
4102
+ class: 'code',
4103
+ description: 'Kwaipilot KAT-Coder Air V2.5 via OpenRouter. Cost-efficient agentic coding model for autonomous repository changes and tool-driven workflows.',
4104
+ },
3926
4105
  ];
3927
4106
  function findModel(modelId) {
3928
4107
  const externalModel = (0, external_models_js_1.getExternalModel)(modelId);
@@ -1 +1 @@
1
- {"version":3,"file":"model_data.d.ts","sourceRoot":"","sources":["../../../data/model_data.ts"],"names":[],"mappings":"AAYA,OAAO,EACH,YAAY,EACZ,eAAe,EACf,WAAW,EACX,cAAc,EACd,aAAa,EACb,SAAS,EACT,aAAa,EACb,UAAU,EACV,UAAU,EACV,UAAU,EACb,MAAM,mBAAmB,CAAC;AAM3B,YAAY,EACR,YAAY,EACZ,eAAe,EACf,WAAW,EACX,cAAc,EACd,aAAa,EACb,SAAS,EACT,aAAa,EACb,UAAU,EACV,UAAU,EACV,UAAU,GACb,CAAC;AAOF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0MzB,CAAC;AAGF,eAAO,MAAM,cAAc,EAAE,UAAU,EAs7HtC,CAAC;AAQF,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAuBjE"}
1
+ {"version":3,"file":"model_data.d.ts","sourceRoot":"","sources":["../../../data/model_data.ts"],"names":[],"mappings":"AAYA,OAAO,EACH,YAAY,EACZ,eAAe,EACf,WAAW,EACX,cAAc,EACd,aAAa,EACb,SAAS,EACT,aAAa,EACb,UAAU,EACV,UAAU,EACV,UAAU,EACb,MAAM,mBAAmB,CAAC;AAM3B,YAAY,EACR,YAAY,EACZ,eAAe,EACf,WAAW,EACX,cAAc,EACd,aAAa,EACb,SAAS,EACT,aAAa,EACb,UAAU,EACV,UAAU,EACV,UAAU,GACb,CAAC;AAOF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0MzB,CAAC;AAGF,eAAO,MAAM,cAAc,EAAE,UAAU,EA4nItC,CAAC;AAQF,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAuBjE"}