@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-weight-overrides.d.ts","sourceRoot":"","sources":["../../src/services/model-weight-overrides.ts"],"names":[],"mappings":"AAkCA,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAK/D;;sEAEsE;AACtE,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAiBtF;AAED;qEACqE;AACrE,wBAAgB,uBAAuB,IAAI,oBAAoB,CAG9D;AAED,4EAA4E;AAC5E,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAED;yDACyD;AACzD,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,oBAAgD,GAC1D,MAAM,CAGR;AAED;qCACqC;AACrC,MAAM,WAAW,oBAAoB;IACnC,kEAAkE;IAClE,SAAS,EAAE,OAAO,CAAC;IACnB,2EAA2E;IAC3E,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB;kFAC8E;IAC9E,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,GAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAW,GACtC,oBAAoB,GAAG,IAAI,CAgE7B"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { getDb, getSetting } from '../db/index.js';
|
|
2
|
+
// Written by catalog-sync on every completed run (services/catalog-sync.ts).
|
|
3
|
+
// Its presence is the only "the catalog is real, not just the migration seed"
|
|
4
|
+
// signal available at boot.
|
|
5
|
+
const CATALOG_LAST_SYNC_SETTING = 'catalog_last_sync_ms';
|
|
6
|
+
/** Overrides parsed from `MODEL_ROUTING_OVERRIDES`, cached after first read. */
|
|
7
|
+
let cache = null;
|
|
8
|
+
/** Parse the env var. Pure and exported for tests: unknown keys are dropped,
|
|
9
|
+
* values must be finite and in [0, 2]. Returns an empty map on any malformed
|
|
10
|
+
* input (not an object, or unparsable JSON) rather than throwing. */
|
|
11
|
+
export function parseModelWeightOverrides(raw) {
|
|
12
|
+
if (raw === undefined || raw.trim() === '')
|
|
13
|
+
return new Map();
|
|
14
|
+
let parsed;
|
|
15
|
+
try {
|
|
16
|
+
parsed = JSON.parse(raw);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return new Map();
|
|
20
|
+
}
|
|
21
|
+
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed))
|
|
22
|
+
return new Map();
|
|
23
|
+
const out = new Map();
|
|
24
|
+
for (const [modelId, value] of Object.entries(parsed)) {
|
|
25
|
+
if (!modelId.trim())
|
|
26
|
+
continue;
|
|
27
|
+
if (typeof value !== 'number' || !Number.isFinite(value) || value < 0 || value > 2)
|
|
28
|
+
continue;
|
|
29
|
+
out.set(modelId, value);
|
|
30
|
+
}
|
|
31
|
+
return out;
|
|
32
|
+
}
|
|
33
|
+
/** The active overrides — parsed lazily from the environment on first use and
|
|
34
|
+
* cached for the life of the process (the env is fixed at boot). */
|
|
35
|
+
export function getModelWeightOverrides() {
|
|
36
|
+
if (cache === null)
|
|
37
|
+
cache = parseModelWeightOverrides(process.env.MODEL_ROUTING_OVERRIDES);
|
|
38
|
+
return cache;
|
|
39
|
+
}
|
|
40
|
+
/** Test seam: forget the cached parse so a changed env var takes effect. */
|
|
41
|
+
export function resetModelWeightOverrides() {
|
|
42
|
+
cache = null;
|
|
43
|
+
}
|
|
44
|
+
/** Apply a model's override to a bandit score. `overrides` is injectable for
|
|
45
|
+
* tests; it defaults to the process-wide parsed map. */
|
|
46
|
+
export function applyModelWeightOverride(score, modelId, overrides = getModelWeightOverrides()) {
|
|
47
|
+
const override = overrides.get(modelId);
|
|
48
|
+
return override === undefined ? score : score * override;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Report `MODEL_ROUTING_OVERRIDES` entries that will never do anything.
|
|
52
|
+
*
|
|
53
|
+
* Every rejection path in this module is deliberately silent so a bad variable
|
|
54
|
+
* can never break boot — but silence is the wrong answer for an operator who
|
|
55
|
+
* has just written one. A typo in a model id, a value of 5, or a stray trailing
|
|
56
|
+
* comma all produce exactly the same observable result as not setting the
|
|
57
|
+
* variable at all: the model keeps its normal score and nothing says why.
|
|
58
|
+
*
|
|
59
|
+
* Log-only, and never throws: an unreadable catalog just skips the model-id
|
|
60
|
+
* check rather than failing a boot over a diagnostic.
|
|
61
|
+
*
|
|
62
|
+
* The unknown-model half is SKIPPED until the catalog has synced at least once.
|
|
63
|
+
* This runs at boot, before startCatalogSync, so on a first run the models table
|
|
64
|
+
* holds only what the migrations seeded (110 rows) against a real catalog of
|
|
65
|
+
* ~460: every override naming one of the ~350 not in the seed would be reported
|
|
66
|
+
* as bogus on exactly the boot an operator is most likely to be reading. A
|
|
67
|
+
* warning that cries wolf on its first outing teaches people to skip the line
|
|
68
|
+
* that would have caught the real typo, so it stays quiet until it can be
|
|
69
|
+
* right. The malformed-JSON and bad-multiplier halves need no catalog and
|
|
70
|
+
* always run.
|
|
71
|
+
*/
|
|
72
|
+
export function warnOnRoutingOverrideDrift(logger = console) {
|
|
73
|
+
const raw = process.env.MODEL_ROUTING_OVERRIDES;
|
|
74
|
+
if (raw === undefined || raw.trim() === '')
|
|
75
|
+
return null;
|
|
76
|
+
const drift = { malformed: false, rejectedValues: [], unknownModels: [] };
|
|
77
|
+
let parsed;
|
|
78
|
+
try {
|
|
79
|
+
parsed = JSON.parse(raw);
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
drift.malformed = true;
|
|
83
|
+
logger.warn(`[config] MODEL_ROUTING_OVERRIDES is not valid JSON and is being ignored entirely `
|
|
84
|
+
+ `(${err?.message ?? err}). Expected an object like {"gpt-4o": 0.2}.`);
|
|
85
|
+
return drift;
|
|
86
|
+
}
|
|
87
|
+
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
|
|
88
|
+
drift.malformed = true;
|
|
89
|
+
logger.warn('[config] MODEL_ROUTING_OVERRIDES must be a JSON object mapping model ids to multipliers, '
|
|
90
|
+
+ 'e.g. {"gpt-4o": 0.2} — the current value is being ignored entirely.');
|
|
91
|
+
return drift;
|
|
92
|
+
}
|
|
93
|
+
const accepted = parseModelWeightOverrides(raw);
|
|
94
|
+
for (const [modelId, value] of Object.entries(parsed)) {
|
|
95
|
+
if (!modelId.trim() || accepted.has(modelId))
|
|
96
|
+
continue;
|
|
97
|
+
drift.rejectedValues.push(modelId);
|
|
98
|
+
logger.warn(`[config] MODEL_ROUTING_OVERRIDES entry "${modelId}" was dropped: `
|
|
99
|
+
+ `${JSON.stringify(value)} is not a finite multiplier in [0, 2].`);
|
|
100
|
+
}
|
|
101
|
+
if (accepted.size > 0) {
|
|
102
|
+
try {
|
|
103
|
+
// Read-only, and gated on a completed sync: before the first one the
|
|
104
|
+
// models table is just the migration seed, so "unknown" would mean
|
|
105
|
+
// "not seeded yet" rather than "wrong".
|
|
106
|
+
if (getSetting(CATALOG_LAST_SYNC_SETTING)) {
|
|
107
|
+
const known = new Set(getDb().prepare('SELECT DISTINCT model_id FROM models').all()
|
|
108
|
+
.map(r => r.model_id));
|
|
109
|
+
for (const modelId of accepted.keys()) {
|
|
110
|
+
if (known.has(modelId))
|
|
111
|
+
continue;
|
|
112
|
+
drift.unknownModels.push(modelId);
|
|
113
|
+
logger.warn(`[config] MODEL_ROUTING_OVERRIDES names "${modelId}", which is not a model id in this `
|
|
114
|
+
+ "install's catalog, so the override is not applying. Overrides match model_id alone, "
|
|
115
|
+
+ 'unqualified by platform, and the match is exact and case-sensitive. A model gated '
|
|
116
|
+
+ 'behind a provider you have no key for appears once that key is added.');
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
// Catalog unreadable (DB not ready, mid-migration). The value half of the
|
|
122
|
+
// report is still useful; skip the existence check rather than throw.
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return drift;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=model-weight-overrides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-weight-overrides.js","sourceRoot":"","sources":["../../src/services/model-weight-overrides.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* notification-emitter — centralized notification emission for server events.
|
|
3
|
+
*
|
|
4
|
+
* Simplified notification types:
|
|
5
|
+
* - Model catalog changes (added/removed/updated) — called from catalog-sync
|
|
6
|
+
* - Fleet degradation — called from degradation (auto-removed on recovery)
|
|
7
|
+
* - Update availability — called from boot + periodic check
|
|
8
|
+
*
|
|
9
|
+
* Health check, quota, and rate-limit events are handled internally
|
|
10
|
+
* (auto-disable, cooldown, etc.) — no user-facing notifs needed.
|
|
11
|
+
*/
|
|
12
|
+
export declare function emitDegradedNotif(healthyProviders: number, totalProviders: number, ratio: number): void;
|
|
13
|
+
/**
|
|
14
|
+
* Remove all degraded notifications when the system recovers.
|
|
15
|
+
* No separate "recovered" notification — the degraded one just disappears.
|
|
16
|
+
*/
|
|
17
|
+
export declare function removeDegradedNotif(): void;
|
|
18
|
+
export declare function emitUpdateAvailableNotif(version: string | null, remoteMessage: string | null, _htmlUrl: string): void;
|
|
19
|
+
/**
|
|
20
|
+
* Settle the update reminder after the installed version caught up: the row
|
|
21
|
+
* stays in the list (history), but marked read — it un-pins from the top of
|
|
22
|
+
* the bell and sinks into normal chronological order, and the badge clears.
|
|
23
|
+
*/
|
|
24
|
+
export declare function settleUpdateAvailableNotif(): void;
|
|
25
|
+
/** Remove update-notif after user performs the update. */
|
|
26
|
+
export declare function removeUpdateAvailableNotif(): void;
|
|
27
|
+
/**
|
|
28
|
+
* True when `latest` is strictly newer than `current` by semver.
|
|
29
|
+
* Unparseable versions never notify — a false "update available" is worse
|
|
30
|
+
* than a missed one (the old `!==` compare notified even when the installed
|
|
31
|
+
* version was ahead of the release being compared).
|
|
32
|
+
*/
|
|
33
|
+
export declare function isNewerVersion(latest: string, current: string): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Check for server updates and emit a notification if one is available.
|
|
36
|
+
* Called on boot (via catalog-sync) and periodically via health checker.
|
|
37
|
+
*
|
|
38
|
+
* The repository is NOT defaulted: this fork replaces upstream and publishes
|
|
39
|
+
* no releases of its own yet, so checking upstream would announce every
|
|
40
|
+
* upstream tag (e.g. v0.13.4 > 0.3.1) as an endless "update available".
|
|
41
|
+
* SROUTER_UPDATE_REPO must name the fork's own owner/repo before anything is
|
|
42
|
+
* checked — otherwise any stored update row is stale and gets dropped.
|
|
43
|
+
*/
|
|
44
|
+
export declare function checkUpdateAvailable(): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Run all periodic notification checks. Called from the health checker pass
|
|
47
|
+
* (every ~5 min) to surface quota + update warnings alongside health events.
|
|
48
|
+
*/
|
|
49
|
+
export declare function runPeriodicNotificationChecks(): void;
|
|
50
|
+
//# sourceMappingURL=notification-emitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notification-emitter.d.ts","sourceRoot":"","sources":["../../src/services/notification-emitter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAsBH,wBAAgB,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAoBvG;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAID,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CA2BrH;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAED,0DAA0D;AAC1D,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAID;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAYvE;AAED;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAuC1D;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* notification-emitter — centralized notification emission for server events.
|
|
3
|
+
*
|
|
4
|
+
* Simplified notification types:
|
|
5
|
+
* - Model catalog changes (added/removed/updated) — called from catalog-sync
|
|
6
|
+
* - Fleet degradation — called from degradation (auto-removed on recovery)
|
|
7
|
+
* - Update availability — called from boot + periodic check
|
|
8
|
+
*
|
|
9
|
+
* Health check, quota, and rate-limit events are handled internally
|
|
10
|
+
* (auto-disable, cooldown, etc.) — no user-facing notifs needed.
|
|
11
|
+
*/
|
|
12
|
+
import { addNotifications, getNotifications, removeNotificationsByType, settleUpdateNotifications } from './catalog-sync.js';
|
|
13
|
+
// ── Deduplication ────────────────────────────────────────────────────────────
|
|
14
|
+
const recentEmit = new Map();
|
|
15
|
+
const DEDUP_TTL = {
|
|
16
|
+
degraded: 60 * 60_000, // 1 hour — degraded state persists
|
|
17
|
+
};
|
|
18
|
+
function isDeduplicated(type, dedupKey) {
|
|
19
|
+
const fullKey = `${type}:${dedupKey}`;
|
|
20
|
+
const last = recentEmit.get(fullKey) ?? 0;
|
|
21
|
+
const ttl = DEDUP_TTL[type] ?? 30_000;
|
|
22
|
+
if (Date.now() - last < ttl)
|
|
23
|
+
return true;
|
|
24
|
+
recentEmit.set(fullKey, Date.now());
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
// ── Degraded ─────────────────────────────────────────────────────────────────
|
|
28
|
+
export function emitDegradedNotif(healthyProviders, totalProviders, ratio) {
|
|
29
|
+
if (isDeduplicated('degraded', 'enter'))
|
|
30
|
+
return;
|
|
31
|
+
const now = Date.now();
|
|
32
|
+
const pct = (ratio * 100).toFixed(0);
|
|
33
|
+
const notif = {
|
|
34
|
+
id: `degraded-${now}`,
|
|
35
|
+
type: 'degraded',
|
|
36
|
+
modelId: '*',
|
|
37
|
+
displayName: 'Mode degraded aktif',
|
|
38
|
+
platform: '',
|
|
39
|
+
// Chrome lives in the localized title; nothing left to show below it.
|
|
40
|
+
message: '',
|
|
41
|
+
data: {
|
|
42
|
+
key: 'notifications.degraded',
|
|
43
|
+
vars: { healthy: healthyProviders, total: totalProviders, pct },
|
|
44
|
+
},
|
|
45
|
+
timestamp: now,
|
|
46
|
+
read: false,
|
|
47
|
+
};
|
|
48
|
+
addNotifications([notif]);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Remove all degraded notifications when the system recovers.
|
|
52
|
+
* No separate "recovered" notification — the degraded one just disappears.
|
|
53
|
+
*/
|
|
54
|
+
export function removeDegradedNotif() {
|
|
55
|
+
removeNotificationsByType('degraded');
|
|
56
|
+
}
|
|
57
|
+
// ── Update Available ─────────────────────────────────────────────────────────
|
|
58
|
+
export function emitUpdateAvailableNotif(version, remoteMessage, _htmlUrl) {
|
|
59
|
+
const versionStr = version ?? 'baru';
|
|
60
|
+
const modelId = version ?? 'latest';
|
|
61
|
+
const existing = getNotifications().find(n => n.type === 'update_available');
|
|
62
|
+
// Exactly ONE update row at any time, and it is unread while an update
|
|
63
|
+
// applies (the periodic check keeps re-running): a repeat check for the
|
|
64
|
+
// same version is a no-op — this is what stops the bell from refilling a
|
|
65
|
+
// freshly-marked-read list with duplicates every few minutes. A different
|
|
66
|
+
// version replaces the old row, collapsing any duplicates with it.
|
|
67
|
+
if (existing && existing.modelId === modelId && !existing.read)
|
|
68
|
+
return;
|
|
69
|
+
if (existing)
|
|
70
|
+
removeNotificationsByType('update_available');
|
|
71
|
+
const detail = remoteMessage ? remoteMessage.slice(0, 100) : '';
|
|
72
|
+
const notif = {
|
|
73
|
+
id: `update-${Date.now()}-${modelId}`,
|
|
74
|
+
type: 'update_available',
|
|
75
|
+
modelId,
|
|
76
|
+
displayName: `Update tersedia: v${versionStr}`,
|
|
77
|
+
platform: '',
|
|
78
|
+
// The sentence is localized via data.key; message carries only the
|
|
79
|
+
// upstream release-notes excerpt (content, not chrome).
|
|
80
|
+
message: detail,
|
|
81
|
+
data: { key: 'notifications.updateAvailable', vars: { version: versionStr } },
|
|
82
|
+
timestamp: Date.now(),
|
|
83
|
+
read: false,
|
|
84
|
+
};
|
|
85
|
+
addNotifications([notif]);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Settle the update reminder after the installed version caught up: the row
|
|
89
|
+
* stays in the list (history), but marked read — it un-pins from the top of
|
|
90
|
+
* the bell and sinks into normal chronological order, and the badge clears.
|
|
91
|
+
*/
|
|
92
|
+
export function settleUpdateAvailableNotif() {
|
|
93
|
+
settleUpdateNotifications();
|
|
94
|
+
}
|
|
95
|
+
/** Remove update-notif after user performs the update. */
|
|
96
|
+
export function removeUpdateAvailableNotif() {
|
|
97
|
+
removeNotificationsByType('update_available');
|
|
98
|
+
}
|
|
99
|
+
// ── Periodic checks ──────────────────────────────────────────────────────────
|
|
100
|
+
/**
|
|
101
|
+
* True when `latest` is strictly newer than `current` by semver.
|
|
102
|
+
* Unparseable versions never notify — a false "update available" is worse
|
|
103
|
+
* than a missed one (the old `!==` compare notified even when the installed
|
|
104
|
+
* version was ahead of the release being compared).
|
|
105
|
+
*/
|
|
106
|
+
export function isNewerVersion(latest, current) {
|
|
107
|
+
const parse = (v) => {
|
|
108
|
+
const m = /^(\d+)\.(\d+)\.(\d+)/.exec(v.trim());
|
|
109
|
+
return m ? [Number(m[1]), Number(m[2]), Number(m[3])] : null;
|
|
110
|
+
};
|
|
111
|
+
const a = parse(latest);
|
|
112
|
+
const b = parse(current);
|
|
113
|
+
if (!a || !b)
|
|
114
|
+
return false;
|
|
115
|
+
for (let i = 0; i < 3; i++) {
|
|
116
|
+
if (a[i] !== b[i])
|
|
117
|
+
return a[i] > b[i];
|
|
118
|
+
}
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Check for server updates and emit a notification if one is available.
|
|
123
|
+
* Called on boot (via catalog-sync) and periodically via health checker.
|
|
124
|
+
*
|
|
125
|
+
* The repository is NOT defaulted: this fork replaces upstream and publishes
|
|
126
|
+
* no releases of its own yet, so checking upstream would announce every
|
|
127
|
+
* upstream tag (e.g. v0.13.4 > 0.3.1) as an endless "update available".
|
|
128
|
+
* SROUTER_UPDATE_REPO must name the fork's own owner/repo before anything is
|
|
129
|
+
* checked — otherwise any stored update row is stale and gets dropped.
|
|
130
|
+
*/
|
|
131
|
+
export async function checkUpdateAvailable() {
|
|
132
|
+
try {
|
|
133
|
+
const { getSetting } = await import('../db/index.js');
|
|
134
|
+
const repo = process.env.SROUTER_UPDATE_REPO?.trim();
|
|
135
|
+
if (getSetting('update_check_enabled') !== '1' || !repo) {
|
|
136
|
+
removeNotificationsByType('update_available');
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
const { getAppVersion } = await import('../lib/app-version.js');
|
|
140
|
+
const version = getAppVersion();
|
|
141
|
+
if (!version) {
|
|
142
|
+
removeNotificationsByType('update_available');
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
const resp = await fetch(`https://api.github.com/repos/${repo}/releases/latest`, {
|
|
146
|
+
signal: AbortSignal.timeout(10_000),
|
|
147
|
+
});
|
|
148
|
+
if (!resp.ok)
|
|
149
|
+
return; // transient — keep whatever row already exists
|
|
150
|
+
const body = await resp.json();
|
|
151
|
+
const latestTag = body.tag_name;
|
|
152
|
+
if (!latestTag)
|
|
153
|
+
return;
|
|
154
|
+
// Clean tag: "v1.2.3" → "1.2.3"
|
|
155
|
+
const cleanLatest = latestTag.replace(/^v/i, '');
|
|
156
|
+
const cleanCurrent = version.replace(/^v/i, '');
|
|
157
|
+
if (isNewerVersion(cleanLatest, cleanCurrent)) {
|
|
158
|
+
emitUpdateAvailableNotif(cleanLatest, body.body?.slice(0, 200) ?? null, body.html_url ?? '');
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
// Installed build caught up (or is ahead): unpin, mark read, sink into
|
|
162
|
+
// chronological order. The row is kept as history, never duplicated.
|
|
163
|
+
settleUpdateAvailableNotif();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
// GitHub unreachable or rate-limited — silently skip
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Run all periodic notification checks. Called from the health checker pass
|
|
172
|
+
* (every ~5 min) to surface quota + update warnings alongside health events.
|
|
173
|
+
*/
|
|
174
|
+
export function runPeriodicNotificationChecks() {
|
|
175
|
+
void checkUpdateAvailable();
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=notification-emitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notification-emitter.js","sourceRoot":"","sources":["../../src/services/notification-emitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* opencode-free-sync — Auto-discover and sync free models from OpenCode's
|
|
3
|
+
* zen free tier. Runs on boot and every 12h (follows catalog-sync interval).
|
|
4
|
+
*
|
|
5
|
+
* Fetches `/zen/v1/models` with Bearer public + CLI identity headers,
|
|
6
|
+
* filters to known-free models (suffix `-free` or in the FREE_MODEL_IDS set),
|
|
7
|
+
* then INSERT-or-UPDATEs into the models table with source='user' so the
|
|
8
|
+
* catalog sync never prunes them. Also ensures fallback_config and
|
|
9
|
+
* profile_models rows exist for each discovered model.
|
|
10
|
+
*
|
|
11
|
+
* Unlike auto-discover.ts, this does NOT require an API key — it uses the
|
|
12
|
+
* same forged CLI identity that opencode-free.ts uses for chat completions.
|
|
13
|
+
*/
|
|
14
|
+
import type { Scheduler } from '../lib/scheduler.js';
|
|
15
|
+
export interface FreeSyncResult {
|
|
16
|
+
added: number;
|
|
17
|
+
updated: number;
|
|
18
|
+
skipped: number;
|
|
19
|
+
total: number;
|
|
20
|
+
models: string[];
|
|
21
|
+
error?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Sync free models from OpenCode's zen endpoint into the local DB.
|
|
25
|
+
* Called on boot and periodically by the scheduler.
|
|
26
|
+
*/
|
|
27
|
+
export declare function syncOpenCodeFreeModels(): Promise<FreeSyncResult>;
|
|
28
|
+
export declare function startOpenCodeFreeSync(scheduler: Scheduler): (() => void) | null;
|
|
29
|
+
//# sourceMappingURL=opencode-free-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode-free-sync.d.ts","sourceRoot":"","sources":["../../src/services/opencode-free-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AA8GrD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,cAAc,CAAC,CAuHtE;AAMD,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAW/E"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* opencode-free-sync — Auto-discover and sync free models from OpenCode's
|
|
3
|
+
* zen free tier. Runs on boot and every 12h (follows catalog-sync interval).
|
|
4
|
+
*
|
|
5
|
+
* Fetches `/zen/v1/models` with Bearer public + CLI identity headers,
|
|
6
|
+
* filters to known-free models (suffix `-free` or in the FREE_MODEL_IDS set),
|
|
7
|
+
* then INSERT-or-UPDATEs into the models table with source='user' so the
|
|
8
|
+
* catalog sync never prunes them. Also ensures fallback_config and
|
|
9
|
+
* profile_models rows exist for each discovered model.
|
|
10
|
+
*
|
|
11
|
+
* Unlike auto-discover.ts, this does NOT require an API key — it uses the
|
|
12
|
+
* same forged CLI identity that opencode-free.ts uses for chat completions.
|
|
13
|
+
*/
|
|
14
|
+
import { getDb } from '../db/index.js';
|
|
15
|
+
import { ensureModelInProfiles } from './profile-models.js';
|
|
16
|
+
// ── OpenCode Free Tier Identity (mirrors opencode-free.ts) ─────────────────
|
|
17
|
+
const UPSTREAM_BASE = 'https://opencode.ai/zen/v1';
|
|
18
|
+
const USER_AGENT = 'opencode/1.18.31 ai-sdk/provider-utils/4.0.23 runtime/bun/1.3.14';
|
|
19
|
+
const BASE62 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
|
|
20
|
+
function cryptoHex(n) {
|
|
21
|
+
const b = new Uint8Array(n);
|
|
22
|
+
globalThis.crypto.getRandomValues(b);
|
|
23
|
+
return Array.from(b, (x) => x.toString(16).padStart(2, '0')).join('');
|
|
24
|
+
}
|
|
25
|
+
function cryptoBase62(n) {
|
|
26
|
+
const b = new Uint8Array(n);
|
|
27
|
+
globalThis.crypto.getRandomValues(b);
|
|
28
|
+
return Array.from(b, (x) => BASE62[x % 62]).join('');
|
|
29
|
+
}
|
|
30
|
+
function genSessionId() {
|
|
31
|
+
return `ses_${cryptoHex(6)}${cryptoBase62(14)}`;
|
|
32
|
+
}
|
|
33
|
+
function genRequestId() {
|
|
34
|
+
return `msg_${cryptoHex(6)}${cryptoBase62(14)}`;
|
|
35
|
+
}
|
|
36
|
+
function identityHeaders() {
|
|
37
|
+
return {
|
|
38
|
+
Authorization: 'Bearer public',
|
|
39
|
+
'User-Agent': USER_AGENT,
|
|
40
|
+
'x-opencode-client': 'desktop',
|
|
41
|
+
'x-opencode-session': genSessionId(),
|
|
42
|
+
'x-opencode-request': genRequestId(),
|
|
43
|
+
'x-opencode-project': 'global',
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
// ── Free model detection ───────────────────────────────────────────────────
|
|
47
|
+
// OpenCode's free models use the `-free` suffix convention. We also maintain
|
|
48
|
+
// a set of known free IDs that may lack the suffix (e.g. `big-pickle`).
|
|
49
|
+
const FREE_SUFFIX = '-free';
|
|
50
|
+
/** Known free model IDs that don't use the `-free` suffix. */
|
|
51
|
+
const KNOWN_FREE_IDS = new Set([
|
|
52
|
+
'big-pickle',
|
|
53
|
+
'jev-1.13', // free variant listed alongside jev-1.13-free
|
|
54
|
+
]);
|
|
55
|
+
function isFreeModel(modelId) {
|
|
56
|
+
return modelId.endsWith(FREE_SUFFIX) || KNOWN_FREE_IDS.has(modelId);
|
|
57
|
+
}
|
|
58
|
+
// ── Model rank inference (lightweight version) ─────────────────────────────
|
|
59
|
+
function inferRanks(modelId) {
|
|
60
|
+
const lower = modelId.toLowerCase();
|
|
61
|
+
let intel = 100;
|
|
62
|
+
let spd = 100;
|
|
63
|
+
if (/(?:^|-)(?:flash|mini|fast|lite|tiny|nano)(?:$|-)/i.test(lower))
|
|
64
|
+
spd = 80;
|
|
65
|
+
if (/(?:^|-)(?:haiku|small)(?:$|-)/i.test(lower))
|
|
66
|
+
spd = 85;
|
|
67
|
+
if (/(?:^|-)(?:large|ultra|thinking|reasoning)(?:$|-)/i.test(lower))
|
|
68
|
+
spd = 115;
|
|
69
|
+
if (/(?:^|-)(?:pro|max)(?:$|-)/i.test(lower))
|
|
70
|
+
spd = 110;
|
|
71
|
+
if (/(?:^|-)(?:flash|mini|tiny|nano|lite)(?:$|-)/i.test(lower))
|
|
72
|
+
intel = 120;
|
|
73
|
+
if (/(?:^|-)(?:opus|sonnet)(?:$|-)/i.test(lower))
|
|
74
|
+
intel = 85;
|
|
75
|
+
if (/(?:^|-)(?:pro|max)(?:$|-)/i.test(lower))
|
|
76
|
+
intel = 85;
|
|
77
|
+
return { intel, spd };
|
|
78
|
+
}
|
|
79
|
+
function classifySize(modelId) {
|
|
80
|
+
const lower = modelId.toLowerCase();
|
|
81
|
+
if (/70b|405b|120b|large|ultra|pro|max/i.test(lower))
|
|
82
|
+
return 'Large';
|
|
83
|
+
if (/(?:8|9|14|20|27|32|34)b|medium/i.test(lower))
|
|
84
|
+
return 'Medium';
|
|
85
|
+
if (/(?:3|4|7)b|tiny|nano|micro|small|lite|flash/i.test(lower))
|
|
86
|
+
return 'Small';
|
|
87
|
+
return 'Medium';
|
|
88
|
+
}
|
|
89
|
+
async function fetchFreeModels() {
|
|
90
|
+
const res = await fetch(`${UPSTREAM_BASE}/models`, {
|
|
91
|
+
method: 'GET',
|
|
92
|
+
headers: identityHeaders(),
|
|
93
|
+
signal: AbortSignal.timeout(15_000),
|
|
94
|
+
});
|
|
95
|
+
if (!res.ok) {
|
|
96
|
+
throw new Error(`OpenCode Free models endpoint returned HTTP ${res.status}`);
|
|
97
|
+
}
|
|
98
|
+
const body = await res.json();
|
|
99
|
+
const all = body.data ?? [];
|
|
100
|
+
return all.filter((m) => isFreeModel(m.id));
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Sync free models from OpenCode's zen endpoint into the local DB.
|
|
104
|
+
* Called on boot and periodically by the scheduler.
|
|
105
|
+
*/
|
|
106
|
+
export async function syncOpenCodeFreeModels() {
|
|
107
|
+
const result = {
|
|
108
|
+
added: 0,
|
|
109
|
+
updated: 0,
|
|
110
|
+
skipped: 0,
|
|
111
|
+
total: 0,
|
|
112
|
+
models: [],
|
|
113
|
+
};
|
|
114
|
+
let freeModels;
|
|
115
|
+
try {
|
|
116
|
+
freeModels = await fetchFreeModels();
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
result.error = err?.message ?? String(err);
|
|
120
|
+
console.error(`[opencode-free-sync] fetch failed: ${result.error}`);
|
|
121
|
+
return result;
|
|
122
|
+
}
|
|
123
|
+
result.total = freeModels.length;
|
|
124
|
+
if (freeModels.length === 0) {
|
|
125
|
+
console.log('[opencode-free-sync] upstream returned 0 free models — skipping');
|
|
126
|
+
return result;
|
|
127
|
+
}
|
|
128
|
+
const db = getDb();
|
|
129
|
+
const platform = 'opencode-free';
|
|
130
|
+
// ── Prepare statements ──────────────────────────────────────────
|
|
131
|
+
const selectExisting = db.prepare('SELECT id, display_name, context_window, enabled FROM models WHERE platform = ? AND model_id = ?');
|
|
132
|
+
const insertModel = db.prepare(`
|
|
133
|
+
INSERT INTO models (platform, model_id, display_name, source, enabled,
|
|
134
|
+
intelligence_rank, speed_rank, size_label,
|
|
135
|
+
supports_vision, supports_tools, context_window,
|
|
136
|
+
rpm_limit, rpd_limit, tpm_limit, tpd_limit, monthly_token_budget)
|
|
137
|
+
VALUES (?, ?, ?, 'user', 1,
|
|
138
|
+
?, ?, ?,
|
|
139
|
+
0, 1, ?,
|
|
140
|
+
?, ?, ?, ?, ?)
|
|
141
|
+
`);
|
|
142
|
+
const updateModel = db.prepare('UPDATE models SET display_name = ?, context_window = ?, enabled = 1 WHERE id = ?');
|
|
143
|
+
const selectMaxFbPriority = db.prepare('SELECT COALESCE(MAX(priority), 0) AS mx FROM fallback_config');
|
|
144
|
+
const selectFbExists = db.prepare('SELECT id FROM fallback_config WHERE model_db_id = ?');
|
|
145
|
+
const insertFb = db.prepare('INSERT INTO fallback_config (model_db_id, priority, enabled) VALUES (?, ?, 1)');
|
|
146
|
+
// Free tier conservative limits (unpublished; based on other keyless providers)
|
|
147
|
+
const RPM = 5;
|
|
148
|
+
const RPD = 200;
|
|
149
|
+
const TPM = null;
|
|
150
|
+
const TPD = null;
|
|
151
|
+
// ── Transaction ─────────────────────────────────────────────────
|
|
152
|
+
const newModelNames = [];
|
|
153
|
+
db.transaction(() => {
|
|
154
|
+
let fbPriority = selectMaxFbPriority.get().mx;
|
|
155
|
+
for (const m of freeModels) {
|
|
156
|
+
const existing = selectExisting.get(platform, m.id);
|
|
157
|
+
if (existing) {
|
|
158
|
+
// Model already exists — just make sure it's enabled
|
|
159
|
+
if (!existing.enabled) {
|
|
160
|
+
updateModel.run(m.id.replace(/[-_]/g, ' '), 128_000, existing.id);
|
|
161
|
+
result.updated++;
|
|
162
|
+
}
|
|
163
|
+
result.skipped++;
|
|
164
|
+
result.models.push(m.id);
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
// Insert new model
|
|
168
|
+
const ranks = inferRanks(m.id);
|
|
169
|
+
const size = classifySize(m.id);
|
|
170
|
+
const ctx = 128_000; // default context window for free models
|
|
171
|
+
const display = m.id.replace(/[-_]/g, ' ');
|
|
172
|
+
insertModel.run(platform, m.id, display, ranks.intel, ranks.spd, size, ctx, RPM, RPD, TPM, TPD, '');
|
|
173
|
+
// Get the inserted model ID and ensure fallback_config
|
|
174
|
+
const row = db.prepare('SELECT id FROM models WHERE platform = ? AND model_id = ?').get(platform, m.id);
|
|
175
|
+
if (row) {
|
|
176
|
+
if (!selectFbExists.get(row.id)) {
|
|
177
|
+
fbPriority++;
|
|
178
|
+
insertFb.run(row.id, fbPriority);
|
|
179
|
+
}
|
|
180
|
+
ensureModelInProfiles(db, row.id);
|
|
181
|
+
newModelNames.push(m.id);
|
|
182
|
+
}
|
|
183
|
+
result.added++;
|
|
184
|
+
result.models.push(m.id);
|
|
185
|
+
}
|
|
186
|
+
})();
|
|
187
|
+
console.log(`[opencode-free-sync] done: ${result.added} added, ${result.updated} updated, ${result.skipped} existing, ${result.total} total free models`);
|
|
188
|
+
if (newModelNames.length > 0) {
|
|
189
|
+
console.log(`[opencode-free-sync] new models: ${newModelNames.join(', ')}`);
|
|
190
|
+
}
|
|
191
|
+
return result;
|
|
192
|
+
}
|
|
193
|
+
// ── Scheduler integration ───────────────────────────────────────────────────
|
|
194
|
+
const BOOT_DELAY_MS = 30_000; // 30s after boot (let server settle)
|
|
195
|
+
const SYNC_INTERVAL_MS = 12 * 60 * 60 * 1000; // 12 hours
|
|
196
|
+
export function startOpenCodeFreeSync(scheduler) {
|
|
197
|
+
// Run on boot (delayed) then every 12h
|
|
198
|
+
scheduler.after(BOOT_DELAY_MS, () => {
|
|
199
|
+
void syncOpenCodeFreeModels();
|
|
200
|
+
});
|
|
201
|
+
const stop = scheduler.every(SYNC_INTERVAL_MS, () => {
|
|
202
|
+
void syncOpenCodeFreeModels();
|
|
203
|
+
}, { name: 'opencode-free-sync' });
|
|
204
|
+
return stop;
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=opencode-free-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode-free-sync.js","sourceRoot":"","sources":["../../src/services/opencode-free-sync.ts"],"names":[],"mappings":"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"}
|