@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
@@ -0,0 +1,578 @@
1
+ /**
2
+ * Tools for AI agents: read the server settings, change the provider, checking and pricing
3
+ * settings, and add, test and remove custom providers. Words, export and telemetry
4
+ * are the user's, edited in the quota window or the settings file. Every write
5
+ * holds the settings lock and goes into OpenCode Quota's own settings file, never opencode.json.
6
+ *
7
+ * Keys: a provider added by an agent is saved switched off (`"enabled": false`), so it is never
8
+ * fetched and its key is never sent until the user switches it on. No tool switches a provider
9
+ * on. Every answer is cleaned in one place: each key the plugin can read, and anything in a
10
+ * known key format, is replaced before the agent sees it.
11
+ */
12
+ import { rowsFromProviderResult } from "./core/rows.js";
13
+ import { getGlobalOpencodeConfigCandidatePaths, getProviderConfigSettings, readConfigCandidate, } from "./lib/api-key-resolver.js";
14
+ import { resolveEnvTemplate } from "./lib/env-template.js";
15
+ import { isRecord } from "./lib/json-guards.js";
16
+ import { readCredentialRows } from "./lib/opencode-auth.js";
17
+ import { describeQuotaProviderRequest, QUOTA_PROVIDER_FIELDS, QUOTA_PROVIDERS_AGGREGATE_ID, } from "./lib/quota-providers.js";
18
+ import { collectLocalQuotaProviderEstimate } from "./lib/quota-providers-local.js";
19
+ import { fetchRemoteQuotaProvider, resolveQuotaProviderApiKey, } from "./lib/quota-providers-remote.js";
20
+ import { customAccount } from "./providers/quota-providers.js";
21
+ import { checkSetting, describeRule, editSettings, editSettingsFile, loadSettings, SETTINGS_SCHEMA, settingsPath, } from "./settings/index.js";
22
+ const REDACTED = "[redacted]";
23
+ /** The top-level settings agents may change; the user changes the others in /quota_settings. */
24
+ const AGENT_GROUPS = ["providers"];
25
+ const TOP_LEVEL_SETTINGS = new Set(Object.keys(SETTINGS_SCHEMA).map((key) => key.split(".")[0]));
26
+ const DEFINITION_SECRET_MESSAGE = "looks like a key or other secret, so nothing was saved. Put the key in an environment " +
27
+ "variable and set apiKeyEnv to its name, or leave apiKeyEnv out to use OpenCode's key.";
28
+ /** How the agent tells the user to switch a provider on. */
29
+ function switchOnStep() {
30
+ return (`Ask the user to switch it on: "enabled": true in ${settingsPath()}, or ` +
31
+ "/quota_settings → Providers");
32
+ }
33
+ const SETTING_SECRET_MESSAGE = "looks like a key or other secret, so nothing was saved";
34
+ /** A top-level definition field that would hold a secret; `apiKeyEnv` holds only a name. */
35
+ const SECRET_FIELD_PATTERN = /key|token|secret|passw|bearer|cookie|credential|authorization/i;
36
+ /** Known key formats, found anywhere in a text: refused in inputs, replaced in answers. */
37
+ const SECRET_PATTERNS = [
38
+ /\bsk-[A-Za-z0-9_-]{16,}/g, // OpenAI, Anthropic, OpenRouter, DeepSeek, Moonshot
39
+ /\b(?:gh[opsur]|github_pat)_[A-Za-z0-9_]{20,}/g, // GitHub
40
+ /\bxox[abprs]-[A-Za-z0-9-]{10,}/g, // Slack
41
+ /\bAKIA[0-9A-Z]{16}\b/g, // AWS
42
+ /\bAIza[0-9A-Za-z_-]{30,}/g, // Google API key
43
+ /\bya29\.[0-9A-Za-z_-]{20,}/g, // Google OAuth access token
44
+ /\b1\/\/[0-9A-Za-z_-]{20,}/g, // Google OAuth refresh token
45
+ /\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}(?:\.[A-Za-z0-9_-]*)?/g, // JWT, all three parts
46
+ /\bbearer\s+\S{8,}/gi,
47
+ /-----BEGIN [A-Z ]*PRIVATE KEY-----/g,
48
+ ];
49
+ /** Fields holding names (ids, model names, URLs, JSON paths): long runs pass in them. */
50
+ const NAME_FIELDS = new Set([
51
+ "id",
52
+ "providerId",
53
+ "modelIds",
54
+ "url",
55
+ "path",
56
+ "rowsPath",
57
+ "pricingModelMap",
58
+ ]);
59
+ /** The validator's rule for an environment variable name, the only thing apiKeyEnv holds. */
60
+ const VARIABLE_NAME = /^[A-Z_][A-Z0-9_]*$/;
61
+ /** Environment variables whose values the answers never show: the names keys go by. */
62
+ const KEY_VARIABLE_NAME = /API_?KEY|TOKEN|SECRET|PASSW|COOKIE|CREDENTIAL/i;
63
+ /** Keys this long are replaced anywhere; shorter ones only as a whole token, so no word is cut. */
64
+ const LONG_KEY_LENGTH = 8;
65
+ /**
66
+ * True when a run of 20+ letters and digits switches between letters, digits and case so often
67
+ * that its pieces average under 3 characters: a random token, not words. A camelCase name such
68
+ * as "AvailableBalanceUSD2024Total" splits into Available|Balance|USD|2024|Total and passes; a
69
+ * hex or base62 key splits into pieces of 1-2 characters.
70
+ */
71
+ function looksRandom(run) {
72
+ if (!/[0-9]/.test(run) || !/[A-Za-z]/.test(run))
73
+ return false;
74
+ const pieces = run.match(/[0-9]+|[A-Z]+(?![a-z])|[A-Z]?[a-z]+/g) ?? [];
75
+ return run.length / pieces.length < 3;
76
+ }
77
+ /**
78
+ * True when a value holds something shaped like a key: a known key format, a random run of
79
+ * letters and digits, or (outside name fields) any run of 24+ of them. Any other character ends
80
+ * a run, so model names such as "Qwen3-Coder-480B-A35B-Instruct-2507", UUIDs and version
81
+ * strings pass. A heuristic: keys never belong in a definition or a setting, only in an
82
+ * environment variable.
83
+ */
84
+ function looksSecret(text, isName) {
85
+ return (SECRET_PATTERNS.some((pattern) => text.search(pattern) !== -1) ||
86
+ (text.match(/[A-Za-z0-9]{20,}/g) ?? []).some((run) => looksRandom(run) || (!isName && run.length >= 24)));
87
+ }
88
+ /** A copy of a JSON value with `redact` applied to every string in it, property names too. */
89
+ function redactStrings(value, redact) {
90
+ if (typeof value === "string")
91
+ return redact(value);
92
+ if (Array.isArray(value))
93
+ return value.map((item) => redactStrings(item, redact));
94
+ if (isRecord(value)) {
95
+ return Object.fromEntries(Object.entries(value).map(([name, item]) => [redact(name), redactStrings(item, redact)]));
96
+ }
97
+ return value;
98
+ }
99
+ /**
100
+ * True when a value holds a string, or a property name, that looks like a secret. Property names
101
+ * are checked like ids (a pricingModelMap is keyed by model ids).
102
+ */
103
+ function holdsSecret(value, isName) {
104
+ if (typeof value === "string")
105
+ return looksSecret(value, isName);
106
+ if (Array.isArray(value))
107
+ return value.some((item) => holdsSecret(item, isName));
108
+ if (isRecord(value)) {
109
+ return Object.entries(value).some(([name, item]) => looksSecret(name, true) || holdsSecret(item, isName || NAME_FIELDS.has(name)));
110
+ }
111
+ return false;
112
+ }
113
+ /**
114
+ * The definition fields that look like they hold a secret. An issue names a definition field, or
115
+ * the position of a field definitions do not have; never a name from the input. A field named
116
+ * like a secret is refused whatever it holds; a valid variable name in apiKeyEnv is only a name.
117
+ */
118
+ function definitionSecretIssues(definition) {
119
+ return Object.entries(definition).flatMap(([field, value], index) => {
120
+ if (field === "apiKeyEnv" && typeof value === "string" && VARIABLE_NAME.test(value))
121
+ return [];
122
+ if (QUOTA_PROVIDER_FIELDS.includes(field)) {
123
+ return holdsSecret(value, NAME_FIELDS.has(field))
124
+ ? [{ key: `definition.${field}`, message: DEFINITION_SECRET_MESSAGE }]
125
+ : [];
126
+ }
127
+ const secret = SECRET_FIELD_PATTERN.test(field) || looksSecret(field, true) || holdsSecret(value, false);
128
+ return secret
129
+ ? [{ key: "definition", message: `field ${index + 1} ${DEFINITION_SECRET_MESSAGE}` }]
130
+ : [];
131
+ });
132
+ }
133
+ /**
134
+ * Every key the plugin can read: variables named like keys or named by a switched-on custom
135
+ * provider; keys in the global opencode.json(c); and API-key logins saved in OpenCode for the
136
+ * providers OpenCode has. OAuth tokens are not read (that could refresh them); `SECRET_PATTERNS`
137
+ * covers their shape. The key of a switched-off provider (and of one a tool saves, always
138
+ * switched off) is never read: until the user switches it on, nothing touches it.
139
+ */
140
+ async function credentialValues(host) {
141
+ // Each provider's key variable and OpenCode provider.
142
+ const sources = (await loadSettings()).settings.providers.custom
143
+ .filter((definition) => definition.enabled !== false)
144
+ .map((definition) => ({
145
+ variable: definition.mode === "remote-api" ? definition.apiKeyEnv : undefined,
146
+ providerId: definition.providerId,
147
+ }));
148
+ const variables = new Set(Object.keys(process.env).filter((name) => KEY_VARIABLE_NAME.test(name)));
149
+ for (const { variable } of sources) {
150
+ if (typeof variable === "string")
151
+ variables.add(variable);
152
+ }
153
+ const values = [...variables].map((name) => process.env[name]);
154
+ for (const candidate of getGlobalOpencodeConfigCandidatePaths()) {
155
+ const config = await readConfigCandidate(candidate);
156
+ if (!isRecord(config))
157
+ continue;
158
+ const providerIds = [config.provider, config.providers].flatMap((group) => isRecord(group) ? Object.keys(group) : []);
159
+ for (const providerId of providerIds) {
160
+ const apiKey = getProviderConfigSettings(config, providerId)?.apiKey;
161
+ if (typeof apiKey === "string")
162
+ values.push(resolveEnvTemplate(apiKey.trim()));
163
+ }
164
+ }
165
+ const providerIds = new Set([
166
+ ...(await host.openCodeProviderIds()),
167
+ ...sources.map(({ providerId }) => providerId),
168
+ ]);
169
+ const logins = await readCredentialRows([...providerIds], { methods: ["key"] });
170
+ values.push(...logins.map((row) => row.value.key));
171
+ return values.flatMap((value) => typeof value === "string" && value.trim() ? [value.trim()] : []);
172
+ }
173
+ /**
174
+ * Replaces, in one string, each key the plugin can read and each known key format. A key under
175
+ * LONG_KEY_LENGTH counts only as a whole token (letters, digits, `_` and `-`).
176
+ */
177
+ async function credentialRedactor(host) {
178
+ // Longest first, so a key that contains another is replaced whole.
179
+ const values = [...new Set(await credentialValues(host))].sort((a, b) => b.length - a.length);
180
+ const long = values.filter((value) => value.length >= LONG_KEY_LENGTH);
181
+ const short = values
182
+ .filter((value) => value.length < LONG_KEY_LENGTH)
183
+ .map((value) => {
184
+ const escaped = value.replace(/[.*+?^${}()|[\]\\/]/g, "\\$&");
185
+ return new RegExp(`(?<![\\w-])${escaped}(?![\\w-])`, "g");
186
+ });
187
+ return (text) => {
188
+ let redacted = text;
189
+ for (const value of long)
190
+ redacted = redacted.split(value).join(REDACTED);
191
+ for (const pattern of short)
192
+ redacted = redacted.replace(pattern, REDACTED);
193
+ for (const pattern of SECRET_PATTERNS)
194
+ redacted = redacted.replace(pattern, REDACTED);
195
+ return redacted;
196
+ };
197
+ }
198
+ function valueAt(settings, key) {
199
+ return key
200
+ .split(".")
201
+ .reduce((value, part) => (isRecord(value) ? value[part] : undefined), settings);
202
+ }
203
+ /** Where each remote custom provider reads its API key: a variable name, never its value. */
204
+ function apiKeySources(definitions) {
205
+ return definitions.flatMap((definition) => {
206
+ if (definition.mode !== "remote-api")
207
+ return [];
208
+ if (!definition.apiKeyEnv) {
209
+ return [
210
+ {
211
+ provider: definition.id,
212
+ apiKeyEnv: null,
213
+ readsFrom: `OpenCode's API key for provider "${definition.providerId}"`,
214
+ },
215
+ ];
216
+ }
217
+ return [
218
+ {
219
+ provider: definition.id,
220
+ apiKeyEnv: definition.apiKeyEnv,
221
+ isSet: Boolean(process.env[definition.apiKeyEnv]?.trim()),
222
+ },
223
+ ];
224
+ });
225
+ }
226
+ async function getSettings() {
227
+ const loaded = await loadSettings();
228
+ const fromFile = new Set(loaded.fromFile);
229
+ const settings = Object.fromEntries(Object.entries(SETTINGS_SCHEMA).map(([key, rule]) => [
230
+ key,
231
+ {
232
+ value: valueAt(loaded.settings, key),
233
+ from: fromFile.has(key) ? "file" : "default",
234
+ allowed: rule.kind === "customProviders"
235
+ ? "custom provider definitions; change them with quota_provider_add and quota_provider_remove"
236
+ : describeRule(rule),
237
+ },
238
+ ]));
239
+ const notes = [
240
+ `quota_settings_set changes only ${AGENT_GROUPS.join(", ")}, as nested objects, e.g. ` +
241
+ '{ "providers": { "checking": { "minIntervalMs": 600000 } } }; null resets a key. The user changes the ' +
242
+ "other settings in /quota_settings.",
243
+ "All quota settings are in this file. The user changes display settings in /quota_settings.",
244
+ ];
245
+ if (!loaded.exists && loaded.conversion) {
246
+ notes.push(`The file does not exist yet: the values marked "file" come from ${loaded.conversion.sources.join(", ")}. The first change writes the file.`);
247
+ }
248
+ return {
249
+ file: loaded.path,
250
+ fileExists: loaded.exists,
251
+ settings,
252
+ apiKeys: apiKeySources(loaded.settings.providers.custom),
253
+ ...(loaded.issues.length > 0 ? { problemsInFile: loaded.issues } : {}),
254
+ notes,
255
+ };
256
+ }
257
+ /** True when a patch would change the custom providers, which only the provider tools do. */
258
+ function touchesCustomProviders(patch) {
259
+ if (!Object.hasOwn(patch, "providers"))
260
+ return false;
261
+ const providers = patch.providers;
262
+ return providers === null || (isRecord(providers) && Object.hasOwn(providers, "custom"));
263
+ }
264
+ /**
265
+ * What an agent may not change in a patch; checked before anything is saved. An issue names a
266
+ * settings key, or the position of a name that is not one; never a name from the patch. Names
267
+ * deeper in a group are checked by the save, which reports them the same way.
268
+ */
269
+ function patchIssues(patch) {
270
+ const agentGroups = AGENT_GROUPS.join(", ");
271
+ const issues = Object.entries(patch).flatMap(([group, value], index) => {
272
+ const position = `key ${index + 1} of the patch`;
273
+ if (group.includes(".")) {
274
+ return [
275
+ {
276
+ key: "patch",
277
+ message: `use nested objects, not dotted keys (${position}), e.g. { "providers": { "checking": { "minIntervalMs": 600000 } } }`,
278
+ },
279
+ ];
280
+ }
281
+ if (!TOP_LEVEL_SETTINGS.has(group)) {
282
+ return [
283
+ {
284
+ key: "patch",
285
+ message: `unknown setting (${position}); agents may change: ${agentGroups}`,
286
+ },
287
+ ];
288
+ }
289
+ if (!AGENT_GROUPS.includes(group)) {
290
+ return [
291
+ {
292
+ key: group,
293
+ message: `the user changes ${group} in /quota_settings; agents may change: ${agentGroups}`,
294
+ },
295
+ ];
296
+ }
297
+ return holdsSecret(value, false) ? [{ key: group, message: SETTING_SECRET_MESSAGE }] : [];
298
+ });
299
+ if (touchesCustomProviders(patch)) {
300
+ issues.push({
301
+ key: "providers.custom",
302
+ message: "change custom providers with quota_provider_add and quota_provider_remove; " +
303
+ "to reset other provider settings, set each one to null",
304
+ });
305
+ }
306
+ return issues;
307
+ }
308
+ async function setSettings(input) {
309
+ const patch = isRecord(input) ? input.patch : undefined;
310
+ const issues = isRecord(patch)
311
+ ? patchIssues(patch)
312
+ : [{ key: "patch", message: "expected an object of settings" }];
313
+ if (issues.length > 0)
314
+ return { ok: false, issues, message: "Nothing was saved." };
315
+ // Agents may also write settings /quota_settings does not show, such as the Claude CLI path.
316
+ const saved = await editSettings(() => patch, { allowFileOnly: true });
317
+ if (!saved.ok)
318
+ return { ok: false, issues: saved.issues, message: "Nothing was saved." };
319
+ return {
320
+ ok: true,
321
+ file: settingsPath(),
322
+ diff: saved.diff,
323
+ message: saved.diff.length > 0 ? "Saved." : "Nothing changed.",
324
+ };
325
+ }
326
+ /** A list with a bad entry loads as empty, so changing it would drop every entry the user has. */
327
+ function customProviderIssues(issues) {
328
+ return issues.filter((issue) => issue.key.startsWith("providers.custom"));
329
+ }
330
+ function fixFileFirst(problems) {
331
+ return {
332
+ ok: false,
333
+ issues: problems,
334
+ message: `Nothing was changed: fix the custom providers in ${settingsPath()} first.`,
335
+ };
336
+ }
337
+ /** The id the caller sent is not repeated; the ids in the file are listed instead. */
338
+ function notFound(ids) {
339
+ return { ok: false, message: "No custom provider has that id.", ids };
340
+ }
341
+ /**
342
+ * The rows the sidebar would show for one reply of a definition, or why there are none. Row
343
+ * ids are made from the names and ids in them, so every string in them is redacted first, to a
344
+ * placeholder a row id may hold.
345
+ */
346
+ function testedRows(definition, rows, rowErrors, redact) {
347
+ const result = {
348
+ attempted: true,
349
+ accounts: [customAccount(definition, rows, rowErrors)],
350
+ debug: [],
351
+ };
352
+ const fetched = rowsFromProviderResult(QUOTA_PROVIDERS_AGGREGATE_ID, redactStrings(result, (text) => redact(text).replaceAll(REDACTED, "redacted")));
353
+ const problems = fetched.debug.map((detail) => detail.value);
354
+ if (fetched.rows.length === 0) {
355
+ return { ok: false, error: "The answer had no rows that could be read.", problems };
356
+ }
357
+ return { ok: true, rows: fetched.rows, ...(problems.length > 0 ? { problems } : {}) };
358
+ }
359
+ /**
360
+ * One fetch of one switched-on definition now, as the rows the sidebar would show, or why it
361
+ * failed. Its key is read the way the plugin reads it.
362
+ */
363
+ async function testFetch(definition, requestTimeoutMs, redact) {
364
+ if (definition.enabled === false) {
365
+ return { ok: false, error: `Not tested: it is switched off. ${switchOnStep()}; then test it.` };
366
+ }
367
+ if (definition.mode === "local-estimate") {
368
+ return testedRows(definition, (await collectLocalQuotaProviderEstimate(definition)).rows, [], redact);
369
+ }
370
+ const { key } = await resolveQuotaProviderApiKey(definition);
371
+ if (!key) {
372
+ return {
373
+ ok: false,
374
+ error: `No API key found. It is read from ${describeQuotaProviderRequest(definition)?.key}. ` +
375
+ "The user saves it there and restarts OpenCode; then run quota_provider_test.",
376
+ };
377
+ }
378
+ const result = await fetchRemoteQuotaProvider(definition, key, requestTimeoutMs);
379
+ if (!result.success)
380
+ return { ok: false, error: result.error };
381
+ return testedRows(definition, result.rows, result.rowErrors ?? [], redact);
382
+ }
383
+ /** Why a saved definition would still not show, so the agent can fix it. */
384
+ async function visibilityNotes(definition, settings, host) {
385
+ const notes = [];
386
+ const off = settings.providers.off;
387
+ if (off.includes("custom")) {
388
+ notes.push('providers.off lists "custom", so custom providers are not shown; remove it with quota_settings_set.');
389
+ }
390
+ let openCodeIds;
391
+ try {
392
+ openCodeIds = await host.openCodeProviderIds();
393
+ }
394
+ catch {
395
+ // Without the list, say nothing rather than guess.
396
+ }
397
+ if (openCodeIds && !openCodeIds.includes(definition.providerId)) {
398
+ notes.push(`OpenCode has no provider "${definition.providerId}", so this one is not shown. Set ` +
399
+ `providerId to the OpenCode provider it tracks; OpenCode has: ${openCodeIds.join(", ")}.`);
400
+ }
401
+ return notes;
402
+ }
403
+ async function addProvider(input, host) {
404
+ const definition = isRecord(input) ? input.definition : undefined;
405
+ if (!isRecord(definition)) {
406
+ return {
407
+ ok: false,
408
+ issues: [{ key: "definition", message: "expected an object" }],
409
+ message: "Nothing was saved.",
410
+ };
411
+ }
412
+ const secrets = definitionSecretIssues(definition);
413
+ if (secrets.length > 0)
414
+ return { ok: false, issues: secrets, message: "Nothing was saved." };
415
+ // Written as the agent sent it, so the file gets no filled-in defaults; a label that only
416
+ // repeats the id is left out. Always switched off, also when it replaces one that was on.
417
+ const { label, ...withoutLabel } = definition;
418
+ const entry = { ...(label === definition.id ? withoutLabel : definition), enabled: false };
419
+ // The entry alone, so its problems point into it; the save checks the whole list.
420
+ const alone = checkSetting("providers.custom", [entry]);
421
+ if (alone.issues.length > 0) {
422
+ return {
423
+ ok: false,
424
+ issues: alone.issues.map((issue) => ({
425
+ ...issue,
426
+ key: issue.key.replace(/^providers\.custom\[0\]/, "definition"),
427
+ })),
428
+ message: "Nothing was saved. Fix the definition and add it again.",
429
+ };
430
+ }
431
+ const added = alone.value[0];
432
+ let problems = [];
433
+ let replaced = false;
434
+ const saved = await editSettingsFile((current, issues) => {
435
+ problems = customProviderIssues(issues);
436
+ if (problems.length > 0)
437
+ return undefined;
438
+ const at = current.providers.custom.findIndex((item) => item.id === added.id);
439
+ replaced = at !== -1;
440
+ // Only this entry changes (-1 appends), so the others keep their comments.
441
+ return [{ path: ["providers", "custom", at], value: entry }];
442
+ });
443
+ if (problems.length > 0)
444
+ return fixFileFirst(problems);
445
+ if (!saved.ok)
446
+ return { ok: false, issues: saved.issues, message: "Nothing was saved." };
447
+ // What the user checks before switching it on: where the key would go, and from where.
448
+ const request = describeQuotaProviderRequest(added);
449
+ const check = request ? `, after checking that ${request.url} may get ${request.key}` : "";
450
+ const notes = await visibilityNotes(added, (await loadSettings()).settings, host);
451
+ return {
452
+ ok: true,
453
+ [replaced ? "replaced" : "added"]: added.id,
454
+ file: settingsPath(),
455
+ enabled: false,
456
+ ...(request ? { request } : {}),
457
+ ...(notes.length > 0 ? { notes } : {}),
458
+ message: `Saved, switched off: it is not fetched and its key is not sent yet. ${switchOnStep()}` +
459
+ `${check}; then test it with quota_provider_test.`,
460
+ };
461
+ }
462
+ async function testProvider(input, host, redact) {
463
+ const id = isRecord(input) ? input.id : undefined;
464
+ const loaded = await loadSettings();
465
+ const definitions = loaded.settings.providers.custom;
466
+ const definition = definitions.find((item) => item.id === id);
467
+ if (!definition) {
468
+ const problems = customProviderIssues(loaded.issues);
469
+ return {
470
+ ...notFound(definitions.map((item) => item.id)),
471
+ ...(problems.length > 0 ? { problemsInFile: problems } : {}),
472
+ };
473
+ }
474
+ const test = await testFetch(definition, loaded.settings.providers.checking.requestTimeoutMs, redact);
475
+ const notes = await visibilityNotes(definition, loaded.settings, host);
476
+ return { id: definition.id, ...test, ...(notes.length > 0 ? { notes } : {}) };
477
+ }
478
+ async function removeProvider(input) {
479
+ const id = isRecord(input) ? input.id : undefined;
480
+ let problems = [];
481
+ let ids = [];
482
+ let found = false;
483
+ const saved = await editSettingsFile((current, issues) => {
484
+ problems = customProviderIssues(issues);
485
+ if (problems.length > 0)
486
+ return undefined;
487
+ ids = current.providers.custom.map((item) => item.id);
488
+ const at = typeof id === "string" ? ids.indexOf(id) : -1;
489
+ found = at !== -1;
490
+ // Only this entry goes, so the others keep their comments.
491
+ return found ? [{ path: ["providers", "custom", at], value: undefined }] : undefined;
492
+ });
493
+ if (problems.length > 0)
494
+ return fixFileFirst(problems);
495
+ if (!saved.ok)
496
+ return { ok: false, issues: saved.issues, message: "Nothing was removed." };
497
+ if (!found)
498
+ return notFound(ids);
499
+ return {
500
+ ok: true,
501
+ removed: id,
502
+ remaining: ids.filter((item) => item !== id),
503
+ message: "Removed.",
504
+ };
505
+ }
506
+ function tool(host, name, description, properties, run) {
507
+ return {
508
+ name,
509
+ description,
510
+ input: {
511
+ type: "object",
512
+ properties,
513
+ // Every input is required; an empty list is not valid in every JSON Schema draft.
514
+ ...(Object.keys(properties).length > 0 ? { required: Object.keys(properties) } : {}),
515
+ additionalProperties: false,
516
+ },
517
+ async execute(input) {
518
+ let redact;
519
+ try {
520
+ redact = await credentialRedactor(host);
521
+ }
522
+ catch {
523
+ const message = "Nothing was done: the saved keys to hide from the answer could not be read.";
524
+ return { content: JSON.stringify({ ok: false, message }, null, 2) };
525
+ }
526
+ let result;
527
+ try {
528
+ result = await run(input, redact);
529
+ }
530
+ catch (error) {
531
+ // A thrown error would reach the agent as an internal failure without its reason.
532
+ result = { ok: false, message: error instanceof Error ? error.message : String(error) };
533
+ }
534
+ // The one place answers are cleaned: whatever a file or an endpoint holds, no key gets out.
535
+ // Each string is cleaned on its own, so a replacement never reaches the JSON around it.
536
+ return { content: JSON.stringify(redactStrings(result, redact), null, 2) };
537
+ },
538
+ };
539
+ }
540
+ const ID_INPUT = { type: "string", description: "The custom provider's id." };
541
+ const DEFINITION_EXAMPLE = JSON.stringify({
542
+ id: "my-gateway-quota",
543
+ providerId: "my-gateway",
544
+ mode: "remote-api",
545
+ url: "https://gateway.example/v1/quota",
546
+ format: "quota-v1",
547
+ apiKeyEnv: "MY_GATEWAY_API_KEY",
548
+ });
549
+ export function quotaAgentTools(host) {
550
+ return [
551
+ tool(host, "quota_settings_get", "Read OpenCode Quota's server settings. Returns each value with its source (file or " +
552
+ "default) and allowed values, the file path, and the variable each custom provider " +
553
+ "reads its key from.", {}, () => getSettings()),
554
+ tool(host, "quota_settings_set", "Change OpenCode Quota's providers, checking or pricing settings with a merge patch of " +
555
+ "nested objects; null resets a key. Returns what changed, or the problems (nothing " +
556
+ "saved). Custom providers: quota_provider_add and quota_provider_remove.", {
557
+ patch: {
558
+ type: "object",
559
+ description: 'Nested settings to change, e.g. { "providers": { "checking": { "minIntervalMs": 600000 } } }.',
560
+ },
561
+ }, setSettings),
562
+ tool(host, "quota_provider_add", "Add a custom OpenCode Quota provider, or replace the one with its id. It is saved " +
563
+ "switched off; once the user switches it on (settings file or /quota_settings → " +
564
+ "Providers), quota_provider_test fetches it. No key in the definition: apiKeyEnv " +
565
+ "names the variable holding it; without it, OpenCode's key for providerId is used. " +
566
+ "Rules: " +
567
+ "https://github.com/slkiser/opencode-quota/blob/main/docs/readme/providers.md#custom-providers", {
568
+ definition: {
569
+ type: "object",
570
+ description: `One custom provider definition, e.g. ${DEFINITION_EXAMPLE}.`,
571
+ },
572
+ }, (input) => addProvider(input, host)),
573
+ tool(host, "quota_provider_test", "Fetch one switched-on custom OpenCode Quota provider by id now. Returns the rows or " +
574
+ "the error.", { id: ID_INPUT }, (input, redact) => testProvider(input, host, redact)),
575
+ tool(host, "quota_provider_remove", "Remove one custom OpenCode Quota provider by id. Returns the ids that remain.", { id: ID_INPUT }, removeProvider),
576
+ ];
577
+ }
578
+ //# sourceMappingURL=agent-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-tools.js","sourceRoot":"","sources":["../src/agent-tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"opencode-quota.d.ts","sourceRoot":"","sources":["../../src/bin/opencode-quota.ts"],"names":[],"mappings":";AAiDA,wBAAgB,gBAAgB,CAC9B,KAAK,GAAE,MAAM,GAAG,SAA2B,EAC3C,UAAU,GAAE,MAAuC,EACnD,WAAW,GAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAuB,GACzD,OAAO,CAMT;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,IAAI,IAAI,CAYpD;AAED,wBAAsB,IAAI,CAAC,IAAI,WAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,CA6CxE"}
1
+ {"version":3,"file":"opencode-quota.d.ts","sourceRoot":"","sources":["../../src/bin/opencode-quota.ts"],"names":[],"mappings":";AAkCA,wBAAgB,gBAAgB,CAC9B,KAAK,GAAE,MAAM,GAAG,SAA2B,EAC3C,UAAU,GAAE,MAAuC,EACnD,WAAW,GAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAuB,GACzD,OAAO,CAMT;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,IAAI,IAAI,CAYpD;AAED,wBAAsB,IAAI,CAAC,IAAI,WAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyBxE"}