@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,305 @@
1
+ import { memo as _$memo } from "@opentui/solid";
2
+ import { createComponent as _$createComponent } from "@opentui/solid";
3
+ /** @jsxImportSource @opentui/solid */
4
+ /**
5
+ * OpenCode Quota's TUI plugin. It draws the server's quota snapshot: the Quota panel in the
6
+ * session sidebar, the status line under the message box (and on Home when turned on), the
7
+ * toasts, and the quota window that `/quota`, `/quota_usage`, `/quota_status` and
8
+ * `/quota_settings` open above the message box (`window/`).
9
+ * It reads all settings through the quota RPC; plugin storage keeps only the sidebar state.
10
+ *
11
+ * The quota slash commands typed in the prompt run in the TUI: on Enter, before OpenCode submits
12
+ * the prompt, a prompt that starts with /quota, /quota_usage, /quota_status or /quota_settings is
13
+ * cleared and runs its TUI action with the rest of the prompt as its arguments. So no report
14
+ * shows in the chat, and on Home no session is created for one. The "/" list names each once:
15
+ * the server lists /quota, /quota_usage and /quota_status, the TUI /quota_settings.
16
+ * The 4.x and 5.x names run here too: each /tokens_* opens the Usage tab on its range while
17
+ * `system.oldCommands` is on (the server lists them then), and names its /quota_usage range while
18
+ * it is off (an open TUI's "/" list keeps them until OpenCode restarts).
19
+ */
20
+ import { Plugin } from "@opencode/plugin/tui";
21
+ import { getOwner, onCleanup, Show } from "solid-js";
22
+ import { OLD_USAGE_COMMANDS, parseUsageArguments } from "../core/usage-ranges.js";
23
+ import { QuotaRpc } from "../rpc.js";
24
+ import { createQuotaClient, quotaCallOptions, reportFailure } from "./client.js";
25
+ import { createFileDisplay } from "./display.js";
26
+ import { createServerSettings } from "./server-settings.js";
27
+ import { SidebarPanel } from "./sidebar.js";
28
+ import { HomeFooter, StatusLine } from "./status-line.js";
29
+ import { createToastShow } from "./toast-colors.js";
30
+ import { createToasts, TOAST_TITLE } from "./toasts.js";
31
+ import { createSettingsEditor } from "./window/settings.js";
32
+ import { createQuotaWindow } from "./window/shell.js";
33
+
34
+ /** What the plugin needs from OpenCode's TUI context, besides the window's needs. */
35
+
36
+ function eventSessionID(event) {
37
+ const sessionID = event.data?.sessionID;
38
+ return typeof sessionID === "string" && sessionID ? sessionID : undefined;
39
+ }
40
+ function eventToolCallID(event) {
41
+ const id = event.data?.id;
42
+ return typeof id === "string" ? id : undefined;
43
+ }
44
+ const plugin = Plugin.define({
45
+ // OpenCode names this plugin's storage files after its id (`plugin.<id>.<key>.json`), so the
46
+ // id may hold only letters, digits, ".", "_" and "-".
47
+ id: "slkiser.opencode-quota",
48
+ setup(context) {
49
+ const api = context;
50
+ // Plugin storage is first read when a surface draws, never during setup.
51
+ const server = createServerSettings({
52
+ settings: () => api.client.rpc(QuotaRpc).settings({}, quotaCallOptions(api)),
53
+ saveSettings: input => api.client.rpc(QuotaRpc).saveSettings(input, quotaCallOptions(api))
54
+ });
55
+ const display = createFileDisplay(server);
56
+ let sidebarStore;
57
+ const sidebarState = () => {
58
+ sidebarStore ??= api.storage.store("sidebar", {
59
+ initial: {
60
+ open: true
61
+ }
62
+ });
63
+ return sidebarStore;
64
+ };
65
+ const isChildSession = sessionID => Boolean(api.data.session.get(sessionID)?.parentID);
66
+ let conversionShown = false;
67
+ const quota = createQuotaClient(api, snapshot => {
68
+ const current = quota.snapshot()?.settings;
69
+ if (current) server.receive(current);
70
+ toasts.showResetNotices(settings.withDraftWords(snapshot) ?? snapshot);
71
+ if (snapshot.settingsConverted && !conversionShown) {
72
+ conversionShown = true;
73
+ api.ui.toast.show({
74
+ variant: "info",
75
+ title: TOAST_TITLE,
76
+ message: "Your 4.x or 5.x settings are now in settings.jsonc, details in /quota_status",
77
+ duration: 15_000
78
+ });
79
+ }
80
+ });
81
+ /** The app slot's Solid owner while it is mounted: colored toasts are made under it. */
82
+ let appOwner;
83
+ const showToast = createToastShow({
84
+ show: toast => api.ui.toast.show(toast),
85
+ theme: () => api.theme,
86
+ display: display.shown,
87
+ owner: () => appOwner
88
+ });
89
+ const settings = createSettingsEditor(api, display, showToast);
90
+ const draftQuota = {
91
+ ...quota,
92
+ snapshot: sessionID => settings.withDraftWords(quota.snapshot(sessionID)),
93
+ refresh: async (reason, sessionID) => settings.withDraftWords(await quota.refresh(reason, sessionID))
94
+ };
95
+ const toasts = createToasts({
96
+ show: showToast,
97
+ display: display.shown,
98
+ terminalWidth: () => api.renderer.width,
99
+ quota: draftQuota,
100
+ isChildSession
101
+ });
102
+ const host = {
103
+ theme: () => api.theme,
104
+ display: display.shown,
105
+ // While All places has unsaved words, every surface shows them.
106
+ quota: draftQuota,
107
+ editing: settings
108
+ };
109
+ const quotaWindow = createQuotaWindow(api, host, settings);
110
+ /** `/quota_usage [range]`: the Usage tab, on the typed range or Today; a wrong range says why. */
111
+ const openUsage = argumentsText => {
112
+ const parsed = parseUsageArguments(argumentsText);
113
+ if (parsed.ok) quotaWindow.openUsage(parsed);else api.ui.toast.show({
114
+ variant: "warning",
115
+ title: TOAST_TITLE,
116
+ message: parsed.error
117
+ });
118
+ };
119
+ /** A 4.x or 5.x `/tokens_*` command: `/quota_usage` on its range, or a hint while off. */
120
+ const oldUsage = (range, argumentsText) => {
121
+ if (server.value("system.oldCommands") === true) {
122
+ openUsage(`${range} ${argumentsText}`.trim());
123
+ return;
124
+ }
125
+ const now = range === "between" ? "between YYYY-MM-DD YYYY-MM-DD" : range;
126
+ api.ui.toast.show({
127
+ variant: "info",
128
+ title: TOAST_TITLE,
129
+ message: `Use /quota_usage ${now}. The old /tokens_* names turn on in /quota_status.`
130
+ });
131
+ };
132
+ /** The quota slash commands, by name, with what follows the name. */
133
+ const quotaCommands = {
134
+ quota: () => quotaWindow.open("limits"),
135
+ quota_usage: openUsage,
136
+ quota_status: () => quotaWindow.open("system"),
137
+ quota_settings: () => quotaWindow.open("settings"),
138
+ ...Object.fromEntries(Object.entries(OLD_USAGE_COMMANDS).map(([name, range]) => [name, argumentsText => oldUsage(range, argumentsText)]))
139
+ };
140
+ let disposeMount;
141
+ const questionToolCalls = new Set();
142
+ const disposeApp = api.ui.slot({
143
+ append: "app",
144
+ render: () => {
145
+ // OpenCode mounts this slot again when it reconnects to its server, which can also
146
+ // happen right after it starts. Leaving a mount drops its keymap layers and event
147
+ // listeners, so each mount stops the last one's and registers everything again.
148
+ disposeMount?.();
149
+ const owner = getOwner() ?? undefined;
150
+ appOwner = owner;
151
+ const stopQuota = quota.start();
152
+ // Load settings on Home too, including switches for otherwise hidden surfaces.
153
+ queueMicrotask(() => {
154
+ try {
155
+ quota.watch()();
156
+ } catch (error) {
157
+ reportFailure(error);
158
+ }
159
+ });
160
+ api.keymap.layer(() => ({
161
+ mode: "global",
162
+ commands: [{
163
+ id: "quota.limits",
164
+ title: "Quota limits",
165
+ group: "OpenCode Quota",
166
+ palette: true,
167
+ run: () => quotaWindow.open("limits")
168
+ }, {
169
+ id: "quota.usage",
170
+ title: "Quota usage: tokens and API cost",
171
+ group: "OpenCode Quota",
172
+ palette: true,
173
+ run: () => quotaWindow.open("usage")
174
+ }, {
175
+ id: "quota.status",
176
+ title: "Quota status report",
177
+ group: "OpenCode Quota",
178
+ palette: true,
179
+ run: () => quotaWindow.open("system")
180
+ }, {
181
+ id: "quota.settings",
182
+ title: "Quota: settings",
183
+ group: "OpenCode Quota",
184
+ palette: true,
185
+ // The server lists /quota, /quota_usage and /quota_status; this one is TUI-only.
186
+ slash: {
187
+ name: "quota_settings"
188
+ },
189
+ run: () => quotaWindow.open("settings")
190
+ }]
191
+ }));
192
+ // The typed quota commands. Above OpenCode's textarea layer, which submits the prompt on
193
+ // Enter; without a mode, so it is off while the "/" list or a dialog is open.
194
+ api.keymap.layer(() => ({
195
+ priority: 1,
196
+ commands: [{
197
+ bind: "return",
198
+ // Synchronous on purpose: a returned promise counts as handled.
199
+ run: () => {
200
+ const editor = api.renderer.currentFocusedEditor;
201
+ const trimmed = editor?.plainText.trim() ?? "";
202
+ if (!editor || !trimmed.startsWith("/")) return false;
203
+ // As in OpenCode, the command name ends at the first whitespace.
204
+ const name = trimmed.slice(1).split(/\s/, 1)[0] ?? "";
205
+ if (!Object.hasOwn(quotaCommands, name)) return false;
206
+ editor.clear();
207
+ quotaCommands[name](trimmed.slice(1 + name.length).trim());
208
+ }
209
+ }]
210
+ }));
211
+ const afterTurn = (event, trigger) => {
212
+ const sessionID = eventSessionID(event);
213
+ if (sessionID) void toasts.afterTurn(trigger, sessionID).catch(reportFailure);
214
+ };
215
+ const listeners = [api.data.on("session.execution.succeeded", event => afterTurn(event, "reply")), api.data.on("session.compaction.ended", event => afterTurn(event, "compaction")),
216
+ // Each step can use quota; the server skips a refresh that is not due yet.
217
+ api.data.on("session.step.ended", event => {
218
+ const sessionID = eventSessionID(event);
219
+ if (sessionID && !isChildSession(sessionID)) void quota.refresh("turn", sessionID);
220
+ }), api.data.on("session.tool.input.started", event => {
221
+ const id = eventToolCallID(event);
222
+ if (event.data?.name === "question" && id) questionToolCalls.add(id);
223
+ }), api.data.on("session.tool.success", event => {
224
+ const id = eventToolCallID(event);
225
+ if (id && questionToolCalls.delete(id)) afterTurn(event, "question");
226
+ }), api.data.on("session.tool.failed", event => {
227
+ const id = eventToolCallID(event);
228
+ if (id) questionToolCalls.delete(id);
229
+ })];
230
+ let disposed = false;
231
+ const dispose = () => {
232
+ if (disposed) return;
233
+ disposed = true;
234
+ if (disposeMount === dispose) disposeMount = undefined;
235
+ if (appOwner === owner) appOwner = undefined;
236
+ stopQuota();
237
+ toasts.cancel();
238
+ for (const stop of listeners) stop();
239
+ questionToolCalls.clear();
240
+ };
241
+ disposeMount = dispose;
242
+ onCleanup(dispose);
243
+ return null;
244
+ }
245
+ });
246
+ const disposeSidebar = api.ui.slot({
247
+ append: "sidebar.content",
248
+ render: props => {
249
+ const [state, update] = sidebarState();
250
+ return _$createComponent(SidebarPanel, {
251
+ host: host,
252
+ get sessionID() {
253
+ return props.sessionID;
254
+ },
255
+ open: () => state.open,
256
+ setOpen: open => {
257
+ void update(draft => {
258
+ draft.open = open;
259
+ }).catch(reportFailure);
260
+ }
261
+ });
262
+ }
263
+ });
264
+ const disposePrompt = api.ui.slot({
265
+ append: "prompt.footer",
266
+ // Home has a message box too; Home's status line sits in its own footer instead.
267
+ render: props => _$createComponent(Show, {
268
+ get when() {
269
+ return _$memo(() => !!props.sessionID)() && settings.statusLineShown();
270
+ },
271
+ get children() {
272
+ return _$createComponent(StatusLine, {
273
+ host: host,
274
+ get sessionID() {
275
+ return props.sessionID;
276
+ }
277
+ });
278
+ }
279
+ })
280
+ });
281
+ const disposeHome = api.ui.slot({
282
+ append: "home.footer.status",
283
+ render: () => _$createComponent(HomeFooter, {
284
+ host: host
285
+ })
286
+ });
287
+ const disposeWindow = api.ui.slot({
288
+ append: "session.composer.top",
289
+ render: props => _$createComponent(quotaWindow.Slot, {
290
+ get sessionID() {
291
+ return props.sessionID;
292
+ }
293
+ })
294
+ });
295
+ return () => {
296
+ disposeMount?.();
297
+ disposeApp();
298
+ disposeSidebar();
299
+ disposePrompt();
300
+ disposeHome();
301
+ disposeWindow();
302
+ };
303
+ }
304
+ });
305
+ export default plugin;
@@ -0,0 +1,43 @@
1
+ import type { QuotaSnapshot, Words } from "../core/types.js";
2
+ import type { QuotaRpcSaveSettingsInput, QuotaRpcSaveSettingsOutput, QuotaRpcSettingsOutput } from "../rpc.js";
3
+ /** The ids switched off; every other provider is checked when found. */
4
+ export declare const PROVIDERS_KEY = "providers.off";
5
+ export declare function foundProviderIds(snapshot: QuotaSnapshot | undefined): string[];
6
+ export declare function isTicked(off: readonly string[], id: string): boolean;
7
+ export declare function withTick(off: readonly string[], id: string, on: boolean): string[];
8
+ /** Changes by dotted key as the JSON merge patch `saveSettings` takes. */
9
+ export declare function settingsPatch(changes: Readonly<Record<string, unknown>>): Record<string, unknown>;
10
+ export type ServerSettingsRpc = {
11
+ settings(): Promise<QuotaRpcSettingsOutput>;
12
+ saveSettings(input: QuotaRpcSaveSettingsInput): Promise<QuotaRpcSaveSettingsOutput>;
13
+ };
14
+ export type ServerSettings = ReturnType<typeof createServerSettings>;
15
+ /** The saved server settings, and this window's changes and custom provider switches on top. */
16
+ export declare function createServerSettings(rpc: ServerSettingsRpc): {
17
+ /** Undefined until the first server answer. */
18
+ saved: import("solid-js").Accessor<import("../settings/schema.js").ClientSettings | undefined>;
19
+ receive(next: QuotaRpcSettingsOutput): void;
20
+ value: (key: string) => unknown;
21
+ set(key: string, next: unknown): void;
22
+ customOn: (id: string) => boolean;
23
+ switchCustom(id: string, on: boolean): void;
24
+ changedSinceReview: (id: string) => boolean;
25
+ dirty: () => boolean;
26
+ /** The words this window changed, for the surfaces to show while you edit. */
27
+ draftWords(): Partial<Words>;
28
+ load(): Promise<void>;
29
+ /**
30
+ * Saves one setting straight away, apart from the window's draft (the Plugin tab's
31
+ * switches), then reads the saved settings again. The error says why the server refused it.
32
+ */
33
+ saveNow(key: string, next: unknown): Promise<void>;
34
+ /**
35
+ * Sends the changes and switches in one save; nothing is saved when the server refuses any
36
+ * of them, and the error says why. A switch-on carries the fingerprint of the definition
37
+ * shown: one that changed since is reloaded and marked, not switched on. A change made while
38
+ * it saves (one back to the old value too) stays unsaved.
39
+ */
40
+ save(): Promise<void>;
41
+ discard(): void;
42
+ };
43
+ //# sourceMappingURL=server-settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-settings.d.ts","sourceRoot":"","sources":["../../src/tui/server-settings.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,KAAK,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,sBAAsB,EACvB,MAAM,WAAW,CAAC;AAQnB,wEAAwE;AACxE,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAE7C,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,EAAE,CAI9E;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAEpE;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAG,MAAM,EAAE,CAElF;AAED,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYjG;AAiBD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC5C,YAAY,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;CACrF,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAErE,gGAAgG;AAChG,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,iBAAiB;IAyGvD,+CAA+C;;kBAEjC,sBAAsB,GAAG,IAAI;iBA3FzB,MAAM,KAAG,OAAO;aAgGzB,MAAM,QAAQ,OAAO,GAAG,IAAI;mBA1EjB,MAAM,KAAG,OAAO;qBAoGnB,MAAM,MAAM,OAAO,GAAG,IAAI;6BAMlB,MAAM,KAAG,OAAO;;IAEzC,8EAA8E;kBAChE,OAAO,CAAC,KAAK,CAAC;YAUd,OAAO,CAAC,IAAI,CAAC;IAG3B;;;OAGG;iBACgB,MAAM,QAAQ,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxD;;;;;OAKG;YACK,OAAO,CAAC,IAAI,CAAC;eAQV,IAAI;EASlB"}
@@ -0,0 +1,233 @@
1
+ /** All Settings tabs edit the server's settings.jsonc through the quota RPC. */
2
+ import { createSignal } from "solid-js";
3
+ import { isRecord } from "../lib/json-guards.js";
4
+ import { CHANGED_SINCE_REVIEW, clientSettings, defaultSettings, isRecordSetting, } from "../settings/schema.js";
5
+ /** The ids switched off; every other provider is checked when found. */
6
+ export const PROVIDERS_KEY = "providers.off";
7
+ export function foundProviderIds(snapshot) {
8
+ return (snapshot?.providers ?? []).map(({ providerId }) => providerId === "quota-providers" ? "custom" : providerId);
9
+ }
10
+ export function isTicked(off, id) {
11
+ return !off.includes(id);
12
+ }
13
+ export function withTick(off, id, on) {
14
+ return on ? off.filter((other) => other !== id) : [...new Set([...off, id])];
15
+ }
16
+ /** Changes by dotted key as the JSON merge patch `saveSettings` takes. */
17
+ export function settingsPatch(changes) {
18
+ const patch = {};
19
+ for (const [key, value] of Object.entries(changes)) {
20
+ const parts = key.split(".");
21
+ let group = patch;
22
+ for (const part of parts.slice(0, -1)) {
23
+ group[part] ??= {};
24
+ group = group[part];
25
+ }
26
+ group[parts[parts.length - 1]] = value;
27
+ }
28
+ return patch;
29
+ }
30
+ const same = (a, b) => JSON.stringify(a) === JSON.stringify(b);
31
+ /** One entry of `record` set to `value`, or removed when `value` is the saved one. */
32
+ function changed(record, key, value, saved) {
33
+ const next = { ...record };
34
+ if (same(value, saved))
35
+ delete next[key];
36
+ else
37
+ next[key] = value;
38
+ return next;
39
+ }
40
+ /** The saved server settings, and this window's changes and custom provider switches on top. */
41
+ export function createServerSettings(rpc) {
42
+ const [saved, setSaved] = createSignal();
43
+ const [changes, setChanges] = createSignal({});
44
+ const [switches, setSwitches] = createSignal({});
45
+ /** Custom providers the server would not switch on: their definition changed since shown. */
46
+ const [changedIds, setChangedIds] = createSignal([]);
47
+ const defaults = clientSettings(defaultSettings()).values;
48
+ /** The definition shown when each custom switch was changed, kept across live updates. */
49
+ const reviewedFingerprints = new Map();
50
+ let received = 0;
51
+ let reads = 0;
52
+ let saving;
53
+ let savingEdits;
54
+ let savingSwitches;
55
+ const savedValue = (key) => saved()?.values[key] ?? defaults[key];
56
+ const savedCustom = (id) => saved()?.custom.find((entry) => entry.id === id);
57
+ const value = (key) => {
58
+ const patch = changes()[key];
59
+ if (!Object.hasOwn(changes(), key))
60
+ return savedValue(key);
61
+ if (isRecordSetting(key) && isRecord(patch)) {
62
+ const next = { ...savedValue(key) };
63
+ for (const [id, item] of Object.entries(patch)) {
64
+ if (item === null)
65
+ delete next[id];
66
+ else
67
+ next[id] = item;
68
+ }
69
+ return next;
70
+ }
71
+ return patch === null ? defaults[key] : patch;
72
+ };
73
+ const draftValue = (key, next) => {
74
+ if (!isRecordSetting(key) || !isRecord(next))
75
+ return next === undefined ? null : next;
76
+ const before = savedValue(key);
77
+ return Object.fromEntries([...new Set([...Object.keys(before), ...Object.keys(next)])]
78
+ .filter((id) => !same(before[id], next[id]))
79
+ .map((id) => [id, next[id] ?? null]));
80
+ };
81
+ const customOn = (id) => switches()[id] ?? savedCustom(id)?.enabled ?? false;
82
+ const dirty = () => Object.keys(changes()).length + Object.keys(switches()).length > 0;
83
+ async function readSaved() {
84
+ const read = ++reads;
85
+ const at = received;
86
+ const next = await rpc.settings();
87
+ if (read === reads && at === received)
88
+ setSaved(next);
89
+ }
90
+ async function saveDraft() {
91
+ const sentChanges = changes();
92
+ const sentSwitches = switches();
93
+ const customEnabled = Object.fromEntries(Object.entries(sentSwitches).map(([id, enabled]) => [
94
+ id,
95
+ {
96
+ enabled,
97
+ fingerprint: reviewedFingerprints.get(id) ?? savedCustom(id)?.fingerprint ?? "",
98
+ },
99
+ ]));
100
+ savingEdits = new Map();
101
+ savingSwitches = new Map();
102
+ try {
103
+ const result = await rpc.saveSettings({
104
+ patch: settingsPatch(sentChanges),
105
+ ...(Object.keys(customEnabled).length > 0 ? { customEnabled } : {}),
106
+ });
107
+ const changedSince = result.issues
108
+ .filter((issue) => issue.message === CHANGED_SINCE_REVIEW)
109
+ .map((issue) => issue.key.slice("providers.custom.".length));
110
+ if (changedSince.length > 0) {
111
+ await readSaved();
112
+ setChangedIds(changedSince);
113
+ for (const id of changedSince)
114
+ reviewedFingerprints.delete(id);
115
+ setSwitches((current) => Object.fromEntries(Object.entries(current).filter(([id]) => !changedSince.includes(id))));
116
+ }
117
+ if (!result.ok) {
118
+ throw new Error(result.issues.map((issue) => `${issue.key}: ${issue.message}`).join("; "));
119
+ }
120
+ await readSaved();
121
+ // Only edits made after Save started remain drafts, over the latest saved settings.
122
+ const remaining = {};
123
+ for (const [key, patch] of savingEdits) {
124
+ if (isRecordSetting(key) && isRecord(patch)) {
125
+ const before = savedValue(key);
126
+ const entries = Object.entries(patch).filter(([id, item]) => !same(item === null ? undefined : item, before[id]));
127
+ if (entries.length > 0)
128
+ remaining[key] = Object.fromEntries(entries);
129
+ }
130
+ else if (!same(patch === null ? defaults[key] : patch, savedValue(key))) {
131
+ remaining[key] = patch;
132
+ }
133
+ }
134
+ setChanges(remaining);
135
+ setSwitches(Object.fromEntries([...savingSwitches].filter(([id, on]) => on !== (savedCustom(id)?.enabled ?? false))));
136
+ }
137
+ finally {
138
+ savingEdits = undefined;
139
+ savingSwitches = undefined;
140
+ }
141
+ }
142
+ return {
143
+ /** Undefined until the first server answer. */
144
+ saved,
145
+ receive(next) {
146
+ received += 1;
147
+ setSaved(next);
148
+ },
149
+ value,
150
+ set(key, next) {
151
+ if (savingEdits) {
152
+ if (isRecordSetting(key) && isRecord(next)) {
153
+ const before = value(key);
154
+ const edits = Object.fromEntries([...new Set([...Object.keys(before), ...Object.keys(next)])]
155
+ .filter((id) => !same(before[id], next[id]))
156
+ .map((id) => [id, next[id] ?? null]));
157
+ savingEdits.set(key, { ...savingEdits.get(key), ...edits });
158
+ }
159
+ else {
160
+ savingEdits.set(key, next === undefined ? null : next);
161
+ }
162
+ }
163
+ const patch = draftValue(key, next);
164
+ const unchanged = same(next, savedValue(key)) ||
165
+ (isRecordSetting(key) && isRecord(patch) && Object.keys(patch).length === 0);
166
+ setChanges((current) => {
167
+ const result = { ...current };
168
+ if (unchanged)
169
+ delete result[key];
170
+ else
171
+ result[key] = patch;
172
+ return result;
173
+ });
174
+ },
175
+ customOn,
176
+ switchCustom(id, on) {
177
+ reviewedFingerprints.set(id, savedCustom(id)?.fingerprint ?? "");
178
+ savingSwitches?.set(id, on);
179
+ setChangedIds((current) => current.filter((other) => other !== id));
180
+ setSwitches((current) => changed(current, id, on, savedCustom(id)?.enabled));
181
+ },
182
+ changedSinceReview: (id) => changedIds().includes(id),
183
+ dirty,
184
+ /** The words this window changed, for the surfaces to show while you edit. */
185
+ draftWords() {
186
+ return Object.fromEntries(Object.entries(changes())
187
+ .filter(([key]) => key.startsWith("words."))
188
+ .map(([key, value]) => [
189
+ key.slice("words.".length),
190
+ value === null ? defaults[key] : value,
191
+ ]));
192
+ },
193
+ async load() {
194
+ await readSaved();
195
+ },
196
+ /**
197
+ * Saves one setting straight away, apart from the window's draft (the Plugin tab's
198
+ * switches), then reads the saved settings again. The error says why the server refused it.
199
+ */
200
+ async saveNow(key, next) {
201
+ const result = await rpc.saveSettings({ patch: settingsPatch({ [key]: next }) });
202
+ if (!result.ok) {
203
+ throw new Error(result.issues.map((issue) => `${issue.key}: ${issue.message}`).join("; "));
204
+ }
205
+ await readSaved();
206
+ },
207
+ /**
208
+ * Sends the changes and switches in one save; nothing is saved when the server refuses any
209
+ * of them, and the error says why. A switch-on carries the fingerprint of the definition
210
+ * shown: one that changed since is reloaded and marked, not switched on. A change made while
211
+ * it saves (one back to the old value too) stays unsaved.
212
+ */
213
+ save() {
214
+ if (saving)
215
+ return saving;
216
+ if (!dirty())
217
+ return Promise.resolve();
218
+ saving = saveDraft().finally(() => {
219
+ saving = undefined;
220
+ });
221
+ return saving;
222
+ },
223
+ discard() {
224
+ reviewedFingerprints.clear();
225
+ savingEdits?.clear();
226
+ savingSwitches?.clear();
227
+ setChanges({});
228
+ setSwitches({});
229
+ setChangedIds([]);
230
+ },
231
+ };
232
+ }
233
+ //# sourceMappingURL=server-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-settings.js","sourceRoot":"","sources":["../../src/tui/server-settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import type { JSX } from "@opentui/solid";
2
+ import { type Surface } from "../view/select.js";
3
+ import { type Line } from "../view/text.js";
4
+ import type { QuotaClient } from "./client.js";
5
+ import type { DisplaySettings } from "./display.js";
6
+ import { type Theme } from "./theme.js";
7
+ /** What the quota window's Settings tabs tell the surfaces while you edit them. */
8
+ export type SurfaceEditing = {
9
+ /** The provider or row id selected on the tab that edits `surface`; that surface marks it. */
10
+ marked(surface: Surface): string | undefined;
11
+ /** The Sidebar tab shows the panel expanded, the Collapsed tab collapsed. */
12
+ panelOpen(): boolean | undefined;
13
+ /** A sidebar panel is on screen until the returned function runs. */
14
+ sidebarShown(): () => void;
15
+ /**
16
+ * The status line shows: it is on, and its tab is open, it shows next to the sidebar, or no
17
+ * sidebar panel with quota is on screen.
18
+ */
19
+ statusLineShown(): boolean;
20
+ };
21
+ /** What every always-on surface reads. */
22
+ export type SurfaceHost = {
23
+ theme: () => Theme;
24
+ /** The saved display settings, or the draft while the Settings tabs edit it. */
25
+ display: () => DisplaySettings;
26
+ quota: QuotaClient;
27
+ editing: SurfaceEditing;
28
+ };
29
+ /** One line of a surface, each segment in its color. A marked line has a soft background. */
30
+ export declare function LineText(props: {
31
+ line: Line;
32
+ host: SurfaceHost;
33
+ marked?: boolean;
34
+ }): JSX.Element;
35
+ export declare function SidebarPanel(props: {
36
+ host: SurfaceHost;
37
+ sessionID: string;
38
+ open: () => boolean;
39
+ setOpen: (open: boolean) => void;
40
+ }): JSX.Element;
41
+ //# sourceMappingURL=sidebar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../src/tui/sidebar.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,KAAK,OAAO,EAAiB,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAIL,KAAK,IAAI,EAIV,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAA2B,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjE,mFAAmF;AACnF,MAAM,MAAM,cAAc,GAAG;IAC3B,8FAA8F;IAC9F,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAC7C,6EAA6E;IAC7E,SAAS,IAAI,OAAO,GAAG,SAAS,CAAC;IACjC,qEAAqE;IACrE,YAAY,IAAI,MAAM,IAAI,CAAC;IAC3B;;;OAGG;IACH,eAAe,IAAI,OAAO,CAAC;CAC5B,CAAC;AAEF,0CAA0C;AAC1C,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,KAAK,CAAC;IACnB,gFAAgF;IAChF,OAAO,EAAE,MAAM,eAAe,CAAC;IAC/B,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,cAAc,CAAC;CACzB,CAAC;AAYF,6FAA6F;AAC7F,wBAAgB,QAAQ,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CA0BhG;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAClC,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,OAAO,CAAC;IACpB,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAClC,GAAG,GAAG,CAAC,OAAO,CA0Ed"}