@slkiser/opencode-quota 5.0.3 → 6.0.0-beta.1

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 (794) hide show
  1. package/README.md +30 -44
  2. package/dist/agent-tools.d.ts +24 -0
  3. package/dist/agent-tools.d.ts.map +1 -0
  4. package/dist/agent-tools.js +578 -0
  5. package/dist/agent-tools.js.map +1 -0
  6. package/dist/bin/opencode-quota.d.ts.map +1 -1
  7. package/dist/bin/opencode-quota.js +1 -32
  8. package/dist/bin/opencode-quota.js.map +1 -1
  9. package/dist/core/errors.d.ts +12 -0
  10. package/dist/core/errors.d.ts.map +1 -0
  11. package/dist/core/errors.js +141 -0
  12. package/dist/core/errors.js.map +1 -0
  13. package/dist/core/pace.d.ts +13 -0
  14. package/dist/core/pace.d.ts.map +1 -0
  15. package/dist/core/pace.js +52 -0
  16. package/dist/core/pace.js.map +1 -0
  17. package/dist/core/persist.d.ts +44 -0
  18. package/dist/core/persist.d.ts.map +1 -0
  19. package/dist/core/persist.js +210 -0
  20. package/dist/core/persist.js.map +1 -0
  21. package/dist/core/provider-source.d.ts +40 -0
  22. package/dist/core/provider-source.d.ts.map +1 -0
  23. package/dist/core/provider-source.js +210 -0
  24. package/dist/core/provider-source.js.map +1 -0
  25. package/dist/core/redact.d.ts +17 -0
  26. package/dist/core/redact.d.ts.map +1 -0
  27. package/dist/core/redact.js +217 -0
  28. package/dist/core/redact.js.map +1 -0
  29. package/dist/core/rows.d.ts +20 -0
  30. package/dist/core/rows.d.ts.map +1 -0
  31. package/dist/core/rows.js +142 -0
  32. package/dist/core/rows.js.map +1 -0
  33. package/dist/core/selection.d.ts +15 -0
  34. package/dist/core/selection.d.ts.map +1 -0
  35. package/dist/core/selection.js +43 -0
  36. package/dist/core/selection.js.map +1 -0
  37. package/dist/core/snapshot-publisher.d.ts +15 -0
  38. package/dist/core/snapshot-publisher.d.ts.map +1 -0
  39. package/dist/core/snapshot-publisher.js +57 -0
  40. package/dist/core/snapshot-publisher.js.map +1 -0
  41. package/dist/core/store.d.ts +93 -0
  42. package/dist/core/store.d.ts.map +1 -0
  43. package/dist/core/store.js +563 -0
  44. package/dist/core/store.js.map +1 -0
  45. package/dist/core/types.d.ts +186 -0
  46. package/dist/core/types.d.ts.map +1 -0
  47. package/dist/core/types.js +2 -0
  48. package/dist/core/types.js.map +1 -0
  49. package/dist/core/usage-ranges.d.ts +46 -0
  50. package/dist/core/usage-ranges.d.ts.map +1 -0
  51. package/dist/core/usage-ranges.js +72 -0
  52. package/dist/core/usage-ranges.js.map +1 -0
  53. package/dist/core/usage.d.ts +100 -0
  54. package/dist/core/usage.d.ts.map +1 -0
  55. package/dist/core/usage.js +373 -0
  56. package/dist/core/usage.js.map +1 -0
  57. package/dist/core/validate.d.ts +8 -0
  58. package/dist/core/validate.d.ts.map +1 -0
  59. package/dist/core/validate.js +167 -0
  60. package/dist/core/validate.js.map +1 -0
  61. package/dist/core/windows.d.ts +24 -0
  62. package/dist/core/windows.d.ts.map +1 -0
  63. package/dist/core/windows.js +43 -0
  64. package/dist/core/windows.js.map +1 -0
  65. package/dist/index.d.ts +2 -1
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js.map +1 -1
  68. package/dist/lib/accounting-format.d.ts +2 -52
  69. package/dist/lib/accounting-format.d.ts.map +1 -1
  70. package/dist/lib/accounting-format.js +6 -255
  71. package/dist/lib/accounting-format.js.map +1 -1
  72. package/dist/lib/alibaba-auth.d.ts +14 -21
  73. package/dist/lib/alibaba-auth.d.ts.map +1 -1
  74. package/dist/lib/alibaba-auth.js +36 -149
  75. package/dist/lib/alibaba-auth.js.map +1 -1
  76. package/dist/lib/alibaba-coding-plan-local-quota.d.ts +1 -6
  77. package/dist/lib/alibaba-coding-plan-local-quota.d.ts.map +1 -1
  78. package/dist/lib/alibaba-coding-plan-local-quota.js +1 -1
  79. package/dist/lib/alibaba-coding-plan-local-quota.js.map +1 -1
  80. package/dist/lib/alibaba-token-plan.d.ts +18 -27
  81. package/dist/lib/alibaba-token-plan.d.ts.map +1 -1
  82. package/dist/lib/alibaba-token-plan.js +121 -285
  83. package/dist/lib/alibaba-token-plan.js.map +1 -1
  84. package/dist/lib/anthropic-auth.d.ts +3 -5
  85. package/dist/lib/anthropic-auth.d.ts.map +1 -1
  86. package/dist/lib/anthropic-auth.js +6 -9
  87. package/dist/lib/anthropic-auth.js.map +1 -1
  88. package/dist/lib/anthropic.d.ts +12 -37
  89. package/dist/lib/anthropic.d.ts.map +1 -1
  90. package/dist/lib/anthropic.js +348 -698
  91. package/dist/lib/anthropic.js.map +1 -1
  92. package/dist/lib/api-key-resolver.d.ts +165 -192
  93. package/dist/lib/api-key-resolver.d.ts.map +1 -1
  94. package/dist/lib/api-key-resolver.js +208 -234
  95. package/dist/lib/api-key-resolver.js.map +1 -1
  96. package/dist/lib/atomic-json.d.ts +4 -1
  97. package/dist/lib/atomic-json.d.ts.map +1 -1
  98. package/dist/lib/atomic-json.js +2 -3
  99. package/dist/lib/atomic-json.js.map +1 -1
  100. package/dist/lib/calendar-date.d.ts +15 -0
  101. package/dist/lib/calendar-date.d.ts.map +1 -0
  102. package/dist/lib/calendar-date.js +21 -0
  103. package/dist/lib/calendar-date.js.map +1 -0
  104. package/dist/lib/chutes.d.ts +0 -1
  105. package/dist/lib/chutes.d.ts.map +1 -1
  106. package/dist/lib/chutes.js +2 -4
  107. package/dist/lib/chutes.js.map +1 -1
  108. package/dist/lib/cli-reports.d.ts +15 -11
  109. package/dist/lib/cli-reports.d.ts.map +1 -1
  110. package/dist/lib/cli-reports.js +34 -107
  111. package/dist/lib/cli-reports.js.map +1 -1
  112. package/dist/lib/cli-show.d.ts +9 -22
  113. package/dist/lib/cli-show.d.ts.map +1 -1
  114. package/dist/lib/cli-show.js +104 -75
  115. package/dist/lib/cli-show.js.map +1 -1
  116. package/dist/lib/config-file-utils.d.ts +3 -15
  117. package/dist/lib/config-file-utils.d.ts.map +1 -1
  118. package/dist/lib/config-file-utils.js +4 -63
  119. package/dist/lib/config-file-utils.js.map +1 -1
  120. package/dist/lib/config-write-target.d.ts +4 -7
  121. package/dist/lib/config-write-target.d.ts.map +1 -1
  122. package/dist/lib/config-write-target.js +4 -18
  123. package/dist/lib/config-write-target.js.map +1 -1
  124. package/dist/lib/copilot.d.ts +29 -20
  125. package/dist/lib/copilot.d.ts.map +1 -1
  126. package/dist/lib/copilot.js +392 -649
  127. package/dist/lib/copilot.js.map +1 -1
  128. package/dist/lib/cursor-detection.d.ts +3 -3
  129. package/dist/lib/cursor-detection.d.ts.map +1 -1
  130. package/dist/lib/cursor-detection.js +44 -88
  131. package/dist/lib/cursor-detection.js.map +1 -1
  132. package/dist/lib/cursor-pricing.d.ts +71 -8
  133. package/dist/lib/cursor-pricing.d.ts.map +1 -1
  134. package/dist/lib/cursor-pricing.js +33 -125
  135. package/dist/lib/cursor-pricing.js.map +1 -1
  136. package/dist/lib/cursor-usage.d.ts +6 -4
  137. package/dist/lib/cursor-usage.d.ts.map +1 -1
  138. package/dist/lib/cursor-usage.js +27 -40
  139. package/dist/lib/cursor-usage.js.map +1 -1
  140. package/dist/lib/deepseek.d.ts +9 -17
  141. package/dist/lib/deepseek.d.ts.map +1 -1
  142. package/dist/lib/deepseek.js +24 -54
  143. package/dist/lib/deepseek.js.map +1 -1
  144. package/dist/lib/display-sanitize.d.ts +0 -8
  145. package/dist/lib/display-sanitize.d.ts.map +1 -1
  146. package/dist/lib/display-sanitize.js +0 -139
  147. package/dist/lib/display-sanitize.js.map +1 -1
  148. package/dist/lib/entries.d.ts +13 -239
  149. package/dist/lib/entries.d.ts.map +1 -1
  150. package/dist/lib/entries.js +1 -46
  151. package/dist/lib/entries.js.map +1 -1
  152. package/dist/lib/file-lock.d.ts +23 -0
  153. package/dist/lib/file-lock.d.ts.map +1 -0
  154. package/dist/lib/file-lock.js +122 -0
  155. package/dist/lib/file-lock.js.map +1 -0
  156. package/dist/lib/format-utils.d.ts +2 -82
  157. package/dist/lib/format-utils.d.ts.map +1 -1
  158. package/dist/lib/format-utils.js +2 -191
  159. package/dist/lib/format-utils.js.map +1 -1
  160. package/dist/lib/glm-coding-plan.d.ts +6 -5
  161. package/dist/lib/glm-coding-plan.d.ts.map +1 -1
  162. package/dist/lib/glm-coding-plan.js +19 -1
  163. package/dist/lib/glm-coding-plan.js.map +1 -1
  164. package/dist/lib/google-agy.d.ts +8 -40
  165. package/dist/lib/google-agy.d.ts.map +1 -1
  166. package/dist/lib/google-agy.js +88 -519
  167. package/dist/lib/google-agy.js.map +1 -1
  168. package/dist/lib/google-companion-credentials.d.ts +9 -40
  169. package/dist/lib/google-companion-credentials.d.ts.map +1 -1
  170. package/dist/lib/google-companion-credentials.js +167 -224
  171. package/dist/lib/google-companion-credentials.js.map +1 -1
  172. package/dist/lib/google-gemini-cli.d.ts +5 -38
  173. package/dist/lib/google-gemini-cli.d.ts.map +1 -1
  174. package/dist/lib/google-gemini-cli.js +71 -442
  175. package/dist/lib/google-gemini-cli.js.map +1 -1
  176. package/dist/lib/google-oauth-quota.d.ts +76 -0
  177. package/dist/lib/google-oauth-quota.d.ts.map +1 -0
  178. package/dist/lib/google-oauth-quota.js +297 -0
  179. package/dist/lib/google-oauth-quota.js.map +1 -0
  180. package/dist/lib/google-token-cache.d.ts +3 -5
  181. package/dist/lib/google-token-cache.d.ts.map +1 -1
  182. package/dist/lib/google-token-cache.js +2 -14
  183. package/dist/lib/google-token-cache.js.map +1 -1
  184. package/dist/lib/home-dir-display.d.ts.map +1 -1
  185. package/dist/lib/home-dir-display.js +21 -39
  186. package/dist/lib/home-dir-display.js.map +1 -1
  187. package/dist/lib/http.d.ts +4 -1
  188. package/dist/lib/http.d.ts.map +1 -1
  189. package/dist/lib/http.js +2 -1
  190. package/dist/lib/http.js.map +1 -1
  191. package/dist/lib/json-guards.d.ts +11 -0
  192. package/dist/lib/json-guards.d.ts.map +1 -0
  193. package/dist/lib/json-guards.js +25 -0
  194. package/dist/lib/json-guards.js.map +1 -0
  195. package/dist/lib/kilo.d.ts +0 -2
  196. package/dist/lib/kilo.d.ts.map +1 -1
  197. package/dist/lib/kilo.js +33 -116
  198. package/dist/lib/kilo.js.map +1 -1
  199. package/dist/lib/kimi-endpoints.d.ts +2 -2
  200. package/dist/lib/kimi-endpoints.d.ts.map +1 -1
  201. package/dist/lib/kimi-endpoints.js +1 -1
  202. package/dist/lib/kimi-endpoints.js.map +1 -1
  203. package/dist/lib/kimi.d.ts.map +1 -1
  204. package/dist/lib/kimi.js +40 -86
  205. package/dist/lib/kimi.js.map +1 -1
  206. package/dist/lib/maintainer-announcements.d.ts +4 -17
  207. package/dist/lib/maintainer-announcements.d.ts.map +1 -1
  208. package/dist/lib/maintainer-announcements.js +7 -44
  209. package/dist/lib/maintainer-announcements.js.map +1 -1
  210. package/dist/lib/maintainer-home-notice.d.ts +19 -0
  211. package/dist/lib/maintainer-home-notice.d.ts.map +1 -0
  212. package/dist/lib/maintainer-home-notice.js +92 -0
  213. package/dist/lib/maintainer-home-notice.js.map +1 -0
  214. package/dist/lib/mimo-config.d.ts +6 -9
  215. package/dist/lib/mimo-config.d.ts.map +1 -1
  216. package/dist/lib/mimo-config.js +43 -74
  217. package/dist/lib/mimo-config.js.map +1 -1
  218. package/dist/lib/mimo.d.ts +2 -5
  219. package/dist/lib/mimo.d.ts.map +1 -1
  220. package/dist/lib/mimo.js +57 -109
  221. package/dist/lib/mimo.js.map +1 -1
  222. package/dist/lib/minimax-endpoints.d.ts +2 -2
  223. package/dist/lib/minimax-endpoints.d.ts.map +1 -1
  224. package/dist/lib/minimax-endpoints.js +1 -1
  225. package/dist/lib/minimax-endpoints.js.map +1 -1
  226. package/dist/lib/modelsdev-pricing.d.ts +22 -16
  227. package/dist/lib/modelsdev-pricing.d.ts.map +1 -1
  228. package/dist/lib/modelsdev-pricing.js +279 -560
  229. package/dist/lib/modelsdev-pricing.js.map +1 -1
  230. package/dist/lib/nanogpt.d.ts +6 -6
  231. package/dist/lib/nanogpt.d.ts.map +1 -1
  232. package/dist/lib/nanogpt.js +19 -72
  233. package/dist/lib/nanogpt.js.map +1 -1
  234. package/dist/lib/ollama-cloud.d.ts +3 -6
  235. package/dist/lib/ollama-cloud.d.ts.map +1 -1
  236. package/dist/lib/ollama-cloud.js +26 -37
  237. package/dist/lib/ollama-cloud.js.map +1 -1
  238. package/dist/lib/openai.d.ts +18 -29
  239. package/dist/lib/openai.d.ts.map +1 -1
  240. package/dist/lib/openai.js +108 -182
  241. package/dist/lib/openai.js.map +1 -1
  242. package/dist/lib/opencode-auth-sqlite.d.ts.map +1 -1
  243. package/dist/lib/opencode-auth-sqlite.js +22 -23
  244. package/dist/lib/opencode-auth-sqlite.js.map +1 -1
  245. package/dist/lib/opencode-auth.d.ts +17 -11
  246. package/dist/lib/opencode-auth.d.ts.map +1 -1
  247. package/dist/lib/opencode-auth.js +39 -46
  248. package/dist/lib/opencode-auth.js.map +1 -1
  249. package/dist/lib/opencode-config-editor.d.ts +3 -34
  250. package/dist/lib/opencode-config-editor.d.ts.map +1 -1
  251. package/dist/lib/opencode-config-editor.js +23 -142
  252. package/dist/lib/opencode-config-editor.js.map +1 -1
  253. package/dist/lib/opencode-config-providers.d.ts +4 -3
  254. package/dist/lib/opencode-config-providers.d.ts.map +1 -1
  255. package/dist/lib/opencode-config-providers.js +7 -11
  256. package/dist/lib/opencode-config-providers.js.map +1 -1
  257. package/dist/lib/opencode-config-read.d.ts +2 -1
  258. package/dist/lib/opencode-config-read.d.ts.map +1 -1
  259. package/dist/lib/opencode-config-read.js +3 -2
  260. package/dist/lib/opencode-config-read.js.map +1 -1
  261. package/dist/lib/opencode-console-auth.d.ts +2 -3
  262. package/dist/lib/opencode-console-auth.d.ts.map +1 -1
  263. package/dist/lib/opencode-console-auth.js +2 -2
  264. package/dist/lib/opencode-console-auth.js.map +1 -1
  265. package/dist/lib/opencode-go.d.ts.map +1 -1
  266. package/dist/lib/opencode-go.js +51 -79
  267. package/dist/lib/opencode-go.js.map +1 -1
  268. package/dist/lib/opencode-storage.d.ts +18 -3
  269. package/dist/lib/opencode-storage.d.ts.map +1 -1
  270. package/dist/lib/opencode-storage.js +134 -2
  271. package/dist/lib/opencode-storage.js.map +1 -1
  272. package/dist/lib/opencode-zen.d.ts +15 -12
  273. package/dist/lib/opencode-zen.d.ts.map +1 -1
  274. package/dist/lib/opencode-zen.js +139 -147
  275. package/dist/lib/opencode-zen.js.map +1 -1
  276. package/dist/lib/openrouter.d.ts.map +1 -1
  277. package/dist/lib/openrouter.js +1 -13
  278. package/dist/lib/openrouter.js.map +1 -1
  279. package/dist/lib/pricing-key.d.ts +48 -0
  280. package/dist/lib/pricing-key.d.ts.map +1 -0
  281. package/dist/lib/pricing-key.js +371 -0
  282. package/dist/lib/pricing-key.js.map +1 -0
  283. package/dist/lib/provider-metadata.d.ts +16 -20
  284. package/dist/lib/provider-metadata.d.ts.map +1 -1
  285. package/dist/lib/provider-metadata.js +69 -69
  286. package/dist/lib/provider-metadata.js.map +1 -1
  287. package/dist/lib/provider-model-matching.d.ts +2 -1
  288. package/dist/lib/provider-model-matching.d.ts.map +1 -1
  289. package/dist/lib/provider-registration.d.ts +1 -177
  290. package/dist/lib/provider-registration.d.ts.map +1 -1
  291. package/dist/lib/provider-registration.js +1 -163
  292. package/dist/lib/provider-registration.js.map +1 -1
  293. package/dist/lib/quota-dialog-commands.d.ts +87 -53
  294. package/dist/lib/quota-dialog-commands.d.ts.map +1 -1
  295. package/dist/lib/quota-dialog-commands.js +259 -519
  296. package/dist/lib/quota-dialog-commands.js.map +1 -1
  297. package/dist/lib/quota-export-types.d.ts +29 -23
  298. package/dist/lib/quota-export-types.d.ts.map +1 -1
  299. package/dist/lib/quota-export.d.ts +16 -26
  300. package/dist/lib/quota-export.d.ts.map +1 -1
  301. package/dist/lib/quota-export.js +105 -147
  302. package/dist/lib/quota-export.js.map +1 -1
  303. package/dist/lib/quota-providers-local.d.ts +12 -8
  304. package/dist/lib/quota-providers-local.d.ts.map +1 -1
  305. package/dist/lib/quota-providers-local.js +150 -223
  306. package/dist/lib/quota-providers-local.js.map +1 -1
  307. package/dist/lib/quota-providers-remote.d.ts +3 -8
  308. package/dist/lib/quota-providers-remote.d.ts.map +1 -1
  309. package/dist/lib/quota-providers-remote.js +309 -449
  310. package/dist/lib/quota-providers-remote.js.map +1 -1
  311. package/dist/lib/quota-providers.d.ts +57 -15
  312. package/dist/lib/quota-providers.d.ts.map +1 -1
  313. package/dist/lib/quota-providers.js +157 -64
  314. package/dist/lib/quota-providers.js.map +1 -1
  315. package/dist/lib/quota-report-message.d.ts +23 -10
  316. package/dist/lib/quota-report-message.d.ts.map +1 -1
  317. package/dist/lib/quota-report-message.js +37 -13
  318. package/dist/lib/quota-report-message.js.map +1 -1
  319. package/dist/lib/quota-retry-wait.d.ts +14 -6
  320. package/dist/lib/quota-retry-wait.d.ts.map +1 -1
  321. package/dist/lib/quota-retry-wait.js +37 -39
  322. package/dist/lib/quota-retry-wait.js.map +1 -1
  323. package/dist/lib/quota-status.d.ts +50 -33
  324. package/dist/lib/quota-status.d.ts.map +1 -1
  325. package/dist/lib/quota-status.js +1113 -773
  326. package/dist/lib/quota-status.js.map +1 -1
  327. package/dist/lib/quota-telemetry.d.ts +7 -14
  328. package/dist/lib/quota-telemetry.d.ts.map +1 -1
  329. package/dist/lib/quota-telemetry.js +46 -97
  330. package/dist/lib/quota-telemetry.js.map +1 -1
  331. package/dist/lib/report-document.d.ts +5 -65
  332. package/dist/lib/report-document.d.ts.map +1 -1
  333. package/dist/lib/report-document.js +14 -167
  334. package/dist/lib/report-document.js.map +1 -1
  335. package/dist/lib/resolved-auth-identity.d.ts +1 -2
  336. package/dist/lib/resolved-auth-identity.d.ts.map +1 -1
  337. package/dist/lib/resolved-auth-identity.js +0 -4
  338. package/dist/lib/resolved-auth-identity.js.map +1 -1
  339. package/dist/lib/session-tokens.d.ts +19 -19
  340. package/dist/lib/session-tokens.d.ts.map +1 -1
  341. package/dist/lib/session-tokens.js +58 -44
  342. package/dist/lib/session-tokens.js.map +1 -1
  343. package/dist/lib/synthetic.d.ts +0 -1
  344. package/dist/lib/synthetic.d.ts.map +1 -1
  345. package/dist/lib/synthetic.js +43 -94
  346. package/dist/lib/synthetic.js.map +1 -1
  347. package/dist/lib/token-buckets.d.ts +0 -1
  348. package/dist/lib/token-buckets.d.ts.map +1 -1
  349. package/dist/lib/token-buckets.js +0 -3
  350. package/dist/lib/token-buckets.js.map +1 -1
  351. package/dist/lib/token-cost.d.ts +2 -1
  352. package/dist/lib/token-cost.d.ts.map +1 -1
  353. package/dist/lib/types.d.ts +25 -333
  354. package/dist/lib/types.d.ts.map +1 -1
  355. package/dist/lib/types.js +2 -70
  356. package/dist/lib/types.js.map +1 -1
  357. package/dist/lib/xai.d.ts +6 -6
  358. package/dist/lib/xai.d.ts.map +1 -1
  359. package/dist/lib/xai.js +51 -90
  360. package/dist/lib/xai.js.map +1 -1
  361. package/dist/plugin.d.ts +6 -3
  362. package/dist/plugin.d.ts.map +1 -1
  363. package/dist/plugin.js +315 -90
  364. package/dist/plugin.js.map +1 -1
  365. package/dist/providers/alibaba-coding-plan.d.ts +4 -0
  366. package/dist/providers/alibaba-coding-plan.d.ts.map +1 -1
  367. package/dist/providers/alibaba-coding-plan.js +47 -77
  368. package/dist/providers/alibaba-coding-plan.js.map +1 -1
  369. package/dist/providers/alibaba-token-plan.d.ts.map +1 -1
  370. package/dist/providers/alibaba-token-plan.js +34 -46
  371. package/dist/providers/alibaba-token-plan.js.map +1 -1
  372. package/dist/providers/anthropic.d.ts +2 -4
  373. package/dist/providers/anthropic.d.ts.map +1 -1
  374. package/dist/providers/anthropic.js +80 -162
  375. package/dist/providers/anthropic.js.map +1 -1
  376. package/dist/providers/cache-policies.d.ts +0 -2
  377. package/dist/providers/cache-policies.d.ts.map +1 -1
  378. package/dist/providers/cache-policies.js +38 -88
  379. package/dist/providers/cache-policies.js.map +1 -1
  380. package/dist/providers/chutes.d.ts +0 -3
  381. package/dist/providers/chutes.d.ts.map +1 -1
  382. package/dist/providers/chutes.js +16 -28
  383. package/dist/providers/chutes.js.map +1 -1
  384. package/dist/providers/contract.d.ts +128 -0
  385. package/dist/providers/contract.d.ts.map +1 -0
  386. package/dist/providers/contract.js +101 -0
  387. package/dist/providers/contract.js.map +1 -0
  388. package/dist/providers/copilot.d.ts.map +1 -1
  389. package/dist/providers/copilot.js +171 -175
  390. package/dist/providers/copilot.js.map +1 -1
  391. package/dist/providers/cursor.d.ts.map +1 -1
  392. package/dist/providers/cursor.js +56 -109
  393. package/dist/providers/cursor.js.map +1 -1
  394. package/dist/providers/deepseek.d.ts +1 -6
  395. package/dist/providers/deepseek.d.ts.map +1 -1
  396. package/dist/providers/deepseek.js +46 -81
  397. package/dist/providers/deepseek.js.map +1 -1
  398. package/dist/providers/glm-coding-plan.d.ts +8 -0
  399. package/dist/providers/glm-coding-plan.d.ts.map +1 -0
  400. package/dist/providers/glm-coding-plan.js +106 -0
  401. package/dist/providers/glm-coding-plan.js.map +1 -0
  402. package/dist/providers/google-agy.d.ts +0 -1
  403. package/dist/providers/google-agy.d.ts.map +1 -1
  404. package/dist/providers/google-agy.js +41 -192
  405. package/dist/providers/google-agy.js.map +1 -1
  406. package/dist/providers/google-gemini-cli.d.ts.map +1 -1
  407. package/dist/providers/google-gemini-cli.js +51 -151
  408. package/dist/providers/google-gemini-cli.js.map +1 -1
  409. package/dist/providers/google-oauth-provider.d.ts +39 -0
  410. package/dist/providers/google-oauth-provider.d.ts.map +1 -0
  411. package/dist/providers/google-oauth-provider.js +161 -0
  412. package/dist/providers/google-oauth-provider.js.map +1 -0
  413. package/dist/providers/kilo.d.ts +0 -3
  414. package/dist/providers/kilo.d.ts.map +1 -1
  415. package/dist/providers/kilo.js +69 -123
  416. package/dist/providers/kilo.js.map +1 -1
  417. package/dist/providers/kimi-code.d.ts +5 -0
  418. package/dist/providers/kimi-code.d.ts.map +1 -1
  419. package/dist/providers/kimi-code.js +91 -136
  420. package/dist/providers/kimi-code.js.map +1 -1
  421. package/dist/providers/mimo.d.ts.map +1 -1
  422. package/dist/providers/mimo.js +55 -94
  423. package/dist/providers/mimo.js.map +1 -1
  424. package/dist/providers/minimax-coding-plan.d.ts +2 -23
  425. package/dist/providers/minimax-coding-plan.d.ts.map +1 -1
  426. package/dist/providers/minimax-coding-plan.js +161 -277
  427. package/dist/providers/minimax-coding-plan.js.map +1 -1
  428. package/dist/providers/nanogpt.d.ts +0 -3
  429. package/dist/providers/nanogpt.d.ts.map +1 -1
  430. package/dist/providers/nanogpt.js +61 -95
  431. package/dist/providers/nanogpt.js.map +1 -1
  432. package/dist/providers/ollama-cloud.d.ts +0 -6
  433. package/dist/providers/ollama-cloud.d.ts.map +1 -1
  434. package/dist/providers/ollama-cloud.js +86 -112
  435. package/dist/providers/ollama-cloud.js.map +1 -1
  436. package/dist/providers/openai.d.ts.map +1 -1
  437. package/dist/providers/openai.js +144 -166
  438. package/dist/providers/openai.js.map +1 -1
  439. package/dist/providers/opencode-go.d.ts.map +1 -1
  440. package/dist/providers/opencode-go.js +157 -199
  441. package/dist/providers/opencode-go.js.map +1 -1
  442. package/dist/providers/opencode-zen.d.ts.map +1 -1
  443. package/dist/providers/opencode-zen.js +100 -150
  444. package/dist/providers/opencode-zen.js.map +1 -1
  445. package/dist/providers/openrouter.d.ts +0 -3
  446. package/dist/providers/openrouter.d.ts.map +1 -1
  447. package/dist/providers/openrouter.js +26 -13
  448. package/dist/providers/openrouter.js.map +1 -1
  449. package/dist/providers/quota-providers.d.ts +7 -3
  450. package/dist/providers/quota-providers.d.ts.map +1 -1
  451. package/dist/providers/quota-providers.js +111 -217
  452. package/dist/providers/quota-providers.js.map +1 -1
  453. package/dist/providers/registry.d.ts.map +1 -1
  454. package/dist/providers/registry.js +1 -2
  455. package/dist/providers/registry.js.map +1 -1
  456. package/dist/providers/result-helpers.d.ts +10 -37
  457. package/dist/providers/result-helpers.d.ts.map +1 -1
  458. package/dist/providers/result-helpers.js +23 -56
  459. package/dist/providers/result-helpers.js.map +1 -1
  460. package/dist/providers/synthetic.d.ts +0 -3
  461. package/dist/providers/synthetic.d.ts.map +1 -1
  462. package/dist/providers/synthetic.js +16 -58
  463. package/dist/providers/synthetic.js.map +1 -1
  464. package/dist/providers/xai.d.ts +2 -1
  465. package/dist/providers/xai.d.ts.map +1 -1
  466. package/dist/providers/xai.js +49 -71
  467. package/dist/providers/xai.js.map +1 -1
  468. package/dist/rpc.d.ts +110 -38
  469. package/dist/rpc.d.ts.map +1 -1
  470. package/dist/rpc.js +125 -37
  471. package/dist/rpc.js.map +1 -1
  472. package/dist/settings/convert.d.ts +60 -0
  473. package/dist/settings/convert.d.ts.map +1 -0
  474. package/dist/settings/convert.js +473 -0
  475. package/dist/settings/convert.js.map +1 -0
  476. package/dist/settings/file.d.ts +89 -0
  477. package/dist/settings/file.d.ts.map +1 -0
  478. package/dist/settings/file.js +452 -0
  479. package/dist/settings/file.js.map +1 -0
  480. package/dist/settings/index.d.ts +10 -0
  481. package/dist/settings/index.d.ts.map +1 -0
  482. package/dist/settings/index.js +3 -0
  483. package/dist/settings/index.js.map +1 -0
  484. package/dist/settings/schema.d.ts +607 -0
  485. package/dist/settings/schema.d.ts.map +1 -0
  486. package/dist/settings/schema.js +479 -0
  487. package/dist/settings/schema.js.map +1 -0
  488. package/dist/tui/client.d.ts +86 -0
  489. package/dist/tui/client.d.ts.map +1 -0
  490. package/dist/tui/client.js +229 -0
  491. package/dist/tui/client.js.map +1 -0
  492. package/dist/tui/display.d.ts +127 -0
  493. package/dist/tui/display.d.ts.map +1 -0
  494. package/dist/tui/display.js +474 -0
  495. package/dist/tui/display.js.map +1 -0
  496. package/dist/tui/index.d.ts +21 -0
  497. package/dist/tui/index.d.ts.map +1 -0
  498. package/dist/tui/index.js +305 -0
  499. package/dist/tui/server-settings.d.ts +43 -0
  500. package/dist/tui/server-settings.d.ts.map +1 -0
  501. package/dist/tui/server-settings.js +233 -0
  502. package/dist/tui/server-settings.js.map +1 -0
  503. package/dist/tui/sidebar.d.ts +41 -0
  504. package/dist/tui/sidebar.d.ts.map +1 -0
  505. package/dist/tui/sidebar.js +148 -0
  506. package/dist/tui/status-line.d.ts +14 -0
  507. package/dist/tui/status-line.d.ts.map +1 -0
  508. package/dist/tui/status-line.js +225 -0
  509. package/dist/tui/theme.d.ts +41 -0
  510. package/dist/tui/theme.d.ts.map +1 -0
  511. package/dist/tui/theme.js +52 -0
  512. package/dist/tui/theme.js.map +1 -0
  513. package/dist/tui/toast-colors.d.ts +37 -0
  514. package/dist/tui/toast-colors.d.ts.map +1 -0
  515. package/dist/tui/toast-colors.js +77 -0
  516. package/dist/tui/toasts.d.ts +59 -0
  517. package/dist/tui/toasts.d.ts.map +1 -0
  518. package/dist/tui/toasts.js +148 -0
  519. package/dist/tui/toasts.js.map +1 -0
  520. package/dist/tui/window/drag.d.ts +26 -0
  521. package/dist/tui/window/drag.d.ts.map +1 -0
  522. package/dist/tui/window/drag.js +80 -0
  523. package/dist/tui/window/drag.js.map +1 -0
  524. package/dist/tui/window/limits.d.ts +15 -0
  525. package/dist/tui/window/limits.d.ts.map +1 -0
  526. package/dist/tui/window/limits.js +227 -0
  527. package/dist/tui/window/limits.js.map +1 -0
  528. package/dist/tui/window/rail.d.ts +21 -0
  529. package/dist/tui/window/rail.d.ts.map +1 -0
  530. package/dist/tui/window/rail.js +81 -0
  531. package/dist/tui/window/settings.d.ts +164 -0
  532. package/dist/tui/window/settings.d.ts.map +1 -0
  533. package/dist/tui/window/settings.js +1679 -0
  534. package/dist/tui/window/shell.d.ts +108 -0
  535. package/dist/tui/window/shell.d.ts.map +1 -0
  536. package/dist/tui/window/shell.js +1003 -0
  537. package/dist/tui/window/usage.d.ts +75 -0
  538. package/dist/tui/window/usage.d.ts.map +1 -0
  539. package/dist/tui/window/usage.js +928 -0
  540. package/dist/tui/window/views.d.ts +61 -0
  541. package/dist/tui/window/views.d.ts.map +1 -0
  542. package/dist/tui/window/views.js +242 -0
  543. package/dist/tui.d.ts +1 -5
  544. package/dist/tui.js +1 -894
  545. package/dist/view/columns.d.ts +15 -0
  546. package/dist/view/columns.d.ts.map +1 -0
  547. package/dist/view/columns.js +48 -0
  548. package/dist/view/columns.js.map +1 -0
  549. package/dist/view/format.d.ts +82 -0
  550. package/dist/view/format.d.ts.map +1 -0
  551. package/dist/view/format.js +201 -0
  552. package/dist/view/format.js.map +1 -0
  553. package/dist/view/quick-look.d.ts +28 -0
  554. package/dist/view/quick-look.d.ts.map +1 -0
  555. package/dist/view/quick-look.js +150 -0
  556. package/dist/view/quick-look.js.map +1 -0
  557. package/dist/view/select.d.ts +67 -0
  558. package/dist/view/select.d.ts.map +1 -0
  559. package/dist/view/select.js +87 -0
  560. package/dist/view/select.js.map +1 -0
  561. package/dist/view/text.d.ts +153 -0
  562. package/dist/view/text.d.ts.map +1 -0
  563. package/dist/view/text.js +642 -0
  564. package/dist/view/text.js.map +1 -0
  565. package/dist/view/usage.d.ts +86 -0
  566. package/dist/view/usage.d.ts.map +1 -0
  567. package/dist/view/usage.js +724 -0
  568. package/dist/view/usage.js.map +1 -0
  569. package/package.json +4 -6
  570. package/dist/lib/chutes-config.d.ts +0 -15
  571. package/dist/lib/chutes-config.d.ts.map +0 -1
  572. package/dist/lib/chutes-config.js +0 -28
  573. package/dist/lib/chutes-config.js.map +0 -1
  574. package/dist/lib/cli-status.d.ts +0 -8
  575. package/dist/lib/cli-status.d.ts.map +0 -1
  576. package/dist/lib/cli-status.js +0 -98
  577. package/dist/lib/cli-status.js.map +0 -1
  578. package/dist/lib/command-parsing.d.ts +0 -43
  579. package/dist/lib/command-parsing.d.ts.map +0 -1
  580. package/dist/lib/command-parsing.js +0 -103
  581. package/dist/lib/command-parsing.js.map +0 -1
  582. package/dist/lib/config.d.ts +0 -63
  583. package/dist/lib/config.d.ts.map +0 -1
  584. package/dist/lib/config.js +0 -1092
  585. package/dist/lib/config.js.map +0 -1
  586. package/dist/lib/deepseek-auth.d.ts +0 -15
  587. package/dist/lib/deepseek-auth.d.ts.map +0 -1
  588. package/dist/lib/deepseek-auth.js +0 -28
  589. package/dist/lib/deepseek-auth.js.map +0 -1
  590. package/dist/lib/format.d.ts +0 -25
  591. package/dist/lib/format.d.ts.map +0 -1
  592. package/dist/lib/format.js +0 -300
  593. package/dist/lib/format.js.map +0 -1
  594. package/dist/lib/google-agy-companion.d.ts +0 -8
  595. package/dist/lib/google-agy-companion.d.ts.map +0 -1
  596. package/dist/lib/google-agy-companion.js +0 -64
  597. package/dist/lib/google-agy-companion.js.map +0 -1
  598. package/dist/lib/google-gemini-cli-companion.d.ts +0 -8
  599. package/dist/lib/google-gemini-cli-companion.d.ts.map +0 -1
  600. package/dist/lib/google-gemini-cli-companion.js +0 -64
  601. package/dist/lib/google-gemini-cli-companion.js.map +0 -1
  602. package/dist/lib/grouped-entry-normalization.d.ts +0 -12
  603. package/dist/lib/grouped-entry-normalization.d.ts.map +0 -1
  604. package/dist/lib/grouped-entry-normalization.js +0 -124
  605. package/dist/lib/grouped-entry-normalization.js.map +0 -1
  606. package/dist/lib/grouped-header-format.d.ts +0 -5
  607. package/dist/lib/grouped-header-format.d.ts.map +0 -1
  608. package/dist/lib/grouped-header-format.js +0 -16
  609. package/dist/lib/grouped-header-format.js.map +0 -1
  610. package/dist/lib/init-installer.d.ts +0 -123
  611. package/dist/lib/init-installer.d.ts.map +0 -1
  612. package/dist/lib/init-installer.js +0 -1111
  613. package/dist/lib/init-installer.js.map +0 -1
  614. package/dist/lib/jsonc.d.ts +0 -17
  615. package/dist/lib/jsonc.d.ts.map +0 -1
  616. package/dist/lib/jsonc.js +0 -23
  617. package/dist/lib/jsonc.js.map +0 -1
  618. package/dist/lib/kilo-config.d.ts +0 -15
  619. package/dist/lib/kilo-config.d.ts.map +0 -1
  620. package/dist/lib/kilo-config.js +0 -27
  621. package/dist/lib/kilo-config.js.map +0 -1
  622. package/dist/lib/kimi-auth.d.ts +0 -49
  623. package/dist/lib/kimi-auth.d.ts.map +0 -1
  624. package/dist/lib/kimi-auth.js +0 -82
  625. package/dist/lib/kimi-auth.js.map +0 -1
  626. package/dist/lib/markdown-table.d.ts +0 -51
  627. package/dist/lib/markdown-table.d.ts.map +0 -1
  628. package/dist/lib/markdown-table.js +0 -179
  629. package/dist/lib/markdown-table.js.map +0 -1
  630. package/dist/lib/minimax-auth.d.ts +0 -62
  631. package/dist/lib/minimax-auth.d.ts.map +0 -1
  632. package/dist/lib/minimax-auth.js +0 -206
  633. package/dist/lib/minimax-auth.js.map +0 -1
  634. package/dist/lib/nanogpt-config.d.ts +0 -15
  635. package/dist/lib/nanogpt-config.d.ts.map +0 -1
  636. package/dist/lib/nanogpt-config.js +0 -31
  637. package/dist/lib/nanogpt-config.js.map +0 -1
  638. package/dist/lib/ollama-cloud-config.d.ts +0 -15
  639. package/dist/lib/ollama-cloud-config.d.ts.map +0 -1
  640. package/dist/lib/ollama-cloud-config.js +0 -27
  641. package/dist/lib/ollama-cloud-config.js.map +0 -1
  642. package/dist/lib/opencode-go-auth.d.ts +0 -16
  643. package/dist/lib/opencode-go-auth.d.ts.map +0 -1
  644. package/dist/lib/opencode-go-auth.js +0 -42
  645. package/dist/lib/opencode-go-auth.js.map +0 -1
  646. package/dist/lib/opencode-version.d.ts +0 -6
  647. package/dist/lib/opencode-version.d.ts.map +0 -1
  648. package/dist/lib/opencode-version.js +0 -26
  649. package/dist/lib/opencode-version.js.map +0 -1
  650. package/dist/lib/provider-add-command.d.ts +0 -35
  651. package/dist/lib/provider-add-command.d.ts.map +0 -1
  652. package/dist/lib/provider-add-command.js +0 -204
  653. package/dist/lib/provider-add-command.js.map +0 -1
  654. package/dist/lib/provider-add-json-v1-questionnaire.d.ts +0 -32
  655. package/dist/lib/provider-add-json-v1-questionnaire.d.ts.map +0 -1
  656. package/dist/lib/provider-add-json-v1-questionnaire.js +0 -336
  657. package/dist/lib/provider-add-json-v1-questionnaire.js.map +0 -1
  658. package/dist/lib/provider-add.d.ts +0 -21
  659. package/dist/lib/provider-add.d.ts.map +0 -1
  660. package/dist/lib/provider-add.js +0 -219
  661. package/dist/lib/provider-add.js.map +0 -1
  662. package/dist/lib/quota-accounting-projection.d.ts +0 -9
  663. package/dist/lib/quota-accounting-projection.d.ts.map +0 -1
  664. package/dist/lib/quota-accounting-projection.js +0 -254
  665. package/dist/lib/quota-accounting-projection.js.map +0 -1
  666. package/dist/lib/quota-columns.d.ts +0 -38
  667. package/dist/lib/quota-columns.d.ts.map +0 -1
  668. package/dist/lib/quota-columns.js +0 -129
  669. package/dist/lib/quota-columns.js.map +0 -1
  670. package/dist/lib/quota-command-format.d.ts +0 -34
  671. package/dist/lib/quota-command-format.d.ts.map +0 -1
  672. package/dist/lib/quota-command-format.js +0 -240
  673. package/dist/lib/quota-command-format.js.map +0 -1
  674. package/dist/lib/quota-dialog-command-specs.d.ts +0 -63
  675. package/dist/lib/quota-dialog-command-specs.d.ts.map +0 -1
  676. package/dist/lib/quota-dialog-command-specs.js +0 -145
  677. package/dist/lib/quota-dialog-command-specs.js.map +0 -1
  678. package/dist/lib/quota-entry-display.d.ts +0 -7
  679. package/dist/lib/quota-entry-display.d.ts.map +0 -1
  680. package/dist/lib/quota-entry-display.js +0 -59
  681. package/dist/lib/quota-entry-display.js.map +0 -1
  682. package/dist/lib/quota-exhaustion-projection.d.ts +0 -11
  683. package/dist/lib/quota-exhaustion-projection.d.ts.map +0 -1
  684. package/dist/lib/quota-exhaustion-projection.js +0 -105
  685. package/dist/lib/quota-exhaustion-projection.js.map +0 -1
  686. package/dist/lib/quota-format-style.d.ts +0 -21
  687. package/dist/lib/quota-format-style.d.ts.map +0 -1
  688. package/dist/lib/quota-format-style.js +0 -38
  689. package/dist/lib/quota-format-style.js.map +0 -1
  690. package/dist/lib/quota-render-data.d.ts +0 -102
  691. package/dist/lib/quota-render-data.d.ts.map +0 -1
  692. package/dist/lib/quota-render-data.js +0 -419
  693. package/dist/lib/quota-render-data.js.map +0 -1
  694. package/dist/lib/quota-reset-notifications.d.ts +0 -20
  695. package/dist/lib/quota-reset-notifications.d.ts.map +0 -1
  696. package/dist/lib/quota-reset-notifications.js +0 -331
  697. package/dist/lib/quota-reset-notifications.js.map +0 -1
  698. package/dist/lib/quota-runtime-context.d.ts +0 -54
  699. package/dist/lib/quota-runtime-context.d.ts.map +0 -1
  700. package/dist/lib/quota-runtime-context.js +0 -110
  701. package/dist/lib/quota-runtime-context.js.map +0 -1
  702. package/dist/lib/quota-state-codec.d.ts +0 -16
  703. package/dist/lib/quota-state-codec.d.ts.map +0 -1
  704. package/dist/lib/quota-state-codec.js +0 -412
  705. package/dist/lib/quota-state-codec.js.map +0 -1
  706. package/dist/lib/quota-state.d.ts +0 -28
  707. package/dist/lib/quota-state.d.ts.map +0 -1
  708. package/dist/lib/quota-state.js +0 -473
  709. package/dist/lib/quota-state.js.map +0 -1
  710. package/dist/lib/quota-stats-format.d.ts +0 -29
  711. package/dist/lib/quota-stats-format.d.ts.map +0 -1
  712. package/dist/lib/quota-stats-format.js +0 -459
  713. package/dist/lib/quota-stats-format.js.map +0 -1
  714. package/dist/lib/quota-stats.d.ts +0 -126
  715. package/dist/lib/quota-stats.d.ts.map +0 -1
  716. package/dist/lib/quota-stats.js +0 -695
  717. package/dist/lib/quota-stats.js.map +0 -1
  718. package/dist/lib/quota-surface-data.d.ts +0 -21
  719. package/dist/lib/quota-surface-data.d.ts.map +0 -1
  720. package/dist/lib/quota-surface-data.js +0 -362
  721. package/dist/lib/quota-surface-data.js.map +0 -1
  722. package/dist/lib/scoped-update-migration.d.ts +0 -103
  723. package/dist/lib/scoped-update-migration.d.ts.map +0 -1
  724. package/dist/lib/scoped-update-migration.js +0 -344
  725. package/dist/lib/scoped-update-migration.js.map +0 -1
  726. package/dist/lib/scoped-update.d.ts +0 -77
  727. package/dist/lib/scoped-update.d.ts.map +0 -1
  728. package/dist/lib/scoped-update.js +0 -590
  729. package/dist/lib/scoped-update.js.map +0 -1
  730. package/dist/lib/session-tokens-format.d.ts +0 -36
  731. package/dist/lib/session-tokens-format.d.ts.map +0 -1
  732. package/dist/lib/session-tokens-format.js +0 -111
  733. package/dist/lib/session-tokens-format.js.map +0 -1
  734. package/dist/lib/synthetic-config.d.ts +0 -15
  735. package/dist/lib/synthetic-config.d.ts.map +0 -1
  736. package/dist/lib/synthetic-config.js +0 -28
  737. package/dist/lib/synthetic-config.js.map +0 -1
  738. package/dist/lib/toast-format-grouped.d.ts +0 -25
  739. package/dist/lib/toast-format-grouped.d.ts.map +0 -1
  740. package/dist/lib/toast-format-grouped.js +0 -296
  741. package/dist/lib/toast-format-grouped.js.map +0 -1
  742. package/dist/lib/tui-compact-format.d.ts +0 -10
  743. package/dist/lib/tui-compact-format.d.ts.map +0 -1
  744. package/dist/lib/tui-compact-format.js +0 -460
  745. package/dist/lib/tui-compact-format.js.map +0 -1
  746. package/dist/lib/tui-panel-state.d.ts +0 -15
  747. package/dist/lib/tui-panel-state.d.ts.map +0 -1
  748. package/dist/lib/tui-panel-state.js +0 -2
  749. package/dist/lib/tui-panel-state.js.map +0 -1
  750. package/dist/lib/tui-prompt-bar-format.d.ts +0 -25
  751. package/dist/lib/tui-prompt-bar-format.d.ts.map +0 -1
  752. package/dist/lib/tui-prompt-bar-format.js +0 -206
  753. package/dist/lib/tui-prompt-bar-format.js.map +0 -1
  754. package/dist/lib/tui-sidebar-format.d.ts +0 -13
  755. package/dist/lib/tui-sidebar-format.d.ts.map +0 -1
  756. package/dist/lib/tui-sidebar-format.js +0 -34
  757. package/dist/lib/tui-sidebar-format.js.map +0 -1
  758. package/dist/lib/zai-auth.d.ts +0 -15
  759. package/dist/lib/zai-auth.d.ts.map +0 -1
  760. package/dist/lib/zai-auth.js +0 -37
  761. package/dist/lib/zai-auth.js.map +0 -1
  762. package/dist/lib/zai.d.ts +0 -5
  763. package/dist/lib/zai.d.ts.map +0 -1
  764. package/dist/lib/zai.js +0 -14
  765. package/dist/lib/zai.js.map +0 -1
  766. package/dist/lib/zhipu-auth.d.ts +0 -15
  767. package/dist/lib/zhipu-auth.d.ts.map +0 -1
  768. package/dist/lib/zhipu-auth.js +0 -42
  769. package/dist/lib/zhipu-auth.js.map +0 -1
  770. package/dist/lib/zhipu.d.ts +0 -5
  771. package/dist/lib/zhipu.d.ts.map +0 -1
  772. package/dist/lib/zhipu.js +0 -13
  773. package/dist/lib/zhipu.js.map +0 -1
  774. package/dist/providers/glm-coding-plan-provider.d.ts +0 -56
  775. package/dist/providers/glm-coding-plan-provider.d.ts.map +0 -1
  776. package/dist/providers/glm-coding-plan-provider.js +0 -115
  777. package/dist/providers/glm-coding-plan-provider.js.map +0 -1
  778. package/dist/providers/google-account-format.d.ts +0 -7
  779. package/dist/providers/google-account-format.d.ts.map +0 -1
  780. package/dist/providers/google-account-format.js +0 -52
  781. package/dist/providers/google-account-format.js.map +0 -1
  782. package/dist/providers/zai.d.ts +0 -2
  783. package/dist/providers/zai.d.ts.map +0 -1
  784. package/dist/providers/zai.js +0 -24
  785. package/dist/providers/zai.js.map +0 -1
  786. package/dist/providers/zhipu.d.ts +0 -2
  787. package/dist/providers/zhipu.d.ts.map +0 -1
  788. package/dist/providers/zhipu.js +0 -21
  789. package/dist/providers/zhipu.js.map +0 -1
  790. package/dist/tui-v2.d.ts +0 -5
  791. package/dist/tui-v2.d.ts.map +0 -1
  792. package/dist/tui-v2.jsx +0 -624
  793. package/dist/tui-v2.jsx.map +0 -1
  794. package/dist/tui.d.ts.map +0 -1
