@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.mjs CHANGED
@@ -63898,7 +63898,7 @@ async function executeChain(alias, execution) {
63898
63898
 
63899
63899
  var schema_version = 1;
63900
63900
  var policy_source = "docs/llm-provider-migration.md#3-routing-policy (v1.1)";
63901
- var revised = "2026-09-10";
63901
+ var revised = "2026-09-11";
63902
63902
  var defaults = {
63903
63903
  request_timeout_ms: {
63904
63904
  "hot-path": 30000,
@@ -63953,13 +63953,13 @@ var providers = {
63953
63953
  base_url_env: "DEEPINFRA_BASE_URL",
63954
63954
  api_key_env: "DEEPINFRA_API_KEY",
63955
63955
  secret_path: "llm/deepinfra/apiKey",
63956
- account_status: "pending-onboarding",
63956
+ account_status: "live",
63957
63957
  lumic_provider: null,
63958
63958
  published_rpm: null,
63959
63959
  published_tpm: null,
63960
63960
  limits_source: null,
63961
63961
  docs_url: "https://deepinfra.com/docs",
63962
- notes: "Rate limits and exact model ids are transcribed from the provider console at W3-02, never guessed."
63962
+ 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."
63963
63963
  },
63964
63964
  fireworks: {
63965
63965
  display_name: "Fireworks AI",
@@ -63969,13 +63969,13 @@ var providers = {
63969
63969
  base_url_env: "FIREWORKS_BASE_URL",
63970
63970
  api_key_env: "FIREWORKS_API_KEY",
63971
63971
  secret_path: "llm/fireworks/apiKey",
63972
- account_status: "pending-onboarding",
63972
+ account_status: "not-in-scope",
63973
63973
  lumic_provider: null,
63974
63974
  published_rpm: null,
63975
63975
  published_tpm: null,
63976
63976
  limits_source: null,
63977
63977
  docs_url: "https://docs.fireworks.ai",
63978
- notes: "Onboarded as a capacity backstop. No alias routes to it until its published RPM ceiling is recorded in provider-limits (W4-04)."
63978
+ 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."
63979
63979
  },
63980
63980
  zai: {
63981
63981
  display_name: "Z.ai",
@@ -63985,13 +63985,13 @@ var providers = {
63985
63985
  base_url_env: "ZAI_BASE_URL",
63986
63986
  api_key_env: "ZAI_API_KEY",
63987
63987
  secret_path: "llm/zai/apiKey",
63988
- account_status: "pending-onboarding",
63988
+ account_status: "not-in-scope",
63989
63989
  lumic_provider: null,
63990
63990
  published_rpm: null,
63991
63991
  published_tpm: null,
63992
63992
  limits_source: null,
63993
63993
  docs_url: "https://docs.z.ai",
63994
- 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."
63994
+ 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."
63995
63995
  },
63996
63996
  deepseek: {
63997
63997
  display_name: "DeepSeek",
@@ -64001,13 +64001,13 @@ var providers = {
64001
64001
  base_url_env: "DEEPSEEK_BASE_URL",
64002
64002
  api_key_env: "DEEPSEEK_API_KEY",
64003
64003
  secret_path: "llm/deepseek/apiKey",
64004
- account_status: "live",
64004
+ account_status: "not-in-scope",
64005
64005
  lumic_provider: "deepseek",
64006
64006
  published_rpm: null,
64007
64007
  published_tpm: null,
64008
64008
  limits_source: null,
64009
64009
  docs_url: "https://api-docs.deepseek.com",
64010
- 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."
64010
+ 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."
64011
64011
  },
64012
64012
  groq: {
64013
64013
  display_name: "Groq",
@@ -64023,7 +64023,7 @@ var providers = {
64023
64023
  published_tpm: null,
64024
64024
  limits_source: null,
64025
64025
  docs_url: "https://console.groq.com/docs",
64026
- 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."
64026
+ 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."
64027
64027
  },
64028
64028
  openrouter: {
64029
64029
  display_name: "OpenRouter",
@@ -64061,51 +64061,55 @@ var aliases = {
64061
64061
  routes: [
64062
64062
  {
64063
64063
  role: "primary",
64064
- provider: "zai",
64065
- model_id: null,
64066
- model_id_status: "pending-provider-confirmation",
64067
- model_id_source: null,
64068
- model_family: "GLM-5.3",
64069
- lumic_model: null,
64064
+ provider: "deepinfra",
64065
+ model_id: "deepseek-ai/DeepSeek-V4-Pro",
64066
+ model_id_status: "confirmed",
64067
+ 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",
64068
+ model_family: "DeepSeek V4 Pro",
64069
+ lumic_model: "deepseek-ai/DeepSeek-V4-Pro",
64070
64070
  params: {
64071
64071
  temperature: null,
64072
64072
  max_output_tokens: null,
64073
64073
  supports_temperature: true,
64074
64074
  supports_json_schema: true,
64075
64075
  supports_tools: true,
64076
- supports_cache_control: false,
64077
- supports_vision: false
64076
+ supports_cache_control: true,
64077
+ supports_vision: false,
64078
+ context_window: 1048576
64078
64079
  },
64079
64080
  price_per_mtok: {
64080
- input: 1.09,
64081
- output: 3.43,
64082
- as_of: "2026-09-10",
64083
- source: "docs/llm-provider-migration.md#3 first-party GLM-5.3 anchor; re-verify at W2-02"
64084
- }
64081
+ input: 1.3,
64082
+ output: 2.6,
64083
+ as_of: "2026-09-11",
64084
+ 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"
64085
+ },
64086
+ 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."
64085
64087
  },
64086
64088
  {
64087
64089
  role: "secondary",
64088
64090
  provider: "deepinfra",
64089
- model_id: null,
64090
- model_id_status: "pending-provider-confirmation",
64091
- model_id_source: null,
64092
- model_family: "DeepSeek V4 Pro",
64093
- lumic_model: null,
64091
+ model_id: "zai-org/GLM-5.3",
64092
+ model_id_status: "confirmed",
64093
+ 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",
64094
+ model_family: "GLM-5.3",
64095
+ lumic_model: "zai-org/GLM-5.3",
64094
64096
  params: {
64095
64097
  temperature: null,
64096
64098
  max_output_tokens: null,
64097
64099
  supports_temperature: true,
64098
64100
  supports_json_schema: true,
64099
64101
  supports_tools: true,
64100
- supports_cache_control: false,
64101
- supports_vision: false
64102
+ supports_cache_control: true,
64103
+ supports_vision: false,
64104
+ context_window: 1048576
64102
64105
  },
64103
64106
  price_per_mtok: {
64104
- input: 1.3,
64105
- output: 2.6,
64106
- as_of: "2026-09-10",
64107
- source: "docs/llm-provider-migration.md#3 DeepInfra anchor; re-verify at W2-02"
64108
- }
64107
+ input: 1.2,
64108
+ output: 4,
64109
+ as_of: "2026-09-11",
64110
+ 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"
64111
+ },
64112
+ 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."
64109
64113
  },
64110
64114
  {
64111
64115
  role: "closed_incumbent",
@@ -64153,54 +64157,80 @@ var aliases = {
64153
64157
  routes: [
64154
64158
  {
64155
64159
  role: "primary",
64156
- provider: "anthropic",
64157
- model_id: "claude-opus-4-7",
64160
+ provider: "deepinfra",
64161
+ model_id: "moonshotai/Kimi-K3",
64158
64162
  model_id_status: "confirmed",
64159
- model_id_source: "lumic-utils/src/types/openai-types.ts SUPPORTED_MODELS — already routed on in production",
64160
- model_family: "Fable-class (see policy_note)",
64161
- lumic_model: "claude-opus-4-7",
64163
+ 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",
64164
+ model_family: "Kimi K3",
64165
+ lumic_model: "moonshotai/Kimi-K3",
64162
64166
  params: {
64163
64167
  temperature: null,
64164
- max_output_tokens: 128000,
64168
+ max_output_tokens: null,
64165
64169
  supports_temperature: true,
64166
64170
  supports_json_schema: true,
64167
64171
  supports_tools: true,
64168
64172
  supports_cache_control: true,
64169
64173
  supports_vision: true,
64170
- context_window: 1000000
64174
+ context_window: 1048576
64171
64175
  },
64172
64176
  price_per_mtok: {
64173
- input: 10,
64174
- output: 50,
64175
- as_of: "2026-09-10",
64176
- source: "docs/llm-provider-migration.md#3 Fable-class anchor"
64177
- }
64177
+ input: 2.85,
64178
+ output: 14.25,
64179
+ as_of: "2026-09-11",
64180
+ 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"
64181
+ },
64182
+ 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."
64178
64183
  },
64179
64184
  {
64180
64185
  role: "secondary",
64181
64186
  provider: "deepinfra",
64182
- model_id: null,
64183
- model_id_status: "pending-provider-confirmation",
64184
- model_id_source: null,
64185
- model_family: "Kimi K3",
64186
- lumic_model: null,
64187
- shadow_only: true,
64187
+ model_id: "deepseek-ai/DeepSeek-V4-Pro",
64188
+ model_id_status: "confirmed",
64189
+ 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",
64190
+ model_family: "DeepSeek V4 Pro",
64191
+ lumic_model: "deepseek-ai/DeepSeek-V4-Pro",
64188
64192
  params: {
64189
64193
  temperature: null,
64190
64194
  max_output_tokens: null,
64191
64195
  supports_temperature: true,
64192
64196
  supports_json_schema: true,
64193
64197
  supports_tools: true,
64194
- supports_cache_control: false,
64195
- supports_vision: false
64198
+ supports_cache_control: true,
64199
+ supports_vision: false,
64200
+ context_window: 1048576
64196
64201
  },
64197
64202
  price_per_mtok: {
64198
- input: 2.85,
64199
- output: 14.25,
64200
- as_of: "2026-09-10",
64201
- source: "docs/llm-provider-migration.md#3 DeepInfra anchor; re-verify at W2-02"
64203
+ input: 1.3,
64204
+ output: 2.6,
64205
+ as_of: "2026-09-11",
64206
+ 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"
64202
64207
  },
64203
- 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."
64208
+ notes: "Also cites long-running agent tasks, at a fifth of the primary's output price."
64209
+ },
64210
+ {
64211
+ role: "closed_incumbent",
64212
+ provider: "anthropic",
64213
+ model_id: "claude-opus-4-7",
64214
+ model_id_status: "confirmed",
64215
+ model_id_source: "lumic-utils/src/types/openai-types.ts SUPPORTED_MODELS — already routed on in production",
64216
+ model_family: "Fable-class (see policy_note)",
64217
+ lumic_model: "claude-opus-4-7",
64218
+ params: {
64219
+ temperature: null,
64220
+ max_output_tokens: 128000,
64221
+ supports_temperature: true,
64222
+ supports_json_schema: true,
64223
+ supports_tools: true,
64224
+ supports_cache_control: true,
64225
+ supports_vision: true,
64226
+ context_window: 1000000
64227
+ },
64228
+ price_per_mtok: {
64229
+ input: 10,
64230
+ output: 50,
64231
+ as_of: "2026-09-10",
64232
+ source: "docs/llm-provider-migration.md#3 Fable-class anchor"
64233
+ }
64204
64234
  }
64205
64235
  ]
64206
64236
  },
@@ -64223,52 +64253,55 @@ var aliases = {
64223
64253
  routes: [
64224
64254
  {
64225
64255
  role: "primary",
64226
- provider: "groq",
64227
- model_id: null,
64228
- model_id_status: "pending-provider-confirmation",
64229
- model_id_source: null,
64230
- model_family: "gpt-oss-120B",
64231
- lumic_model: null,
64256
+ provider: "deepinfra",
64257
+ model_id: "deepseek-ai/DeepSeek-V4-Flash",
64258
+ model_id_status: "confirmed",
64259
+ 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",
64260
+ model_family: "DeepSeek V4 Flash",
64261
+ lumic_model: "deepseek-ai/DeepSeek-V4-Flash",
64232
64262
  params: {
64233
64263
  temperature: null,
64234
64264
  max_output_tokens: null,
64235
64265
  supports_temperature: true,
64236
64266
  supports_json_schema: true,
64237
64267
  supports_tools: true,
64238
- supports_cache_control: false,
64239
- supports_vision: false
64268
+ supports_cache_control: true,
64269
+ supports_vision: false,
64270
+ context_window: 1048576
64240
64271
  },
64241
64272
  price_per_mtok: {
64242
- input: 0.039,
64243
- output: 0.19,
64244
- as_of: "2026-09-10",
64245
- source: "docs/llm-provider-migration.md#3 gpt-oss-120B anchor (DeepInfra price; Groq price unconfirmed pending OI-01)"
64273
+ input: 0.09,
64274
+ output: 0.18,
64275
+ as_of: "2026-09-11",
64276
+ 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"
64246
64277
  },
64247
- notes: "Unreachable until OI-01 is resolved — Groq is not on the W3 onboarding list."
64278
+ 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."
64248
64279
  },
64249
64280
  {
64250
64281
  role: "secondary",
64251
64282
  provider: "deepinfra",
64252
- model_id: null,
64253
- model_id_status: "pending-provider-confirmation",
64254
- model_id_source: null,
64255
- model_family: "gpt-oss-120B",
64256
- lumic_model: null,
64283
+ model_id: "zai-org/GLM-5.3-Flash",
64284
+ model_id_status: "confirmed",
64285
+ 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",
64286
+ model_family: "GLM-5.3 Flash",
64287
+ lumic_model: "zai-org/GLM-5.3-Flash",
64257
64288
  params: {
64258
64289
  temperature: null,
64259
64290
  max_output_tokens: null,
64260
64291
  supports_temperature: true,
64261
64292
  supports_json_schema: true,
64262
64293
  supports_tools: true,
64263
- supports_cache_control: false,
64264
- supports_vision: false
64294
+ supports_cache_control: true,
64295
+ supports_vision: true,
64296
+ context_window: 1048576
64265
64297
  },
64266
64298
  price_per_mtok: {
64267
- input: 0.039,
64268
- output: 0.19,
64269
- as_of: "2026-09-10",
64270
- source: "docs/llm-provider-migration.md#3 DeepInfra anchor; re-verify at W2-02"
64271
- }
64299
+ input: 0.15,
64300
+ output: 0.5,
64301
+ as_of: "2026-09-11",
64302
+ 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"
64303
+ },
64304
+ 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."
64272
64305
  },
64273
64306
  {
64274
64307
  role: "closed_incumbent",
@@ -64315,52 +64348,55 @@ var aliases = {
64315
64348
  routes: [
64316
64349
  {
64317
64350
  role: "primary",
64318
- provider: "deepseek",
64319
- model_id: "deepseek-v4-flash",
64351
+ provider: "deepinfra",
64352
+ model_id: "openai/gpt-oss-20b",
64320
64353
  model_id_status: "confirmed",
64321
- model_id_source: "lumic-utils/src/types/openai-types.ts SUPPORTED_MODELS — already routed on in production",
64322
- model_family: "DeepSeek V4 Flash",
64323
- lumic_model: "deepseek-v4-flash",
64354
+ 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",
64355
+ model_family: "gpt-oss-20B",
64356
+ lumic_model: "openai/gpt-oss-20b",
64324
64357
  params: {
64325
64358
  temperature: null,
64326
- max_output_tokens: 64000,
64359
+ max_output_tokens: null,
64327
64360
  supports_temperature: true,
64328
64361
  supports_json_schema: true,
64329
64362
  supports_tools: true,
64330
- supports_cache_control: true,
64363
+ supports_cache_control: false,
64331
64364
  supports_vision: false,
64332
- context_window: 1000000
64365
+ context_window: 131072
64333
64366
  },
64334
64367
  price_per_mtok: {
64335
- input: 0.14,
64336
- output: 0.28,
64337
- as_of: "2026-09-10",
64338
- source: "docs/llm-provider-migration.md#3 V4 Flash anchor; re-verify at W2-02"
64339
- }
64368
+ input: 0.03,
64369
+ output: 0.14,
64370
+ as_of: "2026-09-11",
64371
+ 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"
64372
+ },
64373
+ 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."
64340
64374
  },
64341
64375
  {
64342
64376
  role: "secondary",
64343
- provider: "zai",
64344
- model_id: null,
64345
- model_id_status: "pending-provider-confirmation",
64346
- model_id_source: null,
64347
- model_family: "GLM 5.3 Flash",
64348
- lumic_model: null,
64377
+ provider: "deepinfra",
64378
+ model_id: "inclusionAI/Ling-3.0-flash-Fin",
64379
+ model_id_status: "confirmed",
64380
+ 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",
64381
+ model_family: "Ling 3.0 Flash Fin",
64382
+ lumic_model: "inclusionAI/Ling-3.0-flash-Fin",
64349
64383
  params: {
64350
64384
  temperature: null,
64351
64385
  max_output_tokens: null,
64352
64386
  supports_temperature: true,
64353
64387
  supports_json_schema: true,
64354
64388
  supports_tools: true,
64355
- supports_cache_control: false,
64356
- supports_vision: false
64389
+ supports_cache_control: true,
64390
+ supports_vision: false,
64391
+ context_window: 262144
64357
64392
  },
64358
64393
  price_per_mtok: {
64359
- input: 1.09,
64360
- output: 3.43,
64361
- as_of: "2026-09-10",
64362
- source: "docs/llm-provider-migration.md#3 GLM first-party anchor; Flash-tier price unconfirmed, re-verify at W2-02"
64363
- }
64394
+ input: 0.06,
64395
+ output: 0.18,
64396
+ as_of: "2026-09-11",
64397
+ 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"
64398
+ },
64399
+ 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."
64364
64400
  },
64365
64401
  {
64366
64402
  role: "closed_incumbent",
@@ -64396,7 +64432,7 @@ var aliases = {
64396
64432
  isolation_capable: false,
64397
64433
  pinned: true,
64398
64434
  eval_gate: "none-pinned-judge",
64399
- 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.",
64435
+ 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.",
64400
64436
  budget: {
64401
64437
  basis: "provisional-pre-baseline",
64402
64438
  monthly_usd: 150,
@@ -64409,39 +64445,34 @@ var aliases = {
64409
64445
  routes: [
64410
64446
  {
64411
64447
  role: "primary",
64412
- provider: "anthropic",
64413
- model_id: "claude-sonnet-4-6",
64448
+ provider: "deepinfra",
64449
+ model_id: "deepseek-ai/DeepSeek-V4-Pro",
64414
64450
  model_id_status: "confirmed",
64415
- model_id_source: "lumic-utils/src/types/openai-types.ts SUPPORTED_MODELS — already routed on in production",
64416
- model_family: "Sonnet-class",
64417
- lumic_model: "claude-sonnet-4-6",
64451
+ 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",
64452
+ model_family: "DeepSeek V4 Pro",
64453
+ lumic_model: "deepseek-ai/DeepSeek-V4-Pro",
64418
64454
  params: {
64419
- temperature: 0,
64420
- max_output_tokens: 64000,
64455
+ temperature: null,
64456
+ max_output_tokens: null,
64421
64457
  supports_temperature: true,
64422
64458
  supports_json_schema: true,
64423
64459
  supports_tools: true,
64424
64460
  supports_cache_control: true,
64425
- supports_vision: true,
64426
- context_window: 1000000
64461
+ supports_vision: false,
64462
+ context_window: 1048576
64427
64463
  },
64428
64464
  price_per_mtok: {
64429
- input: 3,
64430
- output: 15,
64431
- as_of: "2026-09-10",
64432
- source: "lumic-utils/src/functions/llm-config.ts anthropicModelCosts"
64433
- }
64465
+ input: 1.3,
64466
+ output: 2.6,
64467
+ as_of: "2026-09-11",
64468
+ 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"
64469
+ },
64470
+ 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."
64434
64471
  }
64435
64472
  ]
64436
64473
  }
64437
64474
  };
64438
64475
  var open_items = [
64439
- {
64440
- id: "OI-01",
64441
- 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?",
64442
- blocks: "llm.fast primary reachability; W5-03 canary for llm.fast",
64443
- owner: "CEO"
64444
- },
64445
64476
  {
64446
64477
  id: "OI-02",
64447
64478
  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?",
@@ -64599,6 +64630,52 @@ function orderedRoutes(definition) {
64599
64630
  function routeKeyFor(alias, isolated, role) {
64600
64631
  return `${alias}${isolated ? ISOLATED_SUFFIX : ""}#${role}`;
64601
64632
  }
64633
+ /**
64634
+ * Whether one route may serve, and if not, why.
64635
+ *
64636
+ * Extracted from the chain resolver rather than left inline so the admission
64637
+ * rules can be exercised directly. Inline, the only way to prove an exclusion
64638
+ * rule works was to point it at the live table and hope the table still
64639
+ * contained something excludable — which made the proof a statement about how
64640
+ * incomplete the routing policy happened to be that week, and turned finishing
64641
+ * the policy into a test failure. A rule worth enforcing has to be provable on
64642
+ * a route constructed to violate it.
64643
+ *
64644
+ * Order matters: shadow-only is checked before model-id confirmation because a
64645
+ * shadow leg is held back by policy regardless of whether its id is confirmed,
64646
+ * and reporting it as "unconfirmed" would misdescribe a deliberate choice as an
64647
+ * unfinished one.
64648
+ *
64649
+ * The admitting branch carries the confirmed model id rather than leaving the
64650
+ * caller to re-read it. The id is the very thing admission validated, so
64651
+ * handing it back is what lets the caller use it without a non-null assertion
64652
+ * re-stating a check that already happened.
64653
+ *
64654
+ * @param route The authored route.
64655
+ * @param provider The provider entry the route names.
64656
+ * @returns Admission with the confirmed model id, or the reason for exclusion.
64657
+ */
64658
+ function routeAdmission(route, provider) {
64659
+ if (route.shadow_only === true) {
64660
+ return {
64661
+ admit: false,
64662
+ reason: "shadow-only: configured and scored, never served to a caller",
64663
+ };
64664
+ }
64665
+ if (route.model_id_status !== "confirmed" || route.model_id === null) {
64666
+ return {
64667
+ admit: false,
64668
+ reason: `model id unconfirmed (${route.model_family}); it is transcribed from the provider console at onboarding, never guessed`,
64669
+ };
64670
+ }
64671
+ if (provider.account_status !== "live") {
64672
+ return {
64673
+ admit: false,
64674
+ reason: `provider account status is "${provider.account_status}"`,
64675
+ };
64676
+ }
64677
+ return { admit: true, modelId: route.model_id };
64678
+ }
64602
64679
  /**
64603
64680
  * Resolve an alias to the ordered chain of legs that can serve it today.
64604
64681
  *
@@ -64626,27 +64703,12 @@ function resolveChain(alias, options = {}) {
64626
64703
  const exclusions = [];
64627
64704
  for (const route of orderedRoutes(definition)) {
64628
64705
  const provider = providerEntry(route.provider);
64629
- if (route.shadow_only === true) {
64630
- exclusions.push({
64631
- role: route.role,
64632
- provider: route.provider,
64633
- reason: "shadow-only: configured and scored, never served to a caller",
64634
- });
64635
- continue;
64636
- }
64637
- if (route.model_id_status !== "confirmed" || route.model_id === null) {
64638
- exclusions.push({
64639
- role: route.role,
64640
- provider: route.provider,
64641
- reason: `model id unconfirmed (${route.model_family}); it is transcribed from the provider console at onboarding, never guessed`,
64642
- });
64643
- continue;
64644
- }
64645
- if (provider.account_status !== "live") {
64706
+ const admission = routeAdmission(route, provider);
64707
+ if (!admission.admit) {
64646
64708
  exclusions.push({
64647
64709
  role: route.role,
64648
64710
  provider: route.provider,
64649
- reason: `provider account status is "${provider.account_status}"`,
64711
+ reason: admission.reason,
64650
64712
  });
64651
64713
  continue;
64652
64714
  }
@@ -64656,7 +64718,7 @@ function resolveChain(alias, options = {}) {
64656
64718
  role: route.role,
64657
64719
  providerName: route.provider,
64658
64720
  provider,
64659
- modelId: route.model_id,
64721
+ modelId: admission.modelId,
64660
64722
  lumicModel: route.lumic_model ?? null,
64661
64723
  params: route.params ?? {},
64662
64724
  routeKey: routeKeyFor(alias, isolated, route.role),
@@ -65231,7 +65293,16 @@ function gatewayFor(chain) {
65231
65293
  gatewayTransport = createGatewayTransport({
65232
65294
  baseUrl,
65233
65295
  apiKeyEnv: config.gatewayApiKeyEnv ?? DEFAULT_GATEWAY_KEY_ENV,
65234
- modelNameFor: (request) => gatewayModelNameFor(request.route, chain),
65296
+ // The chain is re-resolved from the request's own route rather than
65297
+ // captured from the caller above. The transport is cached for the life of
65298
+ // the process, so a captured chain would bind every later alias to
65299
+ // whichever alias happened to dispatch first: its head leg would never
65300
+ // match, would be addressed as "<alias>.fallback.primary" — a name the
65301
+ // gateway does not register — and the 400 would be absorbed by the
65302
+ // fallback chain. The call still succeeds, from the SECONDARY leg, which
65303
+ // is why this reads as healthy traffic while every alias but one quietly
65304
+ // stops using the model it was chosen for.
65305
+ modelNameFor: (request) => gatewayModelNameFor(request.route, resolveChain(request.route.alias, { isolated: request.route.isolated })),
65235
65306
  });
65236
65307
  }
65237
65308
  return gatewayTransport;
@@ -65319,7 +65390,7 @@ async function callLLMByAlias(content, responseFormat = "text", options) {
65319
65390
  cost: 0,
65320
65391
  });
65321
65392
  }
65322
- const gateway = gatewayFor(chain);
65393
+ const gateway = gatewayFor();
65323
65394
  const attemptLog = [];
65324
65395
  /**
65325
65396
  * Run the chain, falling back from the gateway to the degraded direct path