cartethyia 2.7.3 → 2.7.5
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/.env.example +2 -0
- package/README.md +17 -5
- package/dist/dashboard/assets/{BannedPage-2TJD37Hb.js → BannedPage-Cj15GsMp.js} +1 -1
- package/dist/dashboard/assets/BannedPage-Cj15GsMp.js.gz +0 -0
- package/dist/dashboard/assets/ClaimGiftsButton-D83pBJ6J.js +1 -0
- package/dist/dashboard/assets/ClaimGiftsButton-D83pBJ6J.js.gz +0 -0
- package/dist/dashboard/assets/{CliToolDetailPage-xefJNRmJ.js → CliToolDetailPage-DZKmVuJN.js} +1 -1
- package/dist/dashboard/assets/CliToolDetailPage-DZKmVuJN.js.gz +0 -0
- package/dist/dashboard/assets/{CliToolsPage-Rj9iHQ3F.js → CliToolsPage-BIccZmeL.js} +1 -1
- package/dist/dashboard/assets/CliToolsPage-BIccZmeL.js.gz +0 -0
- package/dist/dashboard/assets/CombosPage-DEEKkYD-.js +1 -0
- package/dist/dashboard/assets/CombosPage-DEEKkYD-.js.gz +0 -0
- package/dist/dashboard/assets/ConsoleLogPage-D5rol2j2.js +1 -0
- package/dist/dashboard/assets/ConsoleLogPage-D5rol2j2.js.gz +0 -0
- package/dist/dashboard/assets/CustomizationPage-BKj_r0rp.js +1 -0
- package/dist/dashboard/assets/CustomizationPage-BKj_r0rp.js.gz +0 -0
- package/dist/dashboard/assets/InjectSystemPromptPanel-B5nZvmf0.js +656 -0
- package/dist/dashboard/assets/InjectSystemPromptPanel-B5nZvmf0.js.gz +0 -0
- package/dist/dashboard/assets/{LoginPage-C4w7vea-.js → LoginPage-DkXb6dx-.js} +1 -1
- package/dist/dashboard/assets/LoginPage-DkXb6dx-.js.gz +0 -0
- package/dist/dashboard/assets/{ModelPicker-BtPcAfot.js → ModelPicker-DnQPSIA8.js} +1 -1
- package/dist/dashboard/assets/ModelPicker-DnQPSIA8.js.gz +0 -0
- package/dist/dashboard/assets/OverviewPage-Ci2wQKUz.js +1 -0
- package/dist/dashboard/assets/OverviewPage-Ci2wQKUz.js.gz +0 -0
- package/dist/dashboard/assets/ProviderDetailPage-odlgYrOg.js +5 -0
- package/dist/dashboard/assets/ProviderDetailPage-odlgYrOg.js.gz +0 -0
- package/dist/dashboard/assets/ProviderIcon-EfeloBn4.js +1 -0
- package/dist/dashboard/assets/ProviderIcon-EfeloBn4.js.gz +0 -0
- package/dist/dashboard/assets/ProvidersPage-CqFBQEB8.js +1 -0
- package/dist/dashboard/assets/ProvidersPage-CqFBQEB8.js.gz +0 -0
- package/dist/dashboard/assets/ProxyPage-5SnUSy3j.js +9 -0
- package/dist/dashboard/assets/ProxyPage-5SnUSy3j.js.gz +0 -0
- package/dist/dashboard/assets/QuotaPage-CmnMDzhP.js +1 -0
- package/dist/dashboard/assets/QuotaPage-CmnMDzhP.js.gz +0 -0
- package/dist/dashboard/assets/SettingsPage-BJtRZ4qD.js +1 -0
- package/dist/dashboard/assets/SettingsPage-BJtRZ4qD.js.gz +0 -0
- package/dist/dashboard/assets/{SetupPage-BQS0Rx_u.js → SetupPage-WTa0sktC.js} +1 -1
- package/dist/dashboard/assets/SetupPage-WTa0sktC.js.gz +0 -0
- package/dist/dashboard/assets/{StudioPage-TP7voAQ0.js → StudioPage-BfAb5-o_.js} +3 -3
- package/dist/dashboard/assets/StudioPage-BfAb5-o_.js.gz +0 -0
- package/dist/dashboard/assets/UsagePage-BNzeZ2Vk.js +56 -0
- package/dist/dashboard/assets/UsagePage-BNzeZ2Vk.js.gz +0 -0
- package/dist/dashboard/assets/api-keys-l29JROPv.js +1 -0
- package/dist/dashboard/assets/api-keys-l29JROPv.js.gz +0 -0
- package/dist/dashboard/assets/app--PJWq8_C.css +2 -0
- package/dist/dashboard/assets/app--PJWq8_C.css.gz +0 -0
- package/dist/dashboard/assets/{assert-C0YYuZJ4.js → assert-C0K-c4eo.js} +1 -1
- package/dist/dashboard/assets/assert-C0K-c4eo.js.gz +0 -0
- package/dist/dashboard/assets/{badge-B_DMpMJN.js → badge-DfbhQU4k.js} +1 -1
- package/dist/dashboard/assets/badge-DfbhQU4k.js.gz +0 -0
- package/dist/dashboard/assets/{banner-DMrMPmth.js → banner-BllT4LcF.js} +1 -1
- package/dist/dashboard/assets/banner-BllT4LcF.js.gz +0 -0
- package/dist/dashboard/assets/brand/login_register.jpg +0 -0
- package/dist/dashboard/assets/brand/login_register_initial.jpg +0 -0
- package/dist/dashboard/assets/brand/og_bansos.jpg +0 -0
- package/dist/dashboard/assets/brand/og_image.jpg +0 -0
- package/dist/dashboard/assets/{card-Be5Uzamx.js → card-CtkX66Wd.js} +1 -1
- package/dist/dashboard/assets/card-CtkX66Wd.js.gz +0 -0
- package/dist/dashboard/assets/chevron-left-Bf6CaTSJ.js +1 -0
- package/dist/dashboard/assets/chevron-left-Bf6CaTSJ.js.gz +0 -0
- package/dist/dashboard/assets/{cli-tools-muFRphDu.js → cli-tools-CQXVMn4P.js} +1 -1
- package/dist/dashboard/assets/cli-tools-CQXVMn4P.js.gz +0 -0
- package/dist/dashboard/assets/{clipboard-button-DOfrVmsi.js → clipboard-button-BQqBQd2n.js} +1 -1
- package/dist/dashboard/assets/clipboard-button-BQqBQd2n.js.gz +0 -0
- package/dist/dashboard/assets/{dialog-C9omdjQt.js → dialog-BEK7KP0H.js} +1 -1
- package/dist/dashboard/assets/dialog-BEK7KP0H.js.gz +0 -0
- package/dist/dashboard/assets/{drawer-Bm8WKaGY.js → drawer-BrTEZ8zu.js} +1 -1
- package/dist/dashboard/assets/drawer-BrTEZ8zu.js.gz +0 -0
- package/dist/dashboard/assets/entry-CHWxbS56.js +1 -0
- package/dist/dashboard/assets/entry-CHWxbS56.js.gz +0 -0
- package/dist/dashboard/assets/{entry-q5HwZ8nN.js → entry-EBHJ3DrE.js} +1 -1
- package/dist/dashboard/assets/entry-EBHJ3DrE.js.gz +0 -0
- package/dist/dashboard/assets/entry-LCS85hiq.js +4 -0
- package/dist/dashboard/assets/entry-LCS85hiq.js.gz +0 -0
- package/dist/dashboard/assets/{formatters-BTScrQpe.js → formatters-BAACA727.js} +1 -1
- package/dist/dashboard/assets/formatters-BAACA727.js.gz +0 -0
- package/dist/dashboard/assets/{github-badge-Orjuzemr.js → github-badge-YSCE4UC2.js} +1 -1
- package/dist/dashboard/assets/github-badge-YSCE4UC2.js.gz +0 -0
- package/dist/dashboard/assets/{index-cPrX5vn6.js → index-FQlj0HUT.js} +2 -2
- package/dist/dashboard/assets/index-FQlj0HUT.js.gz +0 -0
- package/dist/dashboard/assets/{inline-Dvux8w-0.js → inline-C4gU5iOL.js} +1 -1
- package/dist/dashboard/assets/inline-C4gU5iOL.js.gz +0 -0
- package/dist/dashboard/assets/{input-CU1Rgf3p.js → input-BHHX_Tmm.js} +1 -1
- package/dist/dashboard/assets/input-BHHX_Tmm.js.gz +0 -0
- package/dist/dashboard/assets/{layout-C_7A6H55.js → layout-CajrYUnD.js} +1 -1
- package/dist/dashboard/assets/{layout-C_7A6H55.js.gz → layout-CajrYUnD.js.gz} +0 -0
- package/dist/dashboard/assets/{list-row-CzFvogbj.js → list-row-Bx2I7XUe.js} +1 -1
- package/dist/dashboard/assets/list-row-Bx2I7XUe.js.gz +0 -0
- package/dist/dashboard/assets/live-DNNqRbj2.js +1 -0
- package/dist/dashboard/assets/live-DNNqRbj2.js.gz +0 -0
- package/dist/dashboard/assets/minimize-2-BTmMTK4o.js +1 -0
- package/dist/dashboard/assets/minimize-2-BTmMTK4o.js.gz +0 -0
- package/dist/dashboard/assets/{mutation-JJGQm8TD.js → mutation-Rr0TIvcj.js} +1 -1
- package/dist/dashboard/assets/mutation-Rr0TIvcj.js.gz +0 -0
- package/dist/dashboard/assets/network-C5UBACrJ.js +1 -0
- package/dist/dashboard/assets/network-C5UBACrJ.js.gz +0 -0
- package/dist/dashboard/assets/numbers-CUWAZK4J.js +2 -0
- package/dist/dashboard/assets/numbers-CUWAZK4J.js.gz +0 -0
- package/dist/dashboard/assets/pagination-Xsi9Qx04.js +1 -0
- package/dist/dashboard/assets/pagination-Xsi9Qx04.js.gz +0 -0
- package/dist/dashboard/assets/{query-keys-CLaNz8Xz.js → query-keys-BloKtaXJ.js} +1 -1
- package/dist/dashboard/assets/query-keys-BloKtaXJ.js.gz +0 -0
- package/dist/dashboard/assets/quota-DvQbD_sr.js +1 -0
- package/dist/dashboard/assets/quota-DvQbD_sr.js.gz +0 -0
- package/dist/dashboard/assets/{routing-BEH32QOC.js → routing-in0f_IfK.js} +1 -1
- package/dist/dashboard/assets/routing-in0f_IfK.js.gz +0 -0
- package/dist/dashboard/assets/{select-B3iTetHN.js → select-BLULNqTp.js} +2 -2
- package/dist/dashboard/assets/select-BLULNqTp.js.gz +0 -0
- package/dist/dashboard/assets/settings-CcGczj6I.js +1 -0
- package/dist/dashboard/assets/settings-CcGczj6I.js.gz +0 -0
- package/dist/dashboard/assets/shield-BMQNxORh.js +1 -0
- package/dist/dashboard/assets/shield-BMQNxORh.js.gz +0 -0
- package/dist/dashboard/assets/{stack-KrOrm7JZ.js → stack-D2lIR0tg.js} +1 -1
- package/dist/dashboard/assets/stack-D2lIR0tg.js.gz +0 -0
- package/dist/dashboard/assets/{state-DLS7IDMy.js → state-DTARjfiW.js} +1 -1
- package/dist/dashboard/assets/state-DTARjfiW.js.gz +0 -0
- package/dist/dashboard/assets/{switch-42ItvbAs.js → switch-c0oPSnqW.js} +1 -1
- package/dist/dashboard/assets/switch-c0oPSnqW.js.gz +0 -0
- package/dist/dashboard/assets/{useMutation-Dmnfh1Ue.js → useMutation-m8WGNPrz.js} +1 -1
- package/dist/dashboard/assets/useMutation-m8WGNPrz.js.gz +0 -0
- package/dist/dashboard/console-backgrounds.jpg +0 -0
- package/dist/dashboard/console-backgrounds_initial.jpg +0 -0
- package/dist/dashboard/index.html +2 -2
- package/dist/dashboard/index.html.gz +0 -0
- package/dist/dashboard/precompressed-assets.json +59 -57
- package/migrations/full-postgres/0027_qoder_identity_genuine_seed.sql +9 -10
- package/migrations/full-postgres/0032_add_provider_pool_accounts.sql +53 -0
- package/migrations/full-postgres/0033_add_api_key_ban.sql +9 -0
- package/migrations/full-postgres/0034_add_api_key_ban_until.sql +7 -0
- package/migrations/full-postgres/0035_align_pool_account_status_enum.sql +21 -0
- package/migrations/full-postgres/0036_system_prompt_presets_refs.sql +10 -0
- package/migrations/full-postgres/0037_share_concurrency_scope.sql +3 -0
- package/migrations/full-postgres/0038_add_accounts_quota_snapshot.sql +7 -0
- package/migrations/full-postgres/0039_add_telemetry_provider_model_indexes.sql +13 -0
- package/migrations/full-postgres/0040_add_models_dialect.sql +3 -0
- package/migrations/full-postgres/0041_add_daily_checkin_ledger_account_fk.sql +7 -0
- package/migrations/lite-sqlite3/0027_qoder_identity_genuine_seed.sql +9 -10
- package/migrations/lite-sqlite3/0032_add_provider_pool_accounts.sql +44 -0
- package/migrations/lite-sqlite3/0033_add_api_key_ban.sql +8 -0
- package/migrations/lite-sqlite3/0034_add_api_key_ban_until.sql +5 -0
- package/migrations/lite-sqlite3/0035_align_pool_account_status_enum.sql +6 -0
- package/migrations/lite-sqlite3/0036_system_prompt_presets_refs.sql +14 -0
- package/migrations/lite-sqlite3/0037_share_concurrency_scope.sql +3 -0
- package/migrations/lite-sqlite3/0038_add_accounts_quota_snapshot.sql +4 -0
- package/migrations/lite-sqlite3/0039_add_telemetry_provider_model_indexes.sql +6 -0
- package/migrations/lite-sqlite3/0040_add_models_dialect.sql +3 -0
- package/migrations/lite-sqlite3/0041_add_daily_checkin_ledger_account_fk.sql +26 -0
- package/package.json +4 -5
- package/scripts/cli/update.ts +15 -41
- package/src/boot/app.ts +67 -10
- package/src/boot/dependencies.ts +786 -732
- package/src/boot/lifecycle.ts +11 -12
- package/src/config/cooldowns.ts +34 -55
- package/src/config/network.ts +8 -4
- package/src/config/package-paths.ts +1 -1
- package/src/config/providers.ts +13 -14
- package/src/config/resources.ts +0 -5
- package/src/config/runtime.ts +2 -5
- package/src/config/spec.ts +26 -6
- package/src/console/api-keys/ban-constants.ts +38 -0
- package/src/console/api-keys/contracts.ts +92 -31
- package/src/console/api-keys/routes.ts +131 -6
- package/src/console/audit/routes.ts +3 -3
- package/src/console/auth/access.ts +4 -4
- package/src/console/auth/account-reset.ts +5 -5
- package/src/console/auth/audit-recorder.ts +1 -1
- package/src/console/auth/lockout.ts +7 -3
- package/src/console/auth/row-coercion.ts +57 -12
- package/src/console/auth/session-resolver.ts +1 -1
- package/src/console/auth/session-service.ts +8 -2
- package/src/console/auth/session.ts +40 -34
- package/src/console/auth/setup-service.ts +4 -3
- package/src/console/auth/user-store.ts +1 -1
- package/src/console/backup/9router-map.ts +0 -3
- package/src/console/backup/contracts.ts +11 -9
- package/src/console/backup/export-endpoint.ts +11 -12
- package/src/console/backup/nine-router.ts +1 -7
- package/src/console/backup/routes.ts +32 -36
- package/src/console/backup/service.ts +468 -468
- package/src/console/backup/store.ts +47 -29
- package/src/console/backup/validate.ts +11 -1
- package/src/console/cli-tools/contracts.ts +7 -7
- package/src/console/cli-tools/injectors/cline.ts +110 -110
- package/src/console/cli-tools/injectors/codex.ts +181 -181
- package/src/console/cli-tools/injectors/copilot.ts +108 -108
- package/src/console/cli-tools/injectors/driver.ts +247 -247
- package/src/console/cli-tools/injectors/jcode.ts +115 -115
- package/src/console/cli-tools/injectors/openclaw.ts +161 -161
- package/src/console/cli-tools/injectors/opencode.ts +153 -153
- package/src/console/cli-tools/routes.ts +4 -4
- package/src/console/cli-tools/service.ts +1 -1
- package/src/console/cli-tools/store.ts +2 -2
- package/src/console/console-router-guards.ts +2 -2
- package/src/console/console-router.ts +36 -4
- package/src/console/dashboard-assets.ts +9 -9
- package/src/console/data-management/routes.ts +3 -3
- package/src/console/domain-registration.ts +18 -4
- package/src/console/inferhub/client.ts +0 -7
- package/src/console/inferhub/key-store.ts +1 -1
- package/src/console/inferhub/normalize.ts +2 -2
- package/src/console/inferhub/routes.ts +1 -1
- package/src/console/inferhub/types.ts +1 -1
- package/src/console/observability/contracts.ts +5 -1
- package/src/console/observability/live.ts +34 -21
- package/src/console/observability/logs.ts +4 -4
- package/src/console/observability/performance.ts +3 -3
- package/src/console/observability/routes.ts +3 -3
- package/src/console/observability/sse.ts +62 -8
- package/src/console/observability/store.ts +36 -20
- package/src/console/providers/catalog/catalog-projections.ts +1 -1
- package/src/console/providers/catalog/contracts.ts +82 -22
- package/src/console/providers/catalog/model-operations.ts +1 -1
- package/src/console/providers/catalog/provider-operations.ts +110 -17
- package/src/console/providers/catalog/public-model-store.ts +0 -0
- package/src/console/providers/catalog/routes.ts +30 -6
- package/src/console/providers/catalog/store-helpers.ts +349 -326
- package/src/console/providers/catalog/store.ts +1662 -1292
- package/src/console/providers/detail/routes.ts +4 -4
- package/src/console/providers/oauth/callback-listener.ts +100 -18
- package/src/console/providers/oauth/routes.ts +95 -16
- package/src/console/quota/account-quota-global.ts +41 -3
- package/src/console/quota/account-quota-shared.ts +10 -3
- package/src/console/quota/account-quota-tenant.ts +285 -67
- package/src/console/quota/account-test-egress.ts +4 -4
- package/src/console/quota/daily-growth-job.ts +308 -0
- package/src/console/quota/native-identity.ts +2 -2
- package/src/console/quota/quota-view.ts +1 -1
- package/src/console/remote-support/routes.ts +1 -1
- package/src/console/remote-support/service.ts +2 -2
- package/src/console/routing/model/contracts.ts +1 -1
- package/src/console/routing/model/routes.ts +3 -3
- package/src/console/routing/pools/contracts.ts +13 -10
- package/src/console/routing/pools/import-parse.ts +3 -3
- package/src/console/routing/pools/operations.ts +14 -7
- package/src/console/routing/pools/probe-verdict.ts +8 -3
- package/src/console/routing/pools/relay-deploy.ts +12 -12
- package/src/console/routing/pools/routes.ts +3 -3
- package/src/console/routing/pools/store.ts +21 -1
- package/src/console/settings/contracts.ts +29 -2
- package/src/console/settings/routes.ts +3 -3
- package/src/console/settings/store.ts +20 -0
- package/src/console/share/share-router.ts +112 -44
- package/src/console/share/share-stats.ts +109 -39
- package/src/console/share/share-usage.ts +1 -1
- package/src/console/shared/errors.ts +2 -2
- package/src/console/shared/object.ts +18 -0
- package/src/console/shared/read-through-cache.ts +42 -6
- package/src/console/shared/transaction.ts +14 -0
- package/src/console/system-prompt/contracts.ts +89 -12
- package/src/console/system-prompt/routes.ts +98 -45
- package/src/console/updates/apply-update.ts +244 -0
- package/src/console/updates/routes.ts +256 -98
- package/src/main.ts +11 -5
- package/src/network/http2-bidi.ts +1 -1
- package/src/network/ip-utils.ts +298 -0
- package/src/network/outbound-fetch.ts +76 -5
- package/src/network/pool/agent.ts +7 -6
- package/src/network/pool/byte-accounting.ts +1 -1
- package/src/network/pool/resolver.ts +55 -51
- package/src/network/pool/selector.ts +150 -136
- package/src/network/pool-cooldown-store.ts +71 -16
- package/src/network/pool-health-machine.ts +22 -2
- package/src/network/rate-limit-verdict.ts +68 -0
- package/src/network/retry.ts +1 -1
- package/src/network/ssrf.ts +24 -75
- package/src/observability/event-log.ts +2 -2
- package/src/observability/event-query.ts +286 -214
- package/src/observability/log-sanitize.ts +1 -1
- package/src/observability/metrics.ts +4 -4
- package/src/observability/payload-capture.ts +6 -5
- package/src/observability/payload-store.ts +1 -1
- package/src/observability/runtime-metrics.ts +1 -1
- package/src/observability/telemetry-buffer.ts +12 -3
- package/src/observability/telemetry-reconciliation.ts +3 -3
- package/src/observability/telemetry-status.ts +1 -1
- package/src/observability/token-speed.ts +1 -1
- package/src/persistence/connection-url.ts +1 -1
- package/src/persistence/db-handle.ts +1 -1
- package/src/persistence/db-pg.ts +2 -2
- package/src/persistence/db-sqlite.ts +10 -5
- package/src/persistence/dialect.ts +5 -1
- package/src/persistence/readiness.ts +19 -7
- package/src/persistence/redis.ts +1 -1
- package/src/persistence/schema.ts +177 -45
- package/src/persistence/shared-cache.ts +2 -2
- package/src/persistence/sort-order.ts +1 -1
- package/src/persistence/stores/api-key-store.ts +109 -4
- package/src/persistence/stores/share-store.ts +20 -8
- package/src/persistence/stores/telemetry-store.ts +1 -1
- package/src/persistence/system-prompt-store.ts +63 -18
- package/src/persistence/tenant-preferences.ts +1 -1
- package/src/persistence/ttl-cache.ts +3 -3
- package/src/persistence/usage-flush.ts +7 -2
- package/src/protocol/canonical-model.ts +1 -1
- package/src/protocol/codecs.ts +12 -16
- package/src/protocol/dsml.ts +3 -49
- package/src/protocol/gateway-error.ts +6 -3
- package/src/protocol/image-clamp.ts +2 -2
- package/src/protocol/image-generation.ts +2 -2
- package/src/protocol/reasoning-text.ts +1 -1
- package/src/protocol/reasoning.ts +7 -52
- package/src/protocol/registry.ts +50 -15
- package/src/protocol/request/chat.ts +46 -19
- package/src/protocol/request/codex.ts +1 -1
- package/src/protocol/request/messages.ts +46 -14
- package/src/protocol/request/responses.ts +19 -10
- package/src/protocol/response/chat.ts +27 -12
- package/src/protocol/response/codex.ts +2 -2
- package/src/protocol/response/gemini.ts +1 -1
- package/src/protocol/response/messages.ts +6 -6
- package/src/protocol/response/omp-tool-call-markup.ts +1 -1
- package/src/protocol/response/responses.ts +3 -3
- package/src/protocol/sse-decoder.ts +64 -4
- package/src/protocol/stop-reason.ts +2 -2
- package/src/protocol/think-split.ts +347 -0
- package/src/protocol/translation/attachment-integrity.ts +3 -3
- package/src/protocol/translation/cache-controls.ts +8 -20
- package/src/protocol/translation/capabilities.ts +8 -8
- package/src/protocol/translation/dialect/deepseek.ts +10 -0
- package/src/protocol/translation/dialect/inband.ts +39 -0
- package/src/protocol/translation/dialect/model-thinking.ts +89 -0
- package/src/protocol/translation/dialect/qwen.ts +114 -0
- package/src/protocol/translation/dialect/resolver.ts +83 -0
- package/src/protocol/translation/dialect/rules.ts +93 -0
- package/src/protocol/translation/dialect/thinking-ladder.ts +245 -0
- package/src/protocol/translation/dialect/types.ts +58 -0
- package/src/protocol/translation/quirks.ts +18 -4
- package/src/protocol/translation/thinking.ts +12 -252
- package/src/protocol/translation/tool-id.ts +3 -3
- package/src/protocol/translation/tool-repair.ts +1 -1
- package/src/protocol/upstream/post-json.ts +6 -1
- package/src/protocol/upstream/send-claude-messages.ts +3 -3
- package/src/providers/adapters/base-adapter.ts +1 -1
- package/src/providers/adapters/compatible-adapter.ts +44 -5
- package/src/providers/authentication/jwt-validator.ts +0 -5
- package/src/providers/authentication/oauth-client.ts +254 -253
- package/src/providers/authentication/oauth-flow-store.ts +42 -7
- package/src/providers/authentication/oauth-refresh-service.ts +2 -2
- package/src/providers/bundled-discovery-providers.ts +6 -30
- package/src/providers/configured-openai-providers.ts +82 -97
- package/src/providers/configured-provider.ts +1 -1
- package/src/providers/default-registry.ts +23 -35
- package/src/providers/discovery/catalog/catalog-format.ts +13 -2
- package/src/providers/discovery/discovery-types.ts +0 -1
- package/src/providers/discovery/openai-model-discovery.ts +2 -2
- package/src/providers/discovery/probe-phases.ts +50 -15
- package/src/providers/discovery/probing-service.ts +18 -20
- package/src/providers/integrations/agentrouter/agentrouter.ts +14 -5
- package/src/providers/integrations/alibabacp/alibabacp.ts +2 -2
- package/src/providers/integrations/anthropic.ts +4 -11
- package/src/providers/integrations/antigravity/antigravity-oauth.ts +0 -1
- package/src/providers/integrations/antigravity/antigravity-protocol.ts +0 -14
- package/src/providers/integrations/antigravity/antigravity.ts +15 -26
- package/src/providers/integrations/buddy/buddy-catalog-shared.ts +2 -2
- package/src/providers/integrations/buddy/buddy-chat-shared.ts +20 -4
- package/src/providers/integrations/buddy/buddy-cli-headers.ts +19 -52
- package/src/providers/integrations/buddy/buddy-discovery-shared.ts +37 -6
- package/src/providers/integrations/buddy/buddy-identity.ts +108 -1
- package/src/providers/integrations/buddy/buddy-media.ts +16 -16
- package/src/providers/integrations/buddy/buddy-oauth-shared.ts +1 -1
- package/src/providers/integrations/buddy/codebuddy/cn-provider.ts +1 -2
- package/src/providers/integrations/buddy/codebuddy/provider.ts +5 -16
- package/src/providers/integrations/buddy/codebuddy/shared.ts +30 -9
- package/src/providers/integrations/buddy/workbuddy/provider.ts +6 -10
- package/src/providers/integrations/buddy/workbuddy/shared.ts +21 -3
- package/src/providers/integrations/claude/claude-betas.ts +1 -1
- package/src/providers/integrations/claude/claude-cch.ts +148 -148
- package/src/providers/integrations/claude/claude-credentials.ts +1 -1
- package/src/providers/integrations/claude/claude-slow-lane-retry.ts +1 -1
- package/src/providers/integrations/claude/claude.ts +3 -10
- package/src/providers/integrations/claude/fallback-credit.ts +3 -7
- package/src/providers/integrations/cline/cline.ts +2 -2
- package/src/providers/integrations/cloudflareai/cloudflareai.ts +4 -7
- package/src/providers/integrations/codex/codex-device-code.ts +101 -101
- package/src/providers/integrations/codex/codex-errors.ts +1 -1
- package/src/providers/integrations/codex/codex-oauth.ts +0 -1
- package/src/providers/integrations/codex/codex.ts +14 -15
- package/src/providers/integrations/commandcode/commandcode.ts +76 -116
- package/src/providers/integrations/commandcode/quota.ts +132 -48
- package/src/providers/integrations/cursor/cursor-http2.ts +11 -14
- package/src/providers/integrations/cursor/cursor-quota.ts +2 -6
- package/src/providers/integrations/cursor/cursor-request.ts +0 -87
- package/src/providers/integrations/cursor/cursor-shared.ts +0 -4
- package/src/providers/integrations/cursor/cursor.ts +53 -20
- package/src/providers/integrations/cursor/protocol/framing.ts +0 -56
- package/src/providers/integrations/cursor/protocol/messages.ts +0 -96
- package/src/providers/integrations/factory/factory.ts +13 -13
- package/src/providers/integrations/gemini.ts +11 -11
- package/src/providers/integrations/github/github-discovery.ts +55 -10
- package/src/providers/integrations/github/github-oauth.ts +6 -5
- package/src/providers/integrations/github/github.ts +47 -20
- package/src/providers/integrations/grok/grok-oauth.ts +261 -261
- package/src/providers/integrations/grok/grok-quota-frame.ts +1 -1
- package/src/providers/integrations/grok/grok-quota.ts +16 -7
- package/src/providers/integrations/grok/grok-ratelimit-store.ts +0 -5
- package/src/providers/integrations/grok/grok-ratelimit.ts +3 -0
- package/src/providers/integrations/grok/grok.ts +88 -42
- package/src/providers/integrations/inferhub.ts +4 -11
- package/src/providers/integrations/kilo/kilo-oauth.ts +1 -1
- package/src/providers/integrations/kimi/kimi.ts +4 -11
- package/src/providers/integrations/kiro/kiro-cache.ts +31 -0
- package/src/providers/integrations/kiro/kiro-catalog.ts +31 -5
- package/src/providers/integrations/kiro/kiro-discovery.ts +47 -43
- package/src/providers/integrations/kiro/kiro-machine-id.ts +6 -3
- package/src/providers/integrations/kiro/kiro-oauth.ts +523 -255
- package/src/providers/integrations/kiro/kiro-quota.ts +35 -47
- package/src/providers/integrations/kiro/kiro-request.ts +8 -11
- package/src/providers/integrations/kiro/kiro-stream.ts +13 -0
- package/src/providers/integrations/kiro/kiro.ts +91 -78
- package/src/providers/integrations/muse/muse-oauth.ts +0 -1
- package/src/providers/integrations/muse/muse-quota.ts +0 -4
- package/src/providers/integrations/muse/muse.ts +6 -9
- package/src/providers/integrations/opencode/fingerprint.ts +7 -5
- package/src/providers/integrations/opencode/provider.ts +17 -24
- package/src/providers/integrations/perplexity.ts +2 -2
- package/src/providers/integrations/qoder/qoder-catalog.ts +132 -17
- package/src/providers/integrations/qoder/qoder-checkin.ts +26 -8
- package/src/providers/integrations/qoder/qoder-native-identity-store.ts +9 -8
- package/src/providers/integrations/qoder/qoder-oauth.ts +165 -25
- package/src/providers/integrations/qoder/qoder-quota.ts +48 -6
- package/src/providers/integrations/qoder/qoder-realm.ts +22 -28
- package/src/providers/integrations/qoder/qoder-sse.ts +159 -0
- package/src/providers/integrations/qoder/qoder-umid.ts +33 -38
- package/src/providers/integrations/qoder/qoder-virtual.ts +14 -2
- package/src/providers/integrations/qoder/qoder.ts +521 -63
- package/src/providers/integrations/shared/connect.ts +0 -54
- package/src/providers/integrations/shared/hash.ts +15 -0
- package/src/providers/integrations/shared/session-cache.ts +136 -0
- package/src/providers/integrations/tokenharbor.ts +2 -2
- package/src/providers/integrations/trae/trae-cache.ts +7 -87
- package/src/providers/integrations/trae/trae-catalog.ts +1 -6
- package/src/providers/integrations/trae/trae-protocol.ts +17 -8
- package/src/providers/integrations/trae/trae-realm.ts +0 -7
- package/src/providers/integrations/trae/trae.ts +59 -19
- package/src/providers/integrations/xai/xai-oauth.ts +5 -5
- package/src/providers/integrations/zcode/oauth.ts +1 -1
- package/src/providers/integrations/zcode-start-plan/gifts.ts +265 -0
- package/src/providers/integrations/zcode-start-plan/oauth.ts +154 -0
- package/src/providers/integrations/zcode-start-plan/provider.ts +131 -0
- package/src/providers/integrations/zcode-start-plan/quota.ts +152 -0
- package/src/providers/integrations/zcode-start-plan/zcode_prompt.json +10 -0
- package/src/providers/operations/account-error-classification.ts +131 -116
- package/src/providers/operations/account-health-service.ts +31 -39
- package/src/providers/operations/account-reset-service.ts +58 -1
- package/src/providers/operations/cli-platform.ts +31 -5
- package/src/providers/operations/client-version-resolver.ts +4 -6
- package/src/providers/operations/client-versions.ts +10 -7
- package/src/providers/operations/provider-catalog-seeder.ts +2 -0
- package/src/providers/operations/provider-catalog-service.ts +22 -6
- package/src/providers/operations/provider-credential-service.ts +35 -6
- package/src/providers/operations/upstream-deadline.ts +3 -3
- package/src/providers/provider-contracts.ts +65 -10
- package/src/providers/provider-credential-resolver.ts +1 -1
- package/src/providers/provider-metadata.ts +17 -2
- package/src/providers/provider-model-definition.ts +22 -1
- package/src/providers/provider-probe.ts +4 -2
- package/src/providers/provider-registry.ts +4 -4
- package/src/providers/provider-usage.ts +81 -16
- package/src/providers/quota/cache.ts +29 -0
- package/src/providers/quota/quota-contracts.ts +28 -10
- package/src/providers/quota/refresh.ts +29 -6
- package/src/providers/quota/snapshot.ts +94 -0
- package/src/providers/search/search-provider.ts +6 -8
- package/src/providers/search/search-providers.ts +2 -1
- package/src/security/abuse.ts +8 -8
- package/src/security/admission/reasons.ts +17 -17
- package/src/security/admission/service.ts +2 -2
- package/src/security/admission/ttl.ts +61 -61
- package/src/security/api-key-auth.ts +20 -8
- package/src/security/client-router-fingerprint.ts +4 -4
- package/src/security/credential-codec.ts +3 -3
- package/src/security/csrf.ts +2 -2
- package/src/security/ip-boundary.ts +16 -189
- package/src/security/model-access-rule.ts +1 -1
- package/src/security/outbound-headers.ts +18 -0
- package/src/shared/coerce.ts +19 -0
- package/src/shared/invoke-guard.ts +47 -0
- package/src/transport/contracts.ts +13 -4
- package/src/transport/dispatch/attempt-finalize.ts +5 -4
- package/src/transport/dispatch/attempt-loop.ts +10 -7
- package/src/transport/dispatch/capture-policy.ts +34 -37
- package/src/transport/dispatch/empty-stream.ts +28 -25
- package/src/transport/dispatch/generation.ts +33 -53
- package/src/transport/dispatch/leases.ts +8 -8
- package/src/transport/dispatch/native-shared.ts +127 -0
- package/src/transport/dispatch/proxy-request.ts +10 -8
- package/src/transport/dispatch/responses-compact.ts +35 -56
- package/src/transport/dispatch/retry-policy.ts +4 -67
- package/src/transport/dispatch/stream-bridge.ts +1 -1
- package/src/transport/dispatch/streaming/encoder.ts +18 -72
- package/src/transport/dispatch/streaming/finalize.ts +11 -10
- package/src/transport/dispatch/streaming/stream.ts +7 -3
- package/src/transport/dispatch/streaming/thinking-loop.ts +1 -1
- package/src/transport/dispatch/systemone.ts +27 -55
- package/src/transport/dispatch/token-count.ts +49 -46
- package/src/transport/dispatch/websearch.ts +24 -50
- package/src/transport/drain-endpoint.ts +3 -3
- package/src/transport/failure-policy.ts +19 -6
- package/src/transport/guards/auth-guard.ts +6 -11
- package/src/transport/guards/body-policy.ts +7 -7
- package/src/transport/guards/error-lifecycle.ts +18 -3
- package/src/transport/guards/guard-errors.ts +7 -3
- package/src/transport/guards/headroom-guard.ts +2 -2
- package/src/transport/guards/pipeline.ts +7 -7
- package/src/transport/guards/readiness-guard.ts +16 -2
- package/src/transport/guards/request-context.ts +15 -20
- package/src/transport/request/preparer.ts +306 -27
- package/src/transport/request/rtk/compress-request.ts +3 -3
- package/src/transport/request/rtk/rtk-constants.ts +2 -2
- package/src/transport/request/rtk/rtk-filters.ts +8 -8
- package/src/transport/request/state.ts +5 -20
- package/src/transport/request/system-prompt-injection.ts +74 -11
- package/src/transport/request/tenant-preferences.ts +22 -0
- package/src/transport/routing/candidate-index.ts +2 -2
- package/src/transport/routing/round-robin.ts +1 -1
- package/src/transport/routing/route-catalog.ts +113 -19
- package/src/transport/routing/route-model.ts +131 -38
- package/src/transport/routing/router.ts +154 -39
- package/src/transport/shutdown-notice.ts +21 -9
- package/src/transport/surface/adapters.ts +3 -3
- package/src/transport/surface/chat/encode.ts +7 -7
- package/src/transport/surface/chat/parse.ts +7 -7
- package/src/transport/surface/completion.ts +3 -3
- package/src/transport/surface/content-parts.ts +1 -1
- package/src/transport/surface/dialects.ts +2 -2
- package/src/transport/surface/messages/encode.ts +1 -1
- package/src/transport/surface/messages/parse.ts +3 -3
- package/src/transport/surface/responses/adapter.ts +1 -1
- package/src/transport/surface/responses/errors.ts +0 -9
- package/src/transport/vision-handoff-cache.ts +58 -0
- package/src/transport/vision-handoff.ts +376 -0
- package/src/workers/account-identity-sweep.ts +2 -2
- package/src/workers/buddy-growth-tasks.ts +392 -346
- package/src/workers/daily-checkin.ts +102 -49
- package/src/workers/maintenance-lease.ts +2 -35
- package/src/workers/oauth-refresh-sweep.ts +8 -1
- package/src/workers/quota-refresh-sweep.ts +120 -82
- package/src/workers/scheduler.ts +67 -4
- package/src/workers/sweep-runner.ts +24 -5
- package/src/workers/zcode-gift-claim.ts +108 -0
- package/dist/dashboard/assets/AccountCooldown-Bjo92Qat.js +0 -1
- package/dist/dashboard/assets/AccountCooldown-Bjo92Qat.js.gz +0 -0
- package/dist/dashboard/assets/BannedPage-2TJD37Hb.js.gz +0 -0
- package/dist/dashboard/assets/CliToolDetailPage-xefJNRmJ.js.gz +0 -0
- package/dist/dashboard/assets/CliToolsPage-Rj9iHQ3F.js.gz +0 -0
- package/dist/dashboard/assets/CombosPage-JEbYJFxw.js +0 -1
- package/dist/dashboard/assets/CombosPage-JEbYJFxw.js.gz +0 -0
- package/dist/dashboard/assets/ConsoleLogPage-C3xx_inM.js +0 -1
- package/dist/dashboard/assets/ConsoleLogPage-C3xx_inM.js.gz +0 -0
- package/dist/dashboard/assets/CustomizationPage-Dw306gJU.js +0 -1
- package/dist/dashboard/assets/CustomizationPage-Dw306gJU.js.gz +0 -0
- package/dist/dashboard/assets/HealthEventsModal-jaBo1TWV.js +0 -1
- package/dist/dashboard/assets/HealthEventsModal-jaBo1TWV.js.gz +0 -0
- package/dist/dashboard/assets/LoginPage-C4w7vea-.js.gz +0 -0
- package/dist/dashboard/assets/ModelPicker-BtPcAfot.js.gz +0 -0
- package/dist/dashboard/assets/OverviewPage-CGC5gNs1.js +0 -1
- package/dist/dashboard/assets/OverviewPage-CGC5gNs1.js.gz +0 -0
- package/dist/dashboard/assets/ProviderDetailPage-DQcthNGt.js +0 -4
- package/dist/dashboard/assets/ProviderDetailPage-DQcthNGt.js.gz +0 -0
- package/dist/dashboard/assets/ProviderIcon-FB6yS4v1.js +0 -1
- package/dist/dashboard/assets/ProviderIcon-FB6yS4v1.js.gz +0 -0
- package/dist/dashboard/assets/ProvidersPage-0OsXRGXe.js +0 -1
- package/dist/dashboard/assets/ProvidersPage-0OsXRGXe.js.gz +0 -0
- package/dist/dashboard/assets/ProxyPage-DdPc8slb.js +0 -9
- package/dist/dashboard/assets/ProxyPage-DdPc8slb.js.gz +0 -0
- package/dist/dashboard/assets/QuotaPage-Ci5O4BnH.js +0 -1
- package/dist/dashboard/assets/QuotaPage-Ci5O4BnH.js.gz +0 -0
- package/dist/dashboard/assets/SettingsPage-CDZjTt87.js +0 -1
- package/dist/dashboard/assets/SettingsPage-CDZjTt87.js.gz +0 -0
- package/dist/dashboard/assets/SetupPage-BQS0Rx_u.js.gz +0 -0
- package/dist/dashboard/assets/SortableList-BAL5npBC.js +0 -1
- package/dist/dashboard/assets/SortableList-BAL5npBC.js.gz +0 -0
- package/dist/dashboard/assets/StudioPage-TP7voAQ0.js.gz +0 -0
- package/dist/dashboard/assets/UsagePage-Cj_fEzhg.js +0 -56
- package/dist/dashboard/assets/UsagePage-Cj_fEzhg.js.gz +0 -0
- package/dist/dashboard/assets/api-keys-MbI7e7rt.js +0 -1
- package/dist/dashboard/assets/api-keys-MbI7e7rt.js.gz +0 -0
- package/dist/dashboard/assets/app-B2vyPoII.css +0 -2
- package/dist/dashboard/assets/app-B2vyPoII.css.gz +0 -0
- package/dist/dashboard/assets/assert-C0YYuZJ4.js.gz +0 -0
- package/dist/dashboard/assets/badge-B_DMpMJN.js.gz +0 -0
- package/dist/dashboard/assets/banner-DMrMPmth.js.gz +0 -0
- package/dist/dashboard/assets/card-Be5Uzamx.js.gz +0 -0
- package/dist/dashboard/assets/cli-tools-muFRphDu.js.gz +0 -0
- package/dist/dashboard/assets/clipboard-button-DOfrVmsi.js.gz +0 -0
- package/dist/dashboard/assets/dialog-C9omdjQt.js.gz +0 -0
- package/dist/dashboard/assets/drawer-Bm8WKaGY.js.gz +0 -0
- package/dist/dashboard/assets/entry-DS90gUks.js +0 -1
- package/dist/dashboard/assets/entry-DS90gUks.js.gz +0 -0
- package/dist/dashboard/assets/entry-j40LJotO.js +0 -4
- package/dist/dashboard/assets/entry-j40LJotO.js.gz +0 -0
- package/dist/dashboard/assets/entry-q5HwZ8nN.js.gz +0 -0
- package/dist/dashboard/assets/formatters-BTScrQpe.js.gz +0 -0
- package/dist/dashboard/assets/github-badge-Orjuzemr.js.gz +0 -0
- package/dist/dashboard/assets/index-cPrX5vn6.js.gz +0 -0
- package/dist/dashboard/assets/inline-Dvux8w-0.js.gz +0 -0
- package/dist/dashboard/assets/input-CU1Rgf3p.js.gz +0 -0
- package/dist/dashboard/assets/list-row-CzFvogbj.js.gz +0 -0
- package/dist/dashboard/assets/live-KaG15HLQ.js +0 -1
- package/dist/dashboard/assets/live-KaG15HLQ.js.gz +0 -0
- package/dist/dashboard/assets/minimize-2-D-MN8W8a.js +0 -1
- package/dist/dashboard/assets/minimize-2-D-MN8W8a.js.gz +0 -0
- package/dist/dashboard/assets/mutation-JJGQm8TD.js.gz +0 -0
- package/dist/dashboard/assets/numbers-BNDZnsUE.js +0 -2
- package/dist/dashboard/assets/numbers-BNDZnsUE.js.gz +0 -0
- package/dist/dashboard/assets/query-keys-CLaNz8Xz.js.gz +0 -0
- package/dist/dashboard/assets/quota-DZGyp0N5.js +0 -1
- package/dist/dashboard/assets/quota-DZGyp0N5.js.gz +0 -0
- package/dist/dashboard/assets/routing-BEH32QOC.js.gz +0 -0
- package/dist/dashboard/assets/select-B3iTetHN.js.gz +0 -0
- package/dist/dashboard/assets/settings-Dt3Eqbnq.js +0 -1
- package/dist/dashboard/assets/settings-Dt3Eqbnq.js.gz +0 -0
- package/dist/dashboard/assets/stack-KrOrm7JZ.js.gz +0 -0
- package/dist/dashboard/assets/state-DLS7IDMy.js.gz +0 -0
- package/dist/dashboard/assets/stream-retry-5QnVuSSo.js +0 -1
- package/dist/dashboard/assets/stream-retry-5QnVuSSo.js.gz +0 -0
- package/dist/dashboard/assets/switch-42ItvbAs.js.gz +0 -0
- package/dist/dashboard/assets/useMutation-Dmnfh1Ue.js.gz +0 -0
- package/src/network/response-headers.ts +0 -39
- package/src/protocol/response/dsml.ts +0 -38
- package/src/providers/integrations/xiaomi-mimo/think-stream.ts +0 -229
- /package/dist/dashboard/assets/{app-wvwCi4Eh.js → app-Bgd3zANQ.js} +0 -0
- /package/dist/dashboard/assets/{app-wvwCi4Eh.js.gz → app-Bgd3zANQ.js.gz} +0 -0
- /package/dist/dashboard/assets/brand/{og_bansos.webp → og_bansos_initial.webp} +0 -0
- /package/dist/dashboard/assets/brand/{og_image.webp → og_image_initial.webp} +0 -0
|
@@ -1,74 +1,76 @@
|
|
|
1
1
|
{
|
|
2
|
-
"count":
|
|
2
|
+
"count": 119,
|
|
3
3
|
"assets": [
|
|
4
|
-
"assets/
|
|
5
|
-
"assets/
|
|
6
|
-
"assets/CliToolDetailPage-
|
|
7
|
-
"assets/CliToolsPage-
|
|
8
|
-
"assets/CombosPage-
|
|
9
|
-
"assets/ConsoleLogPage-
|
|
10
|
-
"assets/CustomizationPage-
|
|
11
|
-
"assets/
|
|
12
|
-
"assets/LoginPage-
|
|
13
|
-
"assets/ModelPicker-
|
|
14
|
-
"assets/OverviewPage-
|
|
15
|
-
"assets/ProviderDetailPage-
|
|
16
|
-
"assets/ProviderIcon-
|
|
17
|
-
"assets/ProvidersPage-
|
|
18
|
-
"assets/ProxyPage-
|
|
19
|
-
"assets/QuotaPage-
|
|
20
|
-
"assets/SettingsPage-
|
|
21
|
-
"assets/SetupPage-
|
|
22
|
-
"assets/
|
|
23
|
-
"assets/StudioPage-TP7voAQ0.js",
|
|
4
|
+
"assets/BannedPage-Cj15GsMp.js",
|
|
5
|
+
"assets/ClaimGiftsButton-D83pBJ6J.js",
|
|
6
|
+
"assets/CliToolDetailPage-DZKmVuJN.js",
|
|
7
|
+
"assets/CliToolsPage-BIccZmeL.js",
|
|
8
|
+
"assets/CombosPage-DEEKkYD-.js",
|
|
9
|
+
"assets/ConsoleLogPage-D5rol2j2.js",
|
|
10
|
+
"assets/CustomizationPage-BKj_r0rp.js",
|
|
11
|
+
"assets/InjectSystemPromptPanel-B5nZvmf0.js",
|
|
12
|
+
"assets/LoginPage-DkXb6dx-.js",
|
|
13
|
+
"assets/ModelPicker-DnQPSIA8.js",
|
|
14
|
+
"assets/OverviewPage-Ci2wQKUz.js",
|
|
15
|
+
"assets/ProviderDetailPage-odlgYrOg.js",
|
|
16
|
+
"assets/ProviderIcon-EfeloBn4.js",
|
|
17
|
+
"assets/ProvidersPage-CqFBQEB8.js",
|
|
18
|
+
"assets/ProxyPage-5SnUSy3j.js",
|
|
19
|
+
"assets/QuotaPage-CmnMDzhP.js",
|
|
20
|
+
"assets/SettingsPage-BJtRZ4qD.js",
|
|
21
|
+
"assets/SetupPage-WTa0sktC.js",
|
|
22
|
+
"assets/StudioPage-BfAb5-o_.js",
|
|
24
23
|
"assets/ToolIcon-K1ckcDKg.js",
|
|
25
|
-
"assets/UsagePage-
|
|
26
|
-
"assets/api-keys-
|
|
27
|
-
"assets/app
|
|
28
|
-
"assets/app-
|
|
24
|
+
"assets/UsagePage-BNzeZ2Vk.js",
|
|
25
|
+
"assets/api-keys-l29JROPv.js",
|
|
26
|
+
"assets/app--PJWq8_C.css",
|
|
27
|
+
"assets/app-Bgd3zANQ.js",
|
|
29
28
|
"assets/arrow-left-CpBxkoxI.js",
|
|
30
29
|
"assets/arrow-right-Dl5yKnp8.js",
|
|
31
30
|
"assets/arrow-up-59ms1iiT.js",
|
|
32
|
-
"assets/assert-
|
|
31
|
+
"assets/assert-C0K-c4eo.js",
|
|
33
32
|
"assets/backup-file-gdKIlg8U.js",
|
|
34
|
-
"assets/badge-
|
|
35
|
-
"assets/banner-
|
|
33
|
+
"assets/badge-DfbhQU4k.js",
|
|
34
|
+
"assets/banner-BllT4LcF.js",
|
|
36
35
|
"assets/brain-Cwed_72z.js",
|
|
37
|
-
"assets/card-
|
|
36
|
+
"assets/card-CtkX66Wd.js",
|
|
37
|
+
"assets/chevron-left-Bf6CaTSJ.js",
|
|
38
38
|
"assets/chevron-right-BXIy5l3h.js",
|
|
39
39
|
"assets/circle-alert-CntYHV5v.js",
|
|
40
40
|
"assets/circle-check-BU3v_mFW.js",
|
|
41
|
-
"assets/cli-tools-
|
|
42
|
-
"assets/clipboard-button-
|
|
41
|
+
"assets/cli-tools-CQXVMn4P.js",
|
|
42
|
+
"assets/clipboard-button-BQqBQd2n.js",
|
|
43
43
|
"assets/database-Dz9N3zGd.js",
|
|
44
|
-
"assets/dialog-
|
|
44
|
+
"assets/dialog-BEK7KP0H.js",
|
|
45
45
|
"assets/dialog-actions-B1axpEg7.js",
|
|
46
46
|
"assets/download-dRFo5_Wu.js",
|
|
47
|
-
"assets/drawer-
|
|
48
|
-
"assets/entry-
|
|
49
|
-
"assets/entry-
|
|
50
|
-
"assets/entry-
|
|
47
|
+
"assets/drawer-BrTEZ8zu.js",
|
|
48
|
+
"assets/entry-CHWxbS56.js",
|
|
49
|
+
"assets/entry-EBHJ3DrE.js",
|
|
50
|
+
"assets/entry-LCS85hiq.js",
|
|
51
51
|
"assets/eye-C_hawfH4.js",
|
|
52
52
|
"assets/eye-off-Bk5g2luF.js",
|
|
53
53
|
"assets/fingerprint-pattern-BWuHtbW4.js",
|
|
54
|
-
"assets/formatters-
|
|
54
|
+
"assets/formatters-BAACA727.js",
|
|
55
55
|
"assets/gauge-BbIMy7MB.js",
|
|
56
|
-
"assets/github-badge-
|
|
56
|
+
"assets/github-badge-YSCE4UC2.js",
|
|
57
57
|
"assets/image-BPaouViG.js",
|
|
58
|
-
"assets/index-
|
|
59
|
-
"assets/inline-
|
|
60
|
-
"assets/input-
|
|
58
|
+
"assets/index-FQlj0HUT.js",
|
|
59
|
+
"assets/inline-C4gU5iOL.js",
|
|
60
|
+
"assets/input-BHHX_Tmm.js",
|
|
61
61
|
"assets/jsx-runtime-CXUMngI_.js",
|
|
62
62
|
"assets/key-round-UkavsGxp.js",
|
|
63
63
|
"assets/layers-2-glBbjl.js",
|
|
64
|
-
"assets/layout-
|
|
65
|
-
"assets/list-row-
|
|
66
|
-
"assets/live-
|
|
64
|
+
"assets/layout-CajrYUnD.js",
|
|
65
|
+
"assets/list-row-Bx2I7XUe.js",
|
|
66
|
+
"assets/live-DNNqRbj2.js",
|
|
67
67
|
"assets/log-in-BmRjy60c.js",
|
|
68
68
|
"assets/message-circle-CCxGwRvv.js",
|
|
69
|
-
"assets/minimize-2-
|
|
70
|
-
"assets/mutation-
|
|
71
|
-
"assets/
|
|
69
|
+
"assets/minimize-2-BTmMTK4o.js",
|
|
70
|
+
"assets/mutation-Rr0TIvcj.js",
|
|
71
|
+
"assets/network-C5UBACrJ.js",
|
|
72
|
+
"assets/numbers-CUWAZK4J.js",
|
|
73
|
+
"assets/pagination-Xsi9Qx04.js",
|
|
72
74
|
"assets/pencil-768ysRAr.js",
|
|
73
75
|
"assets/plus-DIdX_g-x.js",
|
|
74
76
|
"assets/power-off-Yjw9GMJh.js",
|
|
@@ -91,22 +93,22 @@
|
|
|
91
93
|
"assets/providers/parallel.svg",
|
|
92
94
|
"assets/providers/tokenharbor.svg",
|
|
93
95
|
"assets/providers/zai-coding-plan.svg",
|
|
94
|
-
"assets/query-keys-
|
|
95
|
-
"assets/quota-
|
|
96
|
+
"assets/query-keys-BloKtaXJ.js",
|
|
97
|
+
"assets/quota-DvQbD_sr.js",
|
|
96
98
|
"assets/refresh-cw-BqJFk4sU.js",
|
|
97
99
|
"assets/rotate-ccw-CufcqITi.js",
|
|
98
100
|
"assets/route-CNSNj9Zm.js",
|
|
99
|
-
"assets/routing-
|
|
101
|
+
"assets/routing-in0f_IfK.js",
|
|
100
102
|
"assets/scaling-nWE4Cx8f.js",
|
|
101
103
|
"assets/search-JOKus9rb.js",
|
|
102
|
-
"assets/select-
|
|
104
|
+
"assets/select-BLULNqTp.js",
|
|
103
105
|
"assets/settings-2-Ds9DQp0t.js",
|
|
104
|
-
"assets/settings-
|
|
106
|
+
"assets/settings-CcGczj6I.js",
|
|
107
|
+
"assets/shield-BMQNxORh.js",
|
|
105
108
|
"assets/shield-check-DVS0Foqh.js",
|
|
106
|
-
"assets/stack-
|
|
107
|
-
"assets/state-
|
|
108
|
-
"assets/
|
|
109
|
-
"assets/switch-42ItvbAs.js",
|
|
109
|
+
"assets/stack-D2lIR0tg.js",
|
|
110
|
+
"assets/state-DTARjfiW.js",
|
|
111
|
+
"assets/switch-c0oPSnqW.js",
|
|
110
112
|
"assets/terminal-0_IjPWTk.js",
|
|
111
113
|
"assets/tokens-COzario9.js",
|
|
112
114
|
"assets/trash-Cppn5c3R.js",
|
|
@@ -114,7 +116,7 @@
|
|
|
114
116
|
"assets/use-modal-focus-By7oJoGd.js",
|
|
115
117
|
"assets/use-reduced-motion-C4B0R6Sz.js",
|
|
116
118
|
"assets/use-timeout-BwcBBRrT.js",
|
|
117
|
-
"assets/useMutation-
|
|
119
|
+
"assets/useMutation-m8WGNPrz.js",
|
|
118
120
|
"assets/wrench-B6E1oEuY.js",
|
|
119
121
|
"assets/zap-C4EeVW4q.js",
|
|
120
122
|
"index.html"
|
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
-- Qoder native identity: genuine SG identity + per-account seed replay.
|
|
2
2
|
--
|
|
3
|
-
-- Research (2026-10-30, see
|
|
4
|
-
--
|
|
5
|
-
--
|
|
6
|
-
--
|
|
7
|
-
--
|
|
3
|
+
-- Research (2026-10-30, see
|
|
4
|
+
-- documentation/archive/research/Qoder-03-umid-and-identity-findings.md)
|
|
5
|
+
-- established that machine identity does not gate the daily-credit campaign.
|
|
6
|
+
-- The seed is retained for deterministic replay of a native identity on
|
|
7
|
+
-- surfaces that may require one; it is not required for campaign eligibility.
|
|
8
8
|
--
|
|
9
9
|
-- Migration 0026 already added `native_identity` (the token triple + optional
|
|
10
10
|
-- seed) with a partial unique index on the extracted machineToken — the
|
|
11
11
|
-- "one device per account" invariant. This migration does not change that
|
|
12
12
|
-- schema; it only documents the contract change on the same column:
|
|
13
13
|
--
|
|
14
|
-
-- `seed`
|
|
15
|
-
--
|
|
16
|
-
--
|
|
17
|
-
--
|
|
18
|
-
-- claim; the store treats a missing/empty seed as "not replay-capable".
|
|
14
|
+
-- `seed` makes a native identity replay-capable (the token can be
|
|
15
|
+
-- re-derived from the seed, never the reverse). Rows minted by the
|
|
16
|
+
-- generated path may have `seed = ""`; that affects native replay only,
|
|
17
|
+
-- not the daily campaign claim.
|
|
19
18
|
--
|
|
20
19
|
-- No DDL is needed: the JSON shape already carries everything. Kept as an
|
|
21
20
|
-- empty migration so the migration numbering records the policy change.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
-- Pool-as-account routing entities for ip-scoped, credential-less providers.
|
|
2
|
+
--
|
|
3
|
+
-- For providers whose rate limit follows the egress address (OpenCode Free),
|
|
4
|
+
-- the pool is the resource that runs out — but it was invisible to account-level
|
|
5
|
+
-- health and routing because the provider owns no `provider_accounts` rows.
|
|
6
|
+
-- This table materializes one row per (pool × ip-scoped provider), carrying the
|
|
7
|
+
-- same health state machine (`status`, `cooldown_until`, …) so a spent egress
|
|
8
|
+
-- is excluded from routing plans exactly like a cooling account, and shows in
|
|
9
|
+
-- the provider's Accounts card with a "Pool" badge.
|
|
10
|
+
--
|
|
11
|
+
-- The row is an account-equivalent, not an account: it resolves no credential,
|
|
12
|
+
-- is skipped by quota-refresh and identity sweeps (they filter on real
|
|
13
|
+
-- credential kinds), and is owned by its pool — deleting the pool cascades the
|
|
14
|
+
-- row. Rows are backfilled here for every existing pool × ip-scoped provider so
|
|
15
|
+
-- no operator action is needed to adopt the feature.
|
|
16
|
+
CREATE TABLE IF NOT EXISTS "provider_pool_accounts" (
|
|
17
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
18
|
+
"tenant_id" uuid NOT NULL REFERENCES "tenants" ("id") ON DELETE CASCADE,
|
|
19
|
+
"network_pool_id" uuid NOT NULL REFERENCES "network_pools" ("id") ON DELETE CASCADE,
|
|
20
|
+
"provider_id" text NOT NULL,
|
|
21
|
+
"label" text NOT NULL,
|
|
22
|
+
"status" text NOT NULL DEFAULT 'active'
|
|
23
|
+
CHECK ("status" IN ('active', 'cooldown', 'disabled')),
|
|
24
|
+
"consecutive_failures" integer NOT NULL DEFAULT 0,
|
|
25
|
+
"last_success_at" timestamptz,
|
|
26
|
+
"last_error" text,
|
|
27
|
+
"last_error_category" text,
|
|
28
|
+
"last_error_at" timestamptz,
|
|
29
|
+
"cooldown_until" timestamptz,
|
|
30
|
+
"last_recovered_at" timestamptz,
|
|
31
|
+
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
32
|
+
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
33
|
+
CONSTRAINT provider_pool_accounts_pool_provider_uidx
|
|
34
|
+
UNIQUE ("network_pool_id", "provider_id", "tenant_id")
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
CREATE INDEX IF NOT EXISTS provider_pool_accounts_tenant_status_idx
|
|
38
|
+
ON "provider_pool_accounts" ("tenant_id", "status");
|
|
39
|
+
CREATE INDEX IF NOT EXISTS provider_pool_accounts_provider_status_idx
|
|
40
|
+
ON "provider_pool_accounts" ("provider_id", "status");
|
|
41
|
+
|
|
42
|
+
-- Backfill: every existing pool × ip-scoped provider gets its row. The
|
|
43
|
+
-- ip-scoped set is OpenCode Free today; the provider id is spelled here so the
|
|
44
|
+
-- rule stays a data fact, not a code constant.
|
|
45
|
+
INSERT INTO "provider_pool_accounts"
|
|
46
|
+
("tenant_id", "network_pool_id", "provider_id", "label")
|
|
47
|
+
SELECT
|
|
48
|
+
p."tenant_id",
|
|
49
|
+
p."id",
|
|
50
|
+
'opencode',
|
|
51
|
+
'Pool ' || left(p."id"::text, 8)
|
|
52
|
+
FROM "network_pools" p
|
|
53
|
+
ON CONFLICT ("network_pool_id", "provider_id", "tenant_id") DO NOTHING;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
-- API-key ban state.
|
|
2
|
+
--
|
|
3
|
+
-- A ban is distinct from revoke (terminal, tombstone-like) and disable
|
|
4
|
+
-- (operator toggle, reversible): it records *why* a key was banned
|
|
5
|
+
-- (`ban_reason`) for the console's "See reason" modal. Unban clears both
|
|
6
|
+
-- columns entirely — no tombstone, no leftover metadata.
|
|
7
|
+
ALTER TABLE "api_keys"
|
|
8
|
+
ADD COLUMN "banned_at" timestamptz,
|
|
9
|
+
ADD COLUMN "ban_reason" text;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
-- API-key ban expiry.
|
|
2
|
+
--
|
|
3
|
+
-- A ban may now carry an optional `banned_until`: a timed ban lifts on its
|
|
4
|
+
-- own (auth checks `banned_at` against `banned_until`), while `null` keeps the
|
|
5
|
+
-- earlier permanent-ban behavior. Unban clears all three ban columns.
|
|
6
|
+
ALTER TABLE "api_keys"
|
|
7
|
+
ADD COLUMN "banned_until" timestamptz;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
-- Align `provider_pool_accounts.status` with the shared `health_status` enum.
|
|
2
|
+
--
|
|
3
|
+
-- The table was created with a `text` column plus an inline CHECK (migration
|
|
4
|
+
-- 0032), while every other health-state column uses the `health_status` enum.
|
|
5
|
+
-- The Drizzle schema declares the enum, so the drift checker reported the text
|
|
6
|
+
-- column and its CHECK as "produced by migrations but not in schema". This
|
|
7
|
+
-- migration rewrites the column to the enum: same allowed values, one
|
|
8
|
+
-- canonical type.
|
|
9
|
+
--
|
|
10
|
+
-- The inline CHECK from 0032 must be dropped first: PostgreSQL rewrites
|
|
11
|
+
-- CHECK expressions during an ALTER TYPE, and the old `status IN ('active',
|
|
12
|
+
-- ...)` expression compares the new enum column against text literals, which
|
|
13
|
+
-- has no operator once the column becomes the enum.
|
|
14
|
+
|
|
15
|
+
ALTER TABLE "provider_pool_accounts" DROP CONSTRAINT "provider_pool_accounts_status_check";
|
|
16
|
+
|
|
17
|
+
ALTER TABLE "provider_pool_accounts"
|
|
18
|
+
ALTER COLUMN "status" DROP DEFAULT,
|
|
19
|
+
ALTER COLUMN "status" SET DATA TYPE "public"."health_status"
|
|
20
|
+
USING "status"::"public"."health_status",
|
|
21
|
+
ALTER COLUMN "status" SET DEFAULT 'active';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
-- Tenant system-prompt injection: presets + combo/alias scopes + scope refs.
|
|
2
|
+
--
|
|
3
|
+
-- Legacy shape: `providers` (followGlobal + optional inline setting), `models`
|
|
4
|
+
-- (providerId::modelId -> setting). New shape: every scope map stores a
|
|
5
|
+
-- reference, and a named preset collection is introduced. Legacy rows remain
|
|
6
|
+
-- readable (the store's defensive reader normalizes them); this migration only
|
|
7
|
+
-- adds the new columns so the new shapes can be written.
|
|
8
|
+
ALTER TABLE "tenant_system_prompts" ADD COLUMN "presets" jsonb NOT NULL DEFAULT '{}';
|
|
9
|
+
ALTER TABLE "tenant_system_prompts" ADD COLUMN "combos" jsonb NOT NULL DEFAULT '{}';
|
|
10
|
+
ALTER TABLE "tenant_system_prompts" ADD COLUMN "aliases" jsonb NOT NULL DEFAULT '{}';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
-- Last successful quota read, persisted as JSON so an account's balance
|
|
2
|
+
-- survives a process restart (the in-process quota cache does not).
|
|
3
|
+
--
|
|
4
|
+
-- Only a successful read is stored; a failed fetch leaves the previous
|
|
5
|
+
-- snapshot in place, mirroring `quota_plan`.
|
|
6
|
+
ALTER TABLE "provider_accounts"
|
|
7
|
+
ADD COLUMN IF NOT EXISTS "quota_snapshot" jsonb;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
-- Indexes for the console's per-provider and per-model telemetry aggregates.
|
|
2
|
+
--
|
|
3
|
+
-- The provider usage matrix and `breakdownTelemetry("provider")` filter on
|
|
4
|
+
-- `tenant_id` + `provider_id` and aggregate over `created_at`; the top-model
|
|
5
|
+
-- breakdown does the same for `requested_model`. These queries used the
|
|
6
|
+
-- tenant-range index, which scanned every event in the window for one
|
|
7
|
+
-- provider/model card. Each new index turns the card into an index-only range
|
|
8
|
+
-- scan.
|
|
9
|
+
CREATE INDEX IF NOT EXISTS "telemetry_events_tenant_provider_created_idx"
|
|
10
|
+
ON "telemetry_events" USING btree ("tenant_id", "provider_id", "created_at");
|
|
11
|
+
|
|
12
|
+
CREATE INDEX IF NOT EXISTS "telemetry_events_tenant_model_created_idx"
|
|
13
|
+
ON "telemetry_events" USING btree ("tenant_id", "requested_model", "created_at");
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
-- `daily_checkin_ledger.account_id` referenced `provider_accounts.id` only by
|
|
2
|
+
-- convention; deleting an account left orphan ledger rows behind. This adds the
|
|
3
|
+
-- missing FK with `ON DELETE CASCADE` so a deleted account's daily check-in
|
|
4
|
+
-- markers go with it.
|
|
5
|
+
ALTER TABLE "daily_checkin_ledger"
|
|
6
|
+
ADD CONSTRAINT "daily_checkin_ledger_account_id_provider_accounts_id_fk"
|
|
7
|
+
FOREIGN KEY ("account_id") REFERENCES "provider_accounts" ("id") ON DELETE CASCADE;
|
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
-- Qoder native identity: genuine SG identity + per-account seed replay.
|
|
2
2
|
--
|
|
3
|
-
-- Research (2026-10-30, see
|
|
4
|
-
--
|
|
5
|
-
--
|
|
6
|
-
--
|
|
7
|
-
--
|
|
3
|
+
-- Research (2026-10-30, see
|
|
4
|
+
-- documentation/archive/research/Qoder-03-umid-and-identity-findings.md)
|
|
5
|
+
-- established that machine identity does not gate the daily-credit campaign.
|
|
6
|
+
-- The seed is retained for deterministic replay of a native identity on
|
|
7
|
+
-- surfaces that may require one; it is not required for campaign eligibility.
|
|
8
8
|
--
|
|
9
9
|
-- Migration 0026 already added `native_identity` (the token triple + optional
|
|
10
10
|
-- seed) with a partial unique index on the extracted machineToken — the
|
|
11
11
|
-- "one device per account" invariant. This migration does not change that
|
|
12
12
|
-- schema; it only documents the contract change on the same column:
|
|
13
13
|
--
|
|
14
|
-
-- `seed`
|
|
15
|
-
--
|
|
16
|
-
--
|
|
17
|
-
--
|
|
18
|
-
-- claim; the store treats a missing/empty seed as "not replay-capable".
|
|
14
|
+
-- `seed` makes a native identity replay-capable (the token can be
|
|
15
|
+
-- re-derived from the seed, never the reverse). Rows minted by the
|
|
16
|
+
-- generated path may have `seed = ""`; that affects native replay only,
|
|
17
|
+
-- not the daily campaign claim.
|
|
19
18
|
--
|
|
20
19
|
-- No DDL is needed: the JSON shape already carries everything. Kept as an
|
|
21
20
|
-- empty migration so the migration numbering records the policy change.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
-- Pool-as-account routing entities for ip-scoped, credential-less providers.
|
|
2
|
+
--
|
|
3
|
+
-- Mirror of `full-postgres/0032_add_provider_pool_accounts.sql`; see that file
|
|
4
|
+
-- for the rationale. SQLite representation: `id`/`tenant_id`/`network_pool_id`
|
|
5
|
+
-- are text (uuid), `status` is text with a CHECK, timestamps are text.
|
|
6
|
+
CREATE TABLE IF NOT EXISTS "provider_pool_accounts" (
|
|
7
|
+
"id" text PRIMARY KEY,
|
|
8
|
+
"tenant_id" text NOT NULL REFERENCES "tenants" ("id") ON DELETE CASCADE,
|
|
9
|
+
"network_pool_id" text NOT NULL REFERENCES "network_pools" ("id") ON DELETE CASCADE,
|
|
10
|
+
"provider_id" text NOT NULL,
|
|
11
|
+
"label" text NOT NULL,
|
|
12
|
+
"status" text NOT NULL DEFAULT 'active'
|
|
13
|
+
CHECK ("status" IN ('active', 'cooldown', 'disabled')),
|
|
14
|
+
"consecutive_failures" integer NOT NULL DEFAULT 0,
|
|
15
|
+
"last_success_at" text,
|
|
16
|
+
"last_error" text,
|
|
17
|
+
"last_error_category" text,
|
|
18
|
+
"last_error_at" text,
|
|
19
|
+
"cooldown_until" text,
|
|
20
|
+
"last_recovered_at" text,
|
|
21
|
+
"created_at" text NOT NULL DEFAULT (datetime('now')),
|
|
22
|
+
"updated_at" text NOT NULL DEFAULT (datetime('now')),
|
|
23
|
+
CONSTRAINT provider_pool_accounts_pool_provider_uidx
|
|
24
|
+
UNIQUE ("network_pool_id", "provider_id", "tenant_id")
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
CREATE INDEX IF NOT EXISTS provider_pool_accounts_tenant_status_idx
|
|
28
|
+
ON "provider_pool_accounts" ("tenant_id", "status");
|
|
29
|
+
CREATE INDEX IF NOT EXISTS provider_pool_accounts_provider_status_idx
|
|
30
|
+
ON "provider_pool_accounts" ("provider_id", "status");
|
|
31
|
+
|
|
32
|
+
-- Backfill: every existing pool × ip-scoped provider gets its row. The
|
|
33
|
+
-- ip-scoped set is OpenCode Free today; the provider id is spelled here so the
|
|
34
|
+
-- rule stays a data fact, not a code constant. SQLite's bun driver rejects the
|
|
35
|
+
-- newer `ON CONFLICT DO NOTHING` on an INSERT…SELECT, so the equivalent
|
|
36
|
+
-- `INSERT OR IGNORE` form is used here (Postgres version keeps the standard one).
|
|
37
|
+
INSERT OR IGNORE INTO "provider_pool_accounts"
|
|
38
|
+
("tenant_id", "network_pool_id", "provider_id", "label")
|
|
39
|
+
SELECT
|
|
40
|
+
p."tenant_id",
|
|
41
|
+
p."id",
|
|
42
|
+
'opencode',
|
|
43
|
+
'Pool ' || substr(p."id", 1, 8)
|
|
44
|
+
FROM "network_pools" p;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
-- API-key ban state. Mirror of `full-postgres/0033_add_api_key_ban.sql`;
|
|
2
|
+
-- SQLite stores timestamps as text (ISO), and each `ALTER TABLE ... ADD COLUMN`
|
|
3
|
+
-- may carry exactly one column.
|
|
4
|
+
ALTER TABLE "api_keys"
|
|
5
|
+
ADD COLUMN "banned_at" text;
|
|
6
|
+
|
|
7
|
+
ALTER TABLE "api_keys"
|
|
8
|
+
ADD COLUMN "ban_reason" text;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
-- SQLite mirror of `full-postgres/0035_align_pool_account_status_enum.sql`.
|
|
2
|
+
--
|
|
3
|
+
-- SQLite has no enum type: `provider_pool_accounts.status` is a `text`
|
|
4
|
+
-- column with a CHECK constraint already (migration 0032), which matches the
|
|
5
|
+
-- shared schema's semantics. Nothing to change here; the file exists so both
|
|
6
|
+
-- backends carry the same numbered migration set.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
-- Tenant system-prompt injection: presets + combo/alias scopes + scope refs.
|
|
2
|
+
--
|
|
3
|
+
-- Legacy shape: `providers` (followGlobal + optional inline setting), `models`
|
|
4
|
+
-- (providerId::modelId -> setting). New shape: every scope map stores a
|
|
5
|
+
-- reference, and a named preset collection is introduced. Legacy rows remain
|
|
6
|
+
-- readable (the store's defensive reader normalizes them); this migration only
|
|
7
|
+
-- adds the new columns so the new shapes can be written.
|
|
8
|
+
--
|
|
9
|
+
-- SQLite stores JSON as TEXT, so the new maps are TEXT columns with an
|
|
10
|
+
-- empty-object default, mirroring the existing `providers`/`models` TEXT
|
|
11
|
+
-- columns.
|
|
12
|
+
ALTER TABLE "tenant_system_prompts" ADD COLUMN "presets" TEXT NOT NULL DEFAULT '{}';
|
|
13
|
+
ALTER TABLE "tenant_system_prompts" ADD COLUMN "combos" TEXT NOT NULL DEFAULT '{}';
|
|
14
|
+
ALTER TABLE "tenant_system_prompts" ADD COLUMN "aliases" TEXT NOT NULL DEFAULT '{}';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
-- SQLite mirror of `full-postgres/0039_add_telemetry_provider_model_indexes.sql`.
|
|
2
|
+
CREATE INDEX IF NOT EXISTS "telemetry_events_tenant_provider_created_idx"
|
|
3
|
+
ON "telemetry_events" ("tenant_id", "provider_id", "created_at");
|
|
4
|
+
|
|
5
|
+
CREATE INDEX IF NOT EXISTS "telemetry_events_tenant_model_created_idx"
|
|
6
|
+
ON "telemetry_events" ("tenant_id", "requested_model", "created_at");
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
-- `daily_checkin_ledger.account_id` referenced `provider_accounts.id` only by
|
|
2
|
+
-- convention; deleting an account left orphan ledger rows behind. This adds the
|
|
3
|
+
-- missing FK with `ON DELETE CASCADE` so a deleted account's daily check-in
|
|
4
|
+
-- markers go with it.
|
|
5
|
+
--
|
|
6
|
+
-- SQLite cannot add a FK to an existing table in place, so the ledger is
|
|
7
|
+
-- rebuilt with the constraint. The runner wraps the file in a transaction, so
|
|
8
|
+
-- `PRAGMA foreign_keys = OFF` is unusable (a no-op inside a transaction);
|
|
9
|
+
-- `defer_foreign_keys` postpones enforcement to commit time instead, letting
|
|
10
|
+
-- the drop/rename complete mid-rebuild.
|
|
11
|
+
|
|
12
|
+
PRAGMA defer_foreign_keys = ON;
|
|
13
|
+
|
|
14
|
+
CREATE TABLE "daily_checkin_ledger__new" (
|
|
15
|
+
"day_key" text NOT NULL,
|
|
16
|
+
"account_id" text NOT NULL,
|
|
17
|
+
"claimed_at" text DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')) NOT NULL,
|
|
18
|
+
CONSTRAINT "daily_checkin_ledger_day_key_account_id_pk" PRIMARY KEY("day_key", "account_id"),
|
|
19
|
+
CONSTRAINT "daily_checkin_ledger_account_id_provider_accounts_id_fk" FOREIGN KEY ("account_id") REFERENCES "provider_accounts"("id") ON DELETE cascade
|
|
20
|
+
);
|
|
21
|
+
INSERT INTO "daily_checkin_ledger__new" ("day_key", "account_id", "claimed_at")
|
|
22
|
+
SELECT "day_key", "account_id", "claimed_at" FROM "daily_checkin_ledger";
|
|
23
|
+
DROP TABLE "daily_checkin_ledger";
|
|
24
|
+
ALTER TABLE "daily_checkin_ledger__new" RENAME TO "daily_checkin_ledger";
|
|
25
|
+
|
|
26
|
+
PRAGMA defer_foreign_keys = OFF;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cartethyia",
|
|
3
|
-
"version": "2.7.
|
|
3
|
+
"version": "2.7.5",
|
|
4
4
|
"description": "A powerful, self-hosted reverse proxy for OpenAI- and Anthropic-compatible AI clients, powered by native Bun and Elysia. It serves both protocols from a single server, routes every model across any configured provider, and translates requests and responses in real time — streaming and prompt caching included. Underneath it runs a full delivery engine: per-account health tracking, quota and cooldown enforcement, automatic failover across pools and providers, usage accounting, and telemetry. Point OpenCode, Cline, Claude Code, Codex, or any compatible client at Cartethyia and it keeps its native protocol while the gateway absorbs every provider-specific difference behind it. Runs on embedded SQLite or external PostgreSQL with optional Redis coordination, ships as a global CLI with a system-tray console, and needs only Bun 1.4+ alongside Node.js/npm.",
|
|
5
5
|
"license": "GPL-3.0-only",
|
|
6
6
|
"type": "module",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"bun": ">=1.4.0"
|
|
40
40
|
},
|
|
41
41
|
"scripts": {
|
|
42
|
-
"dev": "bun run dev:
|
|
42
|
+
"dev": "bun run dev:watch",
|
|
43
43
|
"dev:watch": "bun run scripts/dev/supervisor.ts",
|
|
44
44
|
"test": "bun run scripts/test/run.ts",
|
|
45
45
|
"build": "bun run scripts/build/build.ts",
|
|
@@ -47,14 +47,13 @@
|
|
|
47
47
|
"setup": "bun run scripts/cli/setup.ts",
|
|
48
48
|
"start": "bun run scripts/cli/main.ts start",
|
|
49
49
|
"doctor": "bun run scripts/cli/doctor.ts",
|
|
50
|
-
"probe:egress": "bun run scripts/tools/probe-egress.ts",
|
|
51
50
|
"restart": "bun run scripts/build/restart.ts",
|
|
52
51
|
"build:aot": "bun run scripts/build/aot.ts",
|
|
53
52
|
"dev:stack": "concurrently -n BACKEND,DASHBOARD -c cyan,magenta --kill-others-on-fail \"bun run dev:backend\" \"bun run dashboard:dev\"",
|
|
54
53
|
"typecheck": "tsc --noEmit",
|
|
55
54
|
"test:watch": "bun run scripts/test/run.ts --watch",
|
|
56
55
|
"test-db:up": "docker compose -f docker-compose.test.yml up -d --wait postgres-test",
|
|
57
|
-
"dev:backend": "bun run
|
|
56
|
+
"dev:backend": "bun run src/main.ts",
|
|
58
57
|
"dev:console-auth": "bun run scripts/test/console-session.ts",
|
|
59
58
|
"dev:visual-baseline": "bun run scripts/test/visual-baseline.ts",
|
|
60
59
|
"build:binary": "bun run scripts/build/compile.ts",
|
|
@@ -78,7 +77,6 @@
|
|
|
78
77
|
"jsonrepair": "^3.15.0",
|
|
79
78
|
"pg": "8.23.0",
|
|
80
79
|
"pino": "^10.3.1",
|
|
81
|
-
"pino-pretty": "^13.1.3",
|
|
82
80
|
"protobufjs": "^7.6.5",
|
|
83
81
|
"socks-proxy-agent": "^10.1.0",
|
|
84
82
|
"systray2": "2.1.4",
|
|
@@ -91,6 +89,7 @@
|
|
|
91
89
|
"bun-types": "1.4.0",
|
|
92
90
|
"concurrently": "^10.0.5",
|
|
93
91
|
"drizzle-kit": "^0.31.11",
|
|
92
|
+
"pino-pretty": "^13.1.3",
|
|
94
93
|
"typescript": "5.9.2"
|
|
95
94
|
}
|
|
96
95
|
}
|