cartethyia 2.4.6 → 2.5.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.
Files changed (302) hide show
  1. package/README.md +45 -13
  2. package/dist/dashboard/assets/BannedPage-9igfctfZ.js +1 -0
  3. package/dist/dashboard/assets/BannedPage-9igfctfZ.js.gz +0 -0
  4. package/dist/dashboard/assets/{CliToolDetailPage-Bcy150Jo.js → CliToolDetailPage-ZRr2K2sF.js} +1 -1
  5. package/dist/dashboard/assets/CliToolDetailPage-ZRr2K2sF.js.gz +0 -0
  6. package/dist/dashboard/assets/{CliToolsPage-DyNXefph.js → CliToolsPage-D3xqZbN-.js} +1 -1
  7. package/dist/dashboard/assets/CliToolsPage-D3xqZbN-.js.gz +0 -0
  8. package/dist/dashboard/assets/CombosPage-CVnQPBBz.js +1 -0
  9. package/dist/dashboard/assets/CombosPage-CVnQPBBz.js.gz +0 -0
  10. package/dist/dashboard/assets/{ConsoleLogPage-CATpAEOz.js → ConsoleLogPage-u6W1UXSc.js} +1 -1
  11. package/dist/dashboard/assets/ConsoleLogPage-u6W1UXSc.js.gz +0 -0
  12. package/dist/dashboard/assets/{CustomizationPage-D6jEU7nL.js → CustomizationPage-CTTpCb25.js} +1 -1
  13. package/dist/dashboard/assets/CustomizationPage-CTTpCb25.js.gz +0 -0
  14. package/dist/dashboard/assets/{HealthEventsModal-CZkpn0a7.js → HealthEventsModal-C5XpWlvy.js} +1 -1
  15. package/dist/dashboard/assets/HealthEventsModal-C5XpWlvy.js.gz +0 -0
  16. package/dist/dashboard/assets/{LoginPage-BJlMVN4U.js → LoginPage-DHoB3Agn.js} +1 -1
  17. package/dist/dashboard/assets/LoginPage-DHoB3Agn.js.gz +0 -0
  18. package/dist/dashboard/assets/{ModelPicker-Br3CXEau.js → ModelPicker-oQ-SDXp8.js} +1 -1
  19. package/dist/dashboard/assets/ModelPicker-oQ-SDXp8.js.gz +0 -0
  20. package/dist/dashboard/assets/OverviewPage-BrY4SgIt.js +1 -0
  21. package/dist/dashboard/assets/OverviewPage-BrY4SgIt.js.gz +0 -0
  22. package/dist/dashboard/assets/ProviderDetailPage-D9VSt7T_.js +3 -0
  23. package/dist/dashboard/assets/ProviderDetailPage-D9VSt7T_.js.gz +0 -0
  24. package/dist/dashboard/assets/ProviderIcon-CmfzxpVM.js +1 -0
  25. package/dist/dashboard/assets/ProviderIcon-CmfzxpVM.js.gz +0 -0
  26. package/dist/dashboard/assets/ProvidersPage-Df77V5I5.js +1 -0
  27. package/dist/dashboard/assets/ProvidersPage-Df77V5I5.js.gz +0 -0
  28. package/dist/dashboard/assets/ProxyPage-CDfxP7AC.js +7 -0
  29. package/dist/dashboard/assets/ProxyPage-CDfxP7AC.js.gz +0 -0
  30. package/dist/dashboard/assets/QuotaPage-CY4o2t4p.js +1 -0
  31. package/dist/dashboard/assets/QuotaPage-CY4o2t4p.js.gz +0 -0
  32. package/dist/dashboard/assets/{SettingsPage-BHW4Zt06.js → SettingsPage-CvjZxHE4.js} +1 -1
  33. package/dist/dashboard/assets/SettingsPage-CvjZxHE4.js.gz +0 -0
  34. package/dist/dashboard/assets/{SetupPage-VOYC_lIa.js → SetupPage-D3nza7LH.js} +1 -1
  35. package/dist/dashboard/assets/SetupPage-D3nza7LH.js.gz +0 -0
  36. package/dist/dashboard/assets/SortableList-Dtt12WT1.js +1 -0
  37. package/dist/dashboard/assets/SortableList-Dtt12WT1.js.gz +0 -0
  38. package/dist/dashboard/assets/{StudioPage-BNIDLiU6.js → StudioPage-CbK3hXvU.js} +4 -4
  39. package/dist/dashboard/assets/StudioPage-CbK3hXvU.js.gz +0 -0
  40. package/dist/dashboard/assets/UsagePage-BQlWbWg2.js +56 -0
  41. package/dist/dashboard/assets/UsagePage-BQlWbWg2.js.gz +0 -0
  42. package/dist/dashboard/assets/{api-keys-BETfaMYZ.js → api-keys-BmDbsior.js} +1 -1
  43. package/dist/dashboard/assets/api-keys-BmDbsior.js.gz +0 -0
  44. package/dist/dashboard/assets/app-BbpSarVV.css +2 -0
  45. package/dist/dashboard/assets/app-BbpSarVV.css.gz +0 -0
  46. package/dist/dashboard/assets/assert-BHfaei-X.js +1 -0
  47. package/dist/dashboard/assets/assert-BHfaei-X.js.gz +0 -0
  48. package/dist/dashboard/assets/{badge-BTyGk_DL.js → badge-DpXT4Ixt.js} +1 -1
  49. package/dist/dashboard/assets/badge-DpXT4Ixt.js.gz +0 -0
  50. package/dist/dashboard/assets/{banner-bujTWYM4.js → banner-CSAAWLJv.js} +1 -1
  51. package/dist/dashboard/assets/banner-CSAAWLJv.js.gz +0 -0
  52. package/dist/dashboard/assets/{card-B0Bnx5CA.js → card-DEhRXXw4.js} +1 -1
  53. package/dist/dashboard/assets/card-DEhRXXw4.js.gz +0 -0
  54. package/dist/dashboard/assets/{cli-tools-DE2ug812.js → cli-tools-B0wBq-RL.js} +1 -1
  55. package/dist/dashboard/assets/cli-tools-B0wBq-RL.js.gz +0 -0
  56. package/dist/dashboard/assets/{clipboard-button-R_rArH8S.js → clipboard-button-DOo6EU8O.js} +1 -1
  57. package/dist/dashboard/assets/clipboard-button-DOo6EU8O.js.gz +0 -0
  58. package/dist/dashboard/assets/{dialog-BWIP_EvW.js → dialog-BvQeBMfP.js} +1 -1
  59. package/dist/dashboard/assets/dialog-BvQeBMfP.js.gz +0 -0
  60. package/dist/dashboard/assets/{drawer-BKcgVugF.js → drawer-CMwPXwQB.js} +1 -1
  61. package/dist/dashboard/assets/drawer-CMwPXwQB.js.gz +0 -0
  62. package/dist/dashboard/assets/{entry-CcWkGR4a.js → entry-D4O2229X.js} +1 -1
  63. package/dist/dashboard/assets/{entry-CcWkGR4a.js.gz → entry-D4O2229X.js.gz} +0 -0
  64. package/dist/dashboard/assets/{entry-kTiTFrvh.js → entry-DKvr5Q9K.js} +1 -1
  65. package/dist/dashboard/assets/entry-DKvr5Q9K.js.gz +0 -0
  66. package/dist/dashboard/assets/entry-FQCejoDY.js +4 -0
  67. package/dist/dashboard/assets/entry-FQCejoDY.js.gz +0 -0
  68. package/dist/dashboard/assets/{github-badge-Booc5mNe.js → github-badge-zliLvBwr.js} +1 -1
  69. package/dist/dashboard/assets/github-badge-zliLvBwr.js.gz +0 -0
  70. package/dist/dashboard/assets/{index-D70pChfn.js → index-CXm3FIyt.js} +2 -2
  71. package/dist/dashboard/assets/index-CXm3FIyt.js.gz +0 -0
  72. package/dist/dashboard/assets/{inline-D1TCqM2D.js → inline-D1IlZZ8H.js} +1 -1
  73. package/dist/dashboard/assets/inline-D1IlZZ8H.js.gz +0 -0
  74. package/dist/dashboard/assets/{input-B9oyU93y.js → input-BpVZdrbc.js} +1 -1
  75. package/dist/dashboard/assets/input-BpVZdrbc.js.gz +0 -0
  76. package/dist/dashboard/assets/{layout-BArzXirQ.js → layout-BioLW7gN.js} +1 -1
  77. package/dist/dashboard/assets/layout-BioLW7gN.js.gz +0 -0
  78. package/dist/dashboard/assets/{list-row-BVZzaoHF.js → list-row-CwVcGAIc.js} +1 -1
  79. package/dist/dashboard/assets/list-row-CwVcGAIc.js.gz +0 -0
  80. package/dist/dashboard/assets/{live-EmuIayqp.js → live-yfEJFF9T.js} +1 -1
  81. package/dist/dashboard/assets/live-yfEJFF9T.js.gz +0 -0
  82. package/dist/dashboard/assets/{model-bans-CSPQ9xB0.js → model-bans-CT-TxSNX.js} +1 -1
  83. package/dist/dashboard/assets/model-bans-CT-TxSNX.js.gz +0 -0
  84. package/dist/dashboard/assets/providers/cursor.webp +0 -0
  85. package/dist/dashboard/assets/providers/trae.webp +0 -0
  86. package/dist/dashboard/assets/{routing-BExgxxBU.js → routing-Cs6jl49L.js} +1 -1
  87. package/dist/dashboard/assets/routing-Cs6jl49L.js.gz +0 -0
  88. package/dist/dashboard/assets/select-C0Rer3gF.js +41 -0
  89. package/dist/dashboard/assets/select-C0Rer3gF.js.gz +0 -0
  90. package/dist/dashboard/assets/settings-CfcTcOyU.js +1 -0
  91. package/dist/dashboard/assets/settings-CfcTcOyU.js.gz +0 -0
  92. package/dist/dashboard/assets/{stack-Ca5HxI5i.js → stack-C9_uUjaA.js} +1 -1
  93. package/dist/dashboard/assets/stack-C9_uUjaA.js.gz +0 -0
  94. package/dist/dashboard/assets/{state-CzUPfLXo.js → state-DA0B95UQ.js} +1 -1
  95. package/dist/dashboard/assets/state-DA0B95UQ.js.gz +0 -0
  96. package/dist/dashboard/assets/{switch-DOUIky_i.js → switch-Cittxy-x.js} +1 -1
  97. package/dist/dashboard/assets/switch-Cittxy-x.js.gz +0 -0
  98. package/dist/dashboard/assets/{toast-C76WrMhc.js → toast-CNt_jzO4.js} +1 -1
  99. package/dist/dashboard/assets/toast-CNt_jzO4.js.gz +0 -0
  100. package/dist/dashboard/assets/{useMutation-D87FZwH0.js → useMutation-BQKMcJ1H.js} +1 -1
  101. package/dist/dashboard/assets/useMutation-BQKMcJ1H.js.gz +0 -0
  102. package/dist/dashboard/index.html +1 -1
  103. package/dist/dashboard/index.html.gz +0 -0
  104. package/dist/dashboard/precompressed-assets.json +51 -52
  105. package/migrations/full-postgres/0015_add_payload_stages.sql +18 -0
  106. package/migrations/full-postgres/0016_add_share_link_slug.sql +20 -0
  107. package/migrations/full-postgres/0017_add_models_pro_only.sql +18 -0
  108. package/migrations/full-postgres/0018_add_accounts_quota_plan.sql +18 -0
  109. package/migrations/full-postgres/0019_add_models_free_tier.sql +15 -0
  110. package/migrations/lite-sqlite3/0015_add_payload_stages.sql +18 -0
  111. package/migrations/lite-sqlite3/0016_add_share_link_slug.sql +20 -0
  112. package/migrations/lite-sqlite3/0017_add_models_pro_only.sql +18 -0
  113. package/migrations/lite-sqlite3/0018_add_accounts_quota_plan.sql +18 -0
  114. package/migrations/lite-sqlite3/0019_add_models_free_tier.sql +15 -0
  115. package/package.json +3 -2
  116. package/scripts/cli/command/console-menu.ts +30 -11
  117. package/scripts/cli/command/start.ts +77 -13
  118. package/scripts/cli/command/update.ts +1 -1
  119. package/scripts/cli/gateway/instance-lock.ts +105 -0
  120. package/scripts/cli/gateway/spawn.ts +173 -101
  121. package/scripts/cli/ui/background.ts +110 -49
  122. package/src/boot/app.ts +20 -6
  123. package/src/boot/dependencies.ts +19 -0
  124. package/src/boot/elysia-typebox-bridge.ts +37 -0
  125. package/src/boot/lifecycle.ts +2 -0
  126. package/src/config/cooldowns.ts +138 -138
  127. package/src/config/providers.ts +5 -5
  128. package/src/config/runtime.ts +19 -3
  129. package/src/config/spec.ts +9 -0
  130. package/src/console/api-keys/contracts.ts +414 -391
  131. package/src/console/api-keys/routes.ts +880 -870
  132. package/src/console/auth/account-reset-store.ts +14 -0
  133. package/src/console/auth/account-reset.ts +3 -2
  134. package/src/console/auth/setup-service.ts +6 -3
  135. package/src/console/domain-registration.ts +9 -2
  136. package/src/console/observability/contracts.ts +475 -455
  137. package/src/console/observability/store.ts +1015 -952
  138. package/src/console/providers/catalog/contracts.ts +31 -0
  139. package/src/console/providers/catalog/provider-operations.ts +8 -0
  140. package/src/console/providers/catalog/store.ts +1532 -1525
  141. package/src/console/providers/oauth/callback-listener.ts +18 -3
  142. package/src/console/providers/oauth/routes.ts +38 -15
  143. package/src/console/quota/refresh.ts +19 -0
  144. package/src/console/updates/routes.ts +162 -4
  145. package/src/main.ts +3 -0
  146. package/src/network/http2-bidi.ts +85 -0
  147. package/src/network/outbound-fetch.ts +1 -26
  148. package/src/network/pool/agent.ts +478 -460
  149. package/src/network/pool/resolver.ts +1104 -544
  150. package/src/network/pool-health-machine.ts +12 -5
  151. package/src/observability/payload-capture.ts +344 -324
  152. package/src/persistence/db-pg.ts +9 -3
  153. package/src/persistence/db-sqlite.ts +497 -495
  154. package/src/persistence/health-event-flush.ts +137 -0
  155. package/src/persistence/migrate.ts +181 -129
  156. package/src/persistence/schema.ts +1360 -1295
  157. package/src/persistence/settings-revision.ts +25 -0
  158. package/src/persistence/shared-cache.ts +217 -0
  159. package/src/persistence/stores/share-store.ts +556 -528
  160. package/src/persistence/usage-flush.ts +61 -1
  161. package/src/protocol/canonical-model.ts +23 -1
  162. package/src/protocol/response/chat.ts +143 -10
  163. package/src/protocol/response/omp-tool-call-markup.ts +221 -0
  164. package/src/providers/default-registry.ts +173 -1
  165. package/src/providers/discovery/openai-model-discovery.ts +39 -3
  166. package/src/providers/discovery/openrouter-free-roster.ts +98 -0
  167. package/src/providers/discovery/probing-service.ts +1022 -1001
  168. package/src/providers/integrations/buddy/buddy-catalog-shared.ts +39 -0
  169. package/src/providers/integrations/buddy/buddy-chat-shared.ts +913 -914
  170. package/src/providers/integrations/buddy/buddy-conversation-headers.ts +18 -5
  171. package/src/providers/integrations/buddy/codebuddy/cn-provider.ts +4 -0
  172. package/src/providers/integrations/buddy/codebuddy/provider.ts +180 -175
  173. package/src/providers/integrations/buddy/codebuddy/shared.ts +15 -6
  174. package/src/providers/integrations/buddy/workbuddy/provider.ts +206 -204
  175. package/src/providers/integrations/buddy/workbuddy/shared.ts +3 -3
  176. package/src/providers/integrations/claude/claude.ts +606 -582
  177. package/src/providers/integrations/cline/cline-quota.ts +18 -16
  178. package/src/providers/integrations/cline/cline.ts +539 -468
  179. package/src/providers/integrations/commandcode/commandcode.ts +675 -541
  180. package/src/providers/integrations/commandcode/discovery.ts +116 -0
  181. package/src/providers/integrations/commandcode/quota.ts +160 -0
  182. package/src/providers/integrations/cursor/cursor-auth.ts +418 -0
  183. package/src/providers/integrations/cursor/cursor-catalog.ts +368 -0
  184. package/src/providers/integrations/cursor/cursor-http2.ts +300 -0
  185. package/src/providers/integrations/cursor/cursor-identity.ts +92 -0
  186. package/src/providers/integrations/cursor/cursor-request.ts +471 -0
  187. package/src/providers/integrations/cursor/cursor-session-manager.ts +281 -0
  188. package/src/providers/integrations/cursor/cursor-shared.ts +108 -0
  189. package/src/providers/integrations/cursor/cursor.ts +960 -0
  190. package/src/providers/integrations/cursor/protocol/framing.ts +129 -0
  191. package/src/providers/integrations/cursor/protocol/messages.ts +2355 -0
  192. package/src/providers/integrations/cursor/protocol/struct.ts +305 -0
  193. package/src/providers/integrations/github/github.ts +4 -4
  194. package/src/providers/integrations/hermes.ts +79 -8
  195. package/src/providers/integrations/kilo/kilo-discovery.ts +10 -1
  196. package/src/providers/integrations/kilo/kilo.ts +153 -146
  197. package/src/providers/integrations/opencode/provider.ts +532 -538
  198. package/src/providers/integrations/openrouter/provider.ts +139 -281
  199. package/src/providers/integrations/qoder/qoder-catalog.ts +450 -0
  200. package/src/providers/integrations/qoder/qoder-oauth.ts +310 -257
  201. package/src/providers/integrations/qoder/qoder-realm.ts +106 -0
  202. package/src/providers/integrations/qoder/qoder-virtual.ts +77 -0
  203. package/src/providers/integrations/qoder/qoder.ts +865 -730
  204. package/src/providers/integrations/trae/trae-catalog.ts +190 -0
  205. package/src/providers/integrations/trae/trae-headers.ts +149 -0
  206. package/src/providers/integrations/trae/trae-oauth.ts +773 -0
  207. package/src/providers/integrations/trae/trae-protocol.ts +400 -0
  208. package/src/providers/integrations/trae/trae-realm.ts +220 -0
  209. package/src/providers/integrations/trae/trae.ts +458 -0
  210. package/src/providers/operations/account-health-service.ts +107 -10
  211. package/src/providers/operations/client-versions.ts +133 -6
  212. package/src/providers/operations/provider-catalog-seeder.ts +95 -86
  213. package/src/providers/operations/provider-credential-service.ts +46 -7
  214. package/src/providers/provider-contracts.ts +76 -0
  215. package/src/providers/provider-metadata.ts +78 -6
  216. package/src/providers/provider-model-definition.ts +373 -349
  217. package/src/security/api-key-auth.ts +126 -8
  218. package/src/transport/contracts.ts +3 -0
  219. package/src/transport/dispatch/attempt-finalize.ts +32 -1
  220. package/src/transport/dispatch/attempt-loop.ts +530 -515
  221. package/src/transport/dispatch/generation.ts +88 -21
  222. package/src/transport/dispatch/leases.ts +99 -2
  223. package/src/transport/dispatch/proxy-request.ts +60 -3
  224. package/src/transport/dispatch/streaming/finalize.ts +16 -1
  225. package/src/transport/dispatch/streaming/stream.ts +22 -2
  226. package/src/transport/dispatch/upstream.ts +19 -1
  227. package/src/transport/guards/auth-guard.ts +26 -1
  228. package/src/transport/guards/body-policy.ts +5 -4
  229. package/src/transport/request/preparer.ts +103 -0
  230. package/src/transport/request/state.ts +14 -0
  231. package/src/transport/routing/plan-gate.ts +45 -0
  232. package/src/transport/routing/route-catalog.ts +799 -777
  233. package/src/transport/routing/route-model.ts +52 -1
  234. package/src/transport/routing/router.ts +51 -0
  235. package/dist/dashboard/assets/BannedPage-QhvbJB9o.js +0 -1
  236. package/dist/dashboard/assets/BannedPage-QhvbJB9o.js.gz +0 -0
  237. package/dist/dashboard/assets/CliToolDetailPage-Bcy150Jo.js.gz +0 -0
  238. package/dist/dashboard/assets/CliToolsPage-DyNXefph.js.gz +0 -0
  239. package/dist/dashboard/assets/CombosPage-Cak0ljnO.js +0 -1
  240. package/dist/dashboard/assets/CombosPage-Cak0ljnO.js.gz +0 -0
  241. package/dist/dashboard/assets/ConsoleLogPage-CATpAEOz.js.gz +0 -0
  242. package/dist/dashboard/assets/CustomizationPage-D6jEU7nL.js.gz +0 -0
  243. package/dist/dashboard/assets/HealthEventsModal-CZkpn0a7.js.gz +0 -0
  244. package/dist/dashboard/assets/LoginPage-BJlMVN4U.js.gz +0 -0
  245. package/dist/dashboard/assets/ModelPicker-Br3CXEau.js.gz +0 -0
  246. package/dist/dashboard/assets/OverviewPage-CQxXbo2g.js +0 -1
  247. package/dist/dashboard/assets/OverviewPage-CQxXbo2g.js.gz +0 -0
  248. package/dist/dashboard/assets/ProviderDetailPage--0RBNh99.js +0 -3
  249. package/dist/dashboard/assets/ProviderDetailPage--0RBNh99.js.gz +0 -0
  250. package/dist/dashboard/assets/ProviderIcon-paOCq8I0.js +0 -1
  251. package/dist/dashboard/assets/ProviderIcon-paOCq8I0.js.gz +0 -0
  252. package/dist/dashboard/assets/ProvidersPage-1M-C3mbu.js +0 -1
  253. package/dist/dashboard/assets/ProvidersPage-1M-C3mbu.js.gz +0 -0
  254. package/dist/dashboard/assets/ProxyPage-CXiumA53.js +0 -7
  255. package/dist/dashboard/assets/ProxyPage-CXiumA53.js.gz +0 -0
  256. package/dist/dashboard/assets/QuotaPage-BGDIfIYP.js +0 -1
  257. package/dist/dashboard/assets/QuotaPage-BGDIfIYP.js.gz +0 -0
  258. package/dist/dashboard/assets/SettingsPage-BHW4Zt06.js.gz +0 -0
  259. package/dist/dashboard/assets/SetupPage-VOYC_lIa.js.gz +0 -0
  260. package/dist/dashboard/assets/SortableList-DpOTnGuH.js +0 -1
  261. package/dist/dashboard/assets/SortableList-DpOTnGuH.js.gz +0 -0
  262. package/dist/dashboard/assets/StudioPage-BNIDLiU6.js.gz +0 -0
  263. package/dist/dashboard/assets/UsagePage-BAFaSDQV.js +0 -56
  264. package/dist/dashboard/assets/UsagePage-BAFaSDQV.js.gz +0 -0
  265. package/dist/dashboard/assets/api-keys-BETfaMYZ.js.gz +0 -0
  266. package/dist/dashboard/assets/app-BLCvGdzb.css +0 -2
  267. package/dist/dashboard/assets/app-BLCvGdzb.css.gz +0 -0
  268. package/dist/dashboard/assets/assert-7J6_LVD3.js +0 -1
  269. package/dist/dashboard/assets/assert-7J6_LVD3.js.gz +0 -0
  270. package/dist/dashboard/assets/badge-BTyGk_DL.js.gz +0 -0
  271. package/dist/dashboard/assets/banner-bujTWYM4.js.gz +0 -0
  272. package/dist/dashboard/assets/card-B0Bnx5CA.js.gz +0 -0
  273. package/dist/dashboard/assets/cli-tools-DE2ug812.js.gz +0 -0
  274. package/dist/dashboard/assets/clipboard-button-R_rArH8S.js.gz +0 -0
  275. package/dist/dashboard/assets/dialog-BWIP_EvW.js.gz +0 -0
  276. package/dist/dashboard/assets/drawer-BKcgVugF.js.gz +0 -0
  277. package/dist/dashboard/assets/entry-7dpgvpJ3.js +0 -4
  278. package/dist/dashboard/assets/entry-7dpgvpJ3.js.gz +0 -0
  279. package/dist/dashboard/assets/entry-kTiTFrvh.js.gz +0 -0
  280. package/dist/dashboard/assets/github-badge-Booc5mNe.js.gz +0 -0
  281. package/dist/dashboard/assets/index-D70pChfn.js.gz +0 -0
  282. package/dist/dashboard/assets/inline-D1TCqM2D.js.gz +0 -0
  283. package/dist/dashboard/assets/input-B9oyU93y.js.gz +0 -0
  284. package/dist/dashboard/assets/layout-BArzXirQ.js.gz +0 -0
  285. package/dist/dashboard/assets/list-row-BVZzaoHF.js.gz +0 -0
  286. package/dist/dashboard/assets/live-EmuIayqp.js.gz +0 -0
  287. package/dist/dashboard/assets/model-bans-CSPQ9xB0.js.gz +0 -0
  288. package/dist/dashboard/assets/routing-BExgxxBU.js.gz +0 -0
  289. package/dist/dashboard/assets/select-C9mMoEpJ.js +0 -41
  290. package/dist/dashboard/assets/select-C9mMoEpJ.js.gz +0 -0
  291. package/dist/dashboard/assets/settings-C4_Gn_wq.js +0 -1
  292. package/dist/dashboard/assets/settings-C4_Gn_wq.js.gz +0 -0
  293. package/dist/dashboard/assets/sliders-horizontal-ClG7dBeJ.js +0 -1
  294. package/dist/dashboard/assets/sliders-horizontal-ClG7dBeJ.js.gz +0 -0
  295. package/dist/dashboard/assets/stack-Ca5HxI5i.js.gz +0 -0
  296. package/dist/dashboard/assets/state-CzUPfLXo.js.gz +0 -0
  297. package/dist/dashboard/assets/switch-DOUIky_i.js.gz +0 -0
  298. package/dist/dashboard/assets/toast-C76WrMhc.js.gz +0 -0
  299. package/dist/dashboard/assets/useMutation-D87FZwH0.js.gz +0 -0
  300. package/src/network/tls/bun-client-hello.ts +0 -112
  301. /package/dist/dashboard/assets/{app-Cjq7nrwu.js → app-C-Y4oZT0.js} +0 -0
  302. /package/dist/dashboard/assets/{app-Cjq7nrwu.js.gz → app-C-Y4oZT0.js.gz} +0 -0
@@ -1,146 +1,153 @@
1
- /**
2
- * Kilo Code adapter.
3
- *
4
- * Kilo Code resells the OpenRouter catalog behind a bearer device token on an
5
- * OpenAI-compatible chat surface, so this adapter reuses the shared factory for
6
- * payload translation, transport, and SSE decoding.
7
- *
8
- * One thing sits outside the declarative `ApiKeyProviderSpec`: the stored
9
- * credential is a JSON envelope (`{ accessToken, orgId }`) because the gateway
10
- * scopes every request to the account's organization and the console stores one
11
- * opaque string per account. The factory forwards that string as the bearer
12
- * verbatim, so the envelope is decoded at the auth boundary here — the same
13
- * arrangement `kimi/kimi.ts` uses for its own envelope credential.
14
- *
15
- * The base URL is the completions path itself, because that is the path Kilo
16
- * Code publishes (`/api/openrouter/chat/completions`) and it is not derivable
17
- * from an origin plus a wire-family suffix.
18
- */
19
- import { defineModel } from "../../provider-model-definition";
20
- import type { ModelDefinition } from "../../provider-model-definition";
21
- import type { ProviderAdapter, ProviderDispatchContext, ProviderDispatchTarget } from "../../provider-contracts";
22
- import type { CanonicalRequest } from "../../../protocol/canonical-model";
23
- import { OpenAICompatibleAdapter, withBearerAuthentication } from "../../adapters/compatible-adapter";
24
- import { providerBaseUrl } from "../../provider-metadata";
25
- import { decodeKiloCredential } from "../../../security/credential-codec";
26
-
27
- export const KILO_PROVIDER_ID = "kilo" as const;
28
- export const KILO_BASE_URL = providerBaseUrl("kilo");
29
-
30
- /**
31
- * Endpoint path recorded on this provider's model rows and used by the adapter.
32
- *
33
- * The base URL carries Kilo Code's API prefix (`/api/openrouter`), so this is
34
- * the wire suffix that completes it — the same split Cline uses for
35
- * `/api/v1` + `/chat/completions`.
36
- */
37
- export const KILO_ENDPOINT_PATH = "/chat/completions" as const;
38
-
39
- interface KiloModelOptions {
40
- readonly vision?: boolean;
41
- readonly document?: boolean;
42
- readonly audio?: boolean;
43
- readonly reasoning?: boolean;
44
- readonly toolCall?: boolean;
45
- }
46
-
47
- function kiloModel(
48
- modelId: string,
49
- contextLimit: number,
50
- outputLimit: number,
51
- options: KiloModelOptions = {},
52
- ): ModelDefinition {
53
- return defineModel({
54
- id: modelId,
55
- providerId: KILO_PROVIDER_ID,
56
- wireFamily: "chat",
57
- endpoint: KILO_ENDPOINT_PATH,
58
- ctx: contextLimit,
59
- out: outputLimit,
60
- vision: options.vision ?? false,
61
- document: options.document ?? false,
62
- audio: options.audio ?? false,
63
- reasoning: options.reasoning ?? false,
64
- toolCall: options.toolCall ?? true,
65
- });
66
- }
67
-
68
- /**
69
- * Static fallback catalog, read from the live `/api/gateway/models` directory.
70
- *
71
- * Live discovery replaces this list whenever an account is available, so these
72
- * rows are the offline floor: the gateway's own routing aliases plus one
73
- * current model per family it resells. Limits and capability come from the
74
- * directory entry's own `top_provider` / `architecture` /
75
- * `supported_parameters` fields rather than from the base catalog, which prices
76
- * the underlying model and not this reseller's serving.
77
- */
78
- export const KILO_MODELS: readonly ModelDefinition[] = [
79
- kiloModel("kilo-auto/frontier", 1_000_000, 128_000, { vision: true, document: true, reasoning: true }),
80
- kiloModel("kilo-auto/balanced", 1_000_000, 65_536, { vision: true, reasoning: true }),
81
- kiloModel("kilo-auto/efficient", 1_000_000, 65_536, { vision: true, reasoning: true }),
82
- kiloModel("kilo-auto/small", 262_144, 32_768, { vision: true, reasoning: true }),
83
- kiloModel("kilo-auto/free", 256_000, 32_768, { reasoning: true }),
84
- kiloModel("anthropic/claude-opus-4.8", 1_000_000, 128_000, { vision: true, document: true, reasoning: true }),
85
- kiloModel("anthropic/claude-opus-4.7", 1_000_000, 128_000, { vision: true, document: true, reasoning: true }),
86
- kiloModel("anthropic/claude-sonnet-4.6", 1_000_000, 128_000, { vision: true, document: true, reasoning: true }),
87
- kiloModel("openai/gpt-6-sol", 1_050_000, 128_000, { vision: true, document: true, reasoning: true }),
88
- kiloModel("openai/gpt-6-luna", 1_050_000, 128_000, { vision: true, document: true, reasoning: true }),
89
- kiloModel("openai/gpt-4.1", 1_047_576, 32_768, { vision: true, document: true }),
90
- kiloModel("openai/o3", 200_000, 100_000, { vision: true, document: true, reasoning: true }),
91
- kiloModel("google/gemini-2.5-pro", 1_048_576, 65_536, { vision: true, document: true, audio: true, reasoning: true }),
92
- kiloModel("google/gemini-2.5-flash", 1_048_576, 65_535, { vision: true, document: true, audio: true, reasoning: true }),
93
- kiloModel("x-ai/grok-4.7", 500_000, 450_000, { vision: true, document: true, reasoning: true }),
94
- kiloModel("moonshotai/kimi-k3", 1_048_576, 943_718, { vision: true, reasoning: true }),
95
- kiloModel("z-ai/glm-5.3-flash", 1_048_576, 131_072, { vision: true, reasoning: true }),
96
- kiloModel("deepseek/deepseek-chat", 163_840, 16_384),
97
- ];
98
-
99
- /**
100
- * Adapter that decodes the credential envelope before the shared pipeline
101
- * authenticates the request.
102
- *
103
- * `prepareHeaders` is corrected rather than rebuilt: every other header the
104
- * factory contributes (content type, gateway identity, operator custom headers,
105
- * route user-agent) stays exactly as every other provider gets it.
106
- */
107
- class KiloAdapter extends OpenAICompatibleAdapter {
108
- constructor(fetchImpl?: typeof fetch) {
109
- super(
110
- withBearerAuthentication({
111
- provider_id: KILO_PROVIDER_ID,
112
- base_url: KILO_BASE_URL,
113
- endpoint_paths_by_wire_family: { chat: KILO_ENDPOINT_PATH },
114
- ...(fetchImpl ? { fetchImpl } : {}),
115
- }),
116
- );
117
- }
118
-
119
- protected override async prepareHeaders(
120
- context: ProviderDispatchContext,
121
- request: CanonicalRequest,
122
- candidate: ProviderDispatchTarget,
123
- ): Promise<Record<string, string>> {
124
- const headers = await super.prepareHeaders(context, request, candidate);
125
- const secret = context.credential.secret;
126
- if (secret === undefined || secret.length === 0) return headers;
127
- // A credential that does not decode is left as the factory sent it: the
128
- // request then fails closed at the upstream auth boundary, and the parse
129
- // error belongs to the credential boundary rather than to this hook.
130
- let credential: ReturnType<typeof decodeKiloCredential>;
131
- try {
132
- credential = decodeKiloCredential(secret);
133
- } catch {
134
- return headers;
135
- }
136
- headers.authorization = `Bearer ${credential.accessToken}`;
137
- // The upstream's own header name, not ours: renaming the Cartethyia
138
- // provider id does not rename a field the upstream reads.
139
- if (credential.orgId !== undefined) headers["X-Kilocode-OrganizationID"] = credential.orgId;
140
- return headers;
141
- }
142
- }
143
-
144
- /** Kilo Code provider adapter. */
145
- export const kiloAdapter: ProviderAdapter = new KiloAdapter();
146
-
1
+ /**
2
+ * Kilo Code adapter.
3
+ *
4
+ * Kilo Code resells the OpenRouter catalog behind a bearer device token on an
5
+ * OpenAI-compatible chat surface, so this adapter reuses the shared factory for
6
+ * payload translation, transport, and SSE decoding.
7
+ *
8
+ * One thing sits outside the declarative `ApiKeyProviderSpec`: the stored
9
+ * credential is a JSON envelope (`{ accessToken, orgId }`) because the gateway
10
+ * scopes every request to the account's organization and the console stores one
11
+ * opaque string per account. The factory forwards that string as the bearer
12
+ * verbatim, so the envelope is decoded at the auth boundary here — the same
13
+ * arrangement `kimi/kimi.ts` uses for its own envelope credential.
14
+ *
15
+ * The base URL is the completions path itself, because that is the path Kilo
16
+ * Code publishes (`/api/openrouter/chat/completions`) and it is not derivable
17
+ * from an origin plus a wire-family suffix.
18
+ */
19
+ import { defineModel } from "../../provider-model-definition";
20
+ import { openrouterFreeRoster } from "../../discovery/openrouter-free-roster";
21
+ import type { ModelDefinition } from "../../provider-model-definition";
22
+ import type { ProviderAdapter, ProviderDispatchContext, ProviderDispatchTarget } from "../../provider-contracts";
23
+ import type { CanonicalRequest } from "../../../protocol/canonical-model";
24
+ import { OpenAICompatibleAdapter, withBearerAuthentication } from "../../adapters/compatible-adapter";
25
+ import { providerBaseUrl } from "../../provider-metadata";
26
+ import { decodeKiloCredential } from "../../../security/credential-codec";
27
+
28
+ export const KILO_PROVIDER_ID = "kilo" as const;
29
+ export const KILO_BASE_URL = providerBaseUrl("kilo");
30
+
31
+ /**
32
+ * Endpoint path recorded on this provider's model rows and used by the adapter.
33
+ *
34
+ * The base URL carries Kilo Code's API prefix (`/api/openrouter`), so this is
35
+ * the wire suffix that completes it — the same split Cline uses for
36
+ * `/api/v1` + `/chat/completions`.
37
+ */
38
+ export const KILO_ENDPOINT_PATH = "/chat/completions" as const;
39
+
40
+ interface KiloModelOptions {
41
+ readonly vision?: boolean;
42
+ readonly document?: boolean;
43
+ readonly audio?: boolean;
44
+ readonly reasoning?: boolean;
45
+ readonly toolCall?: boolean;
46
+ }
47
+
48
+ function kiloModel(
49
+ modelId: string,
50
+ contextLimit: number,
51
+ outputLimit: number,
52
+ options: KiloModelOptions = {},
53
+ ): ModelDefinition {
54
+ return defineModel({
55
+ id: modelId,
56
+ providerId: KILO_PROVIDER_ID,
57
+ wireFamily: "chat",
58
+ endpoint: KILO_ENDPOINT_PATH,
59
+ ctx: contextLimit,
60
+ out: outputLimit,
61
+ vision: options.vision ?? false,
62
+ document: options.document ?? false,
63
+ audio: options.audio ?? false,
64
+ reasoning: options.reasoning ?? false,
65
+ toolCall: options.toolCall ?? true,
66
+ });
67
+ }
68
+
69
+ /**
70
+ * Static fallback catalog, read from the live `/api/gateway/models` directory.
71
+ *
72
+ * Live discovery replaces this list whenever an account is available, so these
73
+ * rows are the offline floor: the gateway's own routing aliases plus one
74
+ * current model per family it resells. Limits and capability come from the
75
+ * directory entry's own `top_provider` / `architecture` /
76
+ * `supported_parameters` fields rather than from the base catalog, which prices
77
+ * the underlying model and not this reseller's serving.
78
+ */
79
+ export const KILO_MODELS: readonly ModelDefinition[] = [
80
+ // Three routers, and nothing else. A committed catalog of specific ids was a
81
+ // snapshot of one afternoon: this provider resells the OpenRouter catalog,
82
+ // which adds and pulls models within days, so discovery is the authority and
83
+ // every hand-kept row outside these drifts out of truth.
84
+ //
85
+ // `kilo-auto/free` bills zero and `kilo-auto/small` bills a fraction of a
86
+ // cent; both route on the provider's own side, so their limits are the
87
+ // window the router may select into rather than one model's.
88
+ kiloModel("kilo-auto/free", 256_000, 32_768, { reasoning: true }),
89
+ kiloModel("kilo-auto/small", 262_144, 32_768, { vision: true, reasoning: true }),
90
+ kiloModel("openrouter/auto", 2_000_000, 128_000, { reasoning: true }),
91
+ ];
92
+
93
+ /**
94
+ * The shared free roster, spelled for this provider's endpoint.
95
+ *
96
+ * The same 17 `:free` ids Cline and OpenRouter serve, because this is the same
97
+ * catalog behind a different origin. Kept separate from `KILO_MODELS` so the
98
+ * free tier is its own statement: those three rows are routers, these are the
99
+ * zero-cost models, and the model list groups them differently.
100
+ */
101
+ export const KILO_FREE_MODELS: readonly ModelDefinition[] = openrouterFreeRoster({
102
+ providerId: KILO_PROVIDER_ID,
103
+ endpoint: KILO_ENDPOINT_PATH,
104
+ });
105
+
106
+ /**
107
+ * Adapter that decodes the credential envelope before the shared pipeline
108
+ * authenticates the request.
109
+ *
110
+ * `prepareHeaders` is corrected rather than rebuilt: every other header the
111
+ * factory contributes (content type, gateway identity, operator custom headers,
112
+ * route user-agent) stays exactly as every other provider gets it.
113
+ */
114
+ class KiloAdapter extends OpenAICompatibleAdapter {
115
+ constructor(fetchImpl?: typeof fetch) {
116
+ super(
117
+ withBearerAuthentication({
118
+ provider_id: KILO_PROVIDER_ID,
119
+ base_url: KILO_BASE_URL,
120
+ endpoint_paths_by_wire_family: { chat: KILO_ENDPOINT_PATH },
121
+ ...(fetchImpl ? { fetchImpl } : {}),
122
+ }),
123
+ );
124
+ }
125
+
126
+ protected override async prepareHeaders(
127
+ context: ProviderDispatchContext,
128
+ request: CanonicalRequest,
129
+ candidate: ProviderDispatchTarget,
130
+ ): Promise<Record<string, string>> {
131
+ const headers = await super.prepareHeaders(context, request, candidate);
132
+ const secret = context.credential.secret;
133
+ if (secret === undefined || secret.length === 0) return headers;
134
+ // A credential that does not decode is left as the factory sent it: the
135
+ // request then fails closed at the upstream auth boundary, and the parse
136
+ // error belongs to the credential boundary rather than to this hook.
137
+ let credential: ReturnType<typeof decodeKiloCredential>;
138
+ try {
139
+ credential = decodeKiloCredential(secret);
140
+ } catch {
141
+ return headers;
142
+ }
143
+ headers.authorization = `Bearer ${credential.accessToken}`;
144
+ // The upstream's own header name, not ours: renaming the Cartethyia
145
+ // provider id does not rename a field the upstream reads.
146
+ if (credential.orgId !== undefined) headers["X-Kilocode-OrganizationID"] = credential.orgId;
147
+ return headers;
148
+ }
149
+ }
150
+
151
+ /** Kilo Code provider adapter. */
152
+ export const kiloAdapter: ProviderAdapter = new KiloAdapter();
153
+