@adaptic/utils 0.0.1016 → 0.0.1018

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/dist/index.cjs CHANGED
@@ -63900,7 +63900,7 @@ async function executeChain(alias, execution) {
63900
63900
 
63901
63901
  var schema_version = 1;
63902
63902
  var policy_source = "docs/llm-provider-migration.md#3-routing-policy (v1.1)";
63903
- var revised = "2026-09-10";
63903
+ var revised = "2026-09-11";
63904
63904
  var defaults = {
63905
63905
  request_timeout_ms: {
63906
63906
  "hot-path": 30000,
@@ -63955,13 +63955,13 @@ var providers = {
63955
63955
  base_url_env: "DEEPINFRA_BASE_URL",
63956
63956
  api_key_env: "DEEPINFRA_API_KEY",
63957
63957
  secret_path: "llm/deepinfra/apiKey",
63958
- account_status: "pending-onboarding",
63958
+ account_status: "live",
63959
63959
  lumic_provider: null,
63960
63960
  published_rpm: null,
63961
63961
  published_tpm: null,
63962
63962
  limits_source: null,
63963
63963
  docs_url: "https://deepinfra.com/docs",
63964
- notes: "Rate limits and exact model ids are transcribed from the provider console at W3-02, never guessed."
63964
+ notes: "Sole open-weight host. The routing policy originally spread these models across Z.ai first-party, DeepInfra and Groq; DeepInfra's catalogue carries all of them, so consolidating removes three onboardings, three keys and three terms filings at the cost of roughly 28% on llm.reason's input price versus the first-party GLM anchor. Fewer credentials and fewer trust boundaries is worth more than that margin on one alias."
63965
63965
  },
63966
63966
  fireworks: {
63967
63967
  display_name: "Fireworks AI",
@@ -63971,13 +63971,13 @@ var providers = {
63971
63971
  base_url_env: "FIREWORKS_BASE_URL",
63972
63972
  api_key_env: "FIREWORKS_API_KEY",
63973
63973
  secret_path: "llm/fireworks/apiKey",
63974
- account_status: "pending-onboarding",
63974
+ account_status: "not-in-scope",
63975
63975
  lumic_provider: null,
63976
63976
  published_rpm: null,
63977
63977
  published_tpm: null,
63978
63978
  limits_source: null,
63979
63979
  docs_url: "https://docs.fireworks.ai",
63980
- notes: "Onboarded as a capacity backstop. No alias routes to it until its published RPM ceiling is recorded in provider-limits (W4-04)."
63980
+ notes: "Superseded by the DeepInfra consolidation: the models this host was chosen for are served from DeepInfra under one account. Retained in the registry so a future re-split needs a config change rather than a new onboarding."
63981
63981
  },
63982
63982
  zai: {
63983
63983
  display_name: "Z.ai",
@@ -63987,13 +63987,13 @@ var providers = {
63987
63987
  base_url_env: "ZAI_BASE_URL",
63988
63988
  api_key_env: "ZAI_API_KEY",
63989
63989
  secret_path: "llm/zai/apiKey",
63990
- account_status: "pending-onboarding",
63990
+ account_status: "not-in-scope",
63991
63991
  lumic_provider: null,
63992
63992
  published_rpm: null,
63993
63993
  published_tpm: null,
63994
63994
  limits_source: null,
63995
63995
  docs_url: "https://docs.z.ai",
63996
- notes: "First-party GLM host. Section 3 anchors first-party GLM below the converged multi-host price, so it is the primary leg for llm.reason."
63996
+ notes: "Superseded by the DeepInfra consolidation: the models this host was chosen for are served from DeepInfra under one account. Retained in the registry so a future re-split needs a config change rather than a new onboarding."
63997
63997
  },
63998
63998
  deepseek: {
63999
63999
  display_name: "DeepSeek",
@@ -64003,13 +64003,13 @@ var providers = {
64003
64003
  base_url_env: "DEEPSEEK_BASE_URL",
64004
64004
  api_key_env: "DEEPSEEK_API_KEY",
64005
64005
  secret_path: "llm/deepseek/apiKey",
64006
- account_status: "live",
64006
+ account_status: "not-in-scope",
64007
64007
  lumic_provider: "deepseek",
64008
64008
  published_rpm: null,
64009
64009
  published_tpm: null,
64010
64010
  limits_source: null,
64011
64011
  docs_url: "https://api-docs.deepseek.com",
64012
- notes: "Already a registered lumic provider, so its legs can also be served by the degraded direct transport. Off-peak windows are captured in gateway config at W3-05 for batch scheduling."
64012
+ notes: "First-party DeepSeek API, no longer routed to. Its G1 filing found no commitment not to train on API inputs, no stated retention period, no sub-processor list, and storage under PRC jurisdiction — a materially weaker data posture than any other provider reviewed, and not one to send trading prompts through. The DeepSeek MODELS are still used and are a good fit; they are now served as open weights from DeepInfra under its Zero Data Retention commitment. The weights and the vendor's hosted API are separable, and only the API carried the exposure. Retained in the registry so the distinction stays visible rather than being rediscovered."
64013
64013
  },
64014
64014
  groq: {
64015
64015
  display_name: "Groq",
@@ -64025,7 +64025,7 @@ var providers = {
64025
64025
  published_tpm: null,
64026
64026
  limits_source: null,
64027
64027
  docs_url: "https://console.groq.com/docs",
64028
- notes: "Section 3 names Groq or Cerebras as the llm.fast primary, but the W3 onboarding list does not include either. See open item OI-01: until an owner resolves it, llm.fast's primary leg is unreachable and the alias serves from its secondary and closed legs."
64028
+ notes: "Superseded by the DeepInfra consolidation: the models this host was chosen for are served from DeepInfra under one account. Retained in the registry so a future re-split needs a config change rather than a new onboarding."
64029
64029
  },
64030
64030
  openrouter: {
64031
64031
  display_name: "OpenRouter",
@@ -64063,51 +64063,55 @@ var aliases = {
64063
64063
  routes: [
64064
64064
  {
64065
64065
  role: "primary",
64066
- provider: "zai",
64067
- model_id: null,
64068
- model_id_status: "pending-provider-confirmation",
64069
- model_id_source: null,
64070
- model_family: "GLM-5.3",
64071
- lumic_model: null,
64066
+ provider: "deepinfra",
64067
+ model_id: "deepseek-ai/DeepSeek-V4-Pro",
64068
+ model_id_status: "confirmed",
64069
+ model_id_source: "DeepInfra /v1/openai/models catalogue queried against the live account 2026-09-11; tool-calling and latency verified by direct call on the same account",
64070
+ model_family: "DeepSeek V4 Pro",
64071
+ lumic_model: "deepseek-ai/DeepSeek-V4-Pro",
64072
64072
  params: {
64073
64073
  temperature: null,
64074
64074
  max_output_tokens: null,
64075
64075
  supports_temperature: true,
64076
64076
  supports_json_schema: true,
64077
64077
  supports_tools: true,
64078
- supports_cache_control: false,
64079
- supports_vision: false
64078
+ supports_cache_control: true,
64079
+ supports_vision: false,
64080
+ context_window: 1048576
64080
64081
  },
64081
64082
  price_per_mtok: {
64082
- input: 1.09,
64083
- output: 3.43,
64084
- as_of: "2026-09-10",
64085
- source: "docs/llm-provider-migration.md#3 first-party GLM-5.3 anchor; re-verify at W2-02"
64086
- }
64083
+ input: 1.3,
64084
+ output: 2.6,
64085
+ as_of: "2026-09-11",
64086
+ source: "DeepInfra /v1/openai/models catalogue queried against the live account 2026-09-11; tool-calling and latency verified by direct call on the same account"
64087
+ },
64088
+ notes: "1.6T MoE, 49B active, 1M context. Its model card cites advanced reasoning and long-running agent tasks, and it is the cheapest model in the flagship tier by a wide margin — a quarter of the incumbent's input price and a tenth of its output price."
64087
64089
  },
64088
64090
  {
64089
64091
  role: "secondary",
64090
64092
  provider: "deepinfra",
64091
- model_id: null,
64092
- model_id_status: "pending-provider-confirmation",
64093
- model_id_source: null,
64094
- model_family: "DeepSeek V4 Pro",
64095
- lumic_model: null,
64093
+ model_id: "zai-org/GLM-5.3",
64094
+ model_id_status: "confirmed",
64095
+ model_id_source: "DeepInfra /v1/openai/models catalogue queried against the live account 2026-09-11; tool-calling and latency verified by direct call on the same account",
64096
+ model_family: "GLM-5.3",
64097
+ lumic_model: "zai-org/GLM-5.3",
64096
64098
  params: {
64097
64099
  temperature: null,
64098
64100
  max_output_tokens: null,
64099
64101
  supports_temperature: true,
64100
64102
  supports_json_schema: true,
64101
64103
  supports_tools: true,
64102
- supports_cache_control: false,
64103
- supports_vision: false
64104
+ supports_cache_control: true,
64105
+ supports_vision: false,
64106
+ context_window: 1048576
64104
64107
  },
64105
64108
  price_per_mtok: {
64106
- input: 1.3,
64107
- output: 2.6,
64108
- as_of: "2026-09-10",
64109
- source: "docs/llm-provider-migration.md#3 DeepInfra anchor; re-verify at W2-02"
64110
- }
64109
+ input: 1.2,
64110
+ output: 4,
64111
+ as_of: "2026-09-11",
64112
+ source: "DeepInfra /v1/openai/models catalogue queried against the live account 2026-09-11; tool-calling and latency verified by direct call on the same account"
64113
+ },
64114
+ notes: "A separate lineage from the primary rather than a smaller sibling, so a DeepSeek-family regression cannot take both legs of this chain at once."
64111
64115
  },
64112
64116
  {
64113
64117
  role: "closed_incumbent",
@@ -64155,54 +64159,80 @@ var aliases = {
64155
64159
  routes: [
64156
64160
  {
64157
64161
  role: "primary",
64158
- provider: "anthropic",
64159
- model_id: "claude-opus-4-7",
64162
+ provider: "deepinfra",
64163
+ model_id: "moonshotai/Kimi-K3",
64160
64164
  model_id_status: "confirmed",
64161
- model_id_source: "lumic-utils/src/types/openai-types.ts SUPPORTED_MODELS — already routed on in production",
64162
- model_family: "Fable-class (see policy_note)",
64163
- lumic_model: "claude-opus-4-7",
64165
+ model_id_source: "DeepInfra /v1/openai/models catalogue queried against the live account 2026-09-11; tool-calling and latency verified by direct call on the same account",
64166
+ model_family: "Kimi K3",
64167
+ lumic_model: "moonshotai/Kimi-K3",
64164
64168
  params: {
64165
64169
  temperature: null,
64166
- max_output_tokens: 128000,
64170
+ max_output_tokens: null,
64167
64171
  supports_temperature: true,
64168
64172
  supports_json_schema: true,
64169
64173
  supports_tools: true,
64170
64174
  supports_cache_control: true,
64171
64175
  supports_vision: true,
64172
- context_window: 1000000
64176
+ context_window: 1048576
64173
64177
  },
64174
64178
  price_per_mtok: {
64175
- input: 10,
64176
- output: 50,
64177
- as_of: "2026-09-10",
64178
- source: "docs/llm-provider-migration.md#3 Fable-class anchor"
64179
- }
64179
+ input: 2.85,
64180
+ output: 14.25,
64181
+ as_of: "2026-09-11",
64182
+ source: "DeepInfra /v1/openai/models catalogue queried against the live account 2026-09-11; tool-calling and latency verified by direct call on the same account"
64183
+ },
64184
+ notes: "2.8T open-weight, built explicitly for long-horizon agentic workflows: tool calling, repository navigation, and iterating on logs and test feedback. The most expensive open model selected, which is justified here because this is the hardest workload and the lowest volume."
64180
64185
  },
64181
64186
  {
64182
64187
  role: "secondary",
64183
64188
  provider: "deepinfra",
64184
- model_id: null,
64185
- model_id_status: "pending-provider-confirmation",
64186
- model_id_source: null,
64187
- model_family: "Kimi K3",
64188
- lumic_model: null,
64189
- shadow_only: true,
64189
+ model_id: "deepseek-ai/DeepSeek-V4-Pro",
64190
+ model_id_status: "confirmed",
64191
+ model_id_source: "DeepInfra /v1/openai/models catalogue queried against the live account 2026-09-11; tool-calling and latency verified by direct call on the same account",
64192
+ model_family: "DeepSeek V4 Pro",
64193
+ lumic_model: "deepseek-ai/DeepSeek-V4-Pro",
64190
64194
  params: {
64191
64195
  temperature: null,
64192
64196
  max_output_tokens: null,
64193
64197
  supports_temperature: true,
64194
64198
  supports_json_schema: true,
64195
64199
  supports_tools: true,
64196
- supports_cache_control: false,
64197
- supports_vision: false
64200
+ supports_cache_control: true,
64201
+ supports_vision: false,
64202
+ context_window: 1048576
64198
64203
  },
64199
64204
  price_per_mtok: {
64200
- input: 2.85,
64201
- output: 14.25,
64202
- as_of: "2026-09-10",
64203
- source: "docs/llm-provider-migration.md#3 DeepInfra anchor; re-verify at W2-02"
64205
+ input: 1.3,
64206
+ output: 2.6,
64207
+ as_of: "2026-09-11",
64208
+ source: "DeepInfra /v1/openai/models catalogue queried against the live account 2026-09-11; tool-calling and latency verified by direct call on the same account"
64204
64209
  },
64205
- notes: "Shadow-eval only per Section 3. Configured and scored, never served to a caller, so the hardest agentic path keeps its closed primary while the open candidate accrues evidence."
64210
+ notes: "Also cites long-running agent tasks, at a fifth of the primary's output price."
64211
+ },
64212
+ {
64213
+ role: "closed_incumbent",
64214
+ provider: "anthropic",
64215
+ model_id: "claude-opus-4-7",
64216
+ model_id_status: "confirmed",
64217
+ model_id_source: "lumic-utils/src/types/openai-types.ts SUPPORTED_MODELS — already routed on in production",
64218
+ model_family: "Fable-class (see policy_note)",
64219
+ lumic_model: "claude-opus-4-7",
64220
+ params: {
64221
+ temperature: null,
64222
+ max_output_tokens: 128000,
64223
+ supports_temperature: true,
64224
+ supports_json_schema: true,
64225
+ supports_tools: true,
64226
+ supports_cache_control: true,
64227
+ supports_vision: true,
64228
+ context_window: 1000000
64229
+ },
64230
+ price_per_mtok: {
64231
+ input: 10,
64232
+ output: 50,
64233
+ as_of: "2026-09-10",
64234
+ source: "docs/llm-provider-migration.md#3 Fable-class anchor"
64235
+ }
64206
64236
  }
64207
64237
  ]
64208
64238
  },
@@ -64225,52 +64255,55 @@ var aliases = {
64225
64255
  routes: [
64226
64256
  {
64227
64257
  role: "primary",
64228
- provider: "groq",
64229
- model_id: null,
64230
- model_id_status: "pending-provider-confirmation",
64231
- model_id_source: null,
64232
- model_family: "gpt-oss-120B",
64233
- lumic_model: null,
64258
+ provider: "deepinfra",
64259
+ model_id: "deepseek-ai/DeepSeek-V4-Flash",
64260
+ model_id_status: "confirmed",
64261
+ model_id_source: "DeepInfra /v1/openai/models catalogue queried against the live account 2026-09-11; tool-calling and latency verified by direct call on the same account",
64262
+ model_family: "DeepSeek V4 Flash",
64263
+ lumic_model: "deepseek-ai/DeepSeek-V4-Flash",
64234
64264
  params: {
64235
64265
  temperature: null,
64236
64266
  max_output_tokens: null,
64237
64267
  supports_temperature: true,
64238
64268
  supports_json_schema: true,
64239
64269
  supports_tools: true,
64240
- supports_cache_control: false,
64241
- supports_vision: false
64270
+ supports_cache_control: true,
64271
+ supports_vision: false,
64272
+ context_window: 1048576
64242
64273
  },
64243
64274
  price_per_mtok: {
64244
- input: 0.039,
64245
- output: 0.19,
64246
- as_of: "2026-09-10",
64247
- source: "docs/llm-provider-migration.md#3 gpt-oss-120B anchor (DeepInfra price; Groq price unconfirmed pending OI-01)"
64275
+ input: 0.09,
64276
+ output: 0.18,
64277
+ as_of: "2026-09-11",
64278
+ source: "DeepInfra /v1/openai/models catalogue queried against the live account 2026-09-11; tool-calling and latency verified by direct call on the same account"
64248
64279
  },
64249
- notes: "Unreachable until OI-01 is resolved — Groq is not on the W3 onboarding list."
64280
+ notes: "284B MoE, 13B active, 1M context. Measured median 1241 ms on a realistic trading prompt, and the only candidate that answered in directly usable form instead of narrating its reasoning first — which on a hot path is the difference between a parseable answer and a parsing problem."
64250
64281
  },
64251
64282
  {
64252
64283
  role: "secondary",
64253
64284
  provider: "deepinfra",
64254
- model_id: null,
64255
- model_id_status: "pending-provider-confirmation",
64256
- model_id_source: null,
64257
- model_family: "gpt-oss-120B",
64258
- lumic_model: null,
64285
+ model_id: "zai-org/GLM-5.3-Flash",
64286
+ model_id_status: "confirmed",
64287
+ model_id_source: "DeepInfra /v1/openai/models catalogue queried against the live account 2026-09-11; tool-calling and latency verified by direct call on the same account",
64288
+ model_family: "GLM-5.3 Flash",
64289
+ lumic_model: "zai-org/GLM-5.3-Flash",
64259
64290
  params: {
64260
64291
  temperature: null,
64261
64292
  max_output_tokens: null,
64262
64293
  supports_temperature: true,
64263
64294
  supports_json_schema: true,
64264
64295
  supports_tools: true,
64265
- supports_cache_control: false,
64266
- supports_vision: false
64296
+ supports_cache_control: true,
64297
+ supports_vision: true,
64298
+ context_window: 1048576
64267
64299
  },
64268
64300
  price_per_mtok: {
64269
- input: 0.039,
64270
- output: 0.19,
64271
- as_of: "2026-09-10",
64272
- source: "docs/llm-provider-migration.md#3 DeepInfra anchor; re-verify at W2-02"
64273
- }
64301
+ input: 0.15,
64302
+ output: 0.5,
64303
+ as_of: "2026-09-11",
64304
+ source: "DeepInfra /v1/openai/models catalogue queried against the live account 2026-09-11; tool-calling and latency verified by direct call on the same account"
64305
+ },
64306
+ notes: "A different lineage from the primary, with a 1M context and JSON mode. Chosen over the faster Nemotron 3 Nano, which measured the quickest median of any candidate but rejects response_format outright with HTTP 405 — and llm.fast is a structured-output alias, so a leg that cannot express the contract is not a fallback at all, only a slower way to fail."
64274
64307
  },
64275
64308
  {
64276
64309
  role: "closed_incumbent",
@@ -64317,52 +64350,55 @@ var aliases = {
64317
64350
  routes: [
64318
64351
  {
64319
64352
  role: "primary",
64320
- provider: "deepseek",
64321
- model_id: "deepseek-v4-flash",
64353
+ provider: "deepinfra",
64354
+ model_id: "openai/gpt-oss-20b",
64322
64355
  model_id_status: "confirmed",
64323
- model_id_source: "lumic-utils/src/types/openai-types.ts SUPPORTED_MODELS — already routed on in production",
64324
- model_family: "DeepSeek V4 Flash",
64325
- lumic_model: "deepseek-v4-flash",
64356
+ model_id_source: "DeepInfra /v1/openai/models catalogue queried against the live account 2026-09-11; tool-calling and latency verified by direct call on the same account",
64357
+ model_family: "gpt-oss-20B",
64358
+ lumic_model: "openai/gpt-oss-20b",
64326
64359
  params: {
64327
64360
  temperature: null,
64328
- max_output_tokens: 64000,
64361
+ max_output_tokens: null,
64329
64362
  supports_temperature: true,
64330
64363
  supports_json_schema: true,
64331
64364
  supports_tools: true,
64332
- supports_cache_control: true,
64365
+ supports_cache_control: false,
64333
64366
  supports_vision: false,
64334
- context_window: 1000000
64367
+ context_window: 131072
64335
64368
  },
64336
64369
  price_per_mtok: {
64337
- input: 0.14,
64338
- output: 0.28,
64339
- as_of: "2026-09-10",
64340
- source: "docs/llm-provider-migration.md#3 V4 Flash anchor; re-verify at W2-02"
64341
- }
64370
+ input: 0.03,
64371
+ output: 0.14,
64372
+ as_of: "2026-09-11",
64373
+ source: "DeepInfra /v1/openai/models catalogue queried against the live account 2026-09-11; tool-calling and latency verified by direct call on the same account"
64374
+ },
64375
+ notes: "The cheapest tool-capable model in the catalogue at $0.03/$0.14, which is what a high-volume classification and log-analysis workload should be paying."
64342
64376
  },
64343
64377
  {
64344
64378
  role: "secondary",
64345
- provider: "zai",
64346
- model_id: null,
64347
- model_id_status: "pending-provider-confirmation",
64348
- model_id_source: null,
64349
- model_family: "GLM 5.3 Flash",
64350
- lumic_model: null,
64379
+ provider: "deepinfra",
64380
+ model_id: "inclusionAI/Ling-3.0-flash-Fin",
64381
+ model_id_status: "confirmed",
64382
+ model_id_source: "DeepInfra /v1/openai/models catalogue queried against the live account 2026-09-11; tool-calling and latency verified by direct call on the same account",
64383
+ model_family: "Ling 3.0 Flash Fin",
64384
+ lumic_model: "inclusionAI/Ling-3.0-flash-Fin",
64351
64385
  params: {
64352
64386
  temperature: null,
64353
64387
  max_output_tokens: null,
64354
64388
  supports_temperature: true,
64355
64389
  supports_json_schema: true,
64356
64390
  supports_tools: true,
64357
- supports_cache_control: false,
64358
- supports_vision: false
64391
+ supports_cache_control: true,
64392
+ supports_vision: false,
64393
+ context_window: 262144
64359
64394
  },
64360
64395
  price_per_mtok: {
64361
- input: 1.09,
64362
- output: 3.43,
64363
- as_of: "2026-09-10",
64364
- source: "docs/llm-provider-migration.md#3 GLM first-party anchor; Flash-tier price unconfirmed, re-verify at W2-02"
64365
- }
64396
+ input: 0.06,
64397
+ output: 0.18,
64398
+ as_of: "2026-09-11",
64399
+ source: "DeepInfra /v1/openai/models catalogue queried against the live account 2026-09-11; tool-calling and latency verified by direct call on the same account"
64400
+ },
64401
+ notes: "Finance-enhanced through continued training on financial data, with a 262k context. A deliberate second opinion on financial text rather than a generic fallback."
64366
64402
  },
64367
64403
  {
64368
64404
  role: "closed_incumbent",
@@ -64398,7 +64434,7 @@ var aliases = {
64398
64434
  isolation_capable: false,
64399
64435
  pinned: true,
64400
64436
  eval_gate: "none-pinned-judge",
64401
- policy_note: "PD-6: pinned and never auto-swapped, and deliberately carries no fallback. A judge that silently failed over would grade one model's output against another model's standard, which would corrupt every gate decided by it — so it fails loud instead.",
64437
+ policy_note: "PD-6: pinned and never auto-swapped, and deliberately carries no fallback. Moved off the closed incumbent because a judge running on a vendor we are migrating away from cannot impartially grade that migration — it would be scoring the challengers against its own family.",
64402
64438
  budget: {
64403
64439
  basis: "provisional-pre-baseline",
64404
64440
  monthly_usd: 150,
@@ -64411,39 +64447,34 @@ var aliases = {
64411
64447
  routes: [
64412
64448
  {
64413
64449
  role: "primary",
64414
- provider: "anthropic",
64415
- model_id: "claude-sonnet-4-6",
64450
+ provider: "deepinfra",
64451
+ model_id: "deepseek-ai/DeepSeek-V4-Pro",
64416
64452
  model_id_status: "confirmed",
64417
- model_id_source: "lumic-utils/src/types/openai-types.ts SUPPORTED_MODELS — already routed on in production",
64418
- model_family: "Sonnet-class",
64419
- lumic_model: "claude-sonnet-4-6",
64453
+ model_id_source: "DeepInfra /v1/openai/models catalogue queried against the live account 2026-09-11; tool-calling and latency verified by direct call on the same account",
64454
+ model_family: "DeepSeek V4 Pro",
64455
+ lumic_model: "deepseek-ai/DeepSeek-V4-Pro",
64420
64456
  params: {
64421
- temperature: 0,
64422
- max_output_tokens: 64000,
64457
+ temperature: null,
64458
+ max_output_tokens: null,
64423
64459
  supports_temperature: true,
64424
64460
  supports_json_schema: true,
64425
64461
  supports_tools: true,
64426
64462
  supports_cache_control: true,
64427
- supports_vision: true,
64428
- context_window: 1000000
64463
+ supports_vision: false,
64464
+ context_window: 1048576
64429
64465
  },
64430
64466
  price_per_mtok: {
64431
- input: 3,
64432
- output: 15,
64433
- as_of: "2026-09-10",
64434
- source: "lumic-utils/src/functions/llm-config.ts anthropicModelCosts"
64435
- }
64467
+ input: 1.3,
64468
+ output: 2.6,
64469
+ as_of: "2026-09-11",
64470
+ source: "DeepInfra /v1/openai/models catalogue queried against the live account 2026-09-11; tool-calling and latency verified by direct call on the same account"
64471
+ },
64472
+ notes: "Pinned with no fallback (PD-6). A judge that failed over would grade one model's output against another model's standard, corrupting every gate decided by it."
64436
64473
  }
64437
64474
  ]
64438
64475
  }
64439
64476
  };
64440
64477
  var open_items = [
64441
- {
64442
- id: "OI-01",
64443
- question: "Section 3 makes Groq or Cerebras the llm.fast primary, but neither appears in the W3 onboarding provider list (DeepInfra, Fireworks, Z.ai, DeepSeek, aggregator). Which host serves llm.fast's primary leg, and is it added to W3?",
64444
- blocks: "llm.fast primary reachability; W5-03 canary for llm.fast",
64445
- owner: "CEO"
64446
- },
64447
64478
  {
64448
64479
  id: "OI-02",
64449
64480
  question: "Section 3 names a Fable-class primary for llm.agentic, but the lumic model registry's strongest registered Anthropic model is claude-opus-4-7. Register a Fable-class model in @adaptic/lumic-utils, or accept opus-4-7 as the llm.agentic primary?",
@@ -64601,6 +64632,52 @@ function orderedRoutes(definition) {
64601
64632
  function routeKeyFor(alias, isolated, role) {
64602
64633
  return `${alias}${isolated ? ISOLATED_SUFFIX : ""}#${role}`;
64603
64634
  }
64635
+ /**
64636
+ * Whether one route may serve, and if not, why.
64637
+ *
64638
+ * Extracted from the chain resolver rather than left inline so the admission
64639
+ * rules can be exercised directly. Inline, the only way to prove an exclusion
64640
+ * rule works was to point it at the live table and hope the table still
64641
+ * contained something excludable — which made the proof a statement about how
64642
+ * incomplete the routing policy happened to be that week, and turned finishing
64643
+ * the policy into a test failure. A rule worth enforcing has to be provable on
64644
+ * a route constructed to violate it.
64645
+ *
64646
+ * Order matters: shadow-only is checked before model-id confirmation because a
64647
+ * shadow leg is held back by policy regardless of whether its id is confirmed,
64648
+ * and reporting it as "unconfirmed" would misdescribe a deliberate choice as an
64649
+ * unfinished one.
64650
+ *
64651
+ * The admitting branch carries the confirmed model id rather than leaving the
64652
+ * caller to re-read it. The id is the very thing admission validated, so
64653
+ * handing it back is what lets the caller use it without a non-null assertion
64654
+ * re-stating a check that already happened.
64655
+ *
64656
+ * @param route The authored route.
64657
+ * @param provider The provider entry the route names.
64658
+ * @returns Admission with the confirmed model id, or the reason for exclusion.
64659
+ */
64660
+ function routeAdmission(route, provider) {
64661
+ if (route.shadow_only === true) {
64662
+ return {
64663
+ admit: false,
64664
+ reason: "shadow-only: configured and scored, never served to a caller",
64665
+ };
64666
+ }
64667
+ if (route.model_id_status !== "confirmed" || route.model_id === null) {
64668
+ return {
64669
+ admit: false,
64670
+ reason: `model id unconfirmed (${route.model_family}); it is transcribed from the provider console at onboarding, never guessed`,
64671
+ };
64672
+ }
64673
+ if (provider.account_status !== "live") {
64674
+ return {
64675
+ admit: false,
64676
+ reason: `provider account status is "${provider.account_status}"`,
64677
+ };
64678
+ }
64679
+ return { admit: true, modelId: route.model_id };
64680
+ }
64604
64681
  /**
64605
64682
  * Resolve an alias to the ordered chain of legs that can serve it today.
64606
64683
  *
@@ -64628,27 +64705,12 @@ function resolveChain(alias, options = {}) {
64628
64705
  const exclusions = [];
64629
64706
  for (const route of orderedRoutes(definition)) {
64630
64707
  const provider = providerEntry(route.provider);
64631
- if (route.shadow_only === true) {
64632
- exclusions.push({
64633
- role: route.role,
64634
- provider: route.provider,
64635
- reason: "shadow-only: configured and scored, never served to a caller",
64636
- });
64637
- continue;
64638
- }
64639
- if (route.model_id_status !== "confirmed" || route.model_id === null) {
64640
- exclusions.push({
64641
- role: route.role,
64642
- provider: route.provider,
64643
- reason: `model id unconfirmed (${route.model_family}); it is transcribed from the provider console at onboarding, never guessed`,
64644
- });
64645
- continue;
64646
- }
64647
- if (provider.account_status !== "live") {
64708
+ const admission = routeAdmission(route, provider);
64709
+ if (!admission.admit) {
64648
64710
  exclusions.push({
64649
64711
  role: route.role,
64650
64712
  provider: route.provider,
64651
- reason: `provider account status is "${provider.account_status}"`,
64713
+ reason: admission.reason,
64652
64714
  });
64653
64715
  continue;
64654
64716
  }
@@ -64658,7 +64720,7 @@ function resolveChain(alias, options = {}) {
64658
64720
  role: route.role,
64659
64721
  providerName: route.provider,
64660
64722
  provider,
64661
- modelId: route.model_id,
64723
+ modelId: admission.modelId,
64662
64724
  lumicModel: route.lumic_model ?? null,
64663
64725
  params: route.params ?? {},
64664
64726
  routeKey: routeKeyFor(alias, isolated, route.role),
@@ -65233,7 +65295,16 @@ function gatewayFor(chain) {
65233
65295
  gatewayTransport = createGatewayTransport({
65234
65296
  baseUrl,
65235
65297
  apiKeyEnv: config.gatewayApiKeyEnv ?? DEFAULT_GATEWAY_KEY_ENV,
65236
- modelNameFor: (request) => gatewayModelNameFor(request.route, chain),
65298
+ // The chain is re-resolved from the request's own route rather than
65299
+ // captured from the caller above. The transport is cached for the life of
65300
+ // the process, so a captured chain would bind every later alias to
65301
+ // whichever alias happened to dispatch first: its head leg would never
65302
+ // match, would be addressed as "<alias>.fallback.primary" — a name the
65303
+ // gateway does not register — and the 400 would be absorbed by the
65304
+ // fallback chain. The call still succeeds, from the SECONDARY leg, which
65305
+ // is why this reads as healthy traffic while every alias but one quietly
65306
+ // stops using the model it was chosen for.
65307
+ modelNameFor: (request) => gatewayModelNameFor(request.route, resolveChain(request.route.alias, { isolated: request.route.isolated })),
65237
65308
  });
65238
65309
  }
65239
65310
  return gatewayTransport;
@@ -65321,7 +65392,7 @@ async function callLLMByAlias(content, responseFormat = "text", options) {
65321
65392
  cost: 0,
65322
65393
  });
65323
65394
  }
65324
- const gateway = gatewayFor(chain);
65395
+ const gateway = gatewayFor();
65325
65396
  const attemptLog = [];
65326
65397
  /**
65327
65398
  * Run the chain, falling back from the gateway to the degraded direct path