cartethyia 2.7.8 → 2.8.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/.env.example +3 -3
- package/README.md +29 -59
- package/dist/dashboard/assets/BannedPage-Cc0vKpMG.js +1 -0
- package/dist/dashboard/assets/BannedPage-Cc0vKpMG.js.gz +0 -0
- package/dist/dashboard/assets/{CliToolDetailPage-BRWKPQPf.js → CliToolDetailPage-Bqj2aa1T.js} +1 -1
- package/dist/dashboard/assets/CliToolDetailPage-Bqj2aa1T.js.gz +0 -0
- package/dist/dashboard/assets/{CliToolsPage-BP-Y5iHN.js → CliToolsPage-CXsaOAO2.js} +1 -1
- package/dist/dashboard/assets/CliToolsPage-CXsaOAO2.js.gz +0 -0
- package/dist/dashboard/assets/CombosPage-BeLpJ4ma.js +1 -0
- package/dist/dashboard/assets/CombosPage-BeLpJ4ma.js.gz +0 -0
- package/dist/dashboard/assets/ConsoleLogPage-DnV0uZ3m.js +1 -0
- package/dist/dashboard/assets/ConsoleLogPage-DnV0uZ3m.js.gz +0 -0
- package/dist/dashboard/assets/CustomizationPage-CBxAjo63.js +1 -0
- package/dist/dashboard/assets/CustomizationPage-CBxAjo63.js.gz +0 -0
- package/dist/dashboard/assets/HealthEventsModal-B5yEE0k6.js +1 -0
- package/dist/dashboard/assets/HealthEventsModal-B5yEE0k6.js.gz +0 -0
- package/dist/dashboard/assets/{InjectSystemPromptPanel-Cv-2Ol_K.js → InjectSystemPromptPanel-BWFLECmz.js} +2 -2
- package/dist/dashboard/assets/InjectSystemPromptPanel-BWFLECmz.js.gz +0 -0
- package/dist/dashboard/assets/{LoginPage-bKfz_b1K.js → LoginPage-CgoPc5B9.js} +1 -1
- package/dist/dashboard/assets/LoginPage-CgoPc5B9.js.gz +0 -0
- package/dist/dashboard/assets/{ModelPicker-B-WQxx_H.js → ModelPicker-D9bFQern.js} +1 -1
- package/dist/dashboard/assets/ModelPicker-D9bFQern.js.gz +0 -0
- package/dist/dashboard/assets/OverviewPage-B_p4tL8k.js +1 -0
- package/dist/dashboard/assets/OverviewPage-B_p4tL8k.js.gz +0 -0
- package/dist/dashboard/assets/ProviderDetailPage-rs5E2rxv.js +8 -0
- package/dist/dashboard/assets/ProviderDetailPage-rs5E2rxv.js.gz +0 -0
- package/dist/dashboard/assets/ProviderIcon-D_0PiZtg.js +1 -0
- package/dist/dashboard/assets/ProviderIcon-D_0PiZtg.js.gz +0 -0
- package/dist/dashboard/assets/ProvidersPage-CLI2bJTK.js +1 -0
- package/dist/dashboard/assets/ProvidersPage-CLI2bJTK.js.gz +0 -0
- package/dist/dashboard/assets/{ProxyPage-emlTuxz6.js → ProxyPage-BwNC_-Cx.js} +1 -1
- package/dist/dashboard/assets/ProxyPage-BwNC_-Cx.js.gz +0 -0
- package/dist/dashboard/assets/QuotaPage-DA-a1iSN.js +1 -0
- package/dist/dashboard/assets/QuotaPage-DA-a1iSN.js.gz +0 -0
- package/dist/dashboard/assets/SettingsPage-CctTga2C.js +1 -0
- package/dist/dashboard/assets/SettingsPage-CctTga2C.js.gz +0 -0
- package/dist/dashboard/assets/{SetupPage-CUZrKs9r.js → SetupPage-febLU4r1.js} +1 -1
- package/dist/dashboard/assets/SetupPage-febLU4r1.js.gz +0 -0
- package/dist/dashboard/assets/{StudioPage-jWmUdDpy.js → StudioPage-M6fvR5Wz.js} +1 -1
- package/dist/dashboard/assets/StudioPage-M6fvR5Wz.js.gz +0 -0
- package/dist/dashboard/assets/UsagePage-nyeuRqz9.js +56 -0
- package/dist/dashboard/assets/UsagePage-nyeuRqz9.js.gz +0 -0
- package/dist/dashboard/assets/api-keys-BFOlvrJC.js +1 -0
- package/dist/dashboard/assets/api-keys-BFOlvrJC.js.gz +0 -0
- package/dist/dashboard/assets/app-Dx2QgsNj.css +2 -0
- package/dist/dashboard/assets/app-Dx2QgsNj.css.gz +0 -0
- package/dist/dashboard/assets/{assert-CidQVoNo.js → assert-CqTLw5e7.js} +1 -1
- package/dist/dashboard/assets/assert-CqTLw5e7.js.gz +0 -0
- package/dist/dashboard/assets/{badge-DyI_mJfi.js → badge-C83EqLB0.js} +1 -1
- package/dist/dashboard/assets/badge-C83EqLB0.js.gz +0 -0
- package/dist/dashboard/assets/ban-durations-B58FyRxC.js +1 -0
- package/dist/dashboard/assets/ban-durations-B58FyRxC.js.gz +0 -0
- package/dist/dashboard/assets/{banner-B-yXtCqb.js → banner-D1xn7pIe.js} +1 -1
- package/dist/dashboard/assets/banner-D1xn7pIe.js.gz +0 -0
- package/dist/dashboard/assets/brand/bansos_page.webp +0 -0
- package/dist/dashboard/assets/brand/denia_bansos.webp +0 -0
- package/dist/dashboard/assets/brand/favicon.webp +0 -0
- package/dist/dashboard/assets/brand/login_register.webp +0 -0
- package/dist/dashboard/assets/brand/login_register_initial.webp +0 -0
- package/dist/dashboard/assets/brand/og_bansos.webp +0 -0
- package/dist/dashboard/assets/brand/og_image.webp +0 -0
- package/dist/dashboard/assets/brand/sidebar_ico.webp +0 -0
- package/dist/dashboard/assets/{card-_HwAEqFF.js → card-DU3Lq5Lm.js} +1 -1
- package/dist/dashboard/assets/card-DU3Lq5Lm.js.gz +0 -0
- package/dist/dashboard/assets/cli-tools-Dw1U_drK.js +1 -0
- package/dist/dashboard/assets/cli-tools-Dw1U_drK.js.gz +0 -0
- package/dist/dashboard/assets/{clipboard-button-ByjCk0o9.js → clipboard-button-CEL5Sg_J.js} +1 -1
- package/dist/dashboard/assets/clipboard-button-CEL5Sg_J.js.gz +0 -0
- package/dist/dashboard/assets/{dialog-BZhOlfz-.js → dialog-BjFR5UHy.js} +1 -1
- package/dist/dashboard/assets/dialog-BjFR5UHy.js.gz +0 -0
- package/dist/dashboard/assets/{drawer-BADqIRYP.js → drawer-HvBW0AjI.js} +1 -1
- package/dist/dashboard/assets/drawer-HvBW0AjI.js.gz +0 -0
- package/dist/dashboard/assets/entry-BSu3gFlt.js +4 -0
- package/dist/dashboard/assets/entry-BSu3gFlt.js.gz +0 -0
- package/dist/dashboard/assets/{entry-COaC-irN.js → entry-CECVELyy.js} +1 -1
- package/dist/dashboard/assets/entry-CECVELyy.js.gz +0 -0
- package/dist/dashboard/assets/entry-DYYofQ7W.js +1 -0
- package/dist/dashboard/assets/entry-DYYofQ7W.js.gz +0 -0
- package/dist/dashboard/assets/{formatters-DcHJyRiu.js → formatters-DLW4i8zK.js} +1 -1
- package/dist/dashboard/assets/formatters-DLW4i8zK.js.gz +0 -0
- package/dist/dashboard/assets/{index-CgKmFngv.js → index-1-fCqe64.js} +2 -2
- package/dist/dashboard/assets/index-1-fCqe64.js.gz +0 -0
- package/dist/dashboard/assets/{inline-B2BirKry.js → inline-DGvU2oLK.js} +1 -1
- package/dist/dashboard/assets/inline-DGvU2oLK.js.gz +0 -0
- package/dist/dashboard/assets/{input-D-qV9dKY.js → input-iNnO1X2K.js} +1 -1
- package/dist/dashboard/assets/input-iNnO1X2K.js.gz +0 -0
- package/dist/dashboard/assets/{layout-B7tVWhtV.js → layout-0q8UGypb.js} +1 -1
- package/dist/dashboard/assets/layout-0q8UGypb.js.gz +0 -0
- package/dist/dashboard/assets/{list-row-CtkGE3bF.js → list-row-C0w2bQjJ.js} +1 -1
- package/dist/dashboard/assets/list-row-C0w2bQjJ.js.gz +0 -0
- package/dist/dashboard/assets/{live-DGizF06-.js → live-M5aJ_xCa.js} +1 -1
- package/dist/dashboard/assets/live-M5aJ_xCa.js.gz +0 -0
- package/dist/dashboard/assets/{mutation-GU7XdEjz.js → mutation-BQ0ccH_A.js} +1 -1
- package/dist/dashboard/assets/mutation-BQ0ccH_A.js.gz +0 -0
- package/dist/dashboard/assets/{network-C9UE-bOr.js → network-BKeQGT3K.js} +1 -1
- package/dist/dashboard/assets/network-BKeQGT3K.js.gz +0 -0
- package/dist/dashboard/assets/{numbers-BnAd22a_.js → numbers-CivAk3da.js} +1 -1
- package/dist/dashboard/assets/numbers-CivAk3da.js.gz +0 -0
- package/dist/dashboard/assets/{pagination-BAywyMzS.js → pagination-CpzvI5ep.js} +1 -1
- package/dist/dashboard/assets/pagination-CpzvI5ep.js.gz +0 -0
- package/dist/dashboard/assets/providers/devin.svg +9 -0
- package/dist/dashboard/assets/providers/devin.svg.gz +0 -0
- package/dist/dashboard/assets/providers/windsurf.svg +10 -0
- package/dist/dashboard/assets/providers/windsurf.svg.gz +0 -0
- package/dist/dashboard/assets/providers/zro.svg +3 -0
- package/dist/dashboard/assets/providers/zro.svg.gz +0 -0
- package/dist/dashboard/assets/{query-keys-YSoQOUh6.js → query-keys-IKLh0YFd.js} +1 -1
- package/dist/dashboard/assets/query-keys-IKLh0YFd.js.gz +0 -0
- package/dist/dashboard/assets/quota-DiPD6UKH.js +1 -0
- package/dist/dashboard/assets/quota-DiPD6UKH.js.gz +0 -0
- package/dist/dashboard/assets/routing-BFQX2VBc.js +1 -0
- package/dist/dashboard/assets/routing-BFQX2VBc.js.gz +0 -0
- package/dist/dashboard/assets/{select-BCOcv8WK.js → select-CXbck0jG.js} +2 -2
- package/dist/dashboard/assets/select-CXbck0jG.js.gz +0 -0
- package/dist/dashboard/assets/settings-C_XvMHh9.js +1 -0
- package/dist/dashboard/assets/settings-C_XvMHh9.js.gz +0 -0
- package/dist/dashboard/assets/{stack-ByKt3Q1g.js → stack-DggRiCxE.js} +1 -1
- package/dist/dashboard/assets/stack-DggRiCxE.js.gz +0 -0
- package/dist/dashboard/assets/{state-DXbGTx7N.js → state-ClFzfbYp.js} +1 -1
- package/dist/dashboard/assets/state-ClFzfbYp.js.gz +0 -0
- package/dist/dashboard/assets/story/25817331.webp +0 -0
- package/dist/dashboard/assets/story/Shorekeeper.webp +0 -0
- package/dist/dashboard/assets/story/cartethyia-god.webp +0 -0
- package/dist/dashboard/assets/story/fleurdelys_plus.webp +0 -0
- package/dist/dashboard/assets/story/jinhsi-blossom.webp +0 -0
- package/dist/dashboard/assets/story/phrolova-a.webp +0 -0
- package/dist/dashboard/assets/story/requestdeniawokkjpg.webp +0 -0
- package/dist/dashboard/assets/story/wuthering-waves-hiyuki-aemeath-hiyuki-rover.webp +0 -0
- package/dist/dashboard/assets/{switch-ZeTsW623.js → switch-CTIFxKqS.js} +1 -1
- package/dist/dashboard/assets/switch-CTIFxKqS.js.gz +0 -0
- package/dist/dashboard/assets/{useMutation-CbCP4w1o.js → useMutation-BClG3yWj.js} +1 -1
- package/dist/dashboard/assets/useMutation-BClG3yWj.js.gz +0 -0
- package/dist/dashboard/console-backgrounds.webp +0 -0
- package/dist/dashboard/console-backgrounds_initial.webp +0 -0
- package/dist/dashboard/donation/qris-risun-marke.webp +0 -0
- package/dist/dashboard/index.html +3 -3
- package/dist/dashboard/index.html.gz +0 -0
- package/dist/dashboard/precompressed-assets.json +59 -56
- package/migrations/full-postgres/0044_add_models_warning_metadata.sql +10 -0
- package/migrations/full-postgres/0045_migrate_workbuddy_to_codebuddy.sql +156 -0
- package/migrations/full-postgres/0046_add_accounts_quota_plan_fetched_at.sql +7 -0
- package/migrations/lite-sqlite3/0044_add_models_warning_metadata.sql +11 -0
- package/migrations/lite-sqlite3/0045_migrate_workbuddy_to_codebuddy.sql +156 -0
- package/migrations/lite-sqlite3/0046_add_accounts_quota_plan_fetched_at.sql +4 -0
- package/package.json +1 -1
- package/src/boot/app.ts +10 -13
- package/src/boot/dependencies.ts +12 -4
- package/src/boot/flush.ts +20 -0
- package/src/boot/lifecycle.ts +7 -5
- package/src/config/cooldowns.ts +1 -1
- package/src/config/routing.ts +26 -0
- package/src/config/spec-metadata.ts +72 -0
- package/src/config/spec.ts +20 -6
- package/src/console/api-keys/contracts.ts +12 -1
- package/src/console/api-keys/routes.ts +50 -31
- package/src/console/auth/account-reset.ts +7 -9
- package/src/console/backup/contracts.ts +4 -0
- package/src/console/backup/export-endpoint.ts +7 -5
- package/src/console/cli-tools/service.ts +6 -12
- package/src/console/console-router-guards.ts +23 -16
- package/src/console/console-router.ts +7 -0
- package/src/console/dashboard-assets.ts +5 -5
- package/src/console/domain-registration.ts +27 -2
- package/src/console/inferhub/normalize.ts +24 -28
- package/src/console/inferhub/types.ts +3 -0
- package/src/console/ip-bans/routes.ts +93 -0
- package/src/console/observability/store.ts +0 -53
- package/src/console/providers/catalog/catalog-projections.ts +5 -2
- package/src/console/providers/catalog/contracts.ts +123 -0
- package/src/console/providers/catalog/discover-constants.ts +6 -0
- package/src/console/providers/catalog/model-operations.ts +122 -10
- package/src/console/providers/catalog/provider-operations.ts +116 -8
- package/src/console/providers/catalog/public-model-store.ts +0 -0
- package/src/console/providers/catalog/routes.ts +65 -4
- package/src/console/providers/catalog/store-helpers.ts +30 -1
- package/src/console/providers/catalog/store.ts +249 -4
- package/src/console/quota/account-quota-global.ts +97 -19
- package/src/console/quota/account-quota-shared.ts +49 -0
- package/src/console/quota/account-quota-tenant.ts +6 -18
- package/src/console/quota/native-identity.ts +2 -0
- package/src/console/quota/quota-view.ts +19 -3
- package/src/console/routing/pools/operations.ts +31 -46
- package/src/console/settings/contracts.ts +18 -0
- package/src/console/settings/store.ts +32 -0
- package/src/console/shared/errors.ts +33 -6
- package/src/console/system-prompt/contracts.ts +0 -1
- package/src/main.ts +3 -3
- package/src/network/pool/byte-accounting.ts +3 -2
- package/src/network/pool/selector.ts +182 -39
- package/src/network/pool-cooldown-store.ts +89 -14
- package/src/network/pool-health.ts +49 -61
- package/src/network/rate-limit-verdict.ts +1 -1
- package/src/network/ssrf.ts +6 -6
- package/src/observability/event-log.ts +7 -361
- package/src/observability/event-query.ts +18 -4
- package/src/observability/performance-metrics.ts +9 -0
- package/src/observability/runtime-metrics.ts +14 -9
- package/src/observability/telemetry-buffer.ts +15 -25
- package/src/observability/telemetry-reconciliation.ts +9 -37
- package/src/observability/telemetry-row.ts +125 -0
- package/src/persistence/db-mode.ts +4 -1
- package/src/persistence/dialect.ts +30 -0
- package/src/persistence/migrate.ts +6 -3
- package/src/persistence/schema.ts +28 -2
- package/src/persistence/ttl-cache.ts +20 -2
- package/src/protocol/codecs.ts +1 -1
- package/src/protocol/dsml.ts +35 -87
- package/src/protocol/gateway-error.ts +1 -0
- package/src/protocol/markup-stream-parser.ts +195 -0
- package/src/protocol/reasoning-text.ts +19 -0
- package/src/protocol/reasoning.ts +1 -1
- package/src/protocol/request/chat.ts +14 -14
- package/src/protocol/request/gemini.ts +8 -2
- package/src/protocol/request/messages.ts +4 -5
- package/src/protocol/response/chat.ts +12 -20
- package/src/protocol/response/gemini.ts +6 -1
- package/src/protocol/response/omp-tool-call-markup.ts +43 -86
- package/src/protocol/response/responses.ts +18 -2
- package/src/protocol/sse-decoder.ts +25 -8
- package/src/protocol/stop-reason.ts +23 -1
- package/src/protocol/stream-error-frames.ts +13 -3
- package/src/protocol/think-split.ts +112 -0
- package/src/protocol/translation/dialect/qwen.ts +26 -58
- package/src/protocol/translation/quirks.ts +1 -1
- package/src/protocol/translation/tool-repair.ts +2 -2
- package/src/protocol/upstream/send-claude-messages.ts +15 -4
- package/src/protocol/upstream-parsing.ts +1 -1
- package/src/providers/adapters/compatible-adapter.ts +78 -17
- package/src/providers/authentication/oauth-client.ts +1 -1
- package/src/providers/authentication/oauth-device-flow.ts +98 -8
- package/src/providers/authentication/oauth-refresh-service.ts +153 -59
- package/src/providers/configured-provider.ts +148 -0
- package/src/providers/default-registry.ts +117 -27
- package/src/providers/discovery/discovery-types.ts +12 -0
- package/src/providers/discovery/probe-phases.ts +74 -33
- package/src/providers/discovery/probing-service.ts +293 -165
- package/src/providers/integrations/alibabacp/alibabacp-models.ts +1 -2
- package/src/providers/integrations/{dashscope-models.ts → alibabacp/dashscope-models.ts} +2 -2
- package/src/providers/integrations/antigravity/antigravity-protocol.ts +121 -2
- package/src/providers/integrations/antigravity/antigravity.ts +13 -2
- package/src/providers/integrations/buddy/buddy-catalog-shared.ts +72 -34
- package/src/providers/integrations/buddy/buddy-chat-shared.ts +191 -35
- package/src/providers/integrations/buddy/buddy-checkin.ts +17 -39
- package/src/providers/integrations/buddy/buddy-conversation-headers.ts +2 -2
- package/src/providers/integrations/buddy/buddy-discovery-shared.ts +5 -5
- package/src/providers/integrations/buddy/buddy-identity.ts +89 -6
- package/src/providers/integrations/buddy/buddy-media.ts +4 -5
- package/src/providers/integrations/buddy/buddy-oauth-shared.ts +2 -2
- package/src/providers/integrations/buddy/buddy-quota-shared.ts +1 -1
- package/src/providers/integrations/buddy/buddy-usage-shared.ts +1 -3
- package/src/providers/integrations/buddy/capabilities.ts +6 -43
- package/src/providers/integrations/buddy/codebuddy/cn-catalog.ts +2 -1
- package/src/providers/integrations/buddy/codebuddy/cn-provider.ts +23 -1
- package/src/providers/integrations/buddy/codebuddy/provider.ts +6 -2
- package/src/providers/integrations/buddy/codebuddy/shared.ts +38 -27
- package/src/providers/integrations/claude/claude-quota.ts +14 -17
- package/src/providers/integrations/cline/cline.ts +2 -2
- package/src/providers/integrations/commandcode/quota.ts +22 -28
- package/src/providers/integrations/cursor/cursor-auth.ts +0 -8
- package/src/providers/integrations/cursor/cursor-catalog.ts +2 -0
- package/src/providers/integrations/cursor/cursor-exec.ts +745 -0
- package/src/providers/integrations/cursor/cursor-http2.ts +2 -0
- package/src/providers/integrations/cursor/cursor-request.ts +35 -20
- package/src/providers/integrations/cursor/cursor-shared.ts +26 -5
- package/src/providers/integrations/cursor/cursor.ts +139 -70
- package/src/providers/integrations/cursor/protocol/messages.ts +22 -29
- package/src/providers/integrations/cursor/protocol/protobuf-schema.ts +37 -0
- package/src/providers/integrations/cursor/protocol/tool-canonical.ts +26 -100
- package/src/providers/integrations/devin/devin-auth.ts +353 -0
- package/src/providers/integrations/devin/devin-catalog.ts +207 -0
- package/src/providers/integrations/devin/devin-http.ts +91 -0
- package/src/providers/integrations/devin/devin-quota.ts +214 -0
- package/src/providers/integrations/devin/devin-shared.ts +111 -0
- package/src/providers/integrations/devin/devin.ts +539 -0
- package/src/providers/integrations/devin/protocol/devin-proto.ts +558 -0
- package/src/providers/integrations/devin/protocol/framing.ts +124 -0
- package/src/providers/integrations/factory/factory-oauth.ts +17 -44
- package/src/providers/integrations/factory/factory.ts +2 -2
- package/src/providers/integrations/freebuff/assets/official-system-manager.txt +88 -0
- package/src/providers/integrations/freebuff/assets/official-system-worker.txt +57 -0
- package/src/providers/integrations/freebuff/assets/official-tools.json +1070 -0
- package/src/providers/integrations/freebuff/freebuff-catalog.ts +120 -0
- package/src/providers/integrations/freebuff/freebuff-constants.ts +1233 -0
- package/src/providers/integrations/freebuff/freebuff-discovery.ts +108 -0
- package/src/providers/integrations/freebuff/freebuff-oauth.ts +240 -0
- package/src/providers/integrations/freebuff/freebuff-quota.ts +260 -0
- package/src/providers/integrations/freebuff/freebuff-virtual.ts +89 -0
- package/src/providers/integrations/freebuff/freebuff.ts +682 -0
- package/src/providers/integrations/freepi/freepi-catalog.ts +60 -0
- package/src/providers/integrations/freepi/freepi-discovery.ts +82 -0
- package/src/providers/integrations/freepi/freepi-headers.ts +21 -0
- package/src/providers/integrations/freepi/freepi-oauth.ts +142 -0
- package/src/providers/integrations/freepi/freepi-protocol.ts +242 -0
- package/src/providers/integrations/freepi/freepi-quota.ts +126 -0
- package/src/providers/integrations/freepi/freepi-realm.ts +35 -0
- package/src/providers/integrations/freepi/freepi.ts +292 -0
- package/src/providers/integrations/gemini.ts +2 -2
- package/src/providers/integrations/grok/grok-oauth.ts +48 -45
- package/src/providers/integrations/grok/grok-ratelimit-store.ts +10 -17
- package/src/providers/integrations/grok/grok-turn-index.ts +11 -16
- package/src/providers/integrations/hermes/hermes-oauth.ts +94 -0
- package/src/providers/integrations/{hermes.ts → hermes/hermes.ts} +13 -21
- package/src/providers/integrations/hermes/index.ts +2 -0
- package/src/providers/integrations/kiro/kiro-catalog.ts +17 -1
- package/src/providers/integrations/kiro/kiro-discovery.ts +10 -12
- package/src/providers/integrations/kiro/kiro-quota.ts +8 -4
- package/src/providers/integrations/kiro/kiro.ts +15 -19
- package/src/providers/integrations/ollamacloud/index.ts +2 -0
- package/src/providers/integrations/{ollamacloud-models.ts → ollamacloud/models.ts} +2 -2
- package/src/providers/integrations/{ollamacloud-quota.ts → ollamacloud/quota.ts} +3 -3
- package/src/providers/integrations/opencode/fingerprint.ts +1 -1
- package/src/providers/integrations/opencode/opencode-go-quota.ts +2 -8
- package/src/providers/integrations/perch/perch-catalog.ts +105 -0
- package/src/providers/integrations/perch/perch-credential.ts +25 -0
- package/src/providers/integrations/perch/perch-oauth.ts +170 -0
- package/src/providers/integrations/perch/perch-protocol.ts +208 -0
- package/src/providers/integrations/perch/perch-quota.ts +123 -0
- package/src/providers/integrations/perch/perch-realm.ts +82 -0
- package/src/providers/integrations/perch/perch-system-prompt.ts +13 -0
- package/src/providers/integrations/perch/perch.ts +305 -0
- package/src/providers/integrations/perch/saffron-system-prompt.txt +8 -0
- package/src/providers/integrations/qoder/chat-proto.ts +328 -328
- package/src/providers/integrations/qoder/claim-qoder-credits.ts +19 -60
- package/src/providers/integrations/qoder/qoder-adapter.ts +90 -40
- package/src/providers/integrations/qoder/qoder-auth.ts +101 -29
- package/src/providers/integrations/qoder/qoder-cache.ts +32 -0
- package/src/providers/integrations/qoder/qoder-catalog.ts +26 -6
- package/src/providers/integrations/qoder/qoder-chat.ts +7 -21
- package/src/providers/integrations/qoder/qoder-checkin.ts +6 -6
- package/src/providers/integrations/qoder/qoder-grpc.ts +210 -7
- package/src/providers/integrations/qoder/qoder-ide.ts +5 -108
- package/src/providers/integrations/qoder/qoder-identity-cache.ts +184 -0
- package/src/providers/integrations/qoder/qoder-native-identity-store.ts +83 -18
- package/src/providers/integrations/qoder/qoder-realm.ts +9 -6
- package/src/providers/integrations/qoder/qoder-umid.ts +109 -342
- package/src/providers/integrations/qoder/qoder-virtual.ts +33 -1
- package/src/providers/integrations/qoder/qoder.ts +3 -7
- package/src/providers/integrations/trae/trae-catalog.ts +9 -14
- package/src/providers/integrations/trae/trae-headers.ts +36 -11
- package/src/providers/integrations/trae/trae-oauth.ts +14 -17
- package/src/providers/integrations/trae/trae-protocol.ts +12 -11
- package/src/providers/integrations/trae/trae-quota.ts +96 -36
- package/src/providers/integrations/trae/trae-realm.ts +74 -15
- package/src/providers/integrations/trae/trae.ts +99 -26
- package/src/providers/integrations/zcode-start-plan/provider.ts +226 -23
- package/src/providers/integrations/zcode-start-plan/quota.ts +19 -2
- package/src/providers/integrations/zro/zro.ts +204 -0
- package/src/providers/operations/account-error-classification.ts +235 -278
- package/src/providers/operations/account-health-service.ts +273 -26
- package/src/providers/operations/account-refresh-status.ts +269 -0
- package/src/providers/operations/account-tier.ts +66 -0
- package/src/providers/operations/client-version-resolver.ts +1 -1
- package/src/providers/operations/client-versions.ts +42 -150
- package/src/providers/operations/cooldown-rules.ts +56 -0
- package/src/providers/operations/{model-catalog-cache.ts → provider-caches.ts} +68 -16
- package/src/providers/operations/provider-catalog-seeder.ts +4 -0
- package/src/providers/operations/provider-catalog-service.ts +1 -1
- package/src/providers/operations/provider-credential-service.ts +102 -32
- package/src/providers/operations/provider-rules/github.ts +48 -0
- package/src/providers/operations/provider-rules/grok.ts +33 -0
- package/src/providers/operations/provider-rules/inception.ts +49 -0
- package/src/providers/operations/provider-rules/index.ts +32 -0
- package/src/providers/operations/provider-rules/perch.ts +37 -0
- package/src/providers/operations/provider-rules/qoder.ts +70 -0
- package/src/providers/operations/provider-rules/trae.ts +81 -0
- package/src/providers/provider-contracts.ts +33 -2
- package/src/providers/{provider-credential-resolver.ts → provider-credentials.ts} +40 -3
- package/src/providers/provider-metadata.ts +99 -14
- package/src/providers/provider-model-definition.ts +36 -0
- package/src/providers/provider-probe.ts +15 -1
- package/src/providers/provider-registry.ts +42 -33
- package/src/providers/quota/quota-limit-windows.ts +16 -5
- package/src/providers/quota/quota-support.ts +1 -1
- package/src/providers/quota/quota-window-parser.ts +90 -18
- package/src/providers/quota/refresh.ts +96 -18
- package/src/security/abuse.ts +71 -0
- package/src/security/api-key-auth-cache.ts +1 -1
- package/src/security/api-key-auth.ts +6 -2
- package/src/transport/dispatch/attempt-finalize.ts +14 -13
- package/src/transport/dispatch/attempt-loop.ts +71 -17
- package/src/transport/dispatch/generation.ts +2 -8
- package/src/transport/dispatch/native-shared.ts +25 -0
- package/src/transport/dispatch/proxy-request.ts +9 -46
- package/src/transport/dispatch/responses-compact.ts +2 -8
- package/src/transport/dispatch/streaming/finalize.ts +9 -6
- package/src/transport/dispatch/streaming/stream.ts +9 -36
- package/src/transport/dispatch/systemone.ts +2 -8
- package/src/transport/dispatch/token-count.ts +2 -6
- package/src/transport/dispatch/upstream.ts +67 -1
- package/src/transport/drain-endpoint.ts +31 -4
- package/src/transport/failure-policy.ts +129 -37
- package/src/transport/guards/body-policy.ts +7 -1
- package/src/transport/guards/error-lifecycle.ts +13 -1
- package/src/transport/guards/request-context.ts +22 -14
- package/src/transport/request/preparer.ts +81 -71
- package/src/transport/routing/bounded-lru.ts +14 -0
- package/src/transport/routing/drain-reserve.ts +129 -0
- package/src/transport/routing/plan-gate.ts +7 -1
- package/src/transport/routing/round-robin.ts +60 -0
- package/src/transport/routing/route-catalog.ts +123 -111
- package/src/transport/routing/route-model.ts +51 -9
- package/src/transport/routing/router.ts +418 -33
- package/src/transport/surface/adapters.ts +11 -2
- package/src/transport/surface/chat/adapter.ts +2 -2
- package/src/transport/surface/chat/encode.ts +47 -4
- package/src/transport/surface/chat/parse.ts +2 -12
- package/src/transport/surface/completion.ts +44 -33
- package/src/transport/surface/content-parts.ts +21 -0
- package/src/transport/surface/messages/adapter.ts +9 -2
- package/src/transport/surface/messages/encode.ts +11 -3
- package/src/transport/surface/messages/parse.ts +2 -1
- package/src/transport/surface/messages/stream.ts +33 -17
- package/src/transport/surface/responses/encode.ts +34 -6
- package/src/transport/surface/responses/parse.ts +3 -11
- package/src/workers/daily-checkin.ts +1 -1
- package/src/workers/quota-refresh-sweep.ts +1 -1
- package/src/workers/scheduler.ts +22 -4
- package/dist/dashboard/assets/BannedPage-DeIbIiBU.js +0 -1
- package/dist/dashboard/assets/BannedPage-DeIbIiBU.js.gz +0 -0
- package/dist/dashboard/assets/CliToolDetailPage-BRWKPQPf.js.gz +0 -0
- package/dist/dashboard/assets/CliToolsPage-BP-Y5iHN.js.gz +0 -0
- package/dist/dashboard/assets/CombosPage-B7JHozVa.js +0 -1
- package/dist/dashboard/assets/CombosPage-B7JHozVa.js.gz +0 -0
- package/dist/dashboard/assets/ConsoleLogPage-GX7iGGcu.js +0 -1
- package/dist/dashboard/assets/ConsoleLogPage-GX7iGGcu.js.gz +0 -0
- package/dist/dashboard/assets/CustomizationPage-HVonbGEa.js +0 -1
- package/dist/dashboard/assets/CustomizationPage-HVonbGEa.js.gz +0 -0
- package/dist/dashboard/assets/HealthEventsModal-xaut4OJ9.js +0 -1
- package/dist/dashboard/assets/HealthEventsModal-xaut4OJ9.js.gz +0 -0
- package/dist/dashboard/assets/InjectSystemPromptPanel-Cv-2Ol_K.js.gz +0 -0
- package/dist/dashboard/assets/LoginPage-bKfz_b1K.js.gz +0 -0
- package/dist/dashboard/assets/ModelPicker-B-WQxx_H.js.gz +0 -0
- package/dist/dashboard/assets/OverviewPage-Z9pJZFo8.js +0 -1
- package/dist/dashboard/assets/OverviewPage-Z9pJZFo8.js.gz +0 -0
- package/dist/dashboard/assets/ProviderDetailPage-CMeDBxR1.js +0 -7
- package/dist/dashboard/assets/ProviderDetailPage-CMeDBxR1.js.gz +0 -0
- package/dist/dashboard/assets/ProviderIcon-jjqXJDA3.js +0 -1
- package/dist/dashboard/assets/ProviderIcon-jjqXJDA3.js.gz +0 -0
- package/dist/dashboard/assets/ProvidersPage-BXPdOpG4.js +0 -1
- package/dist/dashboard/assets/ProvidersPage-BXPdOpG4.js.gz +0 -0
- package/dist/dashboard/assets/ProxyPage-emlTuxz6.js.gz +0 -0
- package/dist/dashboard/assets/QuotaPage-CMJKNYWb.js +0 -1
- package/dist/dashboard/assets/QuotaPage-CMJKNYWb.js.gz +0 -0
- package/dist/dashboard/assets/SettingsPage-BSy7EwGo.js +0 -1
- package/dist/dashboard/assets/SettingsPage-BSy7EwGo.js.gz +0 -0
- package/dist/dashboard/assets/SetupPage-CUZrKs9r.js.gz +0 -0
- package/dist/dashboard/assets/StudioPage-jWmUdDpy.js.gz +0 -0
- package/dist/dashboard/assets/UsagePage-5F9tGVGG.js +0 -56
- package/dist/dashboard/assets/UsagePage-5F9tGVGG.js.gz +0 -0
- package/dist/dashboard/assets/api-keys-KvX83mRe.js +0 -1
- package/dist/dashboard/assets/api-keys-KvX83mRe.js.gz +0 -0
- package/dist/dashboard/assets/app-BEsU8hKs.css +0 -2
- package/dist/dashboard/assets/app-BEsU8hKs.css.gz +0 -0
- package/dist/dashboard/assets/assert-CidQVoNo.js.gz +0 -0
- package/dist/dashboard/assets/badge-DyI_mJfi.js.gz +0 -0
- package/dist/dashboard/assets/banner-B-yXtCqb.js.gz +0 -0
- package/dist/dashboard/assets/brand/bansos_page.png +0 -0
- package/dist/dashboard/assets/brand/denia_bansos.jpg +0 -0
- package/dist/dashboard/assets/brand/favicon.jpg +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/brand/sidebar_ico.jpg +0 -0
- package/dist/dashboard/assets/card-_HwAEqFF.js.gz +0 -0
- package/dist/dashboard/assets/cli-tools-Bwv5-zGZ.js +0 -1
- package/dist/dashboard/assets/cli-tools-Bwv5-zGZ.js.gz +0 -0
- package/dist/dashboard/assets/clipboard-button-ByjCk0o9.js.gz +0 -0
- package/dist/dashboard/assets/dialog-BZhOlfz-.js.gz +0 -0
- package/dist/dashboard/assets/drawer-BADqIRYP.js.gz +0 -0
- package/dist/dashboard/assets/entry-COaC-irN.js.gz +0 -0
- package/dist/dashboard/assets/entry-Ca7LSCet.js +0 -4
- package/dist/dashboard/assets/entry-Ca7LSCet.js.gz +0 -0
- package/dist/dashboard/assets/entry-PDd27uCd.js +0 -1
- package/dist/dashboard/assets/entry-PDd27uCd.js.gz +0 -0
- package/dist/dashboard/assets/formatters-DcHJyRiu.js.gz +0 -0
- package/dist/dashboard/assets/index-CgKmFngv.js.gz +0 -0
- package/dist/dashboard/assets/inline-B2BirKry.js.gz +0 -0
- package/dist/dashboard/assets/input-D-qV9dKY.js.gz +0 -0
- package/dist/dashboard/assets/layout-B7tVWhtV.js.gz +0 -0
- package/dist/dashboard/assets/list-row-CtkGE3bF.js.gz +0 -0
- package/dist/dashboard/assets/live-DGizF06-.js.gz +0 -0
- package/dist/dashboard/assets/minimize-2-BTmMTK4o.js +0 -1
- package/dist/dashboard/assets/minimize-2-BTmMTK4o.js.gz +0 -0
- package/dist/dashboard/assets/mutation-GU7XdEjz.js.gz +0 -0
- package/dist/dashboard/assets/network-C9UE-bOr.js.gz +0 -0
- package/dist/dashboard/assets/numbers-BnAd22a_.js.gz +0 -0
- package/dist/dashboard/assets/pagination-BAywyMzS.js.gz +0 -0
- package/dist/dashboard/assets/query-keys-YSoQOUh6.js.gz +0 -0
- package/dist/dashboard/assets/quota-DJ1QlAOq.js +0 -1
- package/dist/dashboard/assets/quota-DJ1QlAOq.js.gz +0 -0
- package/dist/dashboard/assets/routing-fnCsxgNO.js +0 -1
- package/dist/dashboard/assets/routing-fnCsxgNO.js.gz +0 -0
- package/dist/dashboard/assets/select-BCOcv8WK.js.gz +0 -0
- package/dist/dashboard/assets/settings-BxslsErn.js +0 -1
- package/dist/dashboard/assets/settings-BxslsErn.js.gz +0 -0
- package/dist/dashboard/assets/stack-ByKt3Q1g.js.gz +0 -0
- package/dist/dashboard/assets/state-DXbGTx7N.js.gz +0 -0
- package/dist/dashboard/assets/switch-ZeTsW623.js.gz +0 -0
- package/dist/dashboard/assets/useMutation-CbCP4w1o.js.gz +0 -0
- package/dist/dashboard/console-backgrounds.jpg +0 -0
- package/dist/dashboard/console-backgrounds_initial.jpg +0 -0
- package/dist/dashboard/donation/qris-risun-marke.png +0 -0
- package/src/providers/bundled-discovery-providers.ts +0 -98
- package/src/providers/configured-openai-providers.ts +0 -120
- package/src/providers/integrations/buddy/turing-device-token.ts +0 -262
- package/src/providers/integrations/buddy/workbuddy/cn-oauth.ts +0 -30
- package/src/providers/integrations/buddy/workbuddy/cn-provider.ts +0 -58
- package/src/providers/integrations/buddy/workbuddy/oauth.ts +0 -31
- package/src/providers/integrations/buddy/workbuddy/provider.ts +0 -209
- package/src/providers/integrations/buddy/workbuddy/quota.ts +0 -161
- package/src/providers/integrations/buddy/workbuddy/shared.ts +0 -285
- package/src/providers/operations/model-discovery-cache.ts +0 -34
- package/src/providers/operations/probe-fetch.ts +0 -15
- package/src/providers/operations/provider-version-cache.ts +0 -30
- package/src/providers/provider-capabilities.ts +0 -33
- package/src/providers/provider-credential-envelope.ts +0 -43
- /package/dist/dashboard/assets/{app-CTxoqyYB.js → app-DIXLjojg.js} +0 -0
- /package/dist/dashboard/assets/{app-CTxoqyYB.js.gz → app-DIXLjojg.js.gz} +0 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./jsx-runtime-CXUMngI_.js";import{m as t}from"./numbers-
|
|
1
|
+
import{t as e}from"./jsx-runtime-CXUMngI_.js";import{m as t}from"./numbers-CivAk3da.js";var n=e();function r({checked:e,onChange:r,disabled:i=!1,id:a,label:o,"aria-label":s,className:c=``}){return(0,n.jsxs)(`div`,{className:t(`switch-container ${i?`is-disabled`:``}`.trim(),c),children:[(0,n.jsx)(`button`,{type:`button`,id:a,role:`switch`,"aria-checked":e,"aria-label":s??o,disabled:i,onClick:i?void 0:()=>r(!e),className:`switch-track ${e?`is-checked`:``}`,children:(0,n.jsx)(`span`,{className:`switch-thumb`})}),o?(0,n.jsx)(`span`,{className:`switch-label`,children:o}):null]})}export{r as t};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e,r as t}from"./jsx-runtime-CXUMngI_.js";import{
|
|
1
|
+
import{o as e,r as t}from"./jsx-runtime-CXUMngI_.js";import{E as n}from"./assert-CqTLw5e7.js";import{C as r,M as i,N as a,O as o,b as s,v as c}from"./query-keys-IKLh0YFd.js";import{n as l}from"./mutation-BQ0ccH_A.js";var u=class extends s{#e;#t=void 0;#n;#r;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#i()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),i(this.options,t)||this.#e.getMutationCache().notify({type:`observerOptionsUpdated`,mutation:this.#n,observer:this}),t?.mutationKey&&this.options.mutationKey&&r(t.mutationKey)!==r(this.options.mutationKey)?this.reset():this.#n?.state.status===`pending`&&this.#n.setOptions(this.options)}onSubscribe(){this.listeners.size===1&&this.#n&&(this.#n.addObserver(this),this.#i())}onUnsubscribe(){this.hasListeners()||this.#n?.removeObserver(this)}onMutationUpdate(e){this.#i(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#n?.removeObserver(this),this.#n=void 0,this.#i(),this.#a()}mutate(e,t){return this.#r=t,this.#n?.removeObserver(this),this.#n=this.#e.getMutationCache().build(this.#e,this.options),this.#n.addObserver(this),this.#n.execute(e)}#i(){let e=this.#n?.state??l();this.#t={...e,isPending:e.status===`pending`,isSuccess:e.status===`success`,isError:e.status===`error`,isIdle:e.status===`idle`,mutate:this.mutate,reset:this.reset}}#a(e){c.batch(()=>{if(this.#r&&this.hasListeners()){let t=this.#t.variables,n=this.#t.context,r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(e?.type===`success`){try{this.#r.onSuccess?.(e.data,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(e.data,null,t,n,r)}catch(e){Promise.reject(e)}}else if(e?.type===`error`){try{this.#r.onError?.(e.error,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(void 0,e.error,t,n,r)}catch(e){Promise.reject(e)}}}this.listeners.forEach(e=>{e(this.#t)})})}},d=e(t(),1);function f(e,t){let r=n(t),[i]=d.useState(()=>new u(r,e));d.useEffect(()=>{i.setOptions(e)},[i,e]);let s=d.useSyncExternalStore(d.useCallback(e=>i.subscribe(c.batchCalls(e)),[i]),()=>i.getCurrentResult(),()=>i.getCurrentResult()),l=d.useCallback((...e)=>{i.mutate(e[0],e[1]).catch(o)},[i]);if(s.error&&a(i.options.throwOnError,[s.error]))throw s.error;return{...s,mutate:l,mutateAsync:s.mutate}}export{f as t};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
name="description"
|
|
10
10
|
content="One self-hosted gateway for OpenAI, Anthropic and 40 provider adapters. Route providers through one gateway with translation, failover and quotas."
|
|
11
11
|
/>
|
|
12
|
-
<link rel="icon" type="image/
|
|
12
|
+
<link rel="icon" type="image/webp" href="/assets/brand/favicon.webp" />
|
|
13
13
|
<!-- cartethyia:social-meta:start -->
|
|
14
14
|
<meta property="og:type" content="website" />
|
|
15
15
|
<meta property="og:title" content="Cartethyia — One Stop OpenAI & Anthropic Proxy Router" />
|
|
@@ -92,8 +92,8 @@
|
|
|
92
92
|
})();
|
|
93
93
|
</script>
|
|
94
94
|
<title>Cartethyia</title>
|
|
95
|
-
<script type="module" crossorigin src="/assets/index-
|
|
96
|
-
<meta name="cartethyia-dashboard-build" content="
|
|
95
|
+
<script type="module" crossorigin src="/assets/index-1-fCqe64.js"></script>
|
|
96
|
+
<meta name="cartethyia-dashboard-build" content="c2a1c3ba2c05827e" />
|
|
97
97
|
</head>
|
|
98
98
|
<body>
|
|
99
99
|
<div id="root"></div>
|
|
Binary file
|
|
@@ -1,77 +1,77 @@
|
|
|
1
1
|
{
|
|
2
|
-
"count":
|
|
2
|
+
"count": 122,
|
|
3
3
|
"assets": [
|
|
4
|
-
"assets/BannedPage-
|
|
5
|
-
"assets/CliToolDetailPage-
|
|
6
|
-
"assets/CliToolsPage-
|
|
7
|
-
"assets/CombosPage-
|
|
8
|
-
"assets/ConsoleLogPage-
|
|
9
|
-
"assets/CustomizationPage-
|
|
10
|
-
"assets/HealthEventsModal-
|
|
11
|
-
"assets/InjectSystemPromptPanel-
|
|
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/StudioPage-
|
|
4
|
+
"assets/BannedPage-Cc0vKpMG.js",
|
|
5
|
+
"assets/CliToolDetailPage-Bqj2aa1T.js",
|
|
6
|
+
"assets/CliToolsPage-CXsaOAO2.js",
|
|
7
|
+
"assets/CombosPage-BeLpJ4ma.js",
|
|
8
|
+
"assets/ConsoleLogPage-DnV0uZ3m.js",
|
|
9
|
+
"assets/CustomizationPage-CBxAjo63.js",
|
|
10
|
+
"assets/HealthEventsModal-B5yEE0k6.js",
|
|
11
|
+
"assets/InjectSystemPromptPanel-BWFLECmz.js",
|
|
12
|
+
"assets/LoginPage-CgoPc5B9.js",
|
|
13
|
+
"assets/ModelPicker-D9bFQern.js",
|
|
14
|
+
"assets/OverviewPage-B_p4tL8k.js",
|
|
15
|
+
"assets/ProviderDetailPage-rs5E2rxv.js",
|
|
16
|
+
"assets/ProviderIcon-D_0PiZtg.js",
|
|
17
|
+
"assets/ProvidersPage-CLI2bJTK.js",
|
|
18
|
+
"assets/ProxyPage-BwNC_-Cx.js",
|
|
19
|
+
"assets/QuotaPage-DA-a1iSN.js",
|
|
20
|
+
"assets/SettingsPage-CctTga2C.js",
|
|
21
|
+
"assets/SetupPage-febLU4r1.js",
|
|
22
|
+
"assets/StudioPage-M6fvR5Wz.js",
|
|
23
23
|
"assets/ToolIcon-CfeLA-Z_.js",
|
|
24
|
-
"assets/UsagePage-
|
|
25
|
-
"assets/api-keys-
|
|
26
|
-
"assets/app-
|
|
27
|
-
"assets/app-
|
|
24
|
+
"assets/UsagePage-nyeuRqz9.js",
|
|
25
|
+
"assets/api-keys-BFOlvrJC.js",
|
|
26
|
+
"assets/app-DIXLjojg.js",
|
|
27
|
+
"assets/app-Dx2QgsNj.css",
|
|
28
28
|
"assets/arrow-left-CpBxkoxI.js",
|
|
29
29
|
"assets/arrow-right-Dl5yKnp8.js",
|
|
30
30
|
"assets/arrow-up-59ms1iiT.js",
|
|
31
|
-
"assets/assert-
|
|
31
|
+
"assets/assert-CqTLw5e7.js",
|
|
32
32
|
"assets/backup-file-gdKIlg8U.js",
|
|
33
|
-
"assets/badge-
|
|
34
|
-
"assets/
|
|
33
|
+
"assets/badge-C83EqLB0.js",
|
|
34
|
+
"assets/ban-durations-B58FyRxC.js",
|
|
35
|
+
"assets/banner-D1xn7pIe.js",
|
|
35
36
|
"assets/brain-Cwed_72z.js",
|
|
36
|
-
"assets/card-
|
|
37
|
+
"assets/card-DU3Lq5Lm.js",
|
|
37
38
|
"assets/chevron-left-Bf6CaTSJ.js",
|
|
38
39
|
"assets/chevron-right-BXIy5l3h.js",
|
|
39
40
|
"assets/circle-alert-CntYHV5v.js",
|
|
40
41
|
"assets/circle-check-BU3v_mFW.js",
|
|
41
42
|
"assets/circle-question-mark-Cz4un8sH.js",
|
|
42
|
-
"assets/cli-tools-
|
|
43
|
-
"assets/clipboard-button-
|
|
43
|
+
"assets/cli-tools-Dw1U_drK.js",
|
|
44
|
+
"assets/clipboard-button-CEL5Sg_J.js",
|
|
44
45
|
"assets/database-Dz9N3zGd.js",
|
|
45
|
-
"assets/dialog-
|
|
46
|
+
"assets/dialog-BjFR5UHy.js",
|
|
46
47
|
"assets/dialog-actions-B1axpEg7.js",
|
|
47
48
|
"assets/download-dRFo5_Wu.js",
|
|
48
|
-
"assets/drawer-
|
|
49
|
-
"assets/entry-
|
|
50
|
-
"assets/entry-
|
|
51
|
-
"assets/entry-
|
|
49
|
+
"assets/drawer-HvBW0AjI.js",
|
|
50
|
+
"assets/entry-BSu3gFlt.js",
|
|
51
|
+
"assets/entry-CECVELyy.js",
|
|
52
|
+
"assets/entry-DYYofQ7W.js",
|
|
52
53
|
"assets/eye-C_hawfH4.js",
|
|
53
54
|
"assets/eye-off-Bk5g2luF.js",
|
|
54
55
|
"assets/fingerprint-pattern-BWuHtbW4.js",
|
|
55
|
-
"assets/formatters-
|
|
56
|
+
"assets/formatters-DLW4i8zK.js",
|
|
56
57
|
"assets/gauge-BbIMy7MB.js",
|
|
57
58
|
"assets/house-h9AZlJuT.js",
|
|
58
59
|
"assets/image-BPaouViG.js",
|
|
59
|
-
"assets/index-
|
|
60
|
-
"assets/inline-
|
|
61
|
-
"assets/input-
|
|
60
|
+
"assets/index-1-fCqe64.js",
|
|
61
|
+
"assets/inline-DGvU2oLK.js",
|
|
62
|
+
"assets/input-iNnO1X2K.js",
|
|
62
63
|
"assets/jsx-runtime-CXUMngI_.js",
|
|
63
64
|
"assets/key-round-UkavsGxp.js",
|
|
64
65
|
"assets/layers-2-glBbjl.js",
|
|
65
|
-
"assets/layout-
|
|
66
|
-
"assets/list-row-
|
|
67
|
-
"assets/live-
|
|
66
|
+
"assets/layout-0q8UGypb.js",
|
|
67
|
+
"assets/list-row-C0w2bQjJ.js",
|
|
68
|
+
"assets/live-M5aJ_xCa.js",
|
|
68
69
|
"assets/log-in-BmRjy60c.js",
|
|
69
70
|
"assets/message-circle-CCxGwRvv.js",
|
|
70
|
-
"assets/
|
|
71
|
-
"assets/
|
|
72
|
-
"assets/
|
|
73
|
-
"assets/
|
|
74
|
-
"assets/pagination-BAywyMzS.js",
|
|
71
|
+
"assets/mutation-BQ0ccH_A.js",
|
|
72
|
+
"assets/network-BKeQGT3K.js",
|
|
73
|
+
"assets/numbers-CivAk3da.js",
|
|
74
|
+
"assets/pagination-CpzvI5ep.js",
|
|
75
75
|
"assets/pencil-768ysRAr.js",
|
|
76
76
|
"assets/plus-DIdX_g-x.js",
|
|
77
77
|
"assets/power-off-Yjw9GMJh.js",
|
|
@@ -84,6 +84,7 @@
|
|
|
84
84
|
"assets/providers/bai.svg",
|
|
85
85
|
"assets/providers/blackbox.svg",
|
|
86
86
|
"assets/providers/claude-code.svg",
|
|
87
|
+
"assets/providers/devin.svg",
|
|
87
88
|
"assets/providers/exa.svg",
|
|
88
89
|
"assets/providers/gmi-cloud.svg",
|
|
89
90
|
"assets/providers/inception.svg",
|
|
@@ -93,22 +94,24 @@
|
|
|
93
94
|
"assets/providers/openai-light.svg",
|
|
94
95
|
"assets/providers/parallel.svg",
|
|
95
96
|
"assets/providers/tokenharbor.svg",
|
|
96
|
-
"assets/
|
|
97
|
-
"assets/
|
|
97
|
+
"assets/providers/windsurf.svg",
|
|
98
|
+
"assets/providers/zro.svg",
|
|
99
|
+
"assets/query-keys-IKLh0YFd.js",
|
|
100
|
+
"assets/quota-DiPD6UKH.js",
|
|
98
101
|
"assets/refresh-cw-BqJFk4sU.js",
|
|
99
102
|
"assets/rotate-ccw-CufcqITi.js",
|
|
100
103
|
"assets/route-CNSNj9Zm.js",
|
|
101
|
-
"assets/routing-
|
|
104
|
+
"assets/routing-BFQX2VBc.js",
|
|
102
105
|
"assets/scaling-nWE4Cx8f.js",
|
|
103
106
|
"assets/search-JOKus9rb.js",
|
|
104
|
-
"assets/select-
|
|
107
|
+
"assets/select-CXbck0jG.js",
|
|
105
108
|
"assets/settings-2-Ds9DQp0t.js",
|
|
106
|
-
"assets/settings-
|
|
109
|
+
"assets/settings-C_XvMHh9.js",
|
|
107
110
|
"assets/shield-BMQNxORh.js",
|
|
108
111
|
"assets/shield-check-DVS0Foqh.js",
|
|
109
|
-
"assets/stack-
|
|
110
|
-
"assets/state-
|
|
111
|
-
"assets/switch-
|
|
112
|
+
"assets/stack-DggRiCxE.js",
|
|
113
|
+
"assets/state-ClFzfbYp.js",
|
|
114
|
+
"assets/switch-CTIFxKqS.js",
|
|
112
115
|
"assets/terminal-0_IjPWTk.js",
|
|
113
116
|
"assets/tokens-COzario9.js",
|
|
114
117
|
"assets/trash-Cppn5c3R.js",
|
|
@@ -116,7 +119,7 @@
|
|
|
116
119
|
"assets/use-modal-focus-By7oJoGd.js",
|
|
117
120
|
"assets/use-reduced-motion-C4B0R6Sz.js",
|
|
118
121
|
"assets/use-timeout-BwcBBRrT.js",
|
|
119
|
-
"assets/useMutation-
|
|
122
|
+
"assets/useMutation-BClG3yWj.js",
|
|
120
123
|
"assets/wrench-B6E1oEuY.js",
|
|
121
124
|
"assets/zap-C4EeVW4q.js",
|
|
122
125
|
"index.html"
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
-- Adds `models.warning_metadata` (jsonb, nullable) — display-only warning
|
|
2
|
+
-- metadata for a model row, carried as `{ warnings: [{ kind, message,
|
|
3
|
+
-- severity?, updatedAt? }] }`. NULL means "no warnings"; the column is not
|
|
4
|
+
-- read by routing. Part of the provider-account model-update proposal §3.4
|
|
5
|
+
-- (area 06).
|
|
6
|
+
--
|
|
7
|
+
-- Idempotency comes from the migration ledger plus `ADD COLUMN IF NOT EXISTS`:
|
|
8
|
+
-- a database built from a newer baseline that already carries the column must
|
|
9
|
+
-- not fail startup.
|
|
10
|
+
ALTER TABLE "models" ADD COLUMN IF NOT EXISTS "warning_metadata" jsonb;
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
-- Migrate WorkBuddy provider data onto the CodeBuddy providers, then drop
|
|
2
|
+
-- the WorkBuddy providers entirely.
|
|
3
|
+
--
|
|
4
|
+
-- workbuddy -> cb (CodeBuddy intl)
|
|
5
|
+
-- workbuddycn -> cbcn (CodeBuddy CN)
|
|
6
|
+
--
|
|
7
|
+
-- This mirrors the opencode rename pattern: the parent `providers` row is
|
|
8
|
+
-- copied under the new id, every dependent table is repointed, and the old
|
|
9
|
+
-- row is dropped last. Inside the migration transaction this is atomic.
|
|
10
|
+
--
|
|
11
|
+
-- A database that never had the WorkBuddy ids is unaffected — every statement
|
|
12
|
+
-- matches zero rows. If a deployment somehow carries both spellings, the
|
|
13
|
+
-- repoint merges them onto the new id, which is the correct outcome for one
|
|
14
|
+
-- provider with two names.
|
|
15
|
+
|
|
16
|
+
-- ── workbuddy -> cb ────────────────────────────────────────────────────────
|
|
17
|
+
|
|
18
|
+
INSERT INTO "providers" (
|
|
19
|
+
"id", "tenant_id", "wire_family_default", "capability_profile", "base_url",
|
|
20
|
+
"compatibility_profile", "enabled", "requires_account"
|
|
21
|
+
)
|
|
22
|
+
SELECT
|
|
23
|
+
'cb', "tenant_id", "wire_family_default", "capability_profile", "base_url",
|
|
24
|
+
"compatibility_profile", "enabled", "requires_account"
|
|
25
|
+
FROM "providers"
|
|
26
|
+
WHERE "id" = 'workbuddy'
|
|
27
|
+
ON CONFLICT ("id") DO NOTHING;
|
|
28
|
+
|
|
29
|
+
-- Drop rows the repoint would collide with on a unique index.
|
|
30
|
+
DELETE FROM "models"
|
|
31
|
+
WHERE "provider_id" = 'workbuddy'
|
|
32
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cb')
|
|
33
|
+
AND EXISTS (
|
|
34
|
+
SELECT 1 FROM "models" AS keep
|
|
35
|
+
WHERE keep."provider_id" = 'cb'
|
|
36
|
+
AND keep."model_id" = "models"."model_id"
|
|
37
|
+
AND keep."endpoint_path" = "models"."endpoint_path"
|
|
38
|
+
);
|
|
39
|
+
DELETE FROM "tenant_disabled_models"
|
|
40
|
+
WHERE "provider_id" = 'workbuddy'
|
|
41
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cb')
|
|
42
|
+
AND EXISTS (
|
|
43
|
+
SELECT 1 FROM "tenant_disabled_models" AS keep
|
|
44
|
+
WHERE keep."provider_id" = 'cb'
|
|
45
|
+
AND keep."tenant_id" = "tenant_disabled_models"."tenant_id"
|
|
46
|
+
AND keep."model_id" = "tenant_disabled_models"."model_id"
|
|
47
|
+
AND keep."endpoint_path" = "tenant_disabled_models"."endpoint_path"
|
|
48
|
+
);
|
|
49
|
+
DELETE FROM "provider_accounts"
|
|
50
|
+
WHERE "provider_id" = 'workbuddy'
|
|
51
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cb')
|
|
52
|
+
AND EXISTS (
|
|
53
|
+
SELECT 1 FROM "provider_accounts" AS keep
|
|
54
|
+
WHERE keep."provider_id" = 'cb'
|
|
55
|
+
AND keep."tenant_id" IS NOT DISTINCT FROM "provider_accounts"."tenant_id"
|
|
56
|
+
AND keep."credential_fingerprint" IS NOT DISTINCT FROM "provider_accounts"."credential_fingerprint"
|
|
57
|
+
);
|
|
58
|
+
DELETE FROM "provider_routing_settings"
|
|
59
|
+
WHERE "provider_id" = 'workbuddy'
|
|
60
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cb')
|
|
61
|
+
AND EXISTS (
|
|
62
|
+
SELECT 1 FROM "provider_routing_settings" AS keep
|
|
63
|
+
WHERE keep."provider_id" = 'cb'
|
|
64
|
+
AND keep."tenant_id" IS NOT DISTINCT FROM "provider_routing_settings"."tenant_id"
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
UPDATE "provider_accounts" SET "provider_id" = 'cb'
|
|
68
|
+
WHERE "provider_id" = 'workbuddy'
|
|
69
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cb');
|
|
70
|
+
UPDATE "models" SET "provider_id" = 'cb'
|
|
71
|
+
WHERE "provider_id" = 'workbuddy'
|
|
72
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cb');
|
|
73
|
+
UPDATE "tenant_disabled_models" SET "provider_id" = 'cb'
|
|
74
|
+
WHERE "provider_id" = 'workbuddy'
|
|
75
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cb');
|
|
76
|
+
UPDATE "provider_routing_settings" SET "provider_id" = 'cb'
|
|
77
|
+
WHERE "provider_id" = 'workbuddy'
|
|
78
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cb');
|
|
79
|
+
UPDATE "telemetry_events" SET "provider_id" = 'cb'
|
|
80
|
+
WHERE "provider_id" = 'workbuddy'
|
|
81
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cb');
|
|
82
|
+
|
|
83
|
+
DELETE FROM "providers"
|
|
84
|
+
WHERE "id" = 'workbuddy'
|
|
85
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cb');
|
|
86
|
+
|
|
87
|
+
-- ── workbuddycn -> cbcn ──────────────────────────────────────────────────────
|
|
88
|
+
|
|
89
|
+
INSERT INTO "providers" (
|
|
90
|
+
"id", "tenant_id", "wire_family_default", "capability_profile", "base_url",
|
|
91
|
+
"compatibility_profile", "enabled", "requires_account"
|
|
92
|
+
)
|
|
93
|
+
SELECT
|
|
94
|
+
'cbcn', "tenant_id", "wire_family_default", "capability_profile", "base_url",
|
|
95
|
+
"compatibility_profile", "enabled", "requires_account"
|
|
96
|
+
FROM "providers"
|
|
97
|
+
WHERE "id" = 'workbuddycn'
|
|
98
|
+
ON CONFLICT ("id") DO NOTHING;
|
|
99
|
+
|
|
100
|
+
-- Drop rows the repoint would collide with on a unique index.
|
|
101
|
+
DELETE FROM "models"
|
|
102
|
+
WHERE "provider_id" = 'workbuddycn'
|
|
103
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cbcn')
|
|
104
|
+
AND EXISTS (
|
|
105
|
+
SELECT 1 FROM "models" AS keep
|
|
106
|
+
WHERE keep."provider_id" = 'cbcn'
|
|
107
|
+
AND keep."model_id" = "models"."model_id"
|
|
108
|
+
AND keep."endpoint_path" = "models"."endpoint_path"
|
|
109
|
+
);
|
|
110
|
+
DELETE FROM "tenant_disabled_models"
|
|
111
|
+
WHERE "provider_id" = 'workbuddycn'
|
|
112
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cbcn')
|
|
113
|
+
AND EXISTS (
|
|
114
|
+
SELECT 1 FROM "tenant_disabled_models" AS keep
|
|
115
|
+
WHERE keep."provider_id" = 'cbcn'
|
|
116
|
+
AND keep."tenant_id" = "tenant_disabled_models"."tenant_id"
|
|
117
|
+
AND keep."model_id" = "tenant_disabled_models"."model_id"
|
|
118
|
+
AND keep."endpoint_path" = "tenant_disabled_models"."endpoint_path"
|
|
119
|
+
);
|
|
120
|
+
DELETE FROM "provider_accounts"
|
|
121
|
+
WHERE "provider_id" = 'workbuddycn'
|
|
122
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cbcn')
|
|
123
|
+
AND EXISTS (
|
|
124
|
+
SELECT 1 FROM "provider_accounts" AS keep
|
|
125
|
+
WHERE keep."provider_id" = 'cbcn'
|
|
126
|
+
AND keep."tenant_id" IS NOT DISTINCT FROM "provider_accounts"."tenant_id"
|
|
127
|
+
AND keep."credential_fingerprint" IS NOT DISTINCT FROM "provider_accounts"."credential_fingerprint"
|
|
128
|
+
);
|
|
129
|
+
DELETE FROM "provider_routing_settings"
|
|
130
|
+
WHERE "provider_id" = 'workbuddycn'
|
|
131
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cbcn')
|
|
132
|
+
AND EXISTS (
|
|
133
|
+
SELECT 1 FROM "provider_routing_settings" AS keep
|
|
134
|
+
WHERE keep."provider_id" = 'cbcn'
|
|
135
|
+
AND keep."tenant_id" IS NOT DISTINCT FROM "provider_routing_settings"."tenant_id"
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
UPDATE "provider_accounts" SET "provider_id" = 'cbcn'
|
|
139
|
+
WHERE "provider_id" = 'workbuddycn'
|
|
140
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cbcn');
|
|
141
|
+
UPDATE "models" SET "provider_id" = 'cbcn'
|
|
142
|
+
WHERE "provider_id" = 'workbuddycn'
|
|
143
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cbcn');
|
|
144
|
+
UPDATE "tenant_disabled_models" SET "provider_id" = 'cbcn'
|
|
145
|
+
WHERE "provider_id" = 'workbuddycn'
|
|
146
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cbcn');
|
|
147
|
+
UPDATE "provider_routing_settings" SET "provider_id" = 'cbcn'
|
|
148
|
+
WHERE "provider_id" = 'workbuddycn'
|
|
149
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cbcn');
|
|
150
|
+
UPDATE "telemetry_events" SET "provider_id" = 'cbcn'
|
|
151
|
+
WHERE "provider_id" = 'workbuddycn'
|
|
152
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cbcn');
|
|
153
|
+
|
|
154
|
+
DELETE FROM "providers"
|
|
155
|
+
WHERE "id" = 'workbuddycn'
|
|
156
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cbcn');
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
-- Freshness stamp for `quota_plan`: the plan column is a bare string, so
|
|
2
|
+
-- routing cannot tell a fresh read from a stale one. This timestamp is written
|
|
3
|
+
-- together with `quota_plan` on a successful quota fetch and lets the routing
|
|
4
|
+
-- engine downgrade a plan older than the freshness horizon to `unknown`
|
|
5
|
+
-- instead of trusting it blindly.
|
|
6
|
+
ALTER TABLE "provider_accounts"
|
|
7
|
+
ADD COLUMN IF NOT EXISTS "quota_plan_fetched_at" timestamptz;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
-- Adds `models.warning_metadata` (text, nullable) — display-only warning
|
|
2
|
+
-- metadata for a model row, stored as a JSON string in SQLite (the dialect's
|
|
3
|
+
-- jsonb analogue; Postgres keeps the same column as jsonb). NULL means "no
|
|
4
|
+
-- warnings"; the column is not read by routing. Part of the provider-account
|
|
5
|
+
-- model-update proposal §3.4 (area 06).
|
|
6
|
+
--
|
|
7
|
+
-- Idempotency comes from the migration ledger, not from the statement: the
|
|
8
|
+
-- runner records the file inside the same transaction, so a file that has
|
|
9
|
+
-- already run is never re-executed. The baseline is generated from
|
|
10
|
+
-- `0000_baseline.sql` alone and does not carry this column.
|
|
11
|
+
ALTER TABLE "models" ADD COLUMN "warning_metadata" text;
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
-- Migrate WorkBuddy provider data onto the CodeBuddy providers, then drop
|
|
2
|
+
-- the WorkBuddy providers entirely.
|
|
3
|
+
--
|
|
4
|
+
-- workbuddy -> cb (CodeBuddy intl)
|
|
5
|
+
-- workbuddycn -> cbcn (CodeBuddy CN)
|
|
6
|
+
--
|
|
7
|
+
-- This mirrors the opencode rename pattern: the parent `providers` row is
|
|
8
|
+
-- copied under the new id, every dependent table is repointed, and the old
|
|
9
|
+
-- row is dropped last. Inside the migration transaction this is atomic.
|
|
10
|
+
--
|
|
11
|
+
-- A database that never had the WorkBuddy ids is unaffected — every statement
|
|
12
|
+
-- matches zero rows. If a deployment somehow carries both spellings, the
|
|
13
|
+
-- repoint merges them onto the new id, which is the correct outcome for one
|
|
14
|
+
-- provider with two names.
|
|
15
|
+
|
|
16
|
+
-- ── workbuddy -> cb ────────────────────────────────────────────────────────
|
|
17
|
+
|
|
18
|
+
INSERT INTO "providers" (
|
|
19
|
+
"id", "tenant_id", "wire_family_default", "capability_profile", "base_url",
|
|
20
|
+
"compatibility_profile", "enabled", "requires_account"
|
|
21
|
+
)
|
|
22
|
+
SELECT
|
|
23
|
+
'cb', "tenant_id", "wire_family_default", "capability_profile", "base_url",
|
|
24
|
+
"compatibility_profile", "enabled", "requires_account"
|
|
25
|
+
FROM "providers"
|
|
26
|
+
WHERE "id" = 'workbuddy'
|
|
27
|
+
ON CONFLICT ("id") DO NOTHING;
|
|
28
|
+
|
|
29
|
+
-- Drop rows the repoint would collide with on a unique index.
|
|
30
|
+
DELETE FROM "models"
|
|
31
|
+
WHERE "provider_id" = 'workbuddy'
|
|
32
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cb')
|
|
33
|
+
AND EXISTS (
|
|
34
|
+
SELECT 1 FROM "models" AS keep
|
|
35
|
+
WHERE keep."provider_id" = 'cb'
|
|
36
|
+
AND keep."model_id" = "models"."model_id"
|
|
37
|
+
AND keep."endpoint_path" = "models"."endpoint_path"
|
|
38
|
+
);
|
|
39
|
+
DELETE FROM "tenant_disabled_models"
|
|
40
|
+
WHERE "provider_id" = 'workbuddy'
|
|
41
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cb')
|
|
42
|
+
AND EXISTS (
|
|
43
|
+
SELECT 1 FROM "tenant_disabled_models" AS keep
|
|
44
|
+
WHERE keep."provider_id" = 'cb'
|
|
45
|
+
AND keep."tenant_id" = "tenant_disabled_models"."tenant_id"
|
|
46
|
+
AND keep."model_id" = "tenant_disabled_models"."model_id"
|
|
47
|
+
AND keep."endpoint_path" = "tenant_disabled_models"."endpoint_path"
|
|
48
|
+
);
|
|
49
|
+
DELETE FROM "provider_accounts"
|
|
50
|
+
WHERE "provider_id" = 'workbuddy'
|
|
51
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cb')
|
|
52
|
+
AND EXISTS (
|
|
53
|
+
SELECT 1 FROM "provider_accounts" AS keep
|
|
54
|
+
WHERE keep."provider_id" = 'cb'
|
|
55
|
+
AND keep."tenant_id" IS NOT DISTINCT FROM "provider_accounts"."tenant_id"
|
|
56
|
+
AND keep."credential_fingerprint" IS NOT DISTINCT FROM "provider_accounts"."credential_fingerprint"
|
|
57
|
+
);
|
|
58
|
+
DELETE FROM "provider_routing_settings"
|
|
59
|
+
WHERE "provider_id" = 'workbuddy'
|
|
60
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cb')
|
|
61
|
+
AND EXISTS (
|
|
62
|
+
SELECT 1 FROM "provider_routing_settings" AS keep
|
|
63
|
+
WHERE keep."provider_id" = 'cb'
|
|
64
|
+
AND keep."tenant_id" IS NOT DISTINCT FROM "provider_routing_settings"."tenant_id"
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
UPDATE "provider_accounts" SET "provider_id" = 'cb'
|
|
68
|
+
WHERE "provider_id" = 'workbuddy'
|
|
69
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cb');
|
|
70
|
+
UPDATE "models" SET "provider_id" = 'cb'
|
|
71
|
+
WHERE "provider_id" = 'workbuddy'
|
|
72
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cb');
|
|
73
|
+
UPDATE "tenant_disabled_models" SET "provider_id" = 'cb'
|
|
74
|
+
WHERE "provider_id" = 'workbuddy'
|
|
75
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cb');
|
|
76
|
+
UPDATE "provider_routing_settings" SET "provider_id" = 'cb'
|
|
77
|
+
WHERE "provider_id" = 'workbuddy'
|
|
78
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cb');
|
|
79
|
+
UPDATE "telemetry_events" SET "provider_id" = 'cb'
|
|
80
|
+
WHERE "provider_id" = 'workbuddy'
|
|
81
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cb');
|
|
82
|
+
|
|
83
|
+
DELETE FROM "providers"
|
|
84
|
+
WHERE "id" = 'workbuddy'
|
|
85
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cb');
|
|
86
|
+
|
|
87
|
+
-- ── workbuddycn -> cbcn ──────────────────────────────────────────────────────
|
|
88
|
+
|
|
89
|
+
INSERT INTO "providers" (
|
|
90
|
+
"id", "tenant_id", "wire_family_default", "capability_profile", "base_url",
|
|
91
|
+
"compatibility_profile", "enabled", "requires_account"
|
|
92
|
+
)
|
|
93
|
+
SELECT
|
|
94
|
+
'cbcn', "tenant_id", "wire_family_default", "capability_profile", "base_url",
|
|
95
|
+
"compatibility_profile", "enabled", "requires_account"
|
|
96
|
+
FROM "providers"
|
|
97
|
+
WHERE "id" = 'workbuddycn'
|
|
98
|
+
ON CONFLICT ("id") DO NOTHING;
|
|
99
|
+
|
|
100
|
+
-- Drop rows the repoint would collide with on a unique index.
|
|
101
|
+
DELETE FROM "models"
|
|
102
|
+
WHERE "provider_id" = 'workbuddycn'
|
|
103
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cbcn')
|
|
104
|
+
AND EXISTS (
|
|
105
|
+
SELECT 1 FROM "models" AS keep
|
|
106
|
+
WHERE keep."provider_id" = 'cbcn'
|
|
107
|
+
AND keep."model_id" = "models"."model_id"
|
|
108
|
+
AND keep."endpoint_path" = "models"."endpoint_path"
|
|
109
|
+
);
|
|
110
|
+
DELETE FROM "tenant_disabled_models"
|
|
111
|
+
WHERE "provider_id" = 'workbuddycn'
|
|
112
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cbcn')
|
|
113
|
+
AND EXISTS (
|
|
114
|
+
SELECT 1 FROM "tenant_disabled_models" AS keep
|
|
115
|
+
WHERE keep."provider_id" = 'cbcn'
|
|
116
|
+
AND keep."tenant_id" = "tenant_disabled_models"."tenant_id"
|
|
117
|
+
AND keep."model_id" = "tenant_disabled_models"."model_id"
|
|
118
|
+
AND keep."endpoint_path" = "tenant_disabled_models"."endpoint_path"
|
|
119
|
+
);
|
|
120
|
+
DELETE FROM "provider_accounts"
|
|
121
|
+
WHERE "provider_id" = 'workbuddycn'
|
|
122
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cbcn')
|
|
123
|
+
AND EXISTS (
|
|
124
|
+
SELECT 1 FROM "provider_accounts" AS keep
|
|
125
|
+
WHERE keep."provider_id" = 'cbcn'
|
|
126
|
+
AND keep."tenant_id" IS NOT DISTINCT FROM "provider_accounts"."tenant_id"
|
|
127
|
+
AND keep."credential_fingerprint" IS NOT DISTINCT FROM "provider_accounts"."credential_fingerprint"
|
|
128
|
+
);
|
|
129
|
+
DELETE FROM "provider_routing_settings"
|
|
130
|
+
WHERE "provider_id" = 'workbuddycn'
|
|
131
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cbcn')
|
|
132
|
+
AND EXISTS (
|
|
133
|
+
SELECT 1 FROM "provider_routing_settings" AS keep
|
|
134
|
+
WHERE keep."provider_id" = 'cbcn'
|
|
135
|
+
AND keep."tenant_id" IS NOT DISTINCT FROM "provider_routing_settings"."tenant_id"
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
UPDATE "provider_accounts" SET "provider_id" = 'cbcn'
|
|
139
|
+
WHERE "provider_id" = 'workbuddycn'
|
|
140
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cbcn');
|
|
141
|
+
UPDATE "models" SET "provider_id" = 'cbcn'
|
|
142
|
+
WHERE "provider_id" = 'workbuddycn'
|
|
143
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cbcn');
|
|
144
|
+
UPDATE "tenant_disabled_models" SET "provider_id" = 'cbcn'
|
|
145
|
+
WHERE "provider_id" = 'workbuddycn'
|
|
146
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cbcn');
|
|
147
|
+
UPDATE "provider_routing_settings" SET "provider_id" = 'cbcn'
|
|
148
|
+
WHERE "provider_id" = 'workbuddycn'
|
|
149
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cbcn');
|
|
150
|
+
UPDATE "telemetry_events" SET "provider_id" = 'cbcn'
|
|
151
|
+
WHERE "provider_id" = 'workbuddycn'
|
|
152
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cbcn');
|
|
153
|
+
|
|
154
|
+
DELETE FROM "providers"
|
|
155
|
+
WHERE "id" = 'workbuddycn'
|
|
156
|
+
AND EXISTS (SELECT 1 FROM "providers" WHERE "id" = 'cbcn');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cartethyia",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.8.0",
|
|
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",
|