@srouterhq/server 0.0.0-stage → 0.9.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.
- package/LICENSE +21 -0
- package/client/dist/assets/am-TQ7Jmdqe.js +1 -0
- package/client/dist/assets/ar-Bf5a7yfC.js +1 -0
- package/client/dist/assets/az-CrosE1xH.js +1 -0
- package/client/dist/assets/bg-BvWnmcUz.js +1 -0
- package/client/dist/assets/bn-ams5TsJp.js +1 -0
- package/client/dist/assets/cs-Dh67CaJ_.js +1 -0
- package/client/dist/assets/da-9WlT8Iq7.js +1 -0
- package/client/dist/assets/de-lWhJJzz7.js +1 -0
- package/client/dist/assets/el-Cu7_GhNq.js +1 -0
- package/client/dist/assets/es-BZuzsBcP.js +1 -0
- package/client/dist/assets/fa-Dwdn-jKS.js +1 -0
- package/client/dist/assets/fi-BFrFyOTy.js +1 -0
- package/client/dist/assets/fr-XhbtmPpj.js +1 -0
- package/client/dist/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
- package/client/dist/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
- package/client/dist/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
- package/client/dist/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
- package/client/dist/assets/geist-mono-cyrillic-ext-wght-normal-I4S5GZfc.woff2 +0 -0
- package/client/dist/assets/geist-mono-cyrillic-wght-normal-BmXc_FBt.woff2 +0 -0
- package/client/dist/assets/geist-mono-latin-ext-wght-normal-DrnZ1wKl.woff2 +0 -0
- package/client/dist/assets/geist-mono-latin-wght-normal-B_7UjwxQ.woff2 +0 -0
- package/client/dist/assets/geist-mono-symbols2-wght-normal-GZpp1pK2.woff2 +0 -0
- package/client/dist/assets/geist-mono-vietnamese-wght-normal-D8KDMBhC.woff2 +0 -0
- package/client/dist/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
- package/client/dist/assets/gu-D0uhLUB8.js +1 -0
- package/client/dist/assets/ha-CVlm9pqp.js +1 -0
- package/client/dist/assets/he-CMIFeoWr.js +1 -0
- package/client/dist/assets/hi-ENTwhBpn.js +1 -0
- package/client/dist/assets/hr-fc03vMy_.js +1 -0
- package/client/dist/assets/hu-YBo2BIYt.js +1 -0
- package/client/dist/assets/id-BEWXYX69.js +1 -0
- package/client/dist/assets/ig-BKLZFKka.js +1 -0
- package/client/dist/assets/index-D9I4KtvR.js +145 -0
- package/client/dist/assets/index-txhEmCdb.css +2 -0
- package/client/dist/assets/it-Bzmei1Y2.js +1 -0
- package/client/dist/assets/ja-BfcpuqEl.js +1 -0
- package/client/dist/assets/ka-CnWjRgLo.js +1 -0
- package/client/dist/assets/km-BAjPR3Qj.js +1 -0
- package/client/dist/assets/kn-B15WKU5m.js +1 -0
- package/client/dist/assets/ko-C61fAB-w.js +1 -0
- package/client/dist/assets/lt-CYTr4_YW.js +1 -0
- package/client/dist/assets/ml-CtqxgyH3.js +1 -0
- package/client/dist/assets/mr-X5TMY7aR.js +1 -0
- package/client/dist/assets/ms-DSg8RqPS.js +1 -0
- package/client/dist/assets/my-D7RqR8uE.js +1 -0
- package/client/dist/assets/ne-DaflxkDj.js +1 -0
- package/client/dist/assets/nl-BOqqtsC8.js +1 -0
- package/client/dist/assets/no-BSHp_StB.js +1 -0
- package/client/dist/assets/or-BkLR9Vub.js +1 -0
- package/client/dist/assets/pa-CarJ2XgI.js +1 -0
- package/client/dist/assets/pl-C2n0V-0k.js +1 -0
- package/client/dist/assets/pt-BR-CqJdNhg2.js +1 -0
- package/client/dist/assets/pt-PT-C_HpMyKz.js +1 -0
- package/client/dist/assets/ro-DVRZqSAS.js +1 -0
- package/client/dist/assets/ru-DwAJG7VC.js +1 -0
- package/client/dist/assets/si-BxUezXm0.js +1 -0
- package/client/dist/assets/sk-eI1VcIfY.js +1 -0
- package/client/dist/assets/sr-CJF3auCr.js +1 -0
- package/client/dist/assets/srouter-logo-C6ZfjGIi.svg +14 -0
- package/client/dist/assets/sv-nqvwHAq_.js +1 -0
- package/client/dist/assets/sw-DWynE2pW.js +1 -0
- package/client/dist/assets/ta-BVM12knC.js +1 -0
- package/client/dist/assets/te-oyzEkF7_.js +1 -0
- package/client/dist/assets/th-COVeE0ZQ.js +1 -0
- package/client/dist/assets/tl-DsJANnQz.js +1 -0
- package/client/dist/assets/tr-B-Fl-urO.js +1 -0
- package/client/dist/assets/uk-C5qketAO.js +1 -0
- package/client/dist/assets/ur-QU9KugfV.js +1 -0
- package/client/dist/assets/uz-DL9cG_mY.js +1 -0
- package/client/dist/assets/vi-CQiVy3Pu.js +1 -0
- package/client/dist/assets/yo-DqazMdrZ.js +1 -0
- package/client/dist/assets/zh-CN-DnYL_Kio.js +1 -0
- package/client/dist/assets/zh-TW-5bdbosKj.js +1 -0
- package/client/dist/favicon.svg +14 -0
- package/client/dist/icons.svg +24 -0
- package/client/dist/index.html +37 -0
- package/dist/app.d.ts +4 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +372 -0
- package/dist/app.js.map +1 -0
- package/dist/db/index.d.ts +49 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +203 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/migrate/TEMPLATE.d.ts +4 -0
- package/dist/db/migrate/TEMPLATE.d.ts.map +1 -0
- package/dist/db/migrate/TEMPLATE.js +18 -0
- package/dist/db/migrate/TEMPLATE.js.map +1 -0
- package/dist/db/migrate/cli.d.ts +2 -0
- package/dist/db/migrate/cli.d.ts.map +1 -0
- package/dist/db/migrate/cli.js +177 -0
- package/dist/db/migrate/cli.js.map +1 -0
- package/dist/db/migrate/defaults.d.ts +52 -0
- package/dist/db/migrate/defaults.d.ts.map +1 -0
- package/dist/db/migrate/defaults.js +126 -0
- package/dist/db/migrate/defaults.js.map +1 -0
- package/dist/db/migrate/runner.d.ts +16 -0
- package/dist/db/migrate/runner.d.ts.map +1 -0
- package/dist/db/migrate/runner.js +178 -0
- package/dist/db/migrate/runner.js.map +1 -0
- package/dist/db/migrations/20260101_000000_legacy_baseline.d.ts +4 -0
- package/dist/db/migrations/20260101_000000_legacy_baseline.d.ts.map +1 -0
- package/dist/db/migrations/20260101_000000_legacy_baseline.js +2240 -0
- package/dist/db/migrations/20260101_000000_legacy_baseline.js.map +1 -0
- package/dist/db/migrations/20260627_000001_custom_provider_modalities.d.ts +4 -0
- package/dist/db/migrations/20260627_000001_custom_provider_modalities.d.ts.map +1 -0
- package/dist/db/migrations/20260627_000001_custom_provider_modalities.js +27 -0
- package/dist/db/migrations/20260627_000001_custom_provider_modalities.js.map +1 -0
- package/dist/db/migrations/20260627_000002_catalog_model_state.d.ts +4 -0
- package/dist/db/migrations/20260627_000002_catalog_model_state.d.ts.map +1 -0
- package/dist/db/migrations/20260627_000002_catalog_model_state.js +30 -0
- package/dist/db/migrations/20260627_000002_catalog_model_state.js.map +1 -0
- package/dist/db/migrations/20260628_120000_request_aggregates.d.ts +6 -0
- package/dist/db/migrations/20260628_120000_request_aggregates.d.ts.map +1 -0
- package/dist/db/migrations/20260628_120000_request_aggregates.js +104 -0
- package/dist/db/migrations/20260628_120000_request_aggregates.js.map +1 -0
- package/dist/db/migrations/20260630_000001_github_gpt41_context.d.ts +9 -0
- package/dist/db/migrations/20260630_000001_github_gpt41_context.d.ts.map +1 -0
- package/dist/db/migrations/20260630_000001_github_gpt41_context.js +22 -0
- package/dist/db/migrations/20260630_000001_github_gpt41_context.js.map +1 -0
- package/dist/db/migrations/20260706_000001_request_client_info.d.ts +4 -0
- package/dist/db/migrations/20260706_000001_request_client_info.d.ts.map +1 -0
- package/dist/db/migrations/20260706_000001_request_client_info.js +30 -0
- package/dist/db/migrations/20260706_000001_request_client_info.js.map +1 -0
- package/dist/db/migrations/20260706_000002_custom_model_tool_support.d.ts +17 -0
- package/dist/db/migrations/20260706_000002_custom_model_tool_support.d.ts.map +1 -0
- package/dist/db/migrations/20260706_000002_custom_model_tool_support.js +20 -0
- package/dist/db/migrations/20260706_000002_custom_model_tool_support.js.map +1 -0
- package/dist/db/migrations/20260714_000001_profile_chain_backfill.d.ts +12 -0
- package/dist/db/migrations/20260714_000001_profile_chain_backfill.d.ts.map +1 -0
- package/dist/db/migrations/20260714_000001_profile_chain_backfill.js +45 -0
- package/dist/db/migrations/20260714_000001_profile_chain_backfill.js.map +1 -0
- package/dist/db/migrations/20260720_000001_key_health_error.d.ts +5 -0
- package/dist/db/migrations/20260720_000001_key_health_error.d.ts.map +1 -0
- package/dist/db/migrations/20260720_000001_key_health_error.js +16 -0
- package/dist/db/migrations/20260720_000001_key_health_error.js.map +1 -0
- package/dist/db/migrations/20260726_000001_cooldown_probe_provenance.d.ts +4 -0
- package/dist/db/migrations/20260726_000001_cooldown_probe_provenance.d.ts.map +1 -0
- package/dist/db/migrations/20260726_000001_cooldown_probe_provenance.js +38 -0
- package/dist/db/migrations/20260726_000001_cooldown_probe_provenance.js.map +1 -0
- package/dist/db/migrations/20260726_000002_request_attempts.d.ts +4 -0
- package/dist/db/migrations/20260726_000002_request_attempts.d.ts.map +1 -0
- package/dist/db/migrations/20260726_000002_request_attempts.js +43 -0
- package/dist/db/migrations/20260726_000002_request_attempts.js.map +1 -0
- package/dist/db/migrations/20260726_000003_model_source_provenance.d.ts +4 -0
- package/dist/db/migrations/20260726_000003_model_source_provenance.d.ts.map +1 -0
- package/dist/db/migrations/20260726_000003_model_source_provenance.js +80 -0
- package/dist/db/migrations/20260726_000003_model_source_provenance.js.map +1 -0
- package/dist/db/migrations/20260726_000004_media_model_meta.d.ts +4 -0
- package/dist/db/migrations/20260726_000004_media_model_meta.d.ts.map +1 -0
- package/dist/db/migrations/20260726_000004_media_model_meta.js +34 -0
- package/dist/db/migrations/20260726_000004_media_model_meta.js.map +1 -0
- package/dist/db/migrations/20260726_000005_request_served_model.d.ts +4 -0
- package/dist/db/migrations/20260726_000005_request_served_model.d.ts.map +1 -0
- package/dist/db/migrations/20260726_000005_request_served_model.js +31 -0
- package/dist/db/migrations/20260726_000005_request_served_model.js.map +1 -0
- package/dist/db/migrations/20260726_000006_attempt_error_summary.d.ts +4 -0
- package/dist/db/migrations/20260726_000006_attempt_error_summary.d.ts.map +1 -0
- package/dist/db/migrations/20260726_000006_attempt_error_summary.js +29 -0
- package/dist/db/migrations/20260726_000006_attempt_error_summary.js.map +1 -0
- package/dist/db/migrations/20260727_000001_agent_compatibility.d.ts +4 -0
- package/dist/db/migrations/20260727_000001_agent_compatibility.d.ts.map +1 -0
- package/dist/db/migrations/20260727_000001_agent_compatibility.js +41 -0
- package/dist/db/migrations/20260727_000001_agent_compatibility.js.map +1 -0
- package/dist/db/migrations/20260728_000001_tombstone_provenance.d.ts +12 -0
- package/dist/db/migrations/20260728_000001_tombstone_provenance.d.ts.map +1 -0
- package/dist/db/migrations/20260728_000001_tombstone_provenance.js +37 -0
- package/dist/db/migrations/20260728_000001_tombstone_provenance.js.map +1 -0
- package/dist/db/migrations/20260729_000001_custom_model_endpoint_identity.d.ts +4 -0
- package/dist/db/migrations/20260729_000001_custom_model_endpoint_identity.d.ts.map +1 -0
- package/dist/db/migrations/20260729_000001_custom_model_endpoint_identity.js +145 -0
- package/dist/db/migrations/20260729_000001_custom_model_endpoint_identity.js.map +1 -0
- package/dist/db/migrations/20260802_000001_custom_endpoint_host_labels.d.ts +6 -0
- package/dist/db/migrations/20260802_000001_custom_endpoint_host_labels.d.ts.map +1 -0
- package/dist/db/migrations/20260802_000001_custom_endpoint_host_labels.js +52 -0
- package/dist/db/migrations/20260802_000001_custom_endpoint_host_labels.js.map +1 -0
- package/dist/db/migrations/20260805_000001_key_model_scope.d.ts +6 -0
- package/dist/db/migrations/20260805_000001_key_model_scope.d.ts.map +1 -0
- package/dist/db/migrations/20260805_000001_key_model_scope.js +17 -0
- package/dist/db/migrations/20260805_000001_key_model_scope.js.map +1 -0
- package/dist/db/migrations/20260805_000002_client_profiles.d.ts +4 -0
- package/dist/db/migrations/20260805_000002_client_profiles.d.ts.map +1 -0
- package/dist/db/migrations/20260805_000002_client_profiles.js +33 -0
- package/dist/db/migrations/20260805_000002_client_profiles.js.map +1 -0
- package/dist/db/migrations/20260810_000001_api_key_proxy.d.ts +4 -0
- package/dist/db/migrations/20260810_000001_api_key_proxy.d.ts.map +1 -0
- package/dist/db/migrations/20260810_000001_api_key_proxy.js +33 -0
- package/dist/db/migrations/20260810_000001_api_key_proxy.js.map +1 -0
- package/dist/db/migrations/20260819_000001_custom_model_tombstones.d.ts +4 -0
- package/dist/db/migrations/20260819_000001_custom_model_tombstones.d.ts.map +1 -0
- package/dist/db/migrations/20260819_000001_custom_model_tombstones.js +19 -0
- package/dist/db/migrations/20260819_000001_custom_model_tombstones.js.map +1 -0
- package/dist/db/migrations/20260820_000001_playground_conversations.d.ts +4 -0
- package/dist/db/migrations/20260820_000001_playground_conversations.d.ts.map +1 -0
- package/dist/db/migrations/20260820_000001_playground_conversations.js +47 -0
- package/dist/db/migrations/20260820_000001_playground_conversations.js.map +1 -0
- package/dist/db/migrations/20260823_000001_server_logs.d.ts +4 -0
- package/dist/db/migrations/20260823_000001_server_logs.d.ts.map +1 -0
- package/dist/db/migrations/20260823_000001_server_logs.js +53 -0
- package/dist/db/migrations/20260823_000001_server_logs.js.map +1 -0
- package/dist/db/migrations/20260823_000002_backups_table.d.ts +8 -0
- package/dist/db/migrations/20260823_000002_backups_table.d.ts.map +1 -0
- package/dist/db/migrations/20260823_000002_backups_table.js +22 -0
- package/dist/db/migrations/20260823_000002_backups_table.js.map +1 -0
- package/dist/db/migrations/20260823_000003_attempt_key_label.d.ts +19 -0
- package/dist/db/migrations/20260823_000003_attempt_key_label.d.ts.map +1 -0
- package/dist/db/migrations/20260823_000003_attempt_key_label.js +28 -0
- package/dist/db/migrations/20260823_000003_attempt_key_label.js.map +1 -0
- package/dist/db/migrations/20260823_000004_profile_auto_include.d.ts +14 -0
- package/dist/db/migrations/20260823_000004_profile_auto_include.d.ts.map +1 -0
- package/dist/db/migrations/20260823_000004_profile_auto_include.js +25 -0
- package/dist/db/migrations/20260823_000004_profile_auto_include.js.map +1 -0
- package/dist/db/migrations/20260901_000001_idempotency_claims.d.ts +4 -0
- package/dist/db/migrations/20260901_000001_idempotency_claims.d.ts.map +1 -0
- package/dist/db/migrations/20260901_000001_idempotency_claims.js +46 -0
- package/dist/db/migrations/20260901_000001_idempotency_claims.js.map +1 -0
- package/dist/db/migrations/20260901_000002_quota_observation_lookup.d.ts +4 -0
- package/dist/db/migrations/20260901_000002_quota_observation_lookup.d.ts.map +1 -0
- package/dist/db/migrations/20260901_000002_quota_observation_lookup.js +37 -0
- package/dist/db/migrations/20260901_000002_quota_observation_lookup.js.map +1 -0
- package/dist/db/migrations/20260901_000003_request_caller.d.ts +4 -0
- package/dist/db/migrations/20260901_000003_request_caller.d.ts.map +1 -0
- package/dist/db/migrations/20260901_000003_request_caller.js +27 -0
- package/dist/db/migrations/20260901_000003_request_caller.js.map +1 -0
- package/dist/db/migrations/20260902_000001_analytics_latency_percentile_index.d.ts +4 -0
- package/dist/db/migrations/20260902_000001_analytics_latency_percentile_index.d.ts.map +1 -0
- package/dist/db/migrations/20260902_000001_analytics_latency_percentile_index.js +35 -0
- package/dist/db/migrations/20260902_000001_analytics_latency_percentile_index.js.map +1 -0
- package/dist/db/migrations/20260903_000001_mcp_enabled_default.d.ts +4 -0
- package/dist/db/migrations/20260903_000001_mcp_enabled_default.d.ts.map +1 -0
- package/dist/db/migrations/20260903_000001_mcp_enabled_default.js +37 -0
- package/dist/db/migrations/20260903_000001_mcp_enabled_default.js.map +1 -0
- package/dist/db/migrations/20260903_000002_response_cache.d.ts +4 -0
- package/dist/db/migrations/20260903_000002_response_cache.d.ts.map +1 -0
- package/dist/db/migrations/20260903_000002_response_cache.js +53 -0
- package/dist/db/migrations/20260903_000002_response_cache.js.map +1 -0
- package/dist/db/migrations/20260904_000001_key_monthly_budget.d.ts +13 -0
- package/dist/db/migrations/20260904_000001_key_monthly_budget.d.ts.map +1 -0
- package/dist/db/migrations/20260904_000001_key_monthly_budget.js +35 -0
- package/dist/db/migrations/20260904_000001_key_monthly_budget.js.map +1 -0
- package/dist/db/migrations/20260913_000001_request_model_attribution.d.ts +4 -0
- package/dist/db/migrations/20260913_000001_request_model_attribution.d.ts.map +1 -0
- package/dist/db/migrations/20260913_000001_request_model_attribution.js +68 -0
- package/dist/db/migrations/20260913_000001_request_model_attribution.js.map +1 -0
- package/dist/db/migrations/20260914_000001_key_monthly_usage.d.ts +5 -0
- package/dist/db/migrations/20260914_000001_key_monthly_usage.d.ts.map +1 -0
- package/dist/db/migrations/20260914_000001_key_monthly_usage.js +37 -0
- package/dist/db/migrations/20260914_000001_key_monthly_usage.js.map +1 -0
- package/dist/db/migrations/20260915_000001_quota_snapshot_freshness.d.ts +4 -0
- package/dist/db/migrations/20260915_000001_quota_snapshot_freshness.d.ts.map +1 -0
- package/dist/db/migrations/20260915_000001_quota_snapshot_freshness.js +28 -0
- package/dist/db/migrations/20260915_000001_quota_snapshot_freshness.js.map +1 -0
- package/dist/db/migrations/20261004_000001_unified_key_sr_prefix.d.ts +4 -0
- package/dist/db/migrations/20261004_000001_unified_key_sr_prefix.d.ts.map +1 -0
- package/dist/db/migrations/20261004_000001_unified_key_sr_prefix.js +25 -0
- package/dist/db/migrations/20261004_000001_unified_key_sr_prefix.js.map +1 -0
- package/dist/db/migrations/20261005_000001_key_budget_period.d.ts +10 -0
- package/dist/db/migrations/20261005_000001_key_budget_period.d.ts.map +1 -0
- package/dist/db/migrations/20261005_000001_key_budget_period.js +78 -0
- package/dist/db/migrations/20261005_000001_key_budget_period.js.map +1 -0
- package/dist/db/migrations/20261005_000002_key_budget_period_auto.d.ts +21 -0
- package/dist/db/migrations/20261005_000002_key_budget_period_auto.d.ts.map +1 -0
- package/dist/db/migrations/20261005_000002_key_budget_period_auto.js +41 -0
- package/dist/db/migrations/20261005_000002_key_budget_period_auto.js.map +1 -0
- package/dist/db/model-pricing.d.ts +39 -0
- package/dist/db/model-pricing.d.ts.map +1 -0
- package/dist/db/model-pricing.js +274 -0
- package/dist/db/model-pricing.js.map +1 -0
- package/dist/db/node-sqlite.d.ts +9 -0
- package/dist/db/node-sqlite.d.ts.map +1 -0
- package/dist/db/node-sqlite.js +87 -0
- package/dist/db/node-sqlite.js.map +1 -0
- package/dist/db/types.d.ts +22 -0
- package/dist/db/types.d.ts.map +1 -0
- package/dist/db/types.js +2 -0
- package/dist/db/types.js.map +1 -0
- package/dist/docs/docs-page.d.ts +2 -0
- package/dist/docs/docs-page.d.ts.map +1 -0
- package/dist/docs/docs-page.js +319 -0
- package/dist/docs/docs-page.js.map +1 -0
- package/dist/docs/openapi.d.ts +1896 -0
- package/dist/docs/openapi.d.ts.map +1 -0
- package/dist/docs/openapi.js +1096 -0
- package/dist/docs/openapi.js.map +1 -0
- package/dist/env.d.ts +2 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +9 -0
- package/dist/env.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +144 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/anthropic-documents.d.ts +41 -0
- package/dist/lib/anthropic-documents.d.ts.map +1 -0
- package/dist/lib/anthropic-documents.js +132 -0
- package/dist/lib/anthropic-documents.js.map +1 -0
- package/dist/lib/app-version.d.ts +5 -0
- package/dist/lib/app-version.d.ts.map +1 -0
- package/dist/lib/app-version.js +61 -0
- package/dist/lib/app-version.js.map +1 -0
- package/dist/lib/attempt-trace.d.ts +23 -0
- package/dist/lib/attempt-trace.d.ts.map +1 -0
- package/dist/lib/attempt-trace.js +32 -0
- package/dist/lib/attempt-trace.js.map +1 -0
- package/dist/lib/budget.d.ts +6 -0
- package/dist/lib/budget.d.ts.map +1 -0
- package/dist/lib/budget.js +40 -0
- package/dist/lib/budget.js.map +1 -0
- package/dist/lib/client-classifier.d.ts +10 -0
- package/dist/lib/client-classifier.d.ts.map +1 -0
- package/dist/lib/client-classifier.js +126 -0
- package/dist/lib/client-classifier.js.map +1 -0
- package/dist/lib/client-context.d.ts +10 -0
- package/dist/lib/client-context.d.ts.map +1 -0
- package/dist/lib/client-context.js +39 -0
- package/dist/lib/client-context.js.map +1 -0
- package/dist/lib/config.d.ts +33 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +94 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/content.d.ts +33 -0
- package/dist/lib/content.d.ts.map +1 -0
- package/dist/lib/content.js +201 -0
- package/dist/lib/content.js.map +1 -0
- package/dist/lib/credential.d.ts +11 -0
- package/dist/lib/credential.d.ts.map +1 -0
- package/dist/lib/credential.js +18 -0
- package/dist/lib/credential.js.map +1 -0
- package/dist/lib/crypto.d.ts +31 -0
- package/dist/lib/crypto.d.ts.map +1 -0
- package/dist/lib/crypto.js +206 -0
- package/dist/lib/crypto.js.map +1 -0
- package/dist/lib/custom-provider-cleanup.d.ts +13 -0
- package/dist/lib/custom-provider-cleanup.d.ts.map +1 -0
- package/dist/lib/custom-provider-cleanup.js +43 -0
- package/dist/lib/custom-provider-cleanup.js.map +1 -0
- package/dist/lib/db-backup.d.ts +31 -0
- package/dist/lib/db-backup.d.ts.map +1 -0
- package/dist/lib/db-backup.js +255 -0
- package/dist/lib/db-backup.js.map +1 -0
- package/dist/lib/endpoint-scope.d.ts +42 -0
- package/dist/lib/endpoint-scope.d.ts.map +1 -0
- package/dist/lib/endpoint-scope.js +95 -0
- package/dist/lib/endpoint-scope.js.map +1 -0
- package/dist/lib/env-drift.d.ts +17 -0
- package/dist/lib/env-drift.d.ts.map +1 -0
- package/dist/lib/env-drift.js +108 -0
- package/dist/lib/env-drift.js.map +1 -0
- package/dist/lib/error-classify.d.ts +40 -0
- package/dist/lib/error-classify.d.ts.map +1 -0
- package/dist/lib/error-classify.js +687 -0
- package/dist/lib/error-classify.js.map +1 -0
- package/dist/lib/error-redaction.d.ts +8 -0
- package/dist/lib/error-redaction.d.ts.map +1 -0
- package/dist/lib/error-redaction.js +45 -0
- package/dist/lib/error-redaction.js.map +1 -0
- package/dist/lib/fallback-loop.d.ts +306 -0
- package/dist/lib/fallback-loop.d.ts.map +1 -0
- package/dist/lib/fallback-loop.js +1336 -0
- package/dist/lib/fallback-loop.js.map +1 -0
- package/dist/lib/file-permissions.d.ts +98 -0
- package/dist/lib/file-permissions.d.ts.map +1 -0
- package/dist/lib/file-permissions.js +159 -0
- package/dist/lib/file-permissions.js.map +1 -0
- package/dist/lib/gemini-wire.d.ts +76 -0
- package/dist/lib/gemini-wire.d.ts.map +1 -0
- package/dist/lib/gemini-wire.js +392 -0
- package/dist/lib/gemini-wire.js.map +1 -0
- package/dist/lib/guardrails.d.ts +37 -0
- package/dist/lib/guardrails.d.ts.map +1 -0
- package/dist/lib/guardrails.js +106 -0
- package/dist/lib/guardrails.js.map +1 -0
- package/dist/lib/header-value.d.ts +8 -0
- package/dist/lib/header-value.d.ts.map +1 -0
- package/dist/lib/header-value.js +55 -0
- package/dist/lib/header-value.js.map +1 -0
- package/dist/lib/image-normalize.d.ts +21 -0
- package/dist/lib/image-normalize.d.ts.map +1 -0
- package/dist/lib/image-normalize.js +218 -0
- package/dist/lib/image-normalize.js.map +1 -0
- package/dist/lib/inbound-chat.d.ts +48 -0
- package/dist/lib/inbound-chat.d.ts.map +1 -0
- package/dist/lib/inbound-chat.js +406 -0
- package/dist/lib/inbound-chat.js.map +1 -0
- package/dist/lib/key-parser.d.ts +79 -0
- package/dist/lib/key-parser.d.ts.map +1 -0
- package/dist/lib/key-parser.js +701 -0
- package/dist/lib/key-parser.js.map +1 -0
- package/dist/lib/key-proxy.d.ts +49 -0
- package/dist/lib/key-proxy.d.ts.map +1 -0
- package/dist/lib/key-proxy.js +92 -0
- package/dist/lib/key-proxy.js.map +1 -0
- package/dist/lib/log-redaction.d.ts +28 -0
- package/dist/lib/log-redaction.d.ts.map +1 -0
- package/dist/lib/log-redaction.js +166 -0
- package/dist/lib/log-redaction.js.map +1 -0
- package/dist/lib/model-scope.d.ts +9 -0
- package/dist/lib/model-scope.d.ts.map +1 -0
- package/dist/lib/model-scope.js +29 -0
- package/dist/lib/model-scope.js.map +1 -0
- package/dist/lib/one-time-code.d.ts +15 -0
- package/dist/lib/one-time-code.d.ts.map +1 -0
- package/dist/lib/one-time-code.js +41 -0
- package/dist/lib/one-time-code.js.map +1 -0
- package/dist/lib/output-cap.d.ts +24 -0
- package/dist/lib/output-cap.d.ts.map +1 -0
- package/dist/lib/output-cap.js +80 -0
- package/dist/lib/output-cap.js.map +1 -0
- package/dist/lib/password.d.ts +3 -0
- package/dist/lib/password.d.ts.map +1 -0
- package/dist/lib/password.js +27 -0
- package/dist/lib/password.js.map +1 -0
- package/dist/lib/process-safety-net.d.ts +32 -0
- package/dist/lib/process-safety-net.d.ts.map +1 -0
- package/dist/lib/process-safety-net.js +123 -0
- package/dist/lib/process-safety-net.js.map +1 -0
- package/dist/lib/provider-identity.d.ts +37 -0
- package/dist/lib/provider-identity.d.ts.map +1 -0
- package/dist/lib/provider-identity.js +110 -0
- package/dist/lib/provider-identity.js.map +1 -0
- package/dist/lib/provider-size-parser.d.ts +6 -0
- package/dist/lib/provider-size-parser.d.ts.map +1 -0
- package/dist/lib/provider-size-parser.js +72 -0
- package/dist/lib/provider-size-parser.js.map +1 -0
- package/dist/lib/provider-timeout.d.ts +17 -0
- package/dist/lib/provider-timeout.d.ts.map +1 -0
- package/dist/lib/provider-timeout.js +70 -0
- package/dist/lib/provider-timeout.js.map +1 -0
- package/dist/lib/proxy.d.ts +180 -0
- package/dist/lib/proxy.d.ts.map +1 -0
- package/dist/lib/proxy.js +1002 -0
- package/dist/lib/proxy.js.map +1 -0
- package/dist/lib/request-log.d.ts +4 -0
- package/dist/lib/request-log.d.ts.map +1 -0
- package/dist/lib/request-log.js +161 -0
- package/dist/lib/request-log.js.map +1 -0
- package/dist/lib/reset-code.d.ts +5 -0
- package/dist/lib/reset-code.d.ts.map +1 -0
- package/dist/lib/reset-code.js +39 -0
- package/dist/lib/reset-code.js.map +1 -0
- package/dist/lib/retry-hint.d.ts +14 -0
- package/dist/lib/retry-hint.d.ts.map +1 -0
- package/dist/lib/retry-hint.js +36 -0
- package/dist/lib/retry-hint.js.map +1 -0
- package/dist/lib/route-live.d.ts +29 -0
- package/dist/lib/route-live.d.ts.map +1 -0
- package/dist/lib/route-live.js +97 -0
- package/dist/lib/route-live.js.map +1 -0
- package/dist/lib/sampling-params.d.ts +183 -0
- package/dist/lib/sampling-params.d.ts.map +1 -0
- package/dist/lib/sampling-params.js +386 -0
- package/dist/lib/sampling-params.js.map +1 -0
- package/dist/lib/scheduler.d.ts +13 -0
- package/dist/lib/scheduler.d.ts.map +1 -0
- package/dist/lib/scheduler.js +11 -0
- package/dist/lib/scheduler.js.map +1 -0
- package/dist/lib/served-model.d.ts +16 -0
- package/dist/lib/served-model.d.ts.map +1 -0
- package/dist/lib/served-model.js +0 -0
- package/dist/lib/served-model.js.map +1 -0
- package/dist/lib/server-logs.d.ts +132 -0
- package/dist/lib/server-logs.d.ts.map +1 -0
- package/dist/lib/server-logs.js +473 -0
- package/dist/lib/server-logs.js.map +1 -0
- package/dist/lib/setup-code.d.ts +5 -0
- package/dist/lib/setup-code.d.ts.map +1 -0
- package/dist/lib/setup-code.js +35 -0
- package/dist/lib/setup-code.js.map +1 -0
- package/dist/lib/structured-output.d.ts +9 -0
- package/dist/lib/structured-output.d.ts.map +1 -0
- package/dist/lib/structured-output.js +72 -0
- package/dist/lib/structured-output.js.map +1 -0
- package/dist/lib/system-prompt.d.ts +30 -0
- package/dist/lib/system-prompt.d.ts.map +1 -0
- package/dist/lib/system-prompt.js +66 -0
- package/dist/lib/system-prompt.js.map +1 -0
- package/dist/lib/task-type.d.ts +18 -0
- package/dist/lib/task-type.d.ts.map +1 -0
- package/dist/lib/task-type.js +92 -0
- package/dist/lib/task-type.js.map +1 -0
- package/dist/lib/think-tags.d.ts +37 -0
- package/dist/lib/think-tags.d.ts.map +1 -0
- package/dist/lib/think-tags.js +203 -0
- package/dist/lib/think-tags.js.map +1 -0
- package/dist/lib/tool-args.d.ts +36 -0
- package/dist/lib/tool-args.d.ts.map +1 -0
- package/dist/lib/tool-args.js +190 -0
- package/dist/lib/tool-args.js.map +1 -0
- package/dist/lib/tool-call-rescue.d.ts +62 -0
- package/dist/lib/tool-call-rescue.d.ts.map +1 -0
- package/dist/lib/tool-call-rescue.js +258 -0
- package/dist/lib/tool-call-rescue.js.map +1 -0
- package/dist/lib/tool-capability.d.ts +13 -0
- package/dist/lib/tool-capability.d.ts.map +1 -0
- package/dist/lib/tool-capability.js +70 -0
- package/dist/lib/tool-capability.js.map +1 -0
- package/dist/lib/tool-validate.d.ts +44 -0
- package/dist/lib/tool-validate.d.ts.map +1 -0
- package/dist/lib/tool-validate.js +165 -0
- package/dist/lib/tool-validate.js.map +1 -0
- package/dist/lib/ttfb-budget.d.ts +13 -0
- package/dist/lib/ttfb-budget.d.ts.map +1 -0
- package/dist/lib/ttfb-budget.js +153 -0
- package/dist/lib/ttfb-budget.js.map +1 -0
- package/dist/lib/url-guard.d.ts +47 -0
- package/dist/lib/url-guard.d.ts.map +1 -0
- package/dist/lib/url-guard.js +229 -0
- package/dist/lib/url-guard.js.map +1 -0
- package/dist/lib/wake-detect.d.ts +12 -0
- package/dist/lib/wake-detect.d.ts.map +1 -0
- package/dist/lib/wake-detect.js +99 -0
- package/dist/lib/wake-detect.js.map +1 -0
- package/dist/middleware/errorHandler.d.ts +3 -0
- package/dist/middleware/errorHandler.d.ts.map +1 -0
- package/dist/middleware/errorHandler.js +45 -0
- package/dist/middleware/errorHandler.js.map +1 -0
- package/dist/middleware/rateLimit.d.ts +4 -0
- package/dist/middleware/rateLimit.d.ts.map +1 -0
- package/dist/middleware/rateLimit.js +125 -0
- package/dist/middleware/rateLimit.js.map +1 -0
- package/dist/middleware/requireAuth.d.ts +3 -0
- package/dist/middleware/requireAuth.d.ts.map +1 -0
- package/dist/middleware/requireAuth.js +17 -0
- package/dist/middleware/requireAuth.js.map +1 -0
- package/dist/providers/aclide.d.ts +18 -0
- package/dist/providers/aclide.d.ts.map +1 -0
- package/dist/providers/aclide.js +174 -0
- package/dist/providers/aclide.js.map +1 -0
- package/dist/providers/aihorde.d.ts +42 -0
- package/dist/providers/aihorde.d.ts.map +1 -0
- package/dist/providers/aihorde.js +192 -0
- package/dist/providers/aihorde.js.map +1 -0
- package/dist/providers/airforce.d.ts +11 -0
- package/dist/providers/airforce.d.ts.map +1 -0
- package/dist/providers/airforce.js +32 -0
- package/dist/providers/airforce.js.map +1 -0
- package/dist/providers/base.d.ts +177 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +354 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/blaze.d.ts +11 -0
- package/dist/providers/blaze.d.ts.map +1 -0
- package/dist/providers/blaze.js +33 -0
- package/dist/providers/blaze.js.map +1 -0
- package/dist/providers/blockrun.d.ts +14 -0
- package/dist/providers/blockrun.d.ts.map +1 -0
- package/dist/providers/blockrun.js +36 -0
- package/dist/providers/blockrun.js.map +1 -0
- package/dist/providers/clod.d.ts +11 -0
- package/dist/providers/clod.d.ts.map +1 -0
- package/dist/providers/clod.js +39 -0
- package/dist/providers/clod.js.map +1 -0
- package/dist/providers/cloudflare.d.ts +15 -0
- package/dist/providers/cloudflare.d.ts.map +1 -0
- package/dist/providers/cloudflare.js +175 -0
- package/dist/providers/cloudflare.js.map +1 -0
- package/dist/providers/cohere.d.ts +11 -0
- package/dist/providers/cohere.d.ts.map +1 -0
- package/dist/providers/cohere.js +117 -0
- package/dist/providers/cohere.js.map +1 -0
- package/dist/providers/dreamprompting.d.ts +11 -0
- package/dist/providers/dreamprompting.d.ts.map +1 -0
- package/dist/providers/dreamprompting.js +41 -0
- package/dist/providers/dreamprompting.js.map +1 -0
- package/dist/providers/electronhub.d.ts +10 -0
- package/dist/providers/electronhub.d.ts.map +1 -0
- package/dist/providers/electronhub.js +56 -0
- package/dist/providers/electronhub.js.map +1 -0
- package/dist/providers/experiential.d.ts +10 -0
- package/dist/providers/experiential.d.ts.map +1 -0
- package/dist/providers/experiential.js +33 -0
- package/dist/providers/experiential.js.map +1 -0
- package/dist/providers/gizmo.d.ts +15 -0
- package/dist/providers/gizmo.d.ts.map +1 -0
- package/dist/providers/gizmo.js +54 -0
- package/dist/providers/gizmo.js.map +1 -0
- package/dist/providers/google.d.ts +30 -0
- package/dist/providers/google.d.ts.map +1 -0
- package/dist/providers/google.js +766 -0
- package/dist/providers/google.js.map +1 -0
- package/dist/providers/index.d.ts +13 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +561 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/llmtr.d.ts +15 -0
- package/dist/providers/llmtr.d.ts.map +1 -0
- package/dist/providers/llmtr.js +51 -0
- package/dist/providers/llmtr.js.map +1 -0
- package/dist/providers/logfare.d.ts +11 -0
- package/dist/providers/logfare.d.ts.map +1 -0
- package/dist/providers/logfare.js +33 -0
- package/dist/providers/logfare.js.map +1 -0
- package/dist/providers/lucidity.d.ts +11 -0
- package/dist/providers/lucidity.d.ts.map +1 -0
- package/dist/providers/lucidity.js +37 -0
- package/dist/providers/lucidity.js.map +1 -0
- package/dist/providers/modelscope.d.ts +50 -0
- package/dist/providers/modelscope.d.ts.map +1 -0
- package/dist/providers/modelscope.js +143 -0
- package/dist/providers/modelscope.js.map +1 -0
- package/dist/providers/moondream.d.ts +17 -0
- package/dist/providers/moondream.d.ts.map +1 -0
- package/dist/providers/moondream.js +140 -0
- package/dist/providers/moondream.js.map +1 -0
- package/dist/providers/openai-compat.d.ts +140 -0
- package/dist/providers/openai-compat.d.ts.map +1 -0
- package/dist/providers/openai-compat.js +537 -0
- package/dist/providers/openai-compat.js.map +1 -0
- package/dist/providers/opencode-free.d.ts +24 -0
- package/dist/providers/opencode-free.d.ts.map +1 -0
- package/dist/providers/opencode-free.js +262 -0
- package/dist/providers/opencode-free.js.map +1 -0
- package/dist/providers/pollinations.d.ts +32 -0
- package/dist/providers/pollinations.d.ts.map +1 -0
- package/dist/providers/pollinations.js +65 -0
- package/dist/providers/pollinations.js.map +1 -0
- package/dist/providers/router9.d.ts +16 -0
- package/dist/providers/router9.d.ts.map +1 -0
- package/dist/providers/router9.js +42 -0
- package/dist/providers/router9.js.map +1 -0
- package/dist/providers/sail.d.ts +44 -0
- package/dist/providers/sail.d.ts.map +1 -0
- package/dist/providers/sail.js +302 -0
- package/dist/providers/sail.js.map +1 -0
- package/dist/providers/septor.d.ts +10 -0
- package/dist/providers/septor.d.ts.map +1 -0
- package/dist/providers/septor.js +36 -0
- package/dist/providers/septor.js.map +1 -0
- package/dist/providers/speechify.d.ts +14 -0
- package/dist/providers/speechify.d.ts.map +1 -0
- package/dist/providers/speechify.js +28 -0
- package/dist/providers/speechify.js.map +1 -0
- package/dist/providers/speka.d.ts +12 -0
- package/dist/providers/speka.d.ts.map +1 -0
- package/dist/providers/speka.js +37 -0
- package/dist/providers/speka.js.map +1 -0
- package/dist/providers/waterfall.d.ts +11 -0
- package/dist/providers/waterfall.d.ts.map +1 -0
- package/dist/providers/waterfall.js +33 -0
- package/dist/providers/waterfall.js.map +1 -0
- package/dist/providers/xkiro.d.ts +71 -0
- package/dist/providers/xkiro.d.ts.map +1 -0
- package/dist/providers/xkiro.js +119 -0
- package/dist/providers/xkiro.js.map +1 -0
- package/dist/providers/zhipu.d.ts +43 -0
- package/dist/providers/zhipu.d.ts.map +1 -0
- package/dist/providers/zhipu.js +95 -0
- package/dist/providers/zhipu.js.map +1 -0
- package/dist/routes/analytics.d.ts +2 -0
- package/dist/routes/analytics.d.ts.map +1 -0
- package/dist/routes/analytics.js +738 -0
- package/dist/routes/analytics.js.map +1 -0
- package/dist/routes/anthropic.d.ts +7 -0
- package/dist/routes/anthropic.d.ts.map +1 -0
- package/dist/routes/anthropic.js +1076 -0
- package/dist/routes/anthropic.js.map +1 -0
- package/dist/routes/auth.d.ts +2 -0
- package/dist/routes/auth.d.ts.map +1 -0
- package/dist/routes/auth.js +310 -0
- package/dist/routes/auth.js.map +1 -0
- package/dist/routes/backups.d.ts +2 -0
- package/dist/routes/backups.d.ts.map +1 -0
- package/dist/routes/backups.js +127 -0
- package/dist/routes/backups.js.map +1 -0
- package/dist/routes/cache.d.ts +2 -0
- package/dist/routes/cache.d.ts.map +1 -0
- package/dist/routes/cache.js +40 -0
- package/dist/routes/cache.js.map +1 -0
- package/dist/routes/client-profiles.d.ts +2 -0
- package/dist/routes/client-profiles.d.ts.map +1 -0
- package/dist/routes/client-profiles.js +128 -0
- package/dist/routes/client-profiles.js.map +1 -0
- package/dist/routes/compression.d.ts +2 -0
- package/dist/routes/compression.d.ts.map +1 -0
- package/dist/routes/compression.js +82 -0
- package/dist/routes/compression.js.map +1 -0
- package/dist/routes/conversations.d.ts +3 -0
- package/dist/routes/conversations.d.ts.map +1 -0
- package/dist/routes/conversations.js +215 -0
- package/dist/routes/conversations.js.map +1 -0
- package/dist/routes/docs.d.ts +2 -0
- package/dist/routes/docs.d.ts.map +1 -0
- package/dist/routes/docs.js +21 -0
- package/dist/routes/docs.js.map +1 -0
- package/dist/routes/embeddings.d.ts +2 -0
- package/dist/routes/embeddings.d.ts.map +1 -0
- package/dist/routes/embeddings.js +255 -0
- package/dist/routes/embeddings.js.map +1 -0
- package/dist/routes/fallback.d.ts +2 -0
- package/dist/routes/fallback.d.ts.map +1 -0
- package/dist/routes/fallback.js +631 -0
- package/dist/routes/fallback.js.map +1 -0
- package/dist/routes/free-tier.d.ts +22 -0
- package/dist/routes/free-tier.d.ts.map +1 -0
- package/dist/routes/free-tier.js +175 -0
- package/dist/routes/free-tier.js.map +1 -0
- package/dist/routes/gemini.d.ts +2 -0
- package/dist/routes/gemini.d.ts.map +1 -0
- package/dist/routes/gemini.js +218 -0
- package/dist/routes/gemini.js.map +1 -0
- package/dist/routes/health.d.ts +2 -0
- package/dist/routes/health.d.ts.map +1 -0
- package/dist/routes/health.js +72 -0
- package/dist/routes/health.js.map +1 -0
- package/dist/routes/keys.d.ts +17 -0
- package/dist/routes/keys.d.ts.map +1 -0
- package/dist/routes/keys.js +1787 -0
- package/dist/routes/keys.js.map +1 -0
- package/dist/routes/logs.d.ts +2 -0
- package/dist/routes/logs.d.ts.map +1 -0
- package/dist/routes/logs.js +88 -0
- package/dist/routes/logs.js.map +1 -0
- package/dist/routes/mcp.d.ts +4 -0
- package/dist/routes/mcp.d.ts.map +1 -0
- package/dist/routes/mcp.js +563 -0
- package/dist/routes/mcp.js.map +1 -0
- package/dist/routes/media.d.ts +2 -0
- package/dist/routes/media.d.ts.map +1 -0
- package/dist/routes/media.js +180 -0
- package/dist/routes/media.js.map +1 -0
- package/dist/routes/models.d.ts +2 -0
- package/dist/routes/models.d.ts.map +1 -0
- package/dist/routes/models.js +439 -0
- package/dist/routes/models.js.map +1 -0
- package/dist/routes/ollama.d.ts +7 -0
- package/dist/routes/ollama.d.ts.map +1 -0
- package/dist/routes/ollama.js +595 -0
- package/dist/routes/ollama.js.map +1 -0
- package/dist/routes/profiles.d.ts +3 -0
- package/dist/routes/profiles.d.ts.map +1 -0
- package/dist/routes/profiles.js +431 -0
- package/dist/routes/profiles.js.map +1 -0
- package/dist/routes/proxy.d.ts +32 -0
- package/dist/routes/proxy.d.ts.map +1 -0
- package/dist/routes/proxy.js +2793 -0
- package/dist/routes/proxy.js.map +1 -0
- package/dist/routes/responses.d.ts +1161 -0
- package/dist/routes/responses.d.ts.map +1 -0
- package/dist/routes/responses.js +1521 -0
- package/dist/routes/responses.js.map +1 -0
- package/dist/routes/settings.d.ts +2 -0
- package/dist/routes/settings.d.ts.map +1 -0
- package/dist/routes/settings.js +549 -0
- package/dist/routes/settings.js.map +1 -0
- package/dist/routes/status.d.ts +3 -0
- package/dist/routes/status.d.ts.map +1 -0
- package/dist/routes/status.js +214 -0
- package/dist/routes/status.js.map +1 -0
- package/dist/routes/update.d.ts +31 -0
- package/dist/routes/update.d.ts.map +1 -0
- package/dist/routes/update.js +536 -0
- package/dist/routes/update.js.map +1 -0
- package/dist/routes/url-tokens.d.ts +2 -0
- package/dist/routes/url-tokens.d.ts.map +1 -0
- package/dist/routes/url-tokens.js +31 -0
- package/dist/routes/url-tokens.js.map +1 -0
- package/dist/scripts/export-catalog.d.ts +2 -0
- package/dist/scripts/export-catalog.d.ts.map +1 -0
- package/dist/scripts/export-catalog.js +114 -0
- package/dist/scripts/export-catalog.js.map +1 -0
- package/dist/scripts/rotate-encryption-key.d.ts +81 -0
- package/dist/scripts/rotate-encryption-key.d.ts.map +1 -0
- package/dist/scripts/rotate-encryption-key.js +232 -0
- package/dist/scripts/rotate-encryption-key.js.map +1 -0
- package/dist/scripts/routing-sim.d.ts +2 -0
- package/dist/scripts/routing-sim.d.ts.map +1 -0
- package/dist/scripts/routing-sim.js +130 -0
- package/dist/scripts/routing-sim.js.map +1 -0
- package/dist/scripts/test-all-models.d.ts +2 -0
- package/dist/scripts/test-all-models.d.ts.map +1 -0
- package/dist/scripts/test-all-models.js +56 -0
- package/dist/scripts/test-all-models.js.map +1 -0
- package/dist/services/anthropic-map.d.ts +39 -0
- package/dist/services/anthropic-map.d.ts.map +1 -0
- package/dist/services/anthropic-map.js +138 -0
- package/dist/services/anthropic-map.js.map +1 -0
- package/dist/services/auth.d.ts +30 -0
- package/dist/services/auth.d.ts.map +1 -0
- package/dist/services/auth.js +124 -0
- package/dist/services/auth.js.map +1 -0
- package/dist/services/auto-discover.d.ts +77 -0
- package/dist/services/auto-discover.d.ts.map +1 -0
- package/dist/services/auto-discover.js +1047 -0
- package/dist/services/auto-discover.js.map +1 -0
- package/dist/services/backups.d.ts +67 -0
- package/dist/services/backups.d.ts.map +1 -0
- package/dist/services/backups.js +444 -0
- package/dist/services/backups.js.map +1 -0
- package/dist/services/builtin-model-discovery.d.ts +107 -0
- package/dist/services/builtin-model-discovery.d.ts.map +1 -0
- package/dist/services/builtin-model-discovery.js +296 -0
- package/dist/services/builtin-model-discovery.js.map +1 -0
- package/dist/services/cache.d.ts +190 -0
- package/dist/services/cache.d.ts.map +1 -0
- package/dist/services/cache.js +617 -0
- package/dist/services/cache.js.map +1 -0
- package/dist/services/catalog-sync.d.ts +257 -0
- package/dist/services/catalog-sync.d.ts.map +1 -0
- package/dist/services/catalog-sync.js +1041 -0
- package/dist/services/catalog-sync.js.map +1 -0
- package/dist/services/compression/config.d.ts +33 -0
- package/dist/services/compression/config.d.ts.map +1 -0
- package/dist/services/compression/config.js +158 -0
- package/dist/services/compression/config.js.map +1 -0
- package/dist/services/compression/engines/aging.d.ts +2 -0
- package/dist/services/compression/engines/aging.d.ts.map +1 -0
- package/dist/services/compression/engines/aging.js +53 -0
- package/dist/services/compression/engines/aging.js.map +1 -0
- package/dist/services/compression/engines/custom-filters.d.ts +4 -0
- package/dist/services/compression/engines/custom-filters.d.ts.map +1 -0
- package/dist/services/compression/engines/custom-filters.js +49 -0
- package/dist/services/compression/engines/custom-filters.js.map +1 -0
- package/dist/services/compression/engines/dedup.d.ts +2 -0
- package/dist/services/compression/engines/dedup.d.ts.map +1 -0
- package/dist/services/compression/engines/dedup.js +61 -0
- package/dist/services/compression/engines/dedup.js.map +1 -0
- package/dist/services/compression/engines/filter-definitions.d.ts +75 -0
- package/dist/services/compression/engines/filter-definitions.d.ts.map +1 -0
- package/dist/services/compression/engines/filter-definitions.js +45 -0
- package/dist/services/compression/engines/filter-definitions.js.map +1 -0
- package/dist/services/compression/engines/hard-budget.d.ts +2 -0
- package/dist/services/compression/engines/hard-budget.d.ts.map +1 -0
- package/dist/services/compression/engines/hard-budget.js +52 -0
- package/dist/services/compression/engines/hard-budget.js.map +1 -0
- package/dist/services/compression/engines/index.d.ts +9 -0
- package/dist/services/compression/engines/index.d.ts.map +1 -0
- package/dist/services/compression/engines/index.js +9 -0
- package/dist/services/compression/engines/index.js.map +1 -0
- package/dist/services/compression/engines/jsoncompact.d.ts +3 -0
- package/dist/services/compression/engines/jsoncompact.d.ts.map +1 -0
- package/dist/services/compression/engines/jsoncompact.js +145 -0
- package/dist/services/compression/engines/jsoncompact.js.map +1 -0
- package/dist/services/compression/engines/lite.d.ts +2 -0
- package/dist/services/compression/engines/lite.d.ts.map +1 -0
- package/dist/services/compression/engines/lite.js +34 -0
- package/dist/services/compression/engines/lite.js.map +1 -0
- package/dist/services/compression/engines/read-lifecycle.d.ts +2 -0
- package/dist/services/compression/engines/read-lifecycle.d.ts.map +1 -0
- package/dist/services/compression/engines/read-lifecycle.js +70 -0
- package/dist/services/compression/engines/read-lifecycle.js.map +1 -0
- package/dist/services/compression/engines/relevance.d.ts +2 -0
- package/dist/services/compression/engines/relevance.d.ts.map +1 -0
- package/dist/services/compression/engines/relevance.js +74 -0
- package/dist/services/compression/engines/relevance.js.map +1 -0
- package/dist/services/compression/engines/toolfilter.d.ts +2 -0
- package/dist/services/compression/engines/toolfilter.d.ts.map +1 -0
- package/dist/services/compression/engines/toolfilter.js +195 -0
- package/dist/services/compression/engines/toolfilter.js.map +1 -0
- package/dist/services/compression/fidelity-gate.d.ts +12 -0
- package/dist/services/compression/fidelity-gate.d.ts.map +1 -0
- package/dist/services/compression/fidelity-gate.js +90 -0
- package/dist/services/compression/fidelity-gate.js.map +1 -0
- package/dist/services/compression/helpers.d.ts +9 -0
- package/dist/services/compression/helpers.d.ts.map +1 -0
- package/dist/services/compression/helpers.js +52 -0
- package/dist/services/compression/helpers.js.map +1 -0
- package/dist/services/compression/pipeline.d.ts +7 -0
- package/dist/services/compression/pipeline.d.ts.map +1 -0
- package/dist/services/compression/pipeline.js +245 -0
- package/dist/services/compression/pipeline.js.map +1 -0
- package/dist/services/compression/preservation.d.ts +27 -0
- package/dist/services/compression/preservation.d.ts.map +1 -0
- package/dist/services/compression/preservation.js +109 -0
- package/dist/services/compression/preservation.js.map +1 -0
- package/dist/services/compression/registry.d.ts +6 -0
- package/dist/services/compression/registry.d.ts.map +1 -0
- package/dist/services/compression/registry.js +16 -0
- package/dist/services/compression/registry.js.map +1 -0
- package/dist/services/compression/stats.d.ts +29 -0
- package/dist/services/compression/stats.d.ts.map +1 -0
- package/dist/services/compression/stats.js +55 -0
- package/dist/services/compression/stats.js.map +1 -0
- package/dist/services/compression/types.d.ts +90 -0
- package/dist/services/compression/types.d.ts.map +1 -0
- package/dist/services/compression/types.js +2 -0
- package/dist/services/compression/types.js.map +1 -0
- package/dist/services/context-handoff.d.ts +22 -0
- package/dist/services/context-handoff.d.ts.map +1 -0
- package/dist/services/context-handoff.js +164 -0
- package/dist/services/context-handoff.js.map +1 -0
- package/dist/services/cooldown-probe.d.ts +24 -0
- package/dist/services/cooldown-probe.d.ts.map +1 -0
- package/dist/services/cooldown-probe.js +181 -0
- package/dist/services/cooldown-probe.js.map +1 -0
- package/dist/services/custom-endpoint.d.ts +58 -0
- package/dist/services/custom-endpoint.d.ts.map +1 -0
- package/dist/services/custom-endpoint.js +167 -0
- package/dist/services/custom-endpoint.js.map +1 -0
- package/dist/services/custom-media-register.d.ts +22 -0
- package/dist/services/custom-media-register.d.ts.map +1 -0
- package/dist/services/custom-media-register.js +45 -0
- package/dist/services/custom-media-register.js.map +1 -0
- package/dist/services/custom-model-register.d.ts +50 -0
- package/dist/services/custom-model-register.d.ts.map +1 -0
- package/dist/services/custom-model-register.js +103 -0
- package/dist/services/custom-model-register.js.map +1 -0
- package/dist/services/custom-model-seed.d.ts +18 -0
- package/dist/services/custom-model-seed.d.ts.map +1 -0
- package/dist/services/custom-model-seed.js +42 -0
- package/dist/services/custom-model-seed.js.map +1 -0
- package/dist/services/custom-model-sync.d.ts +37 -0
- package/dist/services/custom-model-sync.d.ts.map +1 -0
- package/dist/services/custom-model-sync.js +118 -0
- package/dist/services/custom-model-sync.js.map +1 -0
- package/dist/services/custom-model-tombstone.d.ts +5 -0
- package/dist/services/custom-model-tombstone.d.ts.map +1 -0
- package/dist/services/custom-model-tombstone.js +30 -0
- package/dist/services/custom-model-tombstone.js.map +1 -0
- package/dist/services/declarative-config.d.ts +356 -0
- package/dist/services/declarative-config.d.ts.map +1 -0
- package/dist/services/declarative-config.js +427 -0
- package/dist/services/declarative-config.js.map +1 -0
- package/dist/services/degradation.d.ts +40 -0
- package/dist/services/degradation.d.ts.map +1 -0
- package/dist/services/degradation.js +119 -0
- package/dist/services/degradation.js.map +1 -0
- package/dist/services/embeddings.d.ts +76 -0
- package/dist/services/embeddings.d.ts.map +1 -0
- package/dist/services/embeddings.js +319 -0
- package/dist/services/embeddings.js.map +1 -0
- package/dist/services/fusion.d.ts +162 -0
- package/dist/services/fusion.d.ts.map +1 -0
- package/dist/services/fusion.js +789 -0
- package/dist/services/fusion.js.map +1 -0
- package/dist/services/gemini-map.d.ts +14 -0
- package/dist/services/gemini-map.d.ts.map +1 -0
- package/dist/services/gemini-map.js +78 -0
- package/dist/services/gemini-map.js.map +1 -0
- package/dist/services/health.d.ts +52 -0
- package/dist/services/health.d.ts.map +1 -0
- package/dist/services/health.js +352 -0
- package/dist/services/health.js.map +1 -0
- package/dist/services/idempotency.d.ts +49 -0
- package/dist/services/idempotency.d.ts.map +1 -0
- package/dist/services/idempotency.js +140 -0
- package/dist/services/idempotency.js.map +1 -0
- package/dist/services/key-budget.d.ts +74 -0
- package/dist/services/key-budget.d.ts.map +1 -0
- package/dist/services/key-budget.js +200 -0
- package/dist/services/key-budget.js.map +1 -0
- package/dist/services/media.d.ts +123 -0
- package/dist/services/media.d.ts.map +1 -0
- package/dist/services/media.js +954 -0
- package/dist/services/media.js.map +1 -0
- package/dist/services/model-discovery.d.ts +126 -0
- package/dist/services/model-discovery.d.ts.map +1 -0
- package/dist/services/model-discovery.js +662 -0
- package/dist/services/model-discovery.js.map +1 -0
- package/dist/services/model-groups.d.ts +149 -0
- package/dist/services/model-groups.d.ts.map +1 -0
- package/dist/services/model-groups.js +314 -0
- package/dist/services/model-groups.js.map +1 -0
- package/dist/services/model-listing.d.ts +18 -0
- package/dist/services/model-listing.d.ts.map +1 -0
- package/dist/services/model-listing.js +94 -0
- package/dist/services/model-listing.js.map +1 -0
- package/dist/services/model-retirement.d.ts +29 -0
- package/dist/services/model-retirement.d.ts.map +1 -0
- package/dist/services/model-retirement.js +86 -0
- package/dist/services/model-retirement.js.map +1 -0
- package/dist/services/model-state.d.ts +90 -0
- package/dist/services/model-state.d.ts.map +1 -0
- package/dist/services/model-state.js +342 -0
- package/dist/services/model-state.js.map +1 -0
- package/dist/services/model-weight-overrides.d.ts +48 -0
- package/dist/services/model-weight-overrides.d.ts.map +1 -0
- package/dist/services/model-weight-overrides.js +127 -0
- package/dist/services/model-weight-overrides.js.map +1 -0
- package/dist/services/notification-emitter.d.ts +50 -0
- package/dist/services/notification-emitter.d.ts.map +1 -0
- package/dist/services/notification-emitter.js +177 -0
- package/dist/services/notification-emitter.js.map +1 -0
- package/dist/services/opencode-free-sync.d.ts +29 -0
- package/dist/services/opencode-free-sync.d.ts.map +1 -0
- package/dist/services/opencode-free-sync.js +206 -0
- package/dist/services/opencode-free-sync.js.map +1 -0
- package/dist/services/penalty-inspector.d.ts +56 -0
- package/dist/services/penalty-inspector.d.ts.map +1 -0
- package/dist/services/penalty-inspector.js +167 -0
- package/dist/services/penalty-inspector.js.map +1 -0
- package/dist/services/profile-models.d.ts +5 -0
- package/dist/services/profile-models.d.ts.map +1 -0
- package/dist/services/profile-models.js +62 -0
- package/dist/services/profile-models.js.map +1 -0
- package/dist/services/provider-credential.d.ts +19 -0
- package/dist/services/provider-credential.d.ts.map +1 -0
- package/dist/services/provider-credential.js +51 -0
- package/dist/services/provider-credential.js.map +1 -0
- package/dist/services/provider-quota.d.ts +64 -0
- package/dist/services/provider-quota.d.ts.map +1 -0
- package/dist/services/provider-quota.js +563 -0
- package/dist/services/provider-quota.js.map +1 -0
- package/dist/services/quirks.d.ts +0 -0
- package/dist/services/quirks.d.ts.map +1 -0
- package/dist/services/quirks.js +0 -0
- package/dist/services/quirks.js.map +1 -0
- package/dist/services/quota-forecast.d.ts +50 -0
- package/dist/services/quota-forecast.d.ts.map +1 -0
- package/dist/services/quota-forecast.js +150 -0
- package/dist/services/quota-forecast.js.map +1 -0
- package/dist/services/quota-outlook.d.ts +4 -0
- package/dist/services/quota-outlook.d.ts.map +1 -0
- package/dist/services/quota-outlook.js +92 -0
- package/dist/services/quota-outlook.js.map +1 -0
- package/dist/services/ratelimit.d.ts +249 -0
- package/dist/services/ratelimit.d.ts.map +1 -0
- package/dist/services/ratelimit.js +1182 -0
- package/dist/services/ratelimit.js.map +1 -0
- package/dist/services/request-retention.d.ts +60 -0
- package/dist/services/request-retention.d.ts.map +1 -0
- package/dist/services/request-retention.js +229 -0
- package/dist/services/request-retention.js.map +1 -0
- package/dist/services/router.d.ts +384 -0
- package/dist/services/router.d.ts.map +1 -0
- package/dist/services/router.js +1986 -0
- package/dist/services/router.js.map +1 -0
- package/dist/services/scoring.d.ts +156 -0
- package/dist/services/scoring.d.ts.map +1 -0
- package/dist/services/scoring.js +435 -0
- package/dist/services/scoring.js.map +1 -0
- package/dist/services/url-tokens.d.ts +15 -0
- package/dist/services/url-tokens.d.ts.map +1 -0
- package/dist/services/url-tokens.js +55 -0
- package/dist/services/url-tokens.js.map +1 -0
- package/package.json +77 -4
- package/README.md +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-listing.js","sourceRoot":"","sources":["../../src/services/model-listing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** How many DISTINCT requests must report a 'probable' signal before acting. */
|
|
2
|
+
export declare const RETIREMENT_CONFIRMATIONS_REQUIRED = 2;
|
|
3
|
+
/**
|
|
4
|
+
* Corroboration has to be recent. Two "no longer available" 404s a week apart
|
|
5
|
+
* are two outages; two within the hour are a retirement.
|
|
6
|
+
*/
|
|
7
|
+
export declare const RETIREMENT_OBSERVATION_WINDOW_MS: number;
|
|
8
|
+
/** Test seam: the counters are process-local and deliberately not persisted. */
|
|
9
|
+
export declare function resetModelRetirementObservations(): void;
|
|
10
|
+
export interface RetirementRoute {
|
|
11
|
+
modelDbId: number;
|
|
12
|
+
platform: string;
|
|
13
|
+
modelId: string;
|
|
14
|
+
/**
|
|
15
|
+
* The endpoint this route belongs to, for custom relays (#651). Two relays
|
|
16
|
+
* can serve the same model id; a 410 from one says nothing about the other,
|
|
17
|
+
* so their corroboration counters must not share a bucket. Absent/'' for
|
|
18
|
+
* catalog platforms, which keeps their key exactly what it always was.
|
|
19
|
+
*/
|
|
20
|
+
endpointScope?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Record one upstream failure against the retirement heuristic and, when the
|
|
24
|
+
* evidence is strong enough, auto-disable the model. Returns true iff this call
|
|
25
|
+
* retired it. Never throws: it runs on the proxy's failure path, where a DB
|
|
26
|
+
* hiccup must not turn a failover into a crash.
|
|
27
|
+
*/
|
|
28
|
+
export declare function noteModelRetirementSignal(route: RetirementRoute, err: unknown, requestToken?: unknown): boolean;
|
|
29
|
+
//# sourceMappingURL=model-retirement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-retirement.d.ts","sourceRoot":"","sources":["../../src/services/model-retirement.ts"],"names":[],"mappings":"AAsBA,gFAAgF;AAChF,eAAO,MAAM,iCAAiC,IAAI,CAAC;AAEnD;;;GAGG;AACH,eAAO,MAAM,gCAAgC,QAAiB,CAAC;AAY/D,gFAAgF;AAChF,wBAAgB,gCAAgC,IAAI,IAAI,CAEvD;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,OAAO,EACZ,YAAY,CAAC,EAAE,OAAO,GACrB,OAAO,CAiCT"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// Auto-retirement of models the upstream provider has permanently removed.
|
|
2
|
+
//
|
|
3
|
+
// Issue #634: NVIDIA answered every request for `minimaxai/minimax-m2.7` with
|
|
4
|
+
// "410 … has reached its end of life … and is no longer available". The failure
|
|
5
|
+
// classifies as a model-level skip, which rules the model out for ONE request —
|
|
6
|
+
// so the next request tried it again, and the next, forever, each one paying a
|
|
7
|
+
// round trip and a fallback slot for a model that is never coming back.
|
|
8
|
+
//
|
|
9
|
+
// The fix persists the verdict: a definitive end-of-life response disables the
|
|
10
|
+
// model right away, and a merely-probable one waits for corroboration from a
|
|
11
|
+
// second distinct request first, so a single flaky 404 from a load balancer can
|
|
12
|
+
// never kill a healthy model. The disable is reversible in both directions —
|
|
13
|
+
// the user can switch the model back on, and a catalog refresh that still lists
|
|
14
|
+
// it lifts the retirement (services/catalog-sync.ts).
|
|
15
|
+
import { getDb } from '../db/index.js';
|
|
16
|
+
import { modelRetirementSignal } from '../lib/error-classify.js';
|
|
17
|
+
import { summarizeAttemptError } from '../lib/error-redaction.js';
|
|
18
|
+
import { isCatalogManagedModel, retireCatalogModelUpstream } from './model-state.js';
|
|
19
|
+
import { modelStatsKey } from '../lib/endpoint-scope.js';
|
|
20
|
+
import { providerLog } from '../lib/server-logs.js';
|
|
21
|
+
/** How many DISTINCT requests must report a 'probable' signal before acting. */
|
|
22
|
+
export const RETIREMENT_CONFIRMATIONS_REQUIRED = 2;
|
|
23
|
+
/**
|
|
24
|
+
* Corroboration has to be recent. Two "no longer available" 404s a week apart
|
|
25
|
+
* are two outages; two within the hour are a retirement.
|
|
26
|
+
*/
|
|
27
|
+
export const RETIREMENT_OBSERVATION_WINDOW_MS = 60 * 60 * 1000;
|
|
28
|
+
const observations = new Map();
|
|
29
|
+
/** Test seam: the counters are process-local and deliberately not persisted. */
|
|
30
|
+
export function resetModelRetirementObservations() {
|
|
31
|
+
observations.clear();
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Record one upstream failure against the retirement heuristic and, when the
|
|
35
|
+
* evidence is strong enough, auto-disable the model. Returns true iff this call
|
|
36
|
+
* retired it. Never throws: it runs on the proxy's failure path, where a DB
|
|
37
|
+
* hiccup must not turn a failover into a crash.
|
|
38
|
+
*/
|
|
39
|
+
export function noteModelRetirementSignal(route, err, requestToken) {
|
|
40
|
+
const confidence = modelRetirementSignal(err);
|
|
41
|
+
if (!confidence)
|
|
42
|
+
return false;
|
|
43
|
+
const key = modelStatsKey(route.platform, route.modelId, route.endpointScope);
|
|
44
|
+
if (confidence === 'probable' && !confirmObservation(key, requestToken))
|
|
45
|
+
return false;
|
|
46
|
+
const reason = summarizeAttemptError(err?.message);
|
|
47
|
+
try {
|
|
48
|
+
const db = getDb();
|
|
49
|
+
const row = db
|
|
50
|
+
.prepare('SELECT id, platform, model_id, key_id, source FROM models WHERE id = ?')
|
|
51
|
+
.get(route.modelDbId);
|
|
52
|
+
// Only catalog-managed rows: a model the user added by hand is their state,
|
|
53
|
+
// not the catalog's, and the tombstone table has no meaning for it.
|
|
54
|
+
if (!row || !isCatalogManagedModel(row))
|
|
55
|
+
return false;
|
|
56
|
+
if (!retireCatalogModelUpstream(db, row.id, row.platform, row.model_id, reason))
|
|
57
|
+
return false;
|
|
58
|
+
observations.delete(key);
|
|
59
|
+
// Retiring a model changes routing permanently, so it is a warn (which the
|
|
60
|
+
// dashboard viewer persists across restarts) carrying the platform/model it
|
|
61
|
+
// acted on. Still printed to stdout by providerLog.
|
|
62
|
+
providerLog('warn', `[ModelRetirement] ${row.platform}/${row.model_id} disabled — upstream reports it retired: ${reason}`, { provider: row.platform, model: row.model_id, event: 'model_retired' });
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
catch (dbErr) {
|
|
66
|
+
console.warn(`[ModelRetirement] could not record retirement for ${key}: ${dbErr?.message ?? dbErr}`);
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/** True once this model has been reported gone by enough distinct requests. */
|
|
71
|
+
function confirmObservation(key, requestToken) {
|
|
72
|
+
const now = Date.now();
|
|
73
|
+
const existing = observations.get(key);
|
|
74
|
+
if (!existing || now - existing.firstSeenAt > RETIREMENT_OBSERVATION_WINDOW_MS) {
|
|
75
|
+
observations.set(key, { count: 1, firstSeenAt: now, lastRequest: requestToken });
|
|
76
|
+
return RETIREMENT_CONFIRMATIONS_REQUIRED <= 1;
|
|
77
|
+
}
|
|
78
|
+
// Same request failing over across this model's sibling keys: one request's
|
|
79
|
+
// worth of evidence, however many keys it burned.
|
|
80
|
+
if (requestToken !== undefined && existing.lastRequest === requestToken)
|
|
81
|
+
return false;
|
|
82
|
+
existing.count++;
|
|
83
|
+
existing.lastRequest = requestToken;
|
|
84
|
+
return existing.count >= RETIREMENT_CONFIRMATIONS_REQUIRED;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=model-retirement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-retirement.js","sourceRoot":"","sources":["../../src/services/model-retirement.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type { Db } from '../db/types.js';
|
|
2
|
+
export type CatalogModelKind = 'chat' | 'media';
|
|
3
|
+
export interface ModelOverridePatch {
|
|
4
|
+
displayName?: string;
|
|
5
|
+
intelligenceRank?: number;
|
|
6
|
+
speedRank?: number;
|
|
7
|
+
sizeLabel?: string;
|
|
8
|
+
rpmLimit?: number | null;
|
|
9
|
+
rpdLimit?: number | null;
|
|
10
|
+
tpmLimit?: number | null;
|
|
11
|
+
tpdLimit?: number | null;
|
|
12
|
+
monthlyTokenBudget?: string;
|
|
13
|
+
contextWindow?: number | null;
|
|
14
|
+
supportsVision?: boolean;
|
|
15
|
+
supportsTools?: boolean;
|
|
16
|
+
enabled?: boolean;
|
|
17
|
+
}
|
|
18
|
+
type StoredOverrides = Partial<ModelOverridePatch>;
|
|
19
|
+
export declare function routableContextWindow(platform: string, modelId: string, contextWindow: number | null): number | null;
|
|
20
|
+
/** Called after catalog metadata is written, before local overrides are applied. */
|
|
21
|
+
export declare function refreshModelOverrideBaselines(db: Db, platform: string, modelId: string): void;
|
|
22
|
+
/**
|
|
23
|
+
* The fields a stored overrides blob actually overrides, for callers that
|
|
24
|
+
* already selected `model_overrides.overrides_json` alongside the model row.
|
|
25
|
+
* The dashboard uses this to mark individual inputs as locally overridden
|
|
26
|
+
* instead of flagging the whole model (#551).
|
|
27
|
+
*/
|
|
28
|
+
export declare function overriddenFieldNames(overridesJson: string | null | undefined): Array<keyof ModelOverridePatch>;
|
|
29
|
+
export declare function isCatalogManagedModel(row: {
|
|
30
|
+
platform: string;
|
|
31
|
+
key_id?: number | null;
|
|
32
|
+
source?: string;
|
|
33
|
+
}): boolean;
|
|
34
|
+
export type CatalogTombstoneSource = 'user' | 'upstream_eol';
|
|
35
|
+
export interface CatalogModelTombstone {
|
|
36
|
+
source: CatalogTombstoneSource;
|
|
37
|
+
reason: string | null;
|
|
38
|
+
createdAt: string;
|
|
39
|
+
}
|
|
40
|
+
export declare function getCatalogModelTombstone(db: Db, kind: CatalogModelKind, platform: string, modelId: string): CatalogModelTombstone | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* True only for models the USER deleted — the "keep it deleted" contract every
|
|
43
|
+
* caller here means. An upstream-retirement tombstone deliberately does NOT
|
|
44
|
+
* count: those models stay in the catalog's write path so a refreshed catalog
|
|
45
|
+
* can reinstate them (see reinstateUpstreamRetiredCatalogModel).
|
|
46
|
+
*/
|
|
47
|
+
export declare function isCatalogModelTombstoned(db: Db, kind: CatalogModelKind, platform: string, modelId: string): boolean;
|
|
48
|
+
export declare function recordCatalogModelTombstone(db: Db, kind: CatalogModelKind, platform: string, modelId: string, options?: {
|
|
49
|
+
source?: CatalogTombstoneSource;
|
|
50
|
+
reason?: string | null;
|
|
51
|
+
}): void;
|
|
52
|
+
/**
|
|
53
|
+
* Auto-disable a catalog model the provider reports as permanently retired
|
|
54
|
+
* (issue #634). Deliberately NOT a delete: the row stays visible in the
|
|
55
|
+
* dashboard, tagged with the upstream wording, and the user can flip it back on
|
|
56
|
+
* if they disagree. Turning off the chain entries (and the active profile's
|
|
57
|
+
* copy) is exactly what the dashboard's own switch does, so the router stops
|
|
58
|
+
* picking it while an explicitly-requested model id still resolves.
|
|
59
|
+
*
|
|
60
|
+
* Returns true when this call performed the retirement (false when it was
|
|
61
|
+
* already retired, or the user had deleted the model outright).
|
|
62
|
+
*/
|
|
63
|
+
export declare function retireCatalogModelUpstream(db: Db, modelDbId: number, platform: string, modelId: string, reason: string): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Lift an upstream retirement: a catalog that still lists the model — and lists
|
|
66
|
+
* it enabled — is newer and better evidence than one provider's 404. Returns
|
|
67
|
+
* true when a retirement was actually lifted.
|
|
68
|
+
*/
|
|
69
|
+
export declare function reinstateUpstreamRetiredCatalogModel(db: Db, platform: string, modelId: string): boolean;
|
|
70
|
+
export declare function clearCatalogModelTombstone(db: Db, kind: CatalogModelKind, platform: string, modelId: string): void;
|
|
71
|
+
export declare function upsertModelOverrides(db: Db, platform: string, modelId: string, patch: ModelOverridePatch, options?: {
|
|
72
|
+
baselineRow?: Record<string, unknown>;
|
|
73
|
+
}): StoredOverrides;
|
|
74
|
+
export declare function getModelOverrides(db: Db, platform: string, modelId: string): StoredOverrides;
|
|
75
|
+
/**
|
|
76
|
+
* Every model whose stored overrides pin ONE given field, as a set of
|
|
77
|
+
* "platform:model_id" keys. One query over a table that only ever holds the
|
|
78
|
+
* models a user has actually touched, so callers that need "is this field
|
|
79
|
+
* user-owned?" for a whole catalog don't do it per model.
|
|
80
|
+
*
|
|
81
|
+
* Note it keys off the field, not the row: a user who renamed a model has an
|
|
82
|
+
* override row but has said nothing about its speed_rank, so a derived value
|
|
83
|
+
* may still fill that column (#619).
|
|
84
|
+
*/
|
|
85
|
+
export declare function modelsWithOverriddenField(db: Db, field: keyof ModelOverridePatch): Set<string>;
|
|
86
|
+
export declare function applyModelOverrides(db: Db, platform: string, modelId: string): boolean;
|
|
87
|
+
export declare function applyAllModelOverrides(db: Db): number;
|
|
88
|
+
export declare function deleteTombstonedCatalogModels(db: Db): number;
|
|
89
|
+
export {};
|
|
90
|
+
//# sourceMappingURL=model-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-state.d.ts","sourceRoot":"","sources":["../../src/services/model-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
// Keep catalog values separately from effective local edits. Legacy blobs
|
|
2
|
+
// recover their defaults from the verified catalog cache; catalog sync refreshes
|
|
3
|
+
// recorded baselines before reapplying overrides. Unknown defaults stay unknown.
|
|
4
|
+
const CATALOG_BASELINE_KEY = 'catalogDefaults';
|
|
5
|
+
const OVERRIDE_COLUMNS = {
|
|
6
|
+
displayName: 'display_name',
|
|
7
|
+
intelligenceRank: 'intelligence_rank',
|
|
8
|
+
speedRank: 'speed_rank',
|
|
9
|
+
sizeLabel: 'size_label',
|
|
10
|
+
rpmLimit: 'rpm_limit',
|
|
11
|
+
rpdLimit: 'rpd_limit',
|
|
12
|
+
tpmLimit: 'tpm_limit',
|
|
13
|
+
tpdLimit: 'tpd_limit',
|
|
14
|
+
monthlyTokenBudget: 'monthly_token_budget',
|
|
15
|
+
contextWindow: 'context_window',
|
|
16
|
+
supportsVision: 'supports_vision',
|
|
17
|
+
supportsTools: 'supports_tools',
|
|
18
|
+
enabled: 'enabled',
|
|
19
|
+
};
|
|
20
|
+
function parseOverrides(raw) {
|
|
21
|
+
if (!raw)
|
|
22
|
+
return {};
|
|
23
|
+
try {
|
|
24
|
+
const parsed = JSON.parse(raw);
|
|
25
|
+
return parsed && typeof parsed === 'object' ? parsed : {};
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return {};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function toDbValue(key, value) {
|
|
32
|
+
if (key === 'supportsVision' || key === 'supportsTools' || key === 'enabled')
|
|
33
|
+
return value ? 1 : 0;
|
|
34
|
+
return value;
|
|
35
|
+
}
|
|
36
|
+
function cleanPatch(patch) {
|
|
37
|
+
const cleaned = {};
|
|
38
|
+
for (const key of Object.keys(OVERRIDE_COLUMNS)) {
|
|
39
|
+
if (Object.prototype.hasOwnProperty.call(patch, key)) {
|
|
40
|
+
cleaned[key] = patch[key];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return cleaned;
|
|
44
|
+
}
|
|
45
|
+
// The blob split into its two parts: the fields actually overridden, and the
|
|
46
|
+
// pre-override values they are measured against.
|
|
47
|
+
function parseOverridesBlob(raw) {
|
|
48
|
+
const overrides = { ...parseOverrides(raw) };
|
|
49
|
+
const rawBaselines = overrides[CATALOG_BASELINE_KEY];
|
|
50
|
+
delete overrides[CATALOG_BASELINE_KEY];
|
|
51
|
+
const baselines = {};
|
|
52
|
+
if (rawBaselines && typeof rawBaselines === 'object') {
|
|
53
|
+
for (const key of Object.keys(rawBaselines)) {
|
|
54
|
+
if (key in OVERRIDE_COLUMNS)
|
|
55
|
+
baselines[key] = rawBaselines[key];
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return { overrides, baselines };
|
|
59
|
+
}
|
|
60
|
+
// Convert a catalog-applied database value into the PATCH representation.
|
|
61
|
+
function modelRowValue(row, key) {
|
|
62
|
+
if (!row)
|
|
63
|
+
return undefined;
|
|
64
|
+
const value = row[OVERRIDE_COLUMNS[key]];
|
|
65
|
+
if (key === 'supportsVision' || key === 'supportsTools' || key === 'enabled')
|
|
66
|
+
return value === 1;
|
|
67
|
+
return value ?? null;
|
|
68
|
+
}
|
|
69
|
+
export function routableContextWindow(platform, modelId, contextWindow) {
|
|
70
|
+
if (platform === 'github' && modelId === 'openai/gpt-4.1')
|
|
71
|
+
return 8000;
|
|
72
|
+
return contextWindow;
|
|
73
|
+
}
|
|
74
|
+
function cachedCatalogDefaults(db, platform, modelId) {
|
|
75
|
+
const row = db.prepare("SELECT value FROM settings WHERE key = 'catalog_applied_json'").get();
|
|
76
|
+
if (!row)
|
|
77
|
+
return {};
|
|
78
|
+
try {
|
|
79
|
+
const catalog = JSON.parse(row.value);
|
|
80
|
+
const model = catalog.models?.find(m => m.platform === platform && m.modelId === modelId && (!m.modality || m.modality === 'text'));
|
|
81
|
+
if (!model?.limits)
|
|
82
|
+
return {};
|
|
83
|
+
return {
|
|
84
|
+
displayName: model.displayName, intelligenceRank: model.intelligenceRank,
|
|
85
|
+
speedRank: model.speedRank, sizeLabel: model.sizeLabel,
|
|
86
|
+
rpmLimit: model.limits.rpm, rpdLimit: model.limits.rpd,
|
|
87
|
+
tpmLimit: model.limits.tpm, tpdLimit: model.limits.tpd,
|
|
88
|
+
monthlyTokenBudget: model.monthlyTokenBudget ?? '',
|
|
89
|
+
contextWindow: routableContextWindow(platform, modelId, model.contextWindow),
|
|
90
|
+
supportsVision: model.supportsVision, supportsTools: model.supportsTools,
|
|
91
|
+
enabled: model.enabled,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return {};
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/** Called after catalog metadata is written, before local overrides are applied. */
|
|
99
|
+
export function refreshModelOverrideBaselines(db, platform, modelId) {
|
|
100
|
+
const existing = db.prepare('SELECT overrides_json FROM model_overrides WHERE platform = ? AND model_id = ?')
|
|
101
|
+
.get(platform, modelId);
|
|
102
|
+
if (!existing)
|
|
103
|
+
return;
|
|
104
|
+
const { overrides } = parseOverridesBlob(existing.overrides_json);
|
|
105
|
+
const row = db.prepare('SELECT * FROM models WHERE platform = ? AND model_id = ?').get(platform, modelId);
|
|
106
|
+
const baselines = {};
|
|
107
|
+
for (const key of Object.keys(cleanPatch(overrides))) {
|
|
108
|
+
const value = modelRowValue(row, key);
|
|
109
|
+
if (value !== undefined)
|
|
110
|
+
baselines[key] = value;
|
|
111
|
+
}
|
|
112
|
+
db.prepare('UPDATE model_overrides SET overrides_json = ? WHERE platform = ? AND model_id = ?')
|
|
113
|
+
.run(JSON.stringify({ ...overrides, [CATALOG_BASELINE_KEY]: baselines }), platform, modelId);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* The fields a stored overrides blob actually overrides, for callers that
|
|
117
|
+
* already selected `model_overrides.overrides_json` alongside the model row.
|
|
118
|
+
* The dashboard uses this to mark individual inputs as locally overridden
|
|
119
|
+
* instead of flagging the whole model (#551).
|
|
120
|
+
*/
|
|
121
|
+
export function overriddenFieldNames(overridesJson) {
|
|
122
|
+
const stored = parseOverrides(overridesJson ?? undefined);
|
|
123
|
+
return Object.keys(stored).filter(key => key in OVERRIDE_COLUMNS);
|
|
124
|
+
}
|
|
125
|
+
export function isCatalogManagedModel(row) {
|
|
126
|
+
// `source` is the authoritative provenance (models.source: 'catalog', 'user'
|
|
127
|
+
// or 'discovered'). Discovered rows on built-in platforms (#1348) count as
|
|
128
|
+
// catalog-managed: deleting one records a catalog tombstone, which both
|
|
129
|
+
// discovery and a later catalog honor;
|
|
130
|
+
// callers that select it get an exact answer. The platform/key_id fallback
|
|
131
|
+
// covers callers that don't have the column in hand.
|
|
132
|
+
if (row.source === 'user')
|
|
133
|
+
return false;
|
|
134
|
+
return row.platform !== 'custom' && row.key_id == null;
|
|
135
|
+
}
|
|
136
|
+
export function getCatalogModelTombstone(db, kind, platform, modelId) {
|
|
137
|
+
const row = db
|
|
138
|
+
.prepare('SELECT source, reason, created_at FROM catalog_model_tombstones WHERE kind = ? AND platform = ? AND model_id = ?')
|
|
139
|
+
.get(kind, platform, modelId);
|
|
140
|
+
if (!row)
|
|
141
|
+
return undefined;
|
|
142
|
+
return {
|
|
143
|
+
source: row.source === 'upstream_eol' ? 'upstream_eol' : 'user',
|
|
144
|
+
reason: row.reason ?? null,
|
|
145
|
+
createdAt: row.created_at,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* True only for models the USER deleted — the "keep it deleted" contract every
|
|
150
|
+
* caller here means. An upstream-retirement tombstone deliberately does NOT
|
|
151
|
+
* count: those models stay in the catalog's write path so a refreshed catalog
|
|
152
|
+
* can reinstate them (see reinstateUpstreamRetiredCatalogModel).
|
|
153
|
+
*/
|
|
154
|
+
export function isCatalogModelTombstoned(db, kind, platform, modelId) {
|
|
155
|
+
return getCatalogModelTombstone(db, kind, platform, modelId)?.source === 'user';
|
|
156
|
+
}
|
|
157
|
+
export function recordCatalogModelTombstone(db, kind, platform, modelId, options = {}) {
|
|
158
|
+
const source = options.source ?? 'user';
|
|
159
|
+
db.prepare(`
|
|
160
|
+
INSERT INTO catalog_model_tombstones (kind, platform, model_id, source, reason)
|
|
161
|
+
VALUES (?, ?, ?, ?, ?)
|
|
162
|
+
ON CONFLICT(kind, platform, model_id)
|
|
163
|
+
DO UPDATE SET created_at = datetime('now'), source = excluded.source, reason = excluded.reason
|
|
164
|
+
`).run(kind, platform, modelId, source, options.reason ?? null);
|
|
165
|
+
// A user deletion drops their local metadata edits with the row. An upstream
|
|
166
|
+
// retirement keeps the row, so it keeps the overrides too — they must survive
|
|
167
|
+
// if the model is reinstated.
|
|
168
|
+
if (kind === 'chat' && source === 'user') {
|
|
169
|
+
db.prepare('DELETE FROM model_overrides WHERE platform = ? AND model_id = ?').run(platform, modelId);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Auto-disable a catalog model the provider reports as permanently retired
|
|
174
|
+
* (issue #634). Deliberately NOT a delete: the row stays visible in the
|
|
175
|
+
* dashboard, tagged with the upstream wording, and the user can flip it back on
|
|
176
|
+
* if they disagree. Turning off the chain entries (and the active profile's
|
|
177
|
+
* copy) is exactly what the dashboard's own switch does, so the router stops
|
|
178
|
+
* picking it while an explicitly-requested model id still resolves.
|
|
179
|
+
*
|
|
180
|
+
* Returns true when this call performed the retirement (false when it was
|
|
181
|
+
* already retired, or the user had deleted the model outright).
|
|
182
|
+
*/
|
|
183
|
+
export function retireCatalogModelUpstream(db, modelDbId, platform, modelId, reason) {
|
|
184
|
+
const existing = getCatalogModelTombstone(db, 'chat', platform, modelId);
|
|
185
|
+
if (existing)
|
|
186
|
+
return false;
|
|
187
|
+
recordCatalogModelTombstone(db, 'chat', platform, modelId, { source: 'upstream_eol', reason });
|
|
188
|
+
db.prepare('UPDATE fallback_config SET enabled = 0 WHERE model_db_id = ?').run(modelDbId);
|
|
189
|
+
db.prepare('UPDATE profile_models SET enabled = 0 WHERE model_db_id = ?').run(modelDbId);
|
|
190
|
+
return true;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Lift an upstream retirement: a catalog that still lists the model — and lists
|
|
194
|
+
* it enabled — is newer and better evidence than one provider's 404. Returns
|
|
195
|
+
* true when a retirement was actually lifted.
|
|
196
|
+
*/
|
|
197
|
+
export function reinstateUpstreamRetiredCatalogModel(db, platform, modelId) {
|
|
198
|
+
if (getCatalogModelTombstone(db, 'chat', platform, modelId)?.source !== 'upstream_eol')
|
|
199
|
+
return false;
|
|
200
|
+
clearCatalogModelTombstone(db, 'chat', platform, modelId);
|
|
201
|
+
const row = db
|
|
202
|
+
.prepare('SELECT id FROM models WHERE platform = ? AND model_id = ?')
|
|
203
|
+
.get(platform, modelId);
|
|
204
|
+
if (row) {
|
|
205
|
+
db.prepare('UPDATE fallback_config SET enabled = 1 WHERE model_db_id = ?').run(row.id);
|
|
206
|
+
db.prepare('UPDATE profile_models SET enabled = 1 WHERE model_db_id = ?').run(row.id);
|
|
207
|
+
}
|
|
208
|
+
return true;
|
|
209
|
+
}
|
|
210
|
+
export function clearCatalogModelTombstone(db, kind, platform, modelId) {
|
|
211
|
+
db.prepare('DELETE FROM catalog_model_tombstones WHERE kind = ? AND platform = ? AND model_id = ?')
|
|
212
|
+
.run(kind, platform, modelId);
|
|
213
|
+
}
|
|
214
|
+
export function upsertModelOverrides(db, platform, modelId, patch, options = {}) {
|
|
215
|
+
const cleaned = cleanPatch(patch);
|
|
216
|
+
if (Object.keys(cleaned).length === 0)
|
|
217
|
+
return {};
|
|
218
|
+
const existing = db
|
|
219
|
+
.prepare('SELECT overrides_json FROM model_overrides WHERE platform = ? AND model_id = ?')
|
|
220
|
+
.get(platform, modelId);
|
|
221
|
+
const { overrides: stored, baselines } = parseOverridesBlob(existing?.overrides_json);
|
|
222
|
+
const catalogDefaults = options.baselineRow ? cachedCatalogDefaults(db, platform, modelId) : {};
|
|
223
|
+
const merged = { ...stored };
|
|
224
|
+
const mergedBaselines = { ...baselines };
|
|
225
|
+
for (const key of Object.keys(cleaned)) {
|
|
226
|
+
const next = cleaned[key];
|
|
227
|
+
if (mergedBaselines[key] === undefined && options.baselineRow) {
|
|
228
|
+
// An old override is already applied to the row. Never mistake that
|
|
229
|
+
// effective value for the catalog value during an upgrade.
|
|
230
|
+
const captured = catalogDefaults[key] !== undefined ? catalogDefaults[key]
|
|
231
|
+
: stored[key] === undefined ? modelRowValue(options.baselineRow, key) : undefined;
|
|
232
|
+
if (captured !== undefined)
|
|
233
|
+
mergedBaselines[key] = captured;
|
|
234
|
+
}
|
|
235
|
+
const baseline = mergedBaselines[key];
|
|
236
|
+
if (options.baselineRow && baseline !== undefined && next === baseline) {
|
|
237
|
+
// Back at the pre-override value: the override (and its baseline) drop
|
|
238
|
+
// out, so the field tracks the catalog again.
|
|
239
|
+
delete merged[key];
|
|
240
|
+
delete mergedBaselines[key];
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
merged[key] = next;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
if (Object.keys(merged).length === 0) {
|
|
247
|
+
// Nothing left to pin: drop the row so has_overrides goes false and the
|
|
248
|
+
// dashboard's badge clears.
|
|
249
|
+
db.prepare('DELETE FROM model_overrides WHERE platform = ? AND model_id = ?').run(platform, modelId);
|
|
250
|
+
return {};
|
|
251
|
+
}
|
|
252
|
+
const blob = { ...merged, [CATALOG_BASELINE_KEY]: mergedBaselines };
|
|
253
|
+
db.prepare(`
|
|
254
|
+
INSERT INTO model_overrides (platform, model_id, overrides_json, updated_at)
|
|
255
|
+
VALUES (?, ?, ?, datetime('now'))
|
|
256
|
+
ON CONFLICT(platform, model_id)
|
|
257
|
+
DO UPDATE SET overrides_json = excluded.overrides_json, updated_at = excluded.updated_at
|
|
258
|
+
`).run(platform, modelId, JSON.stringify(blob));
|
|
259
|
+
return merged;
|
|
260
|
+
}
|
|
261
|
+
export function getModelOverrides(db, platform, modelId) {
|
|
262
|
+
const row = db
|
|
263
|
+
.prepare('SELECT overrides_json FROM model_overrides WHERE platform = ? AND model_id = ?')
|
|
264
|
+
.get(platform, modelId);
|
|
265
|
+
return parseOverrides(row?.overrides_json);
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Every model whose stored overrides pin ONE given field, as a set of
|
|
269
|
+
* "platform:model_id" keys. One query over a table that only ever holds the
|
|
270
|
+
* models a user has actually touched, so callers that need "is this field
|
|
271
|
+
* user-owned?" for a whole catalog don't do it per model.
|
|
272
|
+
*
|
|
273
|
+
* Note it keys off the field, not the row: a user who renamed a model has an
|
|
274
|
+
* override row but has said nothing about its speed_rank, so a derived value
|
|
275
|
+
* may still fill that column (#619).
|
|
276
|
+
*/
|
|
277
|
+
export function modelsWithOverriddenField(db, field) {
|
|
278
|
+
const rows = db.prepare('SELECT platform, model_id, overrides_json FROM model_overrides')
|
|
279
|
+
.all();
|
|
280
|
+
const pinned = new Set();
|
|
281
|
+
for (const row of rows) {
|
|
282
|
+
const overrides = parseOverrides(row.overrides_json);
|
|
283
|
+
if (overrides[field] !== undefined)
|
|
284
|
+
pinned.add(`${row.platform}:${row.model_id}`);
|
|
285
|
+
}
|
|
286
|
+
return pinned;
|
|
287
|
+
}
|
|
288
|
+
export function applyModelOverrides(db, platform, modelId) {
|
|
289
|
+
const overrides = getModelOverrides(db, platform, modelId);
|
|
290
|
+
const keys = Object.keys(overrides).filter(k => k in OVERRIDE_COLUMNS);
|
|
291
|
+
if (keys.length === 0)
|
|
292
|
+
return false;
|
|
293
|
+
const assignments = [];
|
|
294
|
+
const values = [];
|
|
295
|
+
for (const key of keys) {
|
|
296
|
+
assignments.push(`${OVERRIDE_COLUMNS[key]} = ?`);
|
|
297
|
+
values.push(toDbValue(key, overrides[key]));
|
|
298
|
+
}
|
|
299
|
+
values.push(platform, modelId);
|
|
300
|
+
db.prepare(`UPDATE models SET ${assignments.join(', ')} WHERE platform = ? AND model_id = ?`).run(...values);
|
|
301
|
+
return true;
|
|
302
|
+
}
|
|
303
|
+
export function applyAllModelOverrides(db) {
|
|
304
|
+
const rows = db.prepare('SELECT platform, model_id FROM model_overrides').all();
|
|
305
|
+
let applied = 0;
|
|
306
|
+
for (const row of rows) {
|
|
307
|
+
if (applyModelOverrides(db, row.platform, row.model_id))
|
|
308
|
+
applied++;
|
|
309
|
+
}
|
|
310
|
+
return applied;
|
|
311
|
+
}
|
|
312
|
+
// Only USER tombstones delete rows. An upstream-retirement tombstone disables
|
|
313
|
+
// its model and keeps it (see retireCatalogModelUpstream), so deleting here
|
|
314
|
+
// would throw away both the row and the reason the dashboard shows for it.
|
|
315
|
+
export function deleteTombstonedCatalogModels(db) {
|
|
316
|
+
const chatRows = db.prepare(`
|
|
317
|
+
SELECT m.id, m.platform, m.model_id
|
|
318
|
+
FROM models m
|
|
319
|
+
JOIN catalog_model_tombstones t
|
|
320
|
+
ON t.kind = 'chat' AND t.platform = m.platform AND t.model_id = m.model_id
|
|
321
|
+
WHERE t.source = 'user' AND m.platform != 'custom' AND m.key_id IS NULL AND m.source != 'user'
|
|
322
|
+
`).all();
|
|
323
|
+
const mediaRows = db.prepare(`
|
|
324
|
+
SELECT mm.id
|
|
325
|
+
FROM media_models mm
|
|
326
|
+
JOIN catalog_model_tombstones t
|
|
327
|
+
ON t.kind = 'media' AND t.platform = mm.platform AND t.model_id = mm.model_id
|
|
328
|
+
WHERE t.source = 'user'
|
|
329
|
+
`).all();
|
|
330
|
+
const deleteChatFallback = db.prepare('DELETE FROM fallback_config WHERE model_db_id = ?');
|
|
331
|
+
const deleteChat = db.prepare('DELETE FROM models WHERE id = ?');
|
|
332
|
+
const deleteMedia = db.prepare('DELETE FROM media_models WHERE id = ?');
|
|
333
|
+
for (const row of chatRows) {
|
|
334
|
+
deleteChatFallback.run(row.id);
|
|
335
|
+
deleteChat.run(row.id);
|
|
336
|
+
}
|
|
337
|
+
for (const row of mediaRows) {
|
|
338
|
+
deleteMedia.run(row.id);
|
|
339
|
+
}
|
|
340
|
+
return chatRows.length + mediaRows.length;
|
|
341
|
+
}
|
|
342
|
+
//# sourceMappingURL=model-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-state.js","sourceRoot":"","sources":["../../src/services/model-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export type ModelWeightOverrides = ReadonlyMap<string, number>;
|
|
2
|
+
/** Parse the env var. Pure and exported for tests: unknown keys are dropped,
|
|
3
|
+
* values must be finite and in [0, 2]. Returns an empty map on any malformed
|
|
4
|
+
* input (not an object, or unparsable JSON) rather than throwing. */
|
|
5
|
+
export declare function parseModelWeightOverrides(raw: string | undefined): Map<string, number>;
|
|
6
|
+
/** The active overrides — parsed lazily from the environment on first use and
|
|
7
|
+
* cached for the life of the process (the env is fixed at boot). */
|
|
8
|
+
export declare function getModelWeightOverrides(): ModelWeightOverrides;
|
|
9
|
+
/** Test seam: forget the cached parse so a changed env var takes effect. */
|
|
10
|
+
export declare function resetModelWeightOverrides(): void;
|
|
11
|
+
/** Apply a model's override to a bandit score. `overrides` is injectable for
|
|
12
|
+
* tests; it defaults to the process-wide parsed map. */
|
|
13
|
+
export declare function applyModelWeightOverride(score: number, modelId: string, overrides?: ModelWeightOverrides): number;
|
|
14
|
+
/** What `warnOnRoutingOverrideDrift` found. Returned for tests; the caller at
|
|
15
|
+
* boot only wants the log lines. */
|
|
16
|
+
export interface RoutingOverrideDrift {
|
|
17
|
+
/** The variable is set but did not parse into a usable object. */
|
|
18
|
+
malformed: boolean;
|
|
19
|
+
/** Keys present in the JSON but dropped: not a finite number in [0, 2]. */
|
|
20
|
+
rejectedValues: string[];
|
|
21
|
+
/** Keys that parsed fine but match no model_id in the catalog. Always empty
|
|
22
|
+
* when the catalog has not synced yet — see `warnOnRoutingOverrideDrift`. */
|
|
23
|
+
unknownModels: string[];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Report `MODEL_ROUTING_OVERRIDES` entries that will never do anything.
|
|
27
|
+
*
|
|
28
|
+
* Every rejection path in this module is deliberately silent so a bad variable
|
|
29
|
+
* can never break boot — but silence is the wrong answer for an operator who
|
|
30
|
+
* has just written one. A typo in a model id, a value of 5, or a stray trailing
|
|
31
|
+
* comma all produce exactly the same observable result as not setting the
|
|
32
|
+
* variable at all: the model keeps its normal score and nothing says why.
|
|
33
|
+
*
|
|
34
|
+
* Log-only, and never throws: an unreadable catalog just skips the model-id
|
|
35
|
+
* check rather than failing a boot over a diagnostic.
|
|
36
|
+
*
|
|
37
|
+
* The unknown-model half is SKIPPED until the catalog has synced at least once.
|
|
38
|
+
* This runs at boot, before startCatalogSync, so on a first run the models table
|
|
39
|
+
* holds only what the migrations seeded (110 rows) against a real catalog of
|
|
40
|
+
* ~460: every override naming one of the ~350 not in the seed would be reported
|
|
41
|
+
* as bogus on exactly the boot an operator is most likely to be reading. A
|
|
42
|
+
* warning that cries wolf on its first outing teaches people to skip the line
|
|
43
|
+
* that would have caught the real typo, so it stays quiet until it can be
|
|
44
|
+
* right. The malformed-JSON and bad-multiplier halves need no catalog and
|
|
45
|
+
* always run.
|
|
46
|
+
*/
|
|
47
|
+
export declare function warnOnRoutingOverrideDrift(logger?: Pick<Console, 'warn'>): RoutingOverrideDrift | null;
|
|
48
|
+
//# sourceMappingURL=model-weight-overrides.d.ts.map
|