@@ -1,7 +1,10 @@
1
1
  import { isIP } from "node:net";
2
+ import { classifyWindow } from "../core/windows.js";
3
+ import { daysInMonth } from "./calendar-date.js";
4
+ import { isRecord } from "./json-guards.js";
2
5
  import { lookupCost } from "./modelsdev-pricing.js";
3
- import { getQuotaProviderShape } from "./provider-metadata.js";
4
- import { resolvePricingKey } from "./quota-stats.js";
6
+ import { resolvePricingKey } from "./pricing-key.js";
7
+ import { getCanonicalQuotaProviderId } from "./provider-metadata.js";
5
8
  export const QUOTA_PROVIDER_REMOTE_FORMATS = ["quota-v1", "openrouter-key-v1", "json-v1"];
6
9
  export const QUOTA_PROVIDER_MODES = ["remote-api", "local-estimate"];
7
10
  export const QUOTA_PROVIDER_WINDOW_TYPES = ["utc-day", "rolling"];
@@ -10,8 +13,31 @@ export const MAINTAINED_LOCAL_ESTIMATE_IDS = ["alibaba-coding-plan"];
10
13
  export function isMaintainedQuotaProviderTuning(definition) {
11
14
  return MAINTAINED_LOCAL_ESTIMATE_IDS.includes(definition.id);
12
15
  }
16
+ /**
17
+ * The custom definitions that run: not maintained tunings, and not switched off. A switched-off
18
+ * definition is never fetched and its key is never sent.
19
+ */
13
20
  export function customQuotaProviderDefinitions(definitions) {
14
- return definitions.filter((definition) => !isMaintainedQuotaProviderTuning(definition));
21
+ return definitions.filter((definition) => !isMaintainedQuotaProviderTuning(definition) && definition.enabled !== false);
22
+ }
23
+ /** Hosts a plain-HTTP address may use without a warning: this computer only. */
24
+ const LOCAL_HOSTNAMES = new Set(["localhost", "127.0.0.1", "[::1]"]);
25
+ /**
26
+ * Where a remote custom provider sends its key, for the user to check before switching it on:
27
+ * the URL's origin and path (the scheme shows http or https), and where the key comes from.
28
+ * Never the key itself. `insecure` is true for plain HTTP to any host but localhost, 127.0.0.1
29
+ * or ::1. Null for a local estimate, which sends nothing.
30
+ */
31
+ export function describeQuotaProviderRequest(definition) {
32
+ if (definition.mode !== "remote-api")
33
+ return null;
34
+ const url = new URL(definition.url);
35
+ const saved = `OpenCode's ${definition.providerId} key`;
36
+ return {
37
+ url: `${url.origin}${url.pathname}`,
38
+ key: definition.apiKeyEnv ? `${definition.apiKeyEnv}, else ${saved}` : saved,
39
+ insecure: url.protocol === "http:" && !LOCAL_HOSTNAMES.has(url.hostname),
40
+ };
15
41
  }
16
42
  export function resolveQuotaProviderSessionModelIdentity(params) {
17
43
  if (params.currentProviderID) {
@@ -27,6 +53,58 @@ export function resolveQuotaProviderSessionModelIdentity(params) {
27
53
  modelId: params.currentModel.slice(slashIndex + 1),
28
54
  };
29
55
  }
56
+ /** A short stable hash (32-bit FNV-1a, hex) that tells names apart in row keys. */
57
+ function shortNameHash(text) {
58
+ let hash = 0x811c9dc5;
59
+ for (const char of text) {
60
+ hash ^= char.codePointAt(0) ?? 0;
61
+ hash = Math.imul(hash, 0x01000193) >>> 0;
62
+ }
63
+ return hash.toString(16).padStart(8, "0");
64
+ }
65
+ const CUSTOM_ROW_KEY_MAX_LENGTH = 48;
66
+ /**
67
+ * The row key a custom source's mapping or entry name gets: spaces become "_", and the name
68
+ * stays as it is when that leaves only letters, digits, "_" and "-" ("Daily limit" →
69
+ * "Daily_limit", "Daily-limit" → "Daily-limit"). Other characters are dropped and a short hash
70
+ * of the exact name is added, so names stay apart ("日次" → 8 hex digits).
71
+ */
72
+ export function customRowKey(name) {
73
+ const spaced = name.trim().replace(/\s+/gu, "_");
74
+ const kept = spaced.replace(/[^A-Za-z0-9_-]/gu, "").slice(0, CUSTOM_ROW_KEY_MAX_LENGTH);
75
+ if (kept === spaced && /[A-Za-z0-9]/u.test(kept))
76
+ return kept;
77
+ const hash = shortNameHash(name.trim());
78
+ return /[A-Za-z0-9]/u.test(kept) ? `${kept}_${hash}` : hash;
79
+ }
80
+ /** ADR 0001: a custom `rate_limit` is a quota and `spend` is usage. */
81
+ function customRowType(resultType) {
82
+ if (resultType === "rate_limit")
83
+ return "quota";
84
+ if (resultType === "spend")
85
+ return "usage";
86
+ return resultType;
87
+ }
88
+ /**
89
+ * One custom row. `key` is the part of its id after `custom.<definition id>.`; its label is the
90
+ * configured label without a trailing colon, or else its name; its window is the one its name
91
+ * or label names ("Daily" → day).
92
+ */
93
+ export function customRow(params) {
94
+ const label = (params.label ?? "").replace(/:+$/u, "").trim();
95
+ const window = classifyWindow(params.name) ?? classifyWindow(label);
96
+ return {
97
+ key: params.key,
98
+ label: label || params.name,
99
+ type: customRowType(params.resultType),
100
+ method: params.method,
101
+ authority: params.method === "remote_api" ? "provider_reported" : "locally_derived",
102
+ prominence: "primary",
103
+ ...(window ? { window } : {}),
104
+ ...params.value,
105
+ ...(params.resetsAt ? { resetsAt: params.resetsAt } : {}),
106
+ };
107
+ }
30
108
  export function selectEligibleQuotaProviderDefinitions(params) {
31
109
  const runtimeEligible = customQuotaProviderDefinitions(params.definitions).filter((definition) => params.availableProviderIds.has(definition.providerId));
32
110
  if (!params.onlyCurrentModel)
@@ -45,9 +123,13 @@ export function selectEligibleQuotaProviderDefinitions(params) {
45
123
  return runtimeEligible.filter((definition) => definition.providerId === identity.providerId &&
46
124
  (definition.modelIds === undefined || definition.modelIds.includes(identity.modelId)));
47
125
  }
48
- const BASE_FIELDS = ["id", "providerId", "label", "mode", "modelIds"];
126
+ const BASE_FIELDS = ["id", "providerId", "label", "mode", "modelIds", "enabled"];
49
127
  const REMOTE_FIELDS = [...BASE_FIELDS, "url", "format", "apiKeyEnv", "adapter"];
50
128
  const LOCAL_FIELDS = [...BASE_FIELDS, "windows", "pricingModelMap"];
129
+ /** Every top-level field a definition can have, in either mode. */
130
+ export const QUOTA_PROVIDER_FIELDS = [
131
+ ...new Set([...REMOTE_FIELDS, ...LOCAL_FIELDS]),
132
+ ];
51
133
  const WINDOW_FIELDS = [
52
134
  "id",
53
135
  "label",
@@ -71,15 +153,15 @@ const MAX_WINDOWS = 16;
71
153
  const MAX_ROLLING_MINUTES = 366 * 24 * 60;
72
154
  const MAX_SAFE_REQUEST_LIMIT = 1_000_000_000;
73
155
  const MAX_USD_BUDGET = 1_000_000_000;
74
- export const JSON_V1_MAX_MAPPINGS = 16;
75
- export const JSON_V1_MAX_ADAPTER_DEPTH = 8;
76
- export const JSON_V1_MAX_ADAPTER_OBJECTS = 128;
77
- export const JSON_V1_MAX_ADAPTER_PROPERTIES = 384;
78
- export const JSON_V1_MAX_ADAPTER_ARRAY_ELEMENTS = 640;
79
- export const JSON_V1_MAX_PATH_SEGMENTS = 8;
80
- export const JSON_V1_MAX_PATH_SEGMENT_CODE_POINTS = 64;
81
- export const JSON_V1_MAX_STATIC_NAME_CODE_POINTS = 80;
82
- export const JSON_V1_MAX_STATIC_UNIT_CODE_POINTS = 32;
156
+ const JSON_V1_MAX_MAPPINGS = 16;
157
+ const JSON_V1_MAX_ADAPTER_DEPTH = 8;
158
+ const JSON_V1_MAX_ADAPTER_OBJECTS = 128;
159
+ const JSON_V1_MAX_ADAPTER_PROPERTIES = 384;
160
+ const JSON_V1_MAX_ADAPTER_ARRAY_ELEMENTS = 640;
161
+ const JSON_V1_MAX_PATH_SEGMENTS = 8;
162
+ const JSON_V1_MAX_PATH_SEGMENT_CODE_POINTS = 64;
163
+ const JSON_V1_MAX_STATIC_NAME_CODE_POINTS = 80;
164
+ const JSON_V1_MAX_STATIC_UNIT_CODE_POINTS = 32;
83
165
  export const JSON_V1_MAX_DISPLAY_CODE_POINTS = 160;
84
166
  export const JSON_V1_MAX_NUMBER_MAGNITUDE = 1e15;
85
167
  const JSON_V1_FORBIDDEN_PATH_SEGMENTS = new Set(["__proto__", "prototype", "constructor"]);
@@ -89,7 +171,7 @@ const JSON_V1_TIMESTAMP_ENCODINGS = new Set([
89
171
  "unix-seconds",
90
172
  "unix-milliseconds",
91
173
  ]);
92
- const JSON_V1_RESULT_TYPES = new Set([
174
+ export const CUSTOM_RESULT_TYPES = new Set([
93
175
  "quota",
94
176
  "rate_limit",
95
177
  "usage",
@@ -100,9 +182,6 @@ const JSON_V1_RESULT_TYPES = new Set([
100
182
  ]);
101
183
  const JSON_V1_MIN_TIMESTAMP_MS = 0;
102
184
  const JSON_V1_MAX_TIMESTAMP_MS = 253_402_300_799_999;
103
- function isPlainObject(value) {
104
- return typeof value === "object" && value !== null && !Array.isArray(value);
105
- }
106
185
  function hasOwnKey(value, key) {
107
186
  return Object.hasOwn(value, key);
108
187
  }
@@ -180,21 +259,15 @@ function normalizeRemoteUrl(value) {
180
259
  return { value: parsed.toString() };
181
260
  }
182
261
  function cloneDefinition(definition) {
262
+ const modelIds = definition.modelIds ? { modelIds: [...definition.modelIds] } : {};
183
263
  if (definition.mode === "remote-api") {
184
264
  return definition.format === "json-v1"
185
- ? {
186
- ...definition,
187
- ...(definition.modelIds ? { modelIds: [...definition.modelIds] } : {}),
188
- adapter: structuredClone(definition.adapter),
189
- }
190
- : {
191
- ...definition,
192
- ...(definition.modelIds ? { modelIds: [...definition.modelIds] } : {}),
193
- };
265
+ ? { ...definition, ...modelIds, adapter: structuredClone(definition.adapter) }
266
+ : { ...definition, ...modelIds };
194
267
  }
195
268
  return {
196
269
  ...definition,
197
- ...(definition.modelIds ? { modelIds: [...definition.modelIds] } : {}),
270
+ ...modelIds,
198
271
  windows: definition.windows.map((window) => ({ ...window })),
199
272
  ...(definition.pricingModelMap ? { pricingModelMap: { ...definition.pricingModelMap } } : {}),
200
273
  };
@@ -283,12 +356,6 @@ function validateJsonV1Path(value, key, issues) {
283
356
  return path.length === value.length ? path : undefined;
284
357
  }
285
358
  const JSON_V1_ISO_RE = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.(\d{1,3}))?(Z|([+-])(\d{2}):(\d{2}))$/;
286
- function daysInMonth(year, month) {
287
- if (month === 2) {
288
- return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0) ? 29 : 28;
289
- }
290
- return [4, 6, 9, 11].includes(month) ? 30 : 31;
291
- }
292
359
  export function normalizeJsonV1Timestamp(value, encoding) {
293
360
  let milliseconds;
294
361
  if (encoding === "iso-8601") {
@@ -338,7 +405,7 @@ export function normalizeJsonV1Timestamp(value, encoding) {
338
405
  return new Date(milliseconds).toISOString();
339
406
  }
340
407
  function validateJsonV1NumberSource(value, key, issues) {
341
- if (!isPlainObject(value)) {
408
+ if (!isRecord(value)) {
342
409
  adapterIssue(issues, key, "expected a path or literal number source object");
343
410
  return undefined;
344
411
  }
@@ -377,7 +444,7 @@ function validateJsonV1NumberSource(value, key, issues) {
377
444
  return { literal: value.literal };
378
445
  }
379
446
  function validateJsonV1TextSource(value, key, issues) {
380
- if (!isPlainObject(value)) {
447
+ if (!isRecord(value)) {
381
448
  adapterIssue(issues, key, "expected a path or literal text source object");
382
449
  return undefined;
383
450
  }
@@ -400,7 +467,7 @@ function validateJsonV1TextSource(value, key, issues) {
400
467
  return { literal };
401
468
  }
402
469
  function validateJsonV1TimestampSource(value, key, issues) {
403
- if (!isPlainObject(value)) {
470
+ if (!isRecord(value)) {
404
471
  adapterIssue(issues, key, "expected a timestamp source object");
405
472
  return undefined;
406
473
  }
@@ -442,7 +509,7 @@ function requireLiteralNumber(source, key, issues, rule) {
442
509
  }
443
510
  }
444
511
  function validateJsonV1Metric(value, resultType, key, issues) {
445
- if (!isPlainObject(value)) {
512
+ if (!isRecord(value)) {
446
513
  adapterIssue(issues, key, "expected a tagged metric object");
447
514
  return undefined;
448
515
  }
@@ -581,7 +648,7 @@ function validateJsonV1Metric(value, resultType, key, issues) {
581
648
  }
582
649
  }
583
650
  function validateJsonV1Mapping(value, key, providerLabel, issues) {
584
- if (!isPlainObject(value)) {
651
+ if (!isRecord(value)) {
585
652
  adapterIssue(issues, key, "expected an object");
586
653
  return undefined;
587
654
  }
@@ -592,7 +659,7 @@ function validateJsonV1Mapping(value, key, providerLabel, issues) {
592
659
  adapterIssue(issues, `${key}.${field}`, "field is required");
593
660
  }
594
661
  const resultType = typeof value.resultType === "string" &&
595
- JSON_V1_RESULT_TYPES.has(value.resultType)
662
+ CUSTOM_RESULT_TYPES.has(value.resultType)
596
663
  ? value.resultType
597
664
  : undefined;
598
665
  if (hasOwnKey(value, "resultType") && !resultType) {
@@ -650,7 +717,7 @@ function validateJsonV1Mapping(value, key, providerLabel, issues) {
650
717
  };
651
718
  }
652
719
  function validateJsonV1Adapter(value, key, providerLabel, issues) {
653
- if (!isPlainObject(value)) {
720
+ if (!isRecord(value)) {
654
721
  adapterIssue(issues, key, "expected an object");
655
722
  return undefined;
656
723
  }
@@ -671,10 +738,21 @@ function validateJsonV1Adapter(value, key, providerLabel, issues) {
671
738
  return undefined;
672
739
  }
673
740
  const mappings = [];
741
+ // Each mapping's rows are keyed by its name, so two names must not give one key.
742
+ const rowKeys = new Map();
674
743
  for (let index = 0; index < value.mappings.length; index += 1) {
675
744
  const mapping = validateJsonV1Mapping(value.mappings[index], `${key}.mappings[${index}]`, providerLabel, issues);
676
- if (mapping)
677
- mappings.push(mapping);
745
+ if (!mapping)
746
+ continue;
747
+ mappings.push(mapping);
748
+ const rowKey = customRowKey(mapping.name);
749
+ const first = rowKeys.get(rowKey);
750
+ if (first === undefined) {
751
+ rowKeys.set(rowKey, index);
752
+ }
753
+ else {
754
+ adapterIssue(issues, `${key}.mappings[${index}].name`, `gives the same row id as ${key}.mappings[${first}].name`);
755
+ }
678
756
  }
679
757
  return issueStart === issues.length && mappings.length === value.mappings.length
680
758
  ? { ...(rowsPath ? { rowsPath } : {}), mappings }
@@ -731,16 +809,19 @@ function validateWindows(raw, providerKey, issues) {
731
809
  for (let index = 0; index < raw.length; index += 1) {
732
810
  const item = raw[index];
733
811
  const windowKey = `${providerKey}.windows[${index}]`;
734
- if (!isPlainObject(item)) {
812
+ if (!isRecord(item)) {
735
813
  issues.push({ key: windowKey, message: "expected an object" });
736
814
  continue;
737
815
  }
738
- for (const field of Object.keys(item).filter((field) => !WINDOW_FIELDS.includes(field))) {
816
+ // An unknown field is named by its position: its name is the caller's, never repeated.
817
+ Object.keys(item).forEach((field, position) => {
818
+ if (WINDOW_FIELDS.includes(field))
819
+ return;
739
820
  issues.push({
740
- key: `${windowKey}.${field}`,
741
- message: "unknown field; allowed fields are id, label, type, durationMinutes, requestLimit, usdBudget",
821
+ key: windowKey,
822
+ message: `field ${position + 1} is unknown; allowed fields are ${WINDOW_FIELDS.join(", ")}`,
742
823
  });
743
- }
824
+ });
744
825
  for (const field of ["id", "type", "requestLimit"]) {
745
826
  if (!hasOwnKey(item, field)) {
746
827
  issues.push({ key: `${windowKey}.${field}`, message: "field is required" });
@@ -855,33 +936,36 @@ function validateMaintainedWindows(id, windows, providerKey, issues) {
855
936
  function validatePricingModelMap(raw, providerKey, providerId, issues) {
856
937
  if (raw === undefined)
857
938
  return undefined;
858
- if (!isPlainObject(raw) || Object.keys(raw).length === 0) {
939
+ if (!isRecord(raw) || Object.keys(raw).length === 0) {
859
940
  issues.push({
860
941
  key: `${providerKey}.pricingModelMap`,
861
942
  message: "expected a non-empty object of exact source model ids to models.dev provider/model ids",
862
943
  });
863
944
  return undefined;
864
945
  }
946
+ const key = `${providerKey}.pricingModelMap`;
947
+ const sourceModelIds = Object.keys(raw);
865
948
  const result = {};
866
- for (const sourceModelId of Object.keys(raw).sort()) {
867
- const key = `${providerKey}.pricingModelMap.${sourceModelId}`;
949
+ for (const sourceModelId of [...sourceModelIds].sort()) {
950
+ // An entry is named by its position: its source key is the caller's, never repeated.
951
+ const entry = `entry ${sourceModelIds.indexOf(sourceModelId) + 1}`;
868
952
  const target = raw[sourceModelId];
869
953
  if (sourceModelId.length === 0 || MODEL_FORBIDDEN_PATTERN.test(sourceModelId)) {
870
954
  issues.push({
871
955
  key,
872
- message: "source key must be an exact model id without whitespace or control characters",
956
+ message: `${entry}: source key must be an exact model id without whitespace or control characters`,
873
957
  });
874
958
  continue;
875
959
  }
876
960
  if (typeof target !== "string") {
877
- issues.push({ key, message: "expected a models.dev provider/model string" });
961
+ issues.push({ key, message: `${entry}: expected a models.dev provider/model string` });
878
962
  continue;
879
963
  }
880
964
  const automatic = resolvePricingKey({ providerID: providerId, modelID: sourceModelId });
881
965
  if (automatic.ok) {
882
966
  issues.push({
883
967
  key,
884
- message: `automatic models.dev matching already resolves to ${automatic.key.provider}/${automatic.key.model}`,
968
+ message: `${entry}: automatic models.dev matching already resolves to ${automatic.key.provider}/${automatic.key.model}`,
885
969
  });
886
970
  continue;
887
971
  }
@@ -891,7 +975,7 @@ function validatePricingModelMap(raw, providerKey, providerId, issues) {
891
975
  if (!targetProvider || !targetModel || !lookupCost(targetProvider, targetModel)) {
892
976
  issues.push({
893
977
  key,
894
- message: "target must be an exact priced models.dev provider/model id",
978
+ message: `${entry}: target must be an exact priced models.dev provider/model id`,
895
979
  });
896
980
  continue;
897
981
  }
@@ -912,7 +996,7 @@ export function validateQuotaProviders(value) {
912
996
  for (let index = 0; index < value.length; index += 1) {
913
997
  const raw = value[index];
914
998
  const providerKey = `quotaProviders[${index}]`;
915
- if (!isPlainObject(raw)) {
999
+ if (!isRecord(raw)) {
916
1000
  issues.push({ key: providerKey, message: "expected an object" });
917
1001
  continue;
918
1002
  }
@@ -922,15 +1006,17 @@ export function validateQuotaProviders(value) {
922
1006
  ? LOCAL_FIELDS
923
1007
  : mode === "remote-api"
924
1008
  ? REMOTE_FIELDS
925
- : [...new Set([...REMOTE_FIELDS, ...LOCAL_FIELDS])];
926
- for (const field of Object.keys(raw)
927
- .filter((field) => !allowedFields.includes(field))
928
- .sort()) {
1009
+ : QUOTA_PROVIDER_FIELDS;
1010
+ // An unknown field is named by its position: its name is the caller's, never repeated.
1011
+ const modeName = QUOTA_PROVIDER_MODES.find((known) => known === mode) ?? "quota provider";
1012
+ Object.keys(raw).forEach((field, position) => {
1013
+ if (allowedFields.includes(field))
1014
+ return;
929
1015
  issues.push({
930
- key: `${providerKey}.${field}`,
931
- message: `unknown field for ${typeof mode === "string" ? mode : "quota provider"} mode`,
1016
+ key: providerKey,
1017
+ message: `field ${position + 1} is unknown for ${modeName} mode; allowed fields are ${allowedFields.join(", ")}`,
932
1018
  });
933
- }
1019
+ });
934
1020
  for (const field of ["id", "mode"]) {
935
1021
  if (!hasOwnKey(raw, field)) {
936
1022
  issues.push({ key: `${providerKey}.${field}`, message: "field is required" });
@@ -951,7 +1037,7 @@ export function validateQuotaProviders(value) {
951
1037
  message: `"${QUOTA_PROVIDERS_AGGREGATE_ID}" is reserved for the aggregate provider`,
952
1038
  });
953
1039
  }
954
- const builtIn = getQuotaProviderShape(id);
1040
+ const builtIn = getCanonicalQuotaProviderId(id);
955
1041
  if (builtIn && !MAINTAINED_LOCAL_ESTIMATE_IDS.includes(id)) {
956
1042
  issues.push({
957
1043
  key: `${providerKey}.id`,
@@ -1002,7 +1088,12 @@ export function validateQuotaProviders(value) {
1002
1088
  message: 'expected "remote-api" or "local-estimate"',
1003
1089
  });
1004
1090
  }
1005
- const modelIds = validateModelIds({ raw, providerKey, providerId, issues });
1091
+ const modelIds = validateModelIds({ raw, providerKey, issues });
1092
+ const enabled = raw.enabled;
1093
+ if (hasOwnKey(raw, "enabled") && typeof enabled !== "boolean") {
1094
+ issues.push({ key: `${providerKey}.enabled`, message: "expected true or false" });
1095
+ }
1096
+ const switchField = typeof enabled === "boolean" ? { enabled } : {};
1006
1097
  const modelIdsValid = !hasOwnKey(raw, "modelIds") ||
1007
1098
  (Array.isArray(raw.modelIds) && modelIds?.length === raw.modelIds.length);
1008
1099
  if (idValid &&
@@ -1087,6 +1178,7 @@ export function validateQuotaProviders(value) {
1087
1178
  url: normalizedUrl.value,
1088
1179
  ...(apiKeyEnv !== undefined ? { apiKeyEnv: apiKeyEnv } : {}),
1089
1180
  ...(modelIds ? { modelIds } : {}),
1181
+ ...switchField,
1090
1182
  };
1091
1183
  definitions.push({
1092
1184
  index,
@@ -1120,6 +1212,7 @@ export function validateQuotaProviders(value) {
1120
1212
  windows,
1121
1213
  ...(modelIds ? { modelIds } : {}),
1122
1214
  ...(pricingModelMap ? { pricingModelMap } : {}),
1215
+ ...switchField,
1123
1216
  },
1124
1217
  });
1125
1218
  }