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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (794) hide show
  1. package/README.md +30 -44
  2. package/dist/agent-tools.d.ts +24 -0
  3. package/dist/agent-tools.d.ts.map +1 -0
  4. package/dist/agent-tools.js +578 -0
  5. package/dist/agent-tools.js.map +1 -0
  6. package/dist/bin/opencode-quota.d.ts.map +1 -1
  7. package/dist/bin/opencode-quota.js +1 -32
  8. package/dist/bin/opencode-quota.js.map +1 -1
  9. package/dist/core/errors.d.ts +12 -0
  10. package/dist/core/errors.d.ts.map +1 -0
  11. package/dist/core/errors.js +141 -0
  12. package/dist/core/errors.js.map +1 -0
  13. package/dist/core/pace.d.ts +13 -0
  14. package/dist/core/pace.d.ts.map +1 -0
  15. package/dist/core/pace.js +52 -0
  16. package/dist/core/pace.js.map +1 -0
  17. package/dist/core/persist.d.ts +44 -0
  18. package/dist/core/persist.d.ts.map +1 -0
  19. package/dist/core/persist.js +210 -0
  20. package/dist/core/persist.js.map +1 -0
  21. package/dist/core/provider-source.d.ts +40 -0
  22. package/dist/core/provider-source.d.ts.map +1 -0
  23. package/dist/core/provider-source.js +210 -0
  24. package/dist/core/provider-source.js.map +1 -0
  25. package/dist/core/redact.d.ts +17 -0
  26. package/dist/core/redact.d.ts.map +1 -0
  27. package/dist/core/redact.js +217 -0
  28. package/dist/core/redact.js.map +1 -0
  29. package/dist/core/rows.d.ts +20 -0
  30. package/dist/core/rows.d.ts.map +1 -0
  31. package/dist/core/rows.js +142 -0
  32. package/dist/core/rows.js.map +1 -0
  33. package/dist/core/selection.d.ts +15 -0
  34. package/dist/core/selection.d.ts.map +1 -0
  35. package/dist/core/selection.js +43 -0
  36. package/dist/core/selection.js.map +1 -0
  37. package/dist/core/snapshot-publisher.d.ts +15 -0
  38. package/dist/core/snapshot-publisher.d.ts.map +1 -0
  39. package/dist/core/snapshot-publisher.js +57 -0
  40. package/dist/core/snapshot-publisher.js.map +1 -0
  41. package/dist/core/store.d.ts +93 -0
  42. package/dist/core/store.d.ts.map +1 -0
  43. package/dist/core/store.js +563 -0
  44. package/dist/core/store.js.map +1 -0
  45. package/dist/core/types.d.ts +186 -0
  46. package/dist/core/types.d.ts.map +1 -0
  47. package/dist/core/types.js +2 -0
  48. package/dist/core/types.js.map +1 -0
  49. package/dist/core/usage-ranges.d.ts +46 -0
  50. package/dist/core/usage-ranges.d.ts.map +1 -0
  51. package/dist/core/usage-ranges.js +72 -0
  52. package/dist/core/usage-ranges.js.map +1 -0
  53. package/dist/core/usage.d.ts +100 -0
  54. package/dist/core/usage.d.ts.map +1 -0
  55. package/dist/core/usage.js +373 -0
  56. package/dist/core/usage.js.map +1 -0
  57. package/dist/core/validate.d.ts +8 -0
  58. package/dist/core/validate.d.ts.map +1 -0
  59. package/dist/core/validate.js +167 -0
  60. package/dist/core/validate.js.map +1 -0
  61. package/dist/core/windows.d.ts +24 -0
  62. package/dist/core/windows.d.ts.map +1 -0
  63. package/dist/core/windows.js +43 -0
  64. package/dist/core/windows.js.map +1 -0
  65. package/dist/index.d.ts +2 -1
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js.map +1 -1
  68. package/dist/lib/accounting-format.d.ts +2 -52
  69. package/dist/lib/accounting-format.d.ts.map +1 -1
  70. package/dist/lib/accounting-format.js +6 -255
  71. package/dist/lib/accounting-format.js.map +1 -1
  72. package/dist/lib/alibaba-auth.d.ts +14 -21
  73. package/dist/lib/alibaba-auth.d.ts.map +1 -1
  74. package/dist/lib/alibaba-auth.js +36 -149
  75. package/dist/lib/alibaba-auth.js.map +1 -1
  76. package/dist/lib/alibaba-coding-plan-local-quota.d.ts +1 -6
  77. package/dist/lib/alibaba-coding-plan-local-quota.d.ts.map +1 -1
  78. package/dist/lib/alibaba-coding-plan-local-quota.js +1 -1
  79. package/dist/lib/alibaba-coding-plan-local-quota.js.map +1 -1
  80. package/dist/lib/alibaba-token-plan.d.ts +18 -27
  81. package/dist/lib/alibaba-token-plan.d.ts.map +1 -1
  82. package/dist/lib/alibaba-token-plan.js +121 -285
  83. package/dist/lib/alibaba-token-plan.js.map +1 -1
  84. package/dist/lib/anthropic-auth.d.ts +3 -5
  85. package/dist/lib/anthropic-auth.d.ts.map +1 -1
  86. package/dist/lib/anthropic-auth.js +6 -9
  87. package/dist/lib/anthropic-auth.js.map +1 -1
  88. package/dist/lib/anthropic.d.ts +12 -37
  89. package/dist/lib/anthropic.d.ts.map +1 -1
  90. package/dist/lib/anthropic.js +348 -698
  91. package/dist/lib/anthropic.js.map +1 -1
  92. package/dist/lib/api-key-resolver.d.ts +165 -192
  93. package/dist/lib/api-key-resolver.d.ts.map +1 -1
  94. package/dist/lib/api-key-resolver.js +208 -234
  95. package/dist/lib/api-key-resolver.js.map +1 -1
  96. package/dist/lib/atomic-json.d.ts +4 -1
  97. package/dist/lib/atomic-json.d.ts.map +1 -1
  98. package/dist/lib/atomic-json.js +2 -3
  99. package/dist/lib/atomic-json.js.map +1 -1
  100. package/dist/lib/calendar-date.d.ts +15 -0
  101. package/dist/lib/calendar-date.d.ts.map +1 -0
  102. package/dist/lib/calendar-date.js +21 -0
  103. package/dist/lib/calendar-date.js.map +1 -0
  104. package/dist/lib/chutes.d.ts +0 -1
  105. package/dist/lib/chutes.d.ts.map +1 -1
  106. package/dist/lib/chutes.js +2 -4
  107. package/dist/lib/chutes.js.map +1 -1
  108. package/dist/lib/cli-reports.d.ts +15 -11
  109. package/dist/lib/cli-reports.d.ts.map +1 -1
  110. package/dist/lib/cli-reports.js +34 -107
  111. package/dist/lib/cli-reports.js.map +1 -1
  112. package/dist/lib/cli-show.d.ts +9 -22
  113. package/dist/lib/cli-show.d.ts.map +1 -1
  114. package/dist/lib/cli-show.js +104 -75
  115. package/dist/lib/cli-show.js.map +1 -1
  116. package/dist/lib/config-file-utils.d.ts +3 -15
  117. package/dist/lib/config-file-utils.d.ts.map +1 -1
  118. package/dist/lib/config-file-utils.js +4 -63
  119. package/dist/lib/config-file-utils.js.map +1 -1
  120. package/dist/lib/config-write-target.d.ts +4 -7
  121. package/dist/lib/config-write-target.d.ts.map +1 -1
  122. package/dist/lib/config-write-target.js +4 -18
  123. package/dist/lib/config-write-target.js.map +1 -1
  124. package/dist/lib/copilot.d.ts +29 -20
  125. package/dist/lib/copilot.d.ts.map +1 -1
  126. package/dist/lib/copilot.js +392 -649
  127. package/dist/lib/copilot.js.map +1 -1
  128. package/dist/lib/cursor-detection.d.ts +3 -3
  129. package/dist/lib/cursor-detection.d.ts.map +1 -1
  130. package/dist/lib/cursor-detection.js +44 -88
  131. package/dist/lib/cursor-detection.js.map +1 -1
  132. package/dist/lib/cursor-pricing.d.ts +71 -8
  133. package/dist/lib/cursor-pricing.d.ts.map +1 -1
  134. package/dist/lib/cursor-pricing.js +33 -125
  135. package/dist/lib/cursor-pricing.js.map +1 -1
  136. package/dist/lib/cursor-usage.d.ts +6 -4
  137. package/dist/lib/cursor-usage.d.ts.map +1 -1
  138. package/dist/lib/cursor-usage.js +27 -40
  139. package/dist/lib/cursor-usage.js.map +1 -1
  140. package/dist/lib/deepseek.d.ts +9 -17
  141. package/dist/lib/deepseek.d.ts.map +1 -1
  142. package/dist/lib/deepseek.js +24 -54
  143. package/dist/lib/deepseek.js.map +1 -1
  144. package/dist/lib/display-sanitize.d.ts +0 -8
  145. package/dist/lib/display-sanitize.d.ts.map +1 -1
  146. package/dist/lib/display-sanitize.js +0 -139
  147. package/dist/lib/display-sanitize.js.map +1 -1
  148. package/dist/lib/entries.d.ts +13 -239
  149. package/dist/lib/entries.d.ts.map +1 -1
  150. package/dist/lib/entries.js +1 -46
  151. package/dist/lib/entries.js.map +1 -1
  152. package/dist/lib/file-lock.d.ts +23 -0
  153. package/dist/lib/file-lock.d.ts.map +1 -0
  154. package/dist/lib/file-lock.js +122 -0
  155. package/dist/lib/file-lock.js.map +1 -0
  156. package/dist/lib/format-utils.d.ts +2 -82
  157. package/dist/lib/format-utils.d.ts.map +1 -1
  158. package/dist/lib/format-utils.js +2 -191
  159. package/dist/lib/format-utils.js.map +1 -1
  160. package/dist/lib/glm-coding-plan.d.ts +6 -5
  161. package/dist/lib/glm-coding-plan.d.ts.map +1 -1
  162. package/dist/lib/glm-coding-plan.js +19 -1
  163. package/dist/lib/glm-coding-plan.js.map +1 -1
  164. package/dist/lib/google-agy.d.ts +8 -40
  165. package/dist/lib/google-agy.d.ts.map +1 -1
  166. package/dist/lib/google-agy.js +88 -519
  167. package/dist/lib/google-agy.js.map +1 -1
  168. package/dist/lib/google-companion-credentials.d.ts +9 -40
  169. package/dist/lib/google-companion-credentials.d.ts.map +1 -1
  170. package/dist/lib/google-companion-credentials.js +167 -224
  171. package/dist/lib/google-companion-credentials.js.map +1 -1
  172. package/dist/lib/google-gemini-cli.d.ts +5 -38
  173. package/dist/lib/google-gemini-cli.d.ts.map +1 -1
  174. package/dist/lib/google-gemini-cli.js +71 -442
  175. package/dist/lib/google-gemini-cli.js.map +1 -1
  176. package/dist/lib/google-oauth-quota.d.ts +76 -0
  177. package/dist/lib/google-oauth-quota.d.ts.map +1 -0
  178. package/dist/lib/google-oauth-quota.js +297 -0
  179. package/dist/lib/google-oauth-quota.js.map +1 -0
  180. package/dist/lib/google-token-cache.d.ts +3 -5
  181. package/dist/lib/google-token-cache.d.ts.map +1 -1
  182. package/dist/lib/google-token-cache.js +2 -14
  183. package/dist/lib/google-token-cache.js.map +1 -1
  184. package/dist/lib/home-dir-display.d.ts.map +1 -1
  185. package/dist/lib/home-dir-display.js +21 -39
  186. package/dist/lib/home-dir-display.js.map +1 -1
  187. package/dist/lib/http.d.ts +4 -1
  188. package/dist/lib/http.d.ts.map +1 -1
  189. package/dist/lib/http.js +2 -1
  190. package/dist/lib/http.js.map +1 -1
  191. package/dist/lib/json-guards.d.ts +11 -0
  192. package/dist/lib/json-guards.d.ts.map +1 -0
  193. package/dist/lib/json-guards.js +25 -0
  194. package/dist/lib/json-guards.js.map +1 -0
  195. package/dist/lib/kilo.d.ts +0 -2
  196. package/dist/lib/kilo.d.ts.map +1 -1
  197. package/dist/lib/kilo.js +33 -116
  198. package/dist/lib/kilo.js.map +1 -1
  199. package/dist/lib/kimi-endpoints.d.ts +2 -2
  200. package/dist/lib/kimi-endpoints.d.ts.map +1 -1
  201. package/dist/lib/kimi-endpoints.js +1 -1
  202. package/dist/lib/kimi-endpoints.js.map +1 -1
  203. package/dist/lib/kimi.d.ts.map +1 -1
  204. package/dist/lib/kimi.js +40 -86
  205. package/dist/lib/kimi.js.map +1 -1
  206. package/dist/lib/maintainer-announcements.d.ts +4 -17
  207. package/dist/lib/maintainer-announcements.d.ts.map +1 -1
  208. package/dist/lib/maintainer-announcements.js +7 -44
  209. package/dist/lib/maintainer-announcements.js.map +1 -1
  210. package/dist/lib/maintainer-home-notice.d.ts +19 -0
  211. package/dist/lib/maintainer-home-notice.d.ts.map +1 -0
  212. package/dist/lib/maintainer-home-notice.js +92 -0
  213. package/dist/lib/maintainer-home-notice.js.map +1 -0
  214. package/dist/lib/mimo-config.d.ts +6 -9
  215. package/dist/lib/mimo-config.d.ts.map +1 -1
  216. package/dist/lib/mimo-config.js +43 -74
  217. package/dist/lib/mimo-config.js.map +1 -1
  218. package/dist/lib/mimo.d.ts +2 -5
  219. package/dist/lib/mimo.d.ts.map +1 -1
  220. package/dist/lib/mimo.js +57 -109
  221. package/dist/lib/mimo.js.map +1 -1
  222. package/dist/lib/minimax-endpoints.d.ts +2 -2
  223. package/dist/lib/minimax-endpoints.d.ts.map +1 -1
  224. package/dist/lib/minimax-endpoints.js +1 -1
  225. package/dist/lib/minimax-endpoints.js.map +1 -1
  226. package/dist/lib/modelsdev-pricing.d.ts +22 -16
  227. package/dist/lib/modelsdev-pricing.d.ts.map +1 -1
  228. package/dist/lib/modelsdev-pricing.js +279 -560
  229. package/dist/lib/modelsdev-pricing.js.map +1 -1
  230. package/dist/lib/nanogpt.d.ts +6 -6
  231. package/dist/lib/nanogpt.d.ts.map +1 -1
  232. package/dist/lib/nanogpt.js +19 -72
  233. package/dist/lib/nanogpt.js.map +1 -1
  234. package/dist/lib/ollama-cloud.d.ts +3 -6
  235. package/dist/lib/ollama-cloud.d.ts.map +1 -1
  236. package/dist/lib/ollama-cloud.js +26 -37
  237. package/dist/lib/ollama-cloud.js.map +1 -1
  238. package/dist/lib/openai.d.ts +18 -29
  239. package/dist/lib/openai.d.ts.map +1 -1
  240. package/dist/lib/openai.js +108 -182
  241. package/dist/lib/openai.js.map +1 -1
  242. package/dist/lib/opencode-auth-sqlite.d.ts.map +1 -1
  243. package/dist/lib/opencode-auth-sqlite.js +22 -23
  244. package/dist/lib/opencode-auth-sqlite.js.map +1 -1
  245. package/dist/lib/opencode-auth.d.ts +17 -11
  246. package/dist/lib/opencode-auth.d.ts.map +1 -1
  247. package/dist/lib/opencode-auth.js +39 -46
  248. package/dist/lib/opencode-auth.js.map +1 -1
  249. package/dist/lib/opencode-config-editor.d.ts +3 -34
  250. package/dist/lib/opencode-config-editor.d.ts.map +1 -1
  251. package/dist/lib/opencode-config-editor.js +23 -142
  252. package/dist/lib/opencode-config-editor.js.map +1 -1
  253. package/dist/lib/opencode-config-providers.d.ts +4 -3
  254. package/dist/lib/opencode-config-providers.d.ts.map +1 -1
  255. package/dist/lib/opencode-config-providers.js +7 -11
  256. package/dist/lib/opencode-config-providers.js.map +1 -1
  257. package/dist/lib/opencode-config-read.d.ts +2 -1
  258. package/dist/lib/opencode-config-read.d.ts.map +1 -1
  259. package/dist/lib/opencode-config-read.js +3 -2
  260. package/dist/lib/opencode-config-read.js.map +1 -1
  261. package/dist/lib/opencode-console-auth.d.ts +2 -3
  262. package/dist/lib/opencode-console-auth.d.ts.map +1 -1
  263. package/dist/lib/opencode-console-auth.js +2 -2
  264. package/dist/lib/opencode-console-auth.js.map +1 -1
  265. package/dist/lib/opencode-go.d.ts.map +1 -1
  266. package/dist/lib/opencode-go.js +51 -79
  267. package/dist/lib/opencode-go.js.map +1 -1
  268. package/dist/lib/opencode-storage.d.ts +18 -3
  269. package/dist/lib/opencode-storage.d.ts.map +1 -1
  270. package/dist/lib/opencode-storage.js +134 -2
  271. package/dist/lib/opencode-storage.js.map +1 -1
  272. package/dist/lib/opencode-zen.d.ts +15 -12
  273. package/dist/lib/opencode-zen.d.ts.map +1 -1
  274. package/dist/lib/opencode-zen.js +139 -147
  275. package/dist/lib/opencode-zen.js.map +1 -1
  276. package/dist/lib/openrouter.d.ts.map +1 -1
  277. package/dist/lib/openrouter.js +1 -13
  278. package/dist/lib/openrouter.js.map +1 -1
  279. package/dist/lib/pricing-key.d.ts +48 -0
  280. package/dist/lib/pricing-key.d.ts.map +1 -0
  281. package/dist/lib/pricing-key.js +371 -0
  282. package/dist/lib/pricing-key.js.map +1 -0
  283. package/dist/lib/provider-metadata.d.ts +16 -20
  284. package/dist/lib/provider-metadata.d.ts.map +1 -1
  285. package/dist/lib/provider-metadata.js +69 -69
  286. package/dist/lib/provider-metadata.js.map +1 -1
  287. package/dist/lib/provider-model-matching.d.ts +2 -1
  288. package/dist/lib/provider-model-matching.d.ts.map +1 -1
  289. package/dist/lib/provider-registration.d.ts +1 -177
  290. package/dist/lib/provider-registration.d.ts.map +1 -1
  291. package/dist/lib/provider-registration.js +1 -163
  292. package/dist/lib/provider-registration.js.map +1 -1
  293. package/dist/lib/quota-dialog-commands.d.ts +87 -53
  294. package/dist/lib/quota-dialog-commands.d.ts.map +1 -1
  295. package/dist/lib/quota-dialog-commands.js +259 -519
  296. package/dist/lib/quota-dialog-commands.js.map +1 -1
  297. package/dist/lib/quota-export-types.d.ts +29 -23
  298. package/dist/lib/quota-export-types.d.ts.map +1 -1
  299. package/dist/lib/quota-export.d.ts +16 -26
  300. package/dist/lib/quota-export.d.ts.map +1 -1
  301. package/dist/lib/quota-export.js +105 -147
  302. package/dist/lib/quota-export.js.map +1 -1
  303. package/dist/lib/quota-providers-local.d.ts +12 -8
  304. package/dist/lib/quota-providers-local.d.ts.map +1 -1
  305. package/dist/lib/quota-providers-local.js +150 -223
  306. package/dist/lib/quota-providers-local.js.map +1 -1
  307. package/dist/lib/quota-providers-remote.d.ts +3 -8
  308. package/dist/lib/quota-providers-remote.d.ts.map +1 -1
  309. package/dist/lib/quota-providers-remote.js +309 -449
  310. package/dist/lib/quota-providers-remote.js.map +1 -1
  311. package/dist/lib/quota-providers.d.ts +57 -15
  312. package/dist/lib/quota-providers.d.ts.map +1 -1
  313. package/dist/lib/quota-providers.js +157 -64
  314. package/dist/lib/quota-providers.js.map +1 -1
  315. package/dist/lib/quota-report-message.d.ts +23 -10
  316. package/dist/lib/quota-report-message.d.ts.map +1 -1
  317. package/dist/lib/quota-report-message.js +37 -13
  318. package/dist/lib/quota-report-message.js.map +1 -1
  319. package/dist/lib/quota-retry-wait.d.ts +14 -6
  320. package/dist/lib/quota-retry-wait.d.ts.map +1 -1
  321. package/dist/lib/quota-retry-wait.js +37 -39
  322. package/dist/lib/quota-retry-wait.js.map +1 -1
  323. package/dist/lib/quota-status.d.ts +50 -33
  324. package/dist/lib/quota-status.d.ts.map +1 -1
  325. package/dist/lib/quota-status.js +1113 -773
  326. package/dist/lib/quota-status.js.map +1 -1
  327. package/dist/lib/quota-telemetry.d.ts +7 -14
  328. package/dist/lib/quota-telemetry.d.ts.map +1 -1
  329. package/dist/lib/quota-telemetry.js +46 -97
  330. package/dist/lib/quota-telemetry.js.map +1 -1
  331. package/dist/lib/report-document.d.ts +5 -65
  332. package/dist/lib/report-document.d.ts.map +1 -1
  333. package/dist/lib/report-document.js +14 -167
  334. package/dist/lib/report-document.js.map +1 -1
  335. package/dist/lib/resolved-auth-identity.d.ts +1 -2
  336. package/dist/lib/resolved-auth-identity.d.ts.map +1 -1
  337. package/dist/lib/resolved-auth-identity.js +0 -4
  338. package/dist/lib/resolved-auth-identity.js.map +1 -1
  339. package/dist/lib/session-tokens.d.ts +19 -19
  340. package/dist/lib/session-tokens.d.ts.map +1 -1
  341. package/dist/lib/session-tokens.js +58 -44
  342. package/dist/lib/session-tokens.js.map +1 -1
  343. package/dist/lib/synthetic.d.ts +0 -1
  344. package/dist/lib/synthetic.d.ts.map +1 -1
  345. package/dist/lib/synthetic.js +43 -94
  346. package/dist/lib/synthetic.js.map +1 -1
  347. package/dist/lib/token-buckets.d.ts +0 -1
  348. package/dist/lib/token-buckets.d.ts.map +1 -1
  349. package/dist/lib/token-buckets.js +0 -3
  350. package/dist/lib/token-buckets.js.map +1 -1
  351. package/dist/lib/token-cost.d.ts +2 -1
  352. package/dist/lib/token-cost.d.ts.map +1 -1
  353. package/dist/lib/types.d.ts +25 -333
  354. package/dist/lib/types.d.ts.map +1 -1
  355. package/dist/lib/types.js +2 -70
  356. package/dist/lib/types.js.map +1 -1
  357. package/dist/lib/xai.d.ts +6 -6
  358. package/dist/lib/xai.d.ts.map +1 -1
  359. package/dist/lib/xai.js +51 -90
  360. package/dist/lib/xai.js.map +1 -1
  361. package/dist/plugin.d.ts +6 -3
  362. package/dist/plugin.d.ts.map +1 -1
  363. package/dist/plugin.js +315 -90
  364. package/dist/plugin.js.map +1 -1
  365. package/dist/providers/alibaba-coding-plan.d.ts +4 -0
  366. package/dist/providers/alibaba-coding-plan.d.ts.map +1 -1
  367. package/dist/providers/alibaba-coding-plan.js +47 -77
  368. package/dist/providers/alibaba-coding-plan.js.map +1 -1
  369. package/dist/providers/alibaba-token-plan.d.ts.map +1 -1
  370. package/dist/providers/alibaba-token-plan.js +34 -46
  371. package/dist/providers/alibaba-token-plan.js.map +1 -1
  372. package/dist/providers/anthropic.d.ts +2 -4
  373. package/dist/providers/anthropic.d.ts.map +1 -1
  374. package/dist/providers/anthropic.js +80 -162
  375. package/dist/providers/anthropic.js.map +1 -1
  376. package/dist/providers/cache-policies.d.ts +0 -2
  377. package/dist/providers/cache-policies.d.ts.map +1 -1
  378. package/dist/providers/cache-policies.js +38 -88
  379. package/dist/providers/cache-policies.js.map +1 -1
  380. package/dist/providers/chutes.d.ts +0 -3
  381. package/dist/providers/chutes.d.ts.map +1 -1
  382. package/dist/providers/chutes.js +16 -28
  383. package/dist/providers/chutes.js.map +1 -1
  384. package/dist/providers/contract.d.ts +128 -0
  385. package/dist/providers/contract.d.ts.map +1 -0
  386. package/dist/providers/contract.js +101 -0
  387. package/dist/providers/contract.js.map +1 -0
  388. package/dist/providers/copilot.d.ts.map +1 -1
  389. package/dist/providers/copilot.js +171 -175
  390. package/dist/providers/copilot.js.map +1 -1
  391. package/dist/providers/cursor.d.ts.map +1 -1
  392. package/dist/providers/cursor.js +56 -109
  393. package/dist/providers/cursor.js.map +1 -1
  394. package/dist/providers/deepseek.d.ts +1 -6
  395. package/dist/providers/deepseek.d.ts.map +1 -1
  396. package/dist/providers/deepseek.js +46 -81
  397. package/dist/providers/deepseek.js.map +1 -1
  398. package/dist/providers/glm-coding-plan.d.ts +8 -0
  399. package/dist/providers/glm-coding-plan.d.ts.map +1 -0
  400. package/dist/providers/glm-coding-plan.js +106 -0
  401. package/dist/providers/glm-coding-plan.js.map +1 -0
  402. package/dist/providers/google-agy.d.ts +0 -1
  403. package/dist/providers/google-agy.d.ts.map +1 -1
  404. package/dist/providers/google-agy.js +41 -192
  405. package/dist/providers/google-agy.js.map +1 -1
  406. package/dist/providers/google-gemini-cli.d.ts.map +1 -1
  407. package/dist/providers/google-gemini-cli.js +51 -151
  408. package/dist/providers/google-gemini-cli.js.map +1 -1
  409. package/dist/providers/google-oauth-provider.d.ts +39 -0
  410. package/dist/providers/google-oauth-provider.d.ts.map +1 -0
  411. package/dist/providers/google-oauth-provider.js +161 -0
  412. package/dist/providers/google-oauth-provider.js.map +1 -0
  413. package/dist/providers/kilo.d.ts +0 -3
  414. package/dist/providers/kilo.d.ts.map +1 -1
  415. package/dist/providers/kilo.js +69 -123
  416. package/dist/providers/kilo.js.map +1 -1
  417. package/dist/providers/kimi-code.d.ts +5 -0
  418. package/dist/providers/kimi-code.d.ts.map +1 -1
  419. package/dist/providers/kimi-code.js +91 -136
  420. package/dist/providers/kimi-code.js.map +1 -1
  421. package/dist/providers/mimo.d.ts.map +1 -1
  422. package/dist/providers/mimo.js +55 -94
  423. package/dist/providers/mimo.js.map +1 -1
  424. package/dist/providers/minimax-coding-plan.d.ts +2 -23
  425. package/dist/providers/minimax-coding-plan.d.ts.map +1 -1
  426. package/dist/providers/minimax-coding-plan.js +161 -277
  427. package/dist/providers/minimax-coding-plan.js.map +1 -1
  428. package/dist/providers/nanogpt.d.ts +0 -3
  429. package/dist/providers/nanogpt.d.ts.map +1 -1
  430. package/dist/providers/nanogpt.js +61 -95
  431. package/dist/providers/nanogpt.js.map +1 -1
  432. package/dist/providers/ollama-cloud.d.ts +0 -6
  433. package/dist/providers/ollama-cloud.d.ts.map +1 -1
  434. package/dist/providers/ollama-cloud.js +86 -112
  435. package/dist/providers/ollama-cloud.js.map +1 -1
  436. package/dist/providers/openai.d.ts.map +1 -1
  437. package/dist/providers/openai.js +144 -166
  438. package/dist/providers/openai.js.map +1 -1
  439. package/dist/providers/opencode-go.d.ts.map +1 -1
  440. package/dist/providers/opencode-go.js +157 -199
  441. package/dist/providers/opencode-go.js.map +1 -1
  442. package/dist/providers/opencode-zen.d.ts.map +1 -1
  443. package/dist/providers/opencode-zen.js +100 -150
  444. package/dist/providers/opencode-zen.js.map +1 -1
  445. package/dist/providers/openrouter.d.ts +0 -3
  446. package/dist/providers/openrouter.d.ts.map +1 -1
  447. package/dist/providers/openrouter.js +26 -13
  448. package/dist/providers/openrouter.js.map +1 -1
  449. package/dist/providers/quota-providers.d.ts +7 -3
  450. package/dist/providers/quota-providers.d.ts.map +1 -1
  451. package/dist/providers/quota-providers.js +111 -217
  452. package/dist/providers/quota-providers.js.map +1 -1
  453. package/dist/providers/registry.d.ts.map +1 -1
  454. package/dist/providers/registry.js +1 -2
  455. package/dist/providers/registry.js.map +1 -1
  456. package/dist/providers/result-helpers.d.ts +10 -37
  457. package/dist/providers/result-helpers.d.ts.map +1 -1
  458. package/dist/providers/result-helpers.js +23 -56
  459. package/dist/providers/result-helpers.js.map +1 -1
  460. package/dist/providers/synthetic.d.ts +0 -3
  461. package/dist/providers/synthetic.d.ts.map +1 -1
  462. package/dist/providers/synthetic.js +16 -58
  463. package/dist/providers/synthetic.js.map +1 -1
  464. package/dist/providers/xai.d.ts +2 -1
  465. package/dist/providers/xai.d.ts.map +1 -1
  466. package/dist/providers/xai.js +49 -71
  467. package/dist/providers/xai.js.map +1 -1
  468. package/dist/rpc.d.ts +110 -38
  469. package/dist/rpc.d.ts.map +1 -1
  470. package/dist/rpc.js +125 -37
  471. package/dist/rpc.js.map +1 -1
  472. package/dist/settings/convert.d.ts +60 -0
  473. package/dist/settings/convert.d.ts.map +1 -0
  474. package/dist/settings/convert.js +473 -0
  475. package/dist/settings/convert.js.map +1 -0
  476. package/dist/settings/file.d.ts +89 -0
  477. package/dist/settings/file.d.ts.map +1 -0
  478. package/dist/settings/file.js +452 -0
  479. package/dist/settings/file.js.map +1 -0
  480. package/dist/settings/index.d.ts +10 -0
  481. package/dist/settings/index.d.ts.map +1 -0
  482. package/dist/settings/index.js +3 -0
  483. package/dist/settings/index.js.map +1 -0
  484. package/dist/settings/schema.d.ts +607 -0
  485. package/dist/settings/schema.d.ts.map +1 -0
  486. package/dist/settings/schema.js +479 -0
  487. package/dist/settings/schema.js.map +1 -0
  488. package/dist/tui/client.d.ts +86 -0
  489. package/dist/tui/client.d.ts.map +1 -0
  490. package/dist/tui/client.js +229 -0
  491. package/dist/tui/client.js.map +1 -0
  492. package/dist/tui/display.d.ts +127 -0
  493. package/dist/tui/display.d.ts.map +1 -0
  494. package/dist/tui/display.js +474 -0
  495. package/dist/tui/display.js.map +1 -0
  496. package/dist/tui/index.d.ts +21 -0
  497. package/dist/tui/index.d.ts.map +1 -0
  498. package/dist/tui/index.js +305 -0
  499. package/dist/tui/server-settings.d.ts +43 -0
  500. package/dist/tui/server-settings.d.ts.map +1 -0
  501. package/dist/tui/server-settings.js +233 -0
  502. package/dist/tui/server-settings.js.map +1 -0
  503. package/dist/tui/sidebar.d.ts +41 -0
  504. package/dist/tui/sidebar.d.ts.map +1 -0
  505. package/dist/tui/sidebar.js +148 -0
  506. package/dist/tui/status-line.d.ts +14 -0
  507. package/dist/tui/status-line.d.ts.map +1 -0
  508. package/dist/tui/status-line.js +225 -0
  509. package/dist/tui/theme.d.ts +41 -0
  510. package/dist/tui/theme.d.ts.map +1 -0
  511. package/dist/tui/theme.js +52 -0
  512. package/dist/tui/theme.js.map +1 -0
  513. package/dist/tui/toast-colors.d.ts +37 -0
  514. package/dist/tui/toast-colors.d.ts.map +1 -0
  515. package/dist/tui/toast-colors.js +77 -0
  516. package/dist/tui/toasts.d.ts +59 -0
  517. package/dist/tui/toasts.d.ts.map +1 -0
  518. package/dist/tui/toasts.js +148 -0
  519. package/dist/tui/toasts.js.map +1 -0
  520. package/dist/tui/window/drag.d.ts +26 -0
  521. package/dist/tui/window/drag.d.ts.map +1 -0
  522. package/dist/tui/window/drag.js +80 -0
  523. package/dist/tui/window/drag.js.map +1 -0
  524. package/dist/tui/window/limits.d.ts +15 -0
  525. package/dist/tui/window/limits.d.ts.map +1 -0
  526. package/dist/tui/window/limits.js +227 -0
  527. package/dist/tui/window/limits.js.map +1 -0
  528. package/dist/tui/window/rail.d.ts +21 -0
  529. package/dist/tui/window/rail.d.ts.map +1 -0
  530. package/dist/tui/window/rail.js +81 -0
  531. package/dist/tui/window/settings.d.ts +164 -0
  532. package/dist/tui/window/settings.d.ts.map +1 -0
  533. package/dist/tui/window/settings.js +1679 -0
  534. package/dist/tui/window/shell.d.ts +108 -0
  535. package/dist/tui/window/shell.d.ts.map +1 -0
  536. package/dist/tui/window/shell.js +1003 -0
  537. package/dist/tui/window/usage.d.ts +75 -0
  538. package/dist/tui/window/usage.d.ts.map +1 -0
  539. package/dist/tui/window/usage.js +928 -0
  540. package/dist/tui/window/views.d.ts +61 -0
  541. package/dist/tui/window/views.d.ts.map +1 -0
  542. package/dist/tui/window/views.js +242 -0
  543. package/dist/tui.d.ts +1 -5
  544. package/dist/tui.js +1 -894
  545. package/dist/view/columns.d.ts +15 -0
  546. package/dist/view/columns.d.ts.map +1 -0
  547. package/dist/view/columns.js +48 -0
  548. package/dist/view/columns.js.map +1 -0
  549. package/dist/view/format.d.ts +82 -0
  550. package/dist/view/format.d.ts.map +1 -0
  551. package/dist/view/format.js +201 -0
  552. package/dist/view/format.js.map +1 -0
  553. package/dist/view/quick-look.d.ts +28 -0
  554. package/dist/view/quick-look.d.ts.map +1 -0
  555. package/dist/view/quick-look.js +150 -0
  556. package/dist/view/quick-look.js.map +1 -0
  557. package/dist/view/select.d.ts +67 -0
  558. package/dist/view/select.d.ts.map +1 -0
  559. package/dist/view/select.js +87 -0
  560. package/dist/view/select.js.map +1 -0
  561. package/dist/view/text.d.ts +153 -0
  562. package/dist/view/text.d.ts.map +1 -0
  563. package/dist/view/text.js +642 -0
  564. package/dist/view/text.js.map +1 -0
  565. package/dist/view/usage.d.ts +86 -0
  566. package/dist/view/usage.d.ts.map +1 -0
  567. package/dist/view/usage.js +724 -0
  568. package/dist/view/usage.js.map +1 -0
  569. package/package.json +4 -6
  570. package/dist/lib/chutes-config.d.ts +0 -15
  571. package/dist/lib/chutes-config.d.ts.map +0 -1
  572. package/dist/lib/chutes-config.js +0 -28
  573. package/dist/lib/chutes-config.js.map +0 -1
  574. package/dist/lib/cli-status.d.ts +0 -8
  575. package/dist/lib/cli-status.d.ts.map +0 -1
  576. package/dist/lib/cli-status.js +0 -98
  577. package/dist/lib/cli-status.js.map +0 -1
  578. package/dist/lib/command-parsing.d.ts +0 -43
  579. package/dist/lib/command-parsing.d.ts.map +0 -1
  580. package/dist/lib/command-parsing.js +0 -103
  581. package/dist/lib/command-parsing.js.map +0 -1
  582. package/dist/lib/config.d.ts +0 -63
  583. package/dist/lib/config.d.ts.map +0 -1
  584. package/dist/lib/config.js +0 -1092
  585. package/dist/lib/config.js.map +0 -1
  586. package/dist/lib/deepseek-auth.d.ts +0 -15
  587. package/dist/lib/deepseek-auth.d.ts.map +0 -1
  588. package/dist/lib/deepseek-auth.js +0 -28
  589. package/dist/lib/deepseek-auth.js.map +0 -1
  590. package/dist/lib/format.d.ts +0 -25
  591. package/dist/lib/format.d.ts.map +0 -1
  592. package/dist/lib/format.js +0 -300
  593. package/dist/lib/format.js.map +0 -1
  594. package/dist/lib/google-agy-companion.d.ts +0 -8
  595. package/dist/lib/google-agy-companion.d.ts.map +0 -1
  596. package/dist/lib/google-agy-companion.js +0 -64
  597. package/dist/lib/google-agy-companion.js.map +0 -1
  598. package/dist/lib/google-gemini-cli-companion.d.ts +0 -8
  599. package/dist/lib/google-gemini-cli-companion.d.ts.map +0 -1
  600. package/dist/lib/google-gemini-cli-companion.js +0 -64
  601. package/dist/lib/google-gemini-cli-companion.js.map +0 -1
  602. package/dist/lib/grouped-entry-normalization.d.ts +0 -12
  603. package/dist/lib/grouped-entry-normalization.d.ts.map +0 -1
  604. package/dist/lib/grouped-entry-normalization.js +0 -124
  605. package/dist/lib/grouped-entry-normalization.js.map +0 -1
  606. package/dist/lib/grouped-header-format.d.ts +0 -5
  607. package/dist/lib/grouped-header-format.d.ts.map +0 -1
  608. package/dist/lib/grouped-header-format.js +0 -16
  609. package/dist/lib/grouped-header-format.js.map +0 -1
  610. package/dist/lib/init-installer.d.ts +0 -123
  611. package/dist/lib/init-installer.d.ts.map +0 -1
  612. package/dist/lib/init-installer.js +0 -1111
  613. package/dist/lib/init-installer.js.map +0 -1
  614. package/dist/lib/jsonc.d.ts +0 -17
  615. package/dist/lib/jsonc.d.ts.map +0 -1
  616. package/dist/lib/jsonc.js +0 -23
  617. package/dist/lib/jsonc.js.map +0 -1
  618. package/dist/lib/kilo-config.d.ts +0 -15
  619. package/dist/lib/kilo-config.d.ts.map +0 -1
  620. package/dist/lib/kilo-config.js +0 -27
  621. package/dist/lib/kilo-config.js.map +0 -1
  622. package/dist/lib/kimi-auth.d.ts +0 -49
  623. package/dist/lib/kimi-auth.d.ts.map +0 -1
  624. package/dist/lib/kimi-auth.js +0 -82
  625. package/dist/lib/kimi-auth.js.map +0 -1
  626. package/dist/lib/markdown-table.d.ts +0 -51
  627. package/dist/lib/markdown-table.d.ts.map +0 -1
  628. package/dist/lib/markdown-table.js +0 -179
  629. package/dist/lib/markdown-table.js.map +0 -1
  630. package/dist/lib/minimax-auth.d.ts +0 -62
  631. package/dist/lib/minimax-auth.d.ts.map +0 -1
  632. package/dist/lib/minimax-auth.js +0 -206
  633. package/dist/lib/minimax-auth.js.map +0 -1
  634. package/dist/lib/nanogpt-config.d.ts +0 -15
  635. package/dist/lib/nanogpt-config.d.ts.map +0 -1
  636. package/dist/lib/nanogpt-config.js +0 -31
  637. package/dist/lib/nanogpt-config.js.map +0 -1
  638. package/dist/lib/ollama-cloud-config.d.ts +0 -15
  639. package/dist/lib/ollama-cloud-config.d.ts.map +0 -1
  640. package/dist/lib/ollama-cloud-config.js +0 -27
  641. package/dist/lib/ollama-cloud-config.js.map +0 -1
  642. package/dist/lib/opencode-go-auth.d.ts +0 -16
  643. package/dist/lib/opencode-go-auth.d.ts.map +0 -1
  644. package/dist/lib/opencode-go-auth.js +0 -42
  645. package/dist/lib/opencode-go-auth.js.map +0 -1
  646. package/dist/lib/opencode-version.d.ts +0 -6
  647. package/dist/lib/opencode-version.d.ts.map +0 -1
  648. package/dist/lib/opencode-version.js +0 -26
  649. package/dist/lib/opencode-version.js.map +0 -1
  650. package/dist/lib/provider-add-command.d.ts +0 -35
  651. package/dist/lib/provider-add-command.d.ts.map +0 -1
  652. package/dist/lib/provider-add-command.js +0 -204
  653. package/dist/lib/provider-add-command.js.map +0 -1
  654. package/dist/lib/provider-add-json-v1-questionnaire.d.ts +0 -32
  655. package/dist/lib/provider-add-json-v1-questionnaire.d.ts.map +0 -1
  656. package/dist/lib/provider-add-json-v1-questionnaire.js +0 -336
  657. package/dist/lib/provider-add-json-v1-questionnaire.js.map +0 -1
  658. package/dist/lib/provider-add.d.ts +0 -21
  659. package/dist/lib/provider-add.d.ts.map +0 -1
  660. package/dist/lib/provider-add.js +0 -219
  661. package/dist/lib/provider-add.js.map +0 -1
  662. package/dist/lib/quota-accounting-projection.d.ts +0 -9
  663. package/dist/lib/quota-accounting-projection.d.ts.map +0 -1
  664. package/dist/lib/quota-accounting-projection.js +0 -254
  665. package/dist/lib/quota-accounting-projection.js.map +0 -1
  666. package/dist/lib/quota-columns.d.ts +0 -38
  667. package/dist/lib/quota-columns.d.ts.map +0 -1
  668. package/dist/lib/quota-columns.js +0 -129
  669. package/dist/lib/quota-columns.js.map +0 -1
  670. package/dist/lib/quota-command-format.d.ts +0 -34
  671. package/dist/lib/quota-command-format.d.ts.map +0 -1
  672. package/dist/lib/quota-command-format.js +0 -240
  673. package/dist/lib/quota-command-format.js.map +0 -1
  674. package/dist/lib/quota-dialog-command-specs.d.ts +0 -63
  675. package/dist/lib/quota-dialog-command-specs.d.ts.map +0 -1
  676. package/dist/lib/quota-dialog-command-specs.js +0 -145
  677. package/dist/lib/quota-dialog-command-specs.js.map +0 -1
  678. package/dist/lib/quota-entry-display.d.ts +0 -7
  679. package/dist/lib/quota-entry-display.d.ts.map +0 -1
  680. package/dist/lib/quota-entry-display.js +0 -59
  681. package/dist/lib/quota-entry-display.js.map +0 -1
  682. package/dist/lib/quota-exhaustion-projection.d.ts +0 -11
  683. package/dist/lib/quota-exhaustion-projection.d.ts.map +0 -1
  684. package/dist/lib/quota-exhaustion-projection.js +0 -105
  685. package/dist/lib/quota-exhaustion-projection.js.map +0 -1
  686. package/dist/lib/quota-format-style.d.ts +0 -21
  687. package/dist/lib/quota-format-style.d.ts.map +0 -1
  688. package/dist/lib/quota-format-style.js +0 -38
  689. package/dist/lib/quota-format-style.js.map +0 -1
  690. package/dist/lib/quota-render-data.d.ts +0 -102
  691. package/dist/lib/quota-render-data.d.ts.map +0 -1
  692. package/dist/lib/quota-render-data.js +0 -419
  693. package/dist/lib/quota-render-data.js.map +0 -1
  694. package/dist/lib/quota-reset-notifications.d.ts +0 -20
  695. package/dist/lib/quota-reset-notifications.d.ts.map +0 -1
  696. package/dist/lib/quota-reset-notifications.js +0 -331
  697. package/dist/lib/quota-reset-notifications.js.map +0 -1
  698. package/dist/lib/quota-runtime-context.d.ts +0 -54
  699. package/dist/lib/quota-runtime-context.d.ts.map +0 -1
  700. package/dist/lib/quota-runtime-context.js +0 -110
  701. package/dist/lib/quota-runtime-context.js.map +0 -1
  702. package/dist/lib/quota-state-codec.d.ts +0 -16
  703. package/dist/lib/quota-state-codec.d.ts.map +0 -1
  704. package/dist/lib/quota-state-codec.js +0 -412
  705. package/dist/lib/quota-state-codec.js.map +0 -1
  706. package/dist/lib/quota-state.d.ts +0 -28
  707. package/dist/lib/quota-state.d.ts.map +0 -1
  708. package/dist/lib/quota-state.js +0 -473
  709. package/dist/lib/quota-state.js.map +0 -1
  710. package/dist/lib/quota-stats-format.d.ts +0 -29
  711. package/dist/lib/quota-stats-format.d.ts.map +0 -1
  712. package/dist/lib/quota-stats-format.js +0 -459
  713. package/dist/lib/quota-stats-format.js.map +0 -1
  714. package/dist/lib/quota-stats.d.ts +0 -126
  715. package/dist/lib/quota-stats.d.ts.map +0 -1
  716. package/dist/lib/quota-stats.js +0 -695
  717. package/dist/lib/quota-stats.js.map +0 -1
  718. package/dist/lib/quota-surface-data.d.ts +0 -21
  719. package/dist/lib/quota-surface-data.d.ts.map +0 -1
  720. package/dist/lib/quota-surface-data.js +0 -362
  721. package/dist/lib/quota-surface-data.js.map +0 -1
  722. package/dist/lib/scoped-update-migration.d.ts +0 -103
  723. package/dist/lib/scoped-update-migration.d.ts.map +0 -1
  724. package/dist/lib/scoped-update-migration.js +0 -344
  725. package/dist/lib/scoped-update-migration.js.map +0 -1
  726. package/dist/lib/scoped-update.d.ts +0 -77
  727. package/dist/lib/scoped-update.d.ts.map +0 -1
  728. package/dist/lib/scoped-update.js +0 -590
  729. package/dist/lib/scoped-update.js.map +0 -1
  730. package/dist/lib/session-tokens-format.d.ts +0 -36
  731. package/dist/lib/session-tokens-format.d.ts.map +0 -1
  732. package/dist/lib/session-tokens-format.js +0 -111
  733. package/dist/lib/session-tokens-format.js.map +0 -1
  734. package/dist/lib/synthetic-config.d.ts +0 -15
  735. package/dist/lib/synthetic-config.d.ts.map +0 -1
  736. package/dist/lib/synthetic-config.js +0 -28
  737. package/dist/lib/synthetic-config.js.map +0 -1
  738. package/dist/lib/toast-format-grouped.d.ts +0 -25
  739. package/dist/lib/toast-format-grouped.d.ts.map +0 -1
  740. package/dist/lib/toast-format-grouped.js +0 -296
  741. package/dist/lib/toast-format-grouped.js.map +0 -1
  742. package/dist/lib/tui-compact-format.d.ts +0 -10
  743. package/dist/lib/tui-compact-format.d.ts.map +0 -1
  744. package/dist/lib/tui-compact-format.js +0 -460
  745. package/dist/lib/tui-compact-format.js.map +0 -1
  746. package/dist/lib/tui-panel-state.d.ts +0 -15
  747. package/dist/lib/tui-panel-state.d.ts.map +0 -1
  748. package/dist/lib/tui-panel-state.js +0 -2
  749. package/dist/lib/tui-panel-state.js.map +0 -1
  750. package/dist/lib/tui-prompt-bar-format.d.ts +0 -25
  751. package/dist/lib/tui-prompt-bar-format.d.ts.map +0 -1
  752. package/dist/lib/tui-prompt-bar-format.js +0 -206
  753. package/dist/lib/tui-prompt-bar-format.js.map +0 -1
  754. package/dist/lib/tui-sidebar-format.d.ts +0 -13
  755. package/dist/lib/tui-sidebar-format.d.ts.map +0 -1
  756. package/dist/lib/tui-sidebar-format.js +0 -34
  757. package/dist/lib/tui-sidebar-format.js.map +0 -1
  758. package/dist/lib/zai-auth.d.ts +0 -15
  759. package/dist/lib/zai-auth.d.ts.map +0 -1
  760. package/dist/lib/zai-auth.js +0 -37
  761. package/dist/lib/zai-auth.js.map +0 -1
  762. package/dist/lib/zai.d.ts +0 -5
  763. package/dist/lib/zai.d.ts.map +0 -1
  764. package/dist/lib/zai.js +0 -14
  765. package/dist/lib/zai.js.map +0 -1
  766. package/dist/lib/zhipu-auth.d.ts +0 -15
  767. package/dist/lib/zhipu-auth.d.ts.map +0 -1
  768. package/dist/lib/zhipu-auth.js +0 -42
  769. package/dist/lib/zhipu-auth.js.map +0 -1
  770. package/dist/lib/zhipu.d.ts +0 -5
  771. package/dist/lib/zhipu.d.ts.map +0 -1
  772. package/dist/lib/zhipu.js +0 -13
  773. package/dist/lib/zhipu.js.map +0 -1
  774. package/dist/providers/glm-coding-plan-provider.d.ts +0 -56
  775. package/dist/providers/glm-coding-plan-provider.d.ts.map +0 -1
  776. package/dist/providers/glm-coding-plan-provider.js +0 -115
  777. package/dist/providers/glm-coding-plan-provider.js.map +0 -1
  778. package/dist/providers/google-account-format.d.ts +0 -7
  779. package/dist/providers/google-account-format.d.ts.map +0 -1
  780. package/dist/providers/google-account-format.js +0 -52
  781. package/dist/providers/google-account-format.js.map +0 -1
  782. package/dist/providers/zai.d.ts +0 -2
  783. package/dist/providers/zai.d.ts.map +0 -1
  784. package/dist/providers/zai.js +0 -24
  785. package/dist/providers/zai.js.map +0 -1
  786. package/dist/providers/zhipu.d.ts +0 -2
  787. package/dist/providers/zhipu.d.ts.map +0 -1
  788. package/dist/providers/zhipu.js +0 -21
  789. package/dist/providers/zhipu.js.map +0 -1
  790. package/dist/tui-v2.d.ts +0 -5
  791. package/dist/tui-v2.d.ts.map +0 -1
  792. package/dist/tui-v2.jsx +0 -624
  793. package/dist/tui-v2.jsx.map +0 -1
  794. package/dist/tui.d.ts.map +0 -1
@@ -1,1092 +0,0 @@
1
- /**
2
- * Configuration loader for opencode-quota plugin.
3
- *
4
- * Precedence model:
5
- * - Global/user config provides defaults.
6
- * - Workspace config at the resolved config root overrides ordinary settings.
7
- * - SDK config is used only as a fallback when no file-backed config exists.
8
- */
9
- import { existsSync } from "fs";
10
- import { join } from "path";
11
- import { isResetTimeDecimals } from "./format-utils.js";
12
- import { buildOpenCodeConfigCandidates, readOpenCodeConfigCandidate, } from "./opencode-config-read.js";
13
- import { getOpencodeRuntimeDirs } from "./opencode-runtime-paths.js";
14
- import { getQuotaProviderShape, normalizeQuotaProviderId } from "./provider-metadata.js";
15
- import { isQuotaFormatStyle, resolveQuotaFormatStyle } from "./quota-format-style.js";
16
- import { cloneQuotaProviders, validateQuotaProviders } from "./quota-providers.js";
17
- import { DEFAULT_CONFIG } from "./types.js";
18
- export const QUOTA_TOAST_CONFIG_RELATIVE_PATHS = [
19
- "opencode-quota/quota-toast.jsonc",
20
- "opencode-quota/quota-toast.json",
21
- ];
22
- export const QUOTA_TOAST_CONFIG_RELATIVE_PATH = QUOTA_TOAST_CONFIG_RELATIVE_PATHS[1];
23
- export const QUOTA_TOAST_SETTING_SOURCE_KEYS = [
24
- "enabled",
25
- "enableToast",
26
- "resetNotifications.enabled",
27
- "resetNotifications.windows",
28
- "tuiCommandDisplay",
29
- "formatStyle",
30
- "percentDisplayMode",
31
- "quotaProjection",
32
- "percentLabelStyle",
33
- "accountingDetail",
34
- "resetTimeDecimals",
35
- "resetTimeSpaced",
36
- "minIntervalMs",
37
- "requestTimeoutMs",
38
- "debug",
39
- "enabledProviders",
40
- "quotaProviders",
41
- "anthropicBinaryPath",
42
- "cursorPlan",
43
- "cursorIncludedApiUsd",
44
- "cursorBillingCycleStartDay",
45
- "opencodeGoWindows",
46
- "opencodeMonthlyLimit",
47
- "pricingSnapshot.source",
48
- "pricingSnapshot.autoRefresh",
49
- "showOnIdle",
50
- "showOnQuestion",
51
- "showOnCompact",
52
- "showOnBothFail",
53
- "toastDurationMs",
54
- "onlyCurrentModel",
55
- "waitForQuotaReset",
56
- "showSessionTokens",
57
- "sessionTokenScope",
58
- "tuiSidebarPanel.enabled",
59
- "tuiSidebarPanel.formatStyle",
60
- "tuiSidebarPanel.opencodeGoPreferredWindow",
61
- "tuiCompactStatus.enabled",
62
- "tuiCompactStatus.homeBottom",
63
- "tuiCompactStatus.sessionPrompt",
64
- "tuiCompactStatus.maxWidth",
65
- "tuiCompactStatus.formatStyle",
66
- "tuiPromptBar.enabled",
67
- "maintainerAnnouncements.enabled",
68
- "maintainerAnnouncements.home",
69
- "maintainerAnnouncements.homeFrequency",
70
- "layout.maxWidth",
71
- "layout.narrowAt",
72
- "layout.tinyAt",
73
- "export.enabled",
74
- "export.path",
75
- "telemetry.enabled",
76
- ];
77
- export function createLoadConfigMeta() {
78
- return {
79
- source: "defaults",
80
- paths: [],
81
- globalConfigPaths: [],
82
- workspaceConfigPaths: [],
83
- settingSources: {},
84
- networkSettingSources: {},
85
- configIssues: [],
86
- };
87
- }
88
- const NETWORK_SETTING_SOURCE_KEYS = [
89
- "enabled",
90
- "enabledProviders",
91
- "quotaProviders",
92
- "minIntervalMs",
93
- "requestTimeoutMs",
94
- "pricingSnapshot.source",
95
- "pricingSnapshot.autoRefresh",
96
- "showOnIdle",
97
- "showOnQuestion",
98
- "showOnCompact",
99
- "showOnBothFail",
100
- ];
101
- export function getQuotaToastConfigPath(configRootDir, format = "json") {
102
- return join(configRootDir, `opencode-quota/quota-toast.${format}`);
103
- }
104
- export function resolveQuotaToastConfigPath(configRootDir) {
105
- return (QUOTA_TOAST_CONFIG_RELATIVE_PATHS.map((relativePath) => join(configRootDir, relativePath)).find((path) => existsSync(path)) ?? getQuotaToastConfigPath(configRootDir));
106
- }
107
- function hasOwnKey(value, key) {
108
- return Object.hasOwn(value, key);
109
- }
110
- function isPlainObject(value) {
111
- return Boolean(value) && typeof value === "object" && !Array.isArray(value);
112
- }
113
- function isValidCursorQuotaPlan(plan) {
114
- return typeof plan === "string" && ["none", "pro", "pro-plus", "ultra"].includes(plan);
115
- }
116
- function isValidPricingSnapshotSource(source) {
117
- return typeof source === "string" && ["auto", "bundled", "runtime"].includes(source);
118
- }
119
- function isValidPricingSnapshotAutoRefresh(value) {
120
- return typeof value === "number" && Number.isInteger(value) && value > 0;
121
- }
122
- function isValidPercentDisplayMode(value) {
123
- return value === "remaining" || value === "used";
124
- }
125
- function isValidPercentLabelStyle(value) {
126
- return value === "full" || value === "bare";
127
- }
128
- function isValidAccountingDetail(value) {
129
- return value === "summary" || value === "detailed";
130
- }
131
- function isValidTuiCommandDisplay(value) {
132
- return value === "inline" || value === "dialog";
133
- }
134
- function isValidSessionTokenScope(value) {
135
- return value === "current" || value === "tree";
136
- }
137
- function isPositiveNumber(value) {
138
- return typeof value === "number" && Number.isFinite(value) && value > 0;
139
- }
140
- function isValidCursorBillingCycleStartDay(value) {
141
- return typeof value === "number" && Number.isInteger(value) && value >= 1 && value <= 28;
142
- }
143
- const VALID_OPENCODE_GO_WINDOWS = ["rolling", "weekly", "monthly"];
144
- function isValidOpenCodeGoWindow(value) {
145
- return (typeof value === "string" &&
146
- VALID_OPENCODE_GO_WINDOWS.includes(value));
147
- }
148
- function isValidOpenCodeGoWindows(value) {
149
- if (!Array.isArray(value))
150
- return false;
151
- if (value.length === 0)
152
- return false;
153
- return value.every(isValidOpenCodeGoWindow);
154
- }
155
- function normalizeOptionalString(value) {
156
- if (typeof value !== "string") {
157
- return undefined;
158
- }
159
- const trimmed = value.trim();
160
- return trimmed ? trimmed : undefined;
161
- }
162
- function getExplicitFormatStyle(config) {
163
- if (!config || !isQuotaFormatStyle(config.formatStyle)) {
164
- return undefined;
165
- }
166
- return resolveQuotaFormatStyle(config.formatStyle);
167
- }
168
- function getConfiguredFormatStyle(quotaToastConfig) {
169
- const formatStyle = getExplicitFormatStyle(quotaToastConfig);
170
- if (formatStyle) {
171
- return formatStyle;
172
- }
173
- const legacyFormatStyle = quotaToastConfig
174
- ?.toastStyle;
175
- if (isQuotaFormatStyle(legacyFormatStyle)) {
176
- return resolveQuotaFormatStyle(legacyFormatStyle);
177
- }
178
- return undefined;
179
- }
180
- /**
181
- * Remove duplicates from an array while preserving order
182
- */
183
- function dedupe(list) {
184
- return [...new Set(list)];
185
- }
186
- function cloneDefaultConfig() {
187
- return cloneConfig(DEFAULT_CONFIG);
188
- }
189
- function cloneConfig(config) {
190
- return {
191
- ...config,
192
- enabledProviders: Array.isArray(config.enabledProviders)
193
- ? [...config.enabledProviders]
194
- : config.enabledProviders,
195
- quotaProviders: cloneQuotaProviders(config.quotaProviders),
196
- resetNotifications: {
197
- ...config.resetNotifications,
198
- windows: [...config.resetNotifications.windows],
199
- },
200
- opencodeGoWindows: [...config.opencodeGoWindows],
201
- opencodeMonthlyLimit: config.opencodeMonthlyLimit,
202
- pricingSnapshot: { ...config.pricingSnapshot },
203
- tuiSidebarPanel: { ...config.tuiSidebarPanel },
204
- tuiCompactStatus: { ...config.tuiCompactStatus },
205
- tuiPromptBar: { ...config.tuiPromptBar },
206
- maintainerAnnouncements: { ...config.maintainerAnnouncements },
207
- layout: { ...config.layout },
208
- export: { ...config.export },
209
- telemetry: { ...config.telemetry },
210
- };
211
- }
212
- const QUOTA_RESET_WINDOWS = [
213
- "fiveHour",
214
- "hourly",
215
- "daily",
216
- "weekly",
217
- "monthly",
218
- "yearly",
219
- ];
220
- function extractQuotaResetNotificationsPatch(value, reportIssue) {
221
- if (!isPlainObject(value))
222
- return undefined;
223
- const patch = {};
224
- if (hasOwnKey(value, "enabled")) {
225
- if (typeof value.enabled === "boolean")
226
- patch.enabled = value.enabled;
227
- else
228
- reportIssue?.("resetNotifications.enabled", "expected boolean");
229
- }
230
- if (hasOwnKey(value, "windows")) {
231
- if (Array.isArray(value.windows) &&
232
- value.windows.length > 0 &&
233
- value.windows.every((window) => QUOTA_RESET_WINDOWS.includes(window))) {
234
- patch.windows = dedupe(value.windows);
235
- }
236
- else {
237
- reportIssue?.("resetNotifications.windows", `expected a non-empty array of: ${QUOTA_RESET_WINDOWS.join(", ")}`);
238
- }
239
- }
240
- return Object.keys(patch).length > 0 ? patch : undefined;
241
- }
242
- function describeInvalidProviderValue(value) {
243
- return typeof value === "string" ? value : typeof value;
244
- }
245
- function normalizeEnabledProviders(value) {
246
- if (value === "auto") {
247
- return { value: "auto", issues: [] };
248
- }
249
- if (!Array.isArray(value)) {
250
- return {
251
- value: [],
252
- issues: ['expected "auto" or an array of provider ids'],
253
- invalidEmpty: true,
254
- };
255
- }
256
- if (value.length === 0) {
257
- return { value: [], issues: [] };
258
- }
259
- const validProviders = [];
260
- const invalidProviders = [];
261
- for (const provider of value) {
262
- if (typeof provider !== "string") {
263
- invalidProviders.push(describeInvalidProviderValue(provider));
264
- continue;
265
- }
266
- const normalized = normalizeQuotaProviderId(provider);
267
- if (normalized && getQuotaProviderShape(normalized)) {
268
- validProviders.push(normalized);
269
- }
270
- else {
271
- invalidProviders.push(provider);
272
- }
273
- }
274
- const issues = invalidProviders.length
275
- ? [`unknown provider id(s): ${dedupe(invalidProviders).join(", ")}`]
276
- : [];
277
- const normalizedProviders = dedupe(validProviders);
278
- return {
279
- value: normalizedProviders,
280
- issues,
281
- invalidEmpty: normalizedProviders.length === 0 && invalidProviders.length > 0,
282
- };
283
- }
284
- function extractPricingSnapshotPatch(value) {
285
- if (!isPlainObject(value)) {
286
- return undefined;
287
- }
288
- const patch = {};
289
- if (hasOwnKey(value, "source") && isValidPricingSnapshotSource(value.source)) {
290
- patch.source = value.source;
291
- }
292
- if (hasOwnKey(value, "autoRefresh") && isValidPricingSnapshotAutoRefresh(value.autoRefresh)) {
293
- patch.autoRefresh = value.autoRefresh;
294
- }
295
- return Object.keys(patch).length > 0 ? patch : undefined;
296
- }
297
- function extractTuiSidebarPanelPatch(value) {
298
- if (!isPlainObject(value)) {
299
- return undefined;
300
- }
301
- const patch = {};
302
- if (hasOwnKey(value, "enabled") && typeof value.enabled === "boolean") {
303
- patch.enabled = value.enabled;
304
- }
305
- const sidebarFormatStyle = getExplicitFormatStyle(value);
306
- if (sidebarFormatStyle) {
307
- patch.formatStyle = sidebarFormatStyle;
308
- }
309
- if (hasOwnKey(value, "opencodeGoPreferredWindow") &&
310
- isValidOpenCodeGoWindow(value.opencodeGoPreferredWindow)) {
311
- patch.opencodeGoPreferredWindow = value.opencodeGoPreferredWindow;
312
- }
313
- return Object.keys(patch).length > 0 ? patch : undefined;
314
- }
315
- function extractTuiCompactStatusPatch(value) {
316
- if (!isPlainObject(value)) {
317
- return undefined;
318
- }
319
- const patch = {};
320
- if (hasOwnKey(value, "enabled") && typeof value.enabled === "boolean") {
321
- patch.enabled = value.enabled;
322
- }
323
- if (hasOwnKey(value, "homeBottom") && typeof value.homeBottom === "boolean") {
324
- patch.homeBottom = value.homeBottom;
325
- }
326
- if (hasOwnKey(value, "sessionPrompt") && typeof value.sessionPrompt === "boolean") {
327
- patch.sessionPrompt = value.sessionPrompt;
328
- }
329
- if (hasOwnKey(value, "maxWidth") && isPositiveNumber(value.maxWidth)) {
330
- patch.maxWidth = value.maxWidth;
331
- }
332
- const compactFormatStyle = getExplicitFormatStyle(value);
333
- if (compactFormatStyle) {
334
- patch.formatStyle = compactFormatStyle;
335
- }
336
- return Object.keys(patch).length > 0 ? patch : undefined;
337
- }
338
- function extractTuiPromptBarPatch(value) {
339
- if (!isPlainObject(value)) {
340
- return undefined;
341
- }
342
- const patch = {};
343
- if (hasOwnKey(value, "enabled") && typeof value.enabled === "boolean") {
344
- patch.enabled = value.enabled;
345
- }
346
- return Object.keys(patch).length > 0 ? patch : undefined;
347
- }
348
- function extractMaintainerAnnouncementsPatch(value) {
349
- if (!isPlainObject(value)) {
350
- return undefined;
351
- }
352
- const patch = {};
353
- if (hasOwnKey(value, "enabled") && typeof value.enabled === "boolean") {
354
- patch.enabled = value.enabled;
355
- }
356
- if (hasOwnKey(value, "home") && typeof value.home === "boolean") {
357
- patch.home = value.home;
358
- }
359
- if (hasOwnKey(value, "homeFrequency") &&
360
- (value.homeFrequency === "daily" || value.homeFrequency === "always")) {
361
- patch.homeFrequency = value.homeFrequency;
362
- }
363
- return Object.keys(patch).length > 0 ? patch : undefined;
364
- }
365
- function extractLayoutPatch(value) {
366
- if (!isPlainObject(value)) {
367
- return undefined;
368
- }
369
- const patch = {};
370
- if (hasOwnKey(value, "maxWidth") && isPositiveNumber(value.maxWidth)) {
371
- patch.maxWidth = value.maxWidth;
372
- }
373
- if (hasOwnKey(value, "narrowAt") && isPositiveNumber(value.narrowAt)) {
374
- patch.narrowAt = value.narrowAt;
375
- }
376
- if (hasOwnKey(value, "tinyAt") && isPositiveNumber(value.tinyAt)) {
377
- patch.tinyAt = value.tinyAt;
378
- }
379
- return Object.keys(patch).length > 0 ? patch : undefined;
380
- }
381
- function extractExportConfigPatch(value) {
382
- if (!isPlainObject(value)) {
383
- return undefined;
384
- }
385
- const patch = {};
386
- if (hasOwnKey(value, "enabled") && typeof value.enabled === "boolean") {
387
- patch.enabled = value.enabled;
388
- }
389
- if (hasOwnKey(value, "path") && typeof value.path === "string") {
390
- patch.path = value.path;
391
- }
392
- return Object.keys(patch).length > 0 ? patch : undefined;
393
- }
394
- function extractTelemetryConfigPatch(value) {
395
- if (!isPlainObject(value)) {
396
- return undefined;
397
- }
398
- const patch = {};
399
- if (hasOwnKey(value, "enabled") && typeof value.enabled === "boolean") {
400
- patch.enabled = value.enabled;
401
- }
402
- return Object.keys(patch).length > 0 ? patch : undefined;
403
- }
404
- function extractValidatedQuotaToastPatch(quotaToastConfig, reportIssue) {
405
- const patch = {};
406
- if (hasOwnKey(quotaToastConfig, "enabled") && typeof quotaToastConfig.enabled === "boolean") {
407
- patch.enabled = quotaToastConfig.enabled;
408
- }
409
- if (hasOwnKey(quotaToastConfig, "enableToast") &&
410
- typeof quotaToastConfig.enableToast === "boolean") {
411
- patch.enableToast = quotaToastConfig.enableToast;
412
- }
413
- if (hasOwnKey(quotaToastConfig, "resetNotifications")) {
414
- const resetNotifications = extractQuotaResetNotificationsPatch(quotaToastConfig.resetNotifications, reportIssue);
415
- if (resetNotifications)
416
- patch.resetNotifications = resetNotifications;
417
- }
418
- if (hasOwnKey(quotaToastConfig, "tuiCommandDisplay")) {
419
- if (isValidTuiCommandDisplay(quotaToastConfig.tuiCommandDisplay)) {
420
- patch.tuiCommandDisplay = quotaToastConfig.tuiCommandDisplay;
421
- }
422
- else {
423
- reportIssue?.("tuiCommandDisplay", 'expected "inline" or "dialog"');
424
- }
425
- }
426
- const formatStyle = getConfiguredFormatStyle(quotaToastConfig);
427
- if (formatStyle) {
428
- patch.formatStyle = formatStyle;
429
- }
430
- if (hasOwnKey(quotaToastConfig, "percentDisplayMode") &&
431
- isValidPercentDisplayMode(quotaToastConfig.percentDisplayMode)) {
432
- patch.percentDisplayMode = quotaToastConfig.percentDisplayMode;
433
- }
434
- if (hasOwnKey(quotaToastConfig, "quotaProjection")) {
435
- if (quotaToastConfig.quotaProjection === "runway") {
436
- patch.quotaProjection = "runway";
437
- }
438
- else {
439
- reportIssue?.("quotaProjection", 'expected "runway"');
440
- }
441
- }
442
- if (hasOwnKey(quotaToastConfig, "percentLabelStyle") &&
443
- isValidPercentLabelStyle(quotaToastConfig.percentLabelStyle)) {
444
- patch.percentLabelStyle = quotaToastConfig.percentLabelStyle;
445
- }
446
- if (hasOwnKey(quotaToastConfig, "accountingDetail")) {
447
- if (isValidAccountingDetail(quotaToastConfig.accountingDetail)) {
448
- patch.accountingDetail = quotaToastConfig.accountingDetail;
449
- }
450
- else {
451
- reportIssue?.("accountingDetail", 'expected "summary" or "detailed"');
452
- }
453
- }
454
- if (hasOwnKey(quotaToastConfig, "resetTimeDecimals") &&
455
- isResetTimeDecimals(quotaToastConfig.resetTimeDecimals)) {
456
- patch.resetTimeDecimals = quotaToastConfig.resetTimeDecimals;
457
- }
458
- if (hasOwnKey(quotaToastConfig, "resetTimeSpaced") &&
459
- typeof quotaToastConfig.resetTimeSpaced === "boolean") {
460
- patch.resetTimeSpaced = quotaToastConfig.resetTimeSpaced;
461
- }
462
- if (hasOwnKey(quotaToastConfig, "minIntervalMs") &&
463
- isPositiveNumber(quotaToastConfig.minIntervalMs)) {
464
- patch.minIntervalMs = quotaToastConfig.minIntervalMs;
465
- }
466
- if (hasOwnKey(quotaToastConfig, "requestTimeoutMs") &&
467
- isPositiveNumber(quotaToastConfig.requestTimeoutMs)) {
468
- patch.requestTimeoutMs = quotaToastConfig.requestTimeoutMs;
469
- }
470
- if (hasOwnKey(quotaToastConfig, "debug") && typeof quotaToastConfig.debug === "boolean") {
471
- patch.debug = quotaToastConfig.debug;
472
- }
473
- if (hasOwnKey(quotaToastConfig, "enabledProviders")) {
474
- const enabledProviders = normalizeEnabledProviders(quotaToastConfig.enabledProviders);
475
- for (const issue of enabledProviders.issues) {
476
- reportIssue?.("enabledProviders", issue);
477
- }
478
- if (enabledProviders.value !== undefined) {
479
- patch.enabledProviders = enabledProviders.value;
480
- if (enabledProviders.invalidEmpty) {
481
- patch.enabledProvidersInvalidEmpty = true;
482
- }
483
- }
484
- }
485
- if (hasOwnKey(quotaToastConfig, "anthropicBinaryPath")) {
486
- const anthropicBinaryPath = normalizeOptionalString(quotaToastConfig.anthropicBinaryPath);
487
- if (anthropicBinaryPath !== undefined) {
488
- patch.anthropicBinaryPath = anthropicBinaryPath;
489
- }
490
- }
491
- if (hasOwnKey(quotaToastConfig, "cursorPlan") &&
492
- isValidCursorQuotaPlan(quotaToastConfig.cursorPlan)) {
493
- patch.cursorPlan = quotaToastConfig.cursorPlan;
494
- }
495
- if (hasOwnKey(quotaToastConfig, "cursorIncludedApiUsd") &&
496
- isPositiveNumber(quotaToastConfig.cursorIncludedApiUsd)) {
497
- patch.cursorIncludedApiUsd = quotaToastConfig.cursorIncludedApiUsd;
498
- }
499
- if (hasOwnKey(quotaToastConfig, "cursorBillingCycleStartDay") &&
500
- isValidCursorBillingCycleStartDay(quotaToastConfig.cursorBillingCycleStartDay)) {
501
- patch.cursorBillingCycleStartDay = quotaToastConfig.cursorBillingCycleStartDay;
502
- }
503
- if (hasOwnKey(quotaToastConfig, "opencodeGoWindows") &&
504
- isValidOpenCodeGoWindows(quotaToastConfig.opencodeGoWindows)) {
505
- patch.opencodeGoWindows = quotaToastConfig.opencodeGoWindows;
506
- }
507
- if (hasOwnKey(quotaToastConfig, "opencodeMonthlyLimit") &&
508
- isPositiveNumber(quotaToastConfig.opencodeMonthlyLimit)) {
509
- patch.opencodeMonthlyLimit = quotaToastConfig.opencodeMonthlyLimit;
510
- }
511
- if (hasOwnKey(quotaToastConfig, "opencodeZenDisplay")) {
512
- reportIssue?.("opencodeZenDisplay", 'removed; use root "accountingDetail" ("summary" or "detailed")');
513
- }
514
- if (hasOwnKey(quotaToastConfig, "pricingSnapshot")) {
515
- const pricingSnapshot = extractPricingSnapshotPatch(quotaToastConfig.pricingSnapshot);
516
- if (pricingSnapshot) {
517
- patch.pricingSnapshot = pricingSnapshot;
518
- }
519
- }
520
- if (hasOwnKey(quotaToastConfig, "showOnIdle") &&
521
- typeof quotaToastConfig.showOnIdle === "boolean") {
522
- patch.showOnIdle = quotaToastConfig.showOnIdle;
523
- }
524
- if (hasOwnKey(quotaToastConfig, "showOnQuestion") &&
525
- typeof quotaToastConfig.showOnQuestion === "boolean") {
526
- patch.showOnQuestion = quotaToastConfig.showOnQuestion;
527
- }
528
- if (hasOwnKey(quotaToastConfig, "showOnCompact") &&
529
- typeof quotaToastConfig.showOnCompact === "boolean") {
530
- patch.showOnCompact = quotaToastConfig.showOnCompact;
531
- }
532
- if (hasOwnKey(quotaToastConfig, "showOnBothFail") &&
533
- typeof quotaToastConfig.showOnBothFail === "boolean") {
534
- patch.showOnBothFail = quotaToastConfig.showOnBothFail;
535
- }
536
- if (hasOwnKey(quotaToastConfig, "toastDurationMs") &&
537
- isPositiveNumber(quotaToastConfig.toastDurationMs)) {
538
- patch.toastDurationMs = quotaToastConfig.toastDurationMs;
539
- }
540
- if (hasOwnKey(quotaToastConfig, "onlyCurrentModel") &&
541
- typeof quotaToastConfig.onlyCurrentModel === "boolean") {
542
- patch.onlyCurrentModel = quotaToastConfig.onlyCurrentModel;
543
- }
544
- if (hasOwnKey(quotaToastConfig, "waitForQuotaReset") &&
545
- typeof quotaToastConfig.waitForQuotaReset === "boolean") {
546
- patch.waitForQuotaReset = quotaToastConfig.waitForQuotaReset;
547
- }
548
- if (hasOwnKey(quotaToastConfig, "showSessionTokens") &&
549
- typeof quotaToastConfig.showSessionTokens === "boolean") {
550
- patch.showSessionTokens = quotaToastConfig.showSessionTokens;
551
- }
552
- if (hasOwnKey(quotaToastConfig, "sessionTokenScope")) {
553
- if (isValidSessionTokenScope(quotaToastConfig.sessionTokenScope)) {
554
- patch.sessionTokenScope = quotaToastConfig.sessionTokenScope;
555
- }
556
- else {
557
- reportIssue?.("sessionTokenScope", 'expected "current" or "tree"');
558
- }
559
- }
560
- if (hasOwnKey(quotaToastConfig, "tuiSidebarPanel")) {
561
- const tuiSidebarPanel = extractTuiSidebarPanelPatch(quotaToastConfig.tuiSidebarPanel);
562
- if (tuiSidebarPanel) {
563
- patch.tuiSidebarPanel = tuiSidebarPanel;
564
- }
565
- }
566
- if (hasOwnKey(quotaToastConfig, "tuiCompactStatus")) {
567
- const tuiCompactStatus = extractTuiCompactStatusPatch(quotaToastConfig.tuiCompactStatus);
568
- if (tuiCompactStatus) {
569
- patch.tuiCompactStatus = tuiCompactStatus;
570
- }
571
- }
572
- if (hasOwnKey(quotaToastConfig, "tuiPromptBar")) {
573
- const tuiPromptBar = extractTuiPromptBarPatch(quotaToastConfig.tuiPromptBar);
574
- if (tuiPromptBar) {
575
- patch.tuiPromptBar = tuiPromptBar;
576
- }
577
- }
578
- if (hasOwnKey(quotaToastConfig, "maintainerAnnouncements")) {
579
- const maintainerAnnouncements = extractMaintainerAnnouncementsPatch(quotaToastConfig.maintainerAnnouncements);
580
- if (maintainerAnnouncements) {
581
- patch.maintainerAnnouncements = maintainerAnnouncements;
582
- }
583
- }
584
- if (hasOwnKey(quotaToastConfig, "layout")) {
585
- const layout = extractLayoutPatch(quotaToastConfig.layout);
586
- if (layout) {
587
- patch.layout = layout;
588
- }
589
- }
590
- if (hasOwnKey(quotaToastConfig, "export")) {
591
- const exportConfig = extractExportConfigPatch(quotaToastConfig.export);
592
- if (exportConfig) {
593
- patch.export = exportConfig;
594
- }
595
- }
596
- if (hasOwnKey(quotaToastConfig, "telemetry")) {
597
- const telemetry = extractTelemetryConfigPatch(quotaToastConfig.telemetry);
598
- if (telemetry) {
599
- patch.telemetry = telemetry;
600
- }
601
- }
602
- return patch;
603
- }
604
- function applySettingSource(settingSources, key, sourcePath) {
605
- settingSources[key] = sourcePath;
606
- }
607
- function applyValidatedQuotaToastPatch(config, patch, sourcePath, settingSources) {
608
- if (hasOwnKey(patch, "enabled")) {
609
- config.enabled = patch.enabled;
610
- applySettingSource(settingSources, "enabled", sourcePath);
611
- }
612
- if (hasOwnKey(patch, "enableToast")) {
613
- config.enableToast = patch.enableToast;
614
- applySettingSource(settingSources, "enableToast", sourcePath);
615
- }
616
- if (patch.resetNotifications) {
617
- if (hasOwnKey(patch.resetNotifications, "enabled")) {
618
- config.resetNotifications.enabled = patch.resetNotifications.enabled;
619
- applySettingSource(settingSources, "resetNotifications.enabled", sourcePath);
620
- }
621
- if (hasOwnKey(patch.resetNotifications, "windows")) {
622
- config.resetNotifications.windows = [...patch.resetNotifications.windows];
623
- applySettingSource(settingSources, "resetNotifications.windows", sourcePath);
624
- }
625
- }
626
- if (hasOwnKey(patch, "tuiCommandDisplay")) {
627
- config.tuiCommandDisplay = patch.tuiCommandDisplay;
628
- applySettingSource(settingSources, "tuiCommandDisplay", sourcePath);
629
- }
630
- if (hasOwnKey(patch, "formatStyle")) {
631
- config.formatStyle = patch.formatStyle;
632
- applySettingSource(settingSources, "formatStyle", sourcePath);
633
- }
634
- if (hasOwnKey(patch, "percentDisplayMode")) {
635
- config.percentDisplayMode = patch.percentDisplayMode;
636
- applySettingSource(settingSources, "percentDisplayMode", sourcePath);
637
- }
638
- if (hasOwnKey(patch, "quotaProjection")) {
639
- config.quotaProjection = patch.quotaProjection;
640
- applySettingSource(settingSources, "quotaProjection", sourcePath);
641
- }
642
- if (hasOwnKey(patch, "percentLabelStyle")) {
643
- config.percentLabelStyle = patch.percentLabelStyle;
644
- applySettingSource(settingSources, "percentLabelStyle", sourcePath);
645
- }
646
- if (hasOwnKey(patch, "accountingDetail")) {
647
- config.accountingDetail = patch.accountingDetail;
648
- applySettingSource(settingSources, "accountingDetail", sourcePath);
649
- }
650
- if (hasOwnKey(patch, "resetTimeDecimals")) {
651
- config.resetTimeDecimals = patch.resetTimeDecimals;
652
- applySettingSource(settingSources, "resetTimeDecimals", sourcePath);
653
- }
654
- if (hasOwnKey(patch, "resetTimeSpaced")) {
655
- config.resetTimeSpaced = patch.resetTimeSpaced;
656
- applySettingSource(settingSources, "resetTimeSpaced", sourcePath);
657
- }
658
- if (hasOwnKey(patch, "minIntervalMs")) {
659
- config.minIntervalMs = patch.minIntervalMs;
660
- applySettingSource(settingSources, "minIntervalMs", sourcePath);
661
- }
662
- if (hasOwnKey(patch, "requestTimeoutMs")) {
663
- config.requestTimeoutMs = patch.requestTimeoutMs;
664
- applySettingSource(settingSources, "requestTimeoutMs", sourcePath);
665
- }
666
- if (hasOwnKey(patch, "debug")) {
667
- config.debug = patch.debug;
668
- applySettingSource(settingSources, "debug", sourcePath);
669
- }
670
- if (hasOwnKey(patch, "enabledProviders")) {
671
- if (!(patch.enabledProvidersInvalidEmpty && settingSources.enabledProviders)) {
672
- config.enabledProviders =
673
- patch.enabledProviders === "auto" ? "auto" : [...patch.enabledProviders];
674
- applySettingSource(settingSources, "enabledProviders", sourcePath);
675
- }
676
- }
677
- if (hasOwnKey(patch, "anthropicBinaryPath")) {
678
- config.anthropicBinaryPath = patch.anthropicBinaryPath;
679
- applySettingSource(settingSources, "anthropicBinaryPath", sourcePath);
680
- }
681
- if (hasOwnKey(patch, "cursorPlan")) {
682
- config.cursorPlan = patch.cursorPlan;
683
- applySettingSource(settingSources, "cursorPlan", sourcePath);
684
- }
685
- if (hasOwnKey(patch, "cursorIncludedApiUsd")) {
686
- config.cursorIncludedApiUsd = patch.cursorIncludedApiUsd;
687
- applySettingSource(settingSources, "cursorIncludedApiUsd", sourcePath);
688
- }
689
- if (hasOwnKey(patch, "cursorBillingCycleStartDay")) {
690
- config.cursorBillingCycleStartDay = patch.cursorBillingCycleStartDay;
691
- applySettingSource(settingSources, "cursorBillingCycleStartDay", sourcePath);
692
- }
693
- if (hasOwnKey(patch, "opencodeGoWindows")) {
694
- config.opencodeGoWindows = [...patch.opencodeGoWindows];
695
- applySettingSource(settingSources, "opencodeGoWindows", sourcePath);
696
- }
697
- if (hasOwnKey(patch, "opencodeMonthlyLimit")) {
698
- config.opencodeMonthlyLimit = patch.opencodeMonthlyLimit;
699
- applySettingSource(settingSources, "opencodeMonthlyLimit", sourcePath);
700
- }
701
- if (patch.pricingSnapshot) {
702
- if (hasOwnKey(patch.pricingSnapshot, "source")) {
703
- config.pricingSnapshot.source = patch.pricingSnapshot.source;
704
- applySettingSource(settingSources, "pricingSnapshot.source", sourcePath);
705
- }
706
- if (hasOwnKey(patch.pricingSnapshot, "autoRefresh")) {
707
- config.pricingSnapshot.autoRefresh = patch.pricingSnapshot.autoRefresh;
708
- applySettingSource(settingSources, "pricingSnapshot.autoRefresh", sourcePath);
709
- }
710
- }
711
- if (hasOwnKey(patch, "showOnIdle")) {
712
- config.showOnIdle = patch.showOnIdle;
713
- applySettingSource(settingSources, "showOnIdle", sourcePath);
714
- }
715
- if (hasOwnKey(patch, "showOnQuestion")) {
716
- config.showOnQuestion = patch.showOnQuestion;
717
- applySettingSource(settingSources, "showOnQuestion", sourcePath);
718
- }
719
- if (hasOwnKey(patch, "showOnCompact")) {
720
- config.showOnCompact = patch.showOnCompact;
721
- applySettingSource(settingSources, "showOnCompact", sourcePath);
722
- }
723
- if (hasOwnKey(patch, "showOnBothFail")) {
724
- config.showOnBothFail = patch.showOnBothFail;
725
- applySettingSource(settingSources, "showOnBothFail", sourcePath);
726
- }
727
- if (hasOwnKey(patch, "toastDurationMs")) {
728
- config.toastDurationMs = patch.toastDurationMs;
729
- applySettingSource(settingSources, "toastDurationMs", sourcePath);
730
- }
731
- if (hasOwnKey(patch, "onlyCurrentModel")) {
732
- config.onlyCurrentModel = patch.onlyCurrentModel;
733
- applySettingSource(settingSources, "onlyCurrentModel", sourcePath);
734
- }
735
- if (hasOwnKey(patch, "waitForQuotaReset")) {
736
- config.waitForQuotaReset = patch.waitForQuotaReset;
737
- applySettingSource(settingSources, "waitForQuotaReset", sourcePath);
738
- }
739
- if (hasOwnKey(patch, "showSessionTokens")) {
740
- config.showSessionTokens = patch.showSessionTokens;
741
- applySettingSource(settingSources, "showSessionTokens", sourcePath);
742
- }
743
- if (hasOwnKey(patch, "sessionTokenScope")) {
744
- config.sessionTokenScope = patch.sessionTokenScope;
745
- applySettingSource(settingSources, "sessionTokenScope", sourcePath);
746
- }
747
- if (patch.tuiSidebarPanel) {
748
- if (hasOwnKey(patch.tuiSidebarPanel, "enabled")) {
749
- config.tuiSidebarPanel.enabled = patch.tuiSidebarPanel.enabled;
750
- applySettingSource(settingSources, "tuiSidebarPanel.enabled", sourcePath);
751
- }
752
- if (hasOwnKey(patch.tuiSidebarPanel, "formatStyle")) {
753
- config.tuiSidebarPanel.formatStyle = patch.tuiSidebarPanel.formatStyle;
754
- applySettingSource(settingSources, "tuiSidebarPanel.formatStyle", sourcePath);
755
- }
756
- if (hasOwnKey(patch.tuiSidebarPanel, "opencodeGoPreferredWindow")) {
757
- config.tuiSidebarPanel.opencodeGoPreferredWindow =
758
- patch.tuiSidebarPanel.opencodeGoPreferredWindow;
759
- applySettingSource(settingSources, "tuiSidebarPanel.opencodeGoPreferredWindow", sourcePath);
760
- }
761
- }
762
- if (patch.tuiCompactStatus) {
763
- if (hasOwnKey(patch.tuiCompactStatus, "enabled")) {
764
- config.tuiCompactStatus.enabled = patch.tuiCompactStatus.enabled;
765
- applySettingSource(settingSources, "tuiCompactStatus.enabled", sourcePath);
766
- }
767
- if (hasOwnKey(patch.tuiCompactStatus, "homeBottom")) {
768
- config.tuiCompactStatus.homeBottom = patch.tuiCompactStatus.homeBottom;
769
- applySettingSource(settingSources, "tuiCompactStatus.homeBottom", sourcePath);
770
- }
771
- if (hasOwnKey(patch.tuiCompactStatus, "sessionPrompt")) {
772
- config.tuiCompactStatus.sessionPrompt = patch.tuiCompactStatus.sessionPrompt;
773
- applySettingSource(settingSources, "tuiCompactStatus.sessionPrompt", sourcePath);
774
- }
775
- if (hasOwnKey(patch.tuiCompactStatus, "maxWidth")) {
776
- config.tuiCompactStatus.maxWidth = patch.tuiCompactStatus.maxWidth;
777
- applySettingSource(settingSources, "tuiCompactStatus.maxWidth", sourcePath);
778
- }
779
- if (hasOwnKey(patch.tuiCompactStatus, "formatStyle")) {
780
- config.tuiCompactStatus.formatStyle = patch.tuiCompactStatus.formatStyle;
781
- applySettingSource(settingSources, "tuiCompactStatus.formatStyle", sourcePath);
782
- }
783
- }
784
- if (patch.tuiPromptBar) {
785
- if (hasOwnKey(patch.tuiPromptBar, "enabled")) {
786
- config.tuiPromptBar.enabled = patch.tuiPromptBar.enabled;
787
- applySettingSource(settingSources, "tuiPromptBar.enabled", sourcePath);
788
- }
789
- }
790
- if (patch.maintainerAnnouncements) {
791
- if (hasOwnKey(patch.maintainerAnnouncements, "enabled")) {
792
- config.maintainerAnnouncements.enabled = patch.maintainerAnnouncements.enabled;
793
- applySettingSource(settingSources, "maintainerAnnouncements.enabled", sourcePath);
794
- }
795
- if (hasOwnKey(patch.maintainerAnnouncements, "home")) {
796
- config.maintainerAnnouncements.home = patch.maintainerAnnouncements.home;
797
- applySettingSource(settingSources, "maintainerAnnouncements.home", sourcePath);
798
- }
799
- if (hasOwnKey(patch.maintainerAnnouncements, "homeFrequency")) {
800
- config.maintainerAnnouncements.homeFrequency = patch.maintainerAnnouncements.homeFrequency;
801
- applySettingSource(settingSources, "maintainerAnnouncements.homeFrequency", sourcePath);
802
- }
803
- }
804
- if (patch.layout) {
805
- if (hasOwnKey(patch.layout, "maxWidth")) {
806
- config.layout.maxWidth = patch.layout.maxWidth;
807
- applySettingSource(settingSources, "layout.maxWidth", sourcePath);
808
- }
809
- if (hasOwnKey(patch.layout, "narrowAt")) {
810
- config.layout.narrowAt = patch.layout.narrowAt;
811
- applySettingSource(settingSources, "layout.narrowAt", sourcePath);
812
- }
813
- if (hasOwnKey(patch.layout, "tinyAt")) {
814
- config.layout.tinyAt = patch.layout.tinyAt;
815
- applySettingSource(settingSources, "layout.tinyAt", sourcePath);
816
- }
817
- }
818
- if (patch.export) {
819
- if (hasOwnKey(patch.export, "enabled")) {
820
- config.export.enabled = patch.export.enabled;
821
- applySettingSource(settingSources, "export.enabled", sourcePath);
822
- }
823
- if (hasOwnKey(patch.export, "path")) {
824
- config.export.path = patch.export.path;
825
- applySettingSource(settingSources, "export.path", sourcePath);
826
- }
827
- }
828
- if (patch.telemetry && hasOwnKey(patch.telemetry, "enabled")) {
829
- config.telemetry.enabled = patch.telemetry.enabled;
830
- applySettingSource(settingSources, "telemetry.enabled", sourcePath);
831
- }
832
- }
833
- function projectNetworkSettingSources(settingSources) {
834
- const projected = {};
835
- for (const key of NETWORK_SETTING_SOURCE_KEYS) {
836
- const source = settingSources[key];
837
- if (typeof source === "string" && source.length > 0) {
838
- projected[key] = source;
839
- }
840
- }
841
- return projected;
842
- }
843
- function buildConfigLayerCandidatesForRoot(dir, scope) {
844
- return [
845
- ...QUOTA_TOAST_CONFIG_RELATIVE_PATHS.map((relativePath) => ({
846
- path: join(dir, relativePath),
847
- rootDir: dir,
848
- scope,
849
- kind: "plugin",
850
- })),
851
- ...buildOpenCodeConfigCandidates({
852
- directories: [dir],
853
- formatOrder: ["json", "jsonc"],
854
- }).map((candidate) => ({
855
- path: candidate.path,
856
- rootDir: dir,
857
- scope,
858
- kind: "legacy",
859
- })),
860
- ];
861
- }
862
- export function buildConfigLayerCandidates(globalConfigDir, configRootDir) {
863
- const workspaceCandidates = buildConfigLayerCandidatesForRoot(configRootDir, "workspace");
864
- const globalCandidates = buildConfigLayerCandidatesForRoot(globalConfigDir, "global");
865
- const globalPaths = new Set(globalCandidates.map((candidate) => candidate.path));
866
- return [
867
- ...globalCandidates,
868
- ...workspaceCandidates.filter((candidate) => !globalPaths.has(candidate.path)),
869
- ];
870
- }
871
- function getConfigLayerSourceLabel(candidate) {
872
- const suffix = candidate.kind === "plugin"
873
- ? candidate.path.endsWith(".jsonc")
874
- ? QUOTA_TOAST_CONFIG_RELATIVE_PATHS[0]
875
- : QUOTA_TOAST_CONFIG_RELATIVE_PATHS[1]
876
- : "experimental.quotaToast";
877
- return `${candidate.path} (${suffix})`;
878
- }
879
- /**
880
- * Load plugin configuration from OpenCode config
881
- *
882
- * @param client - Optional OpenCode SDK client fallback
883
- * @returns Merged configuration with defaults
884
- */
885
- export async function loadConfig(client, meta, options) {
886
- async function readJson(path) {
887
- const result = await readOpenCodeConfigCandidate({
888
- path,
889
- format: path.endsWith(".jsonc") ? "jsonc" : "json",
890
- });
891
- return result.state === "parsed" ? result.value : null;
892
- }
893
- async function loadFromFiles() {
894
- const configRootDir = options?.configRootDir ?? options?.cwd ?? process.cwd();
895
- const { configDir } = getOpencodeRuntimeDirs();
896
- const config = cloneDefaultConfig();
897
- const usedPaths = [];
898
- const globalConfigPaths = [];
899
- const workspaceConfigPaths = [];
900
- const settingSources = {};
901
- const configIssues = [];
902
- const authoritativeSidecarRoots = new Set();
903
- for (const candidate of buildConfigLayerCandidates(configDir, configRootDir)) {
904
- const rootKey = `${candidate.scope}:${candidate.rootDir}`;
905
- if (candidate.kind === "legacy" && authoritativeSidecarRoots.has(rootKey)) {
906
- continue;
907
- }
908
- if (candidate.kind === "plugin" && authoritativeSidecarRoots.has(rootKey)) {
909
- continue;
910
- }
911
- if (!existsSync(candidate.path)) {
912
- continue;
913
- }
914
- const parsed = await readJson(candidate.path);
915
- if (!isPlainObject(parsed)) {
916
- if (candidate.kind === "plugin") {
917
- const sourcePath = getConfigLayerSourceLabel(candidate);
918
- usedPaths.push(sourcePath);
919
- if (candidate.scope === "global") {
920
- globalConfigPaths.push(sourcePath);
921
- }
922
- else {
923
- workspaceConfigPaths.push(sourcePath);
924
- }
925
- configIssues.push({
926
- path: sourcePath,
927
- key: "$root",
928
- message: "expected readable JSON object; this sidecar is not authoritative",
929
- });
930
- }
931
- continue;
932
- }
933
- if (candidate.kind === "plugin") {
934
- authoritativeSidecarRoots.add(rootKey);
935
- if (candidate.path.endsWith(".jsonc") &&
936
- existsSync(getQuotaToastConfigPath(candidate.rootDir, "json"))) {
937
- configIssues.push({
938
- path: getConfigLayerSourceLabel(candidate),
939
- key: "$file",
940
- message: "both quota-toast.jsonc and quota-toast.json exist; using quota-toast.jsonc",
941
- });
942
- }
943
- }
944
- const extractedQuotaToast = candidate.kind === "plugin"
945
- ? parsed
946
- : isPlainObject(parsed.experimental)
947
- ? parsed.experimental.quotaToast
948
- : undefined;
949
- if (!isPlainObject(extractedQuotaToast)) {
950
- continue;
951
- }
952
- const sourcePath = getConfigLayerSourceLabel(candidate);
953
- usedPaths.push(sourcePath);
954
- if (candidate.scope === "global") {
955
- globalConfigPaths.push(sourcePath);
956
- }
957
- else {
958
- workspaceConfigPaths.push(sourcePath);
959
- }
960
- applyValidatedQuotaToastPatch(config, extractValidatedQuotaToastPatch(extractedQuotaToast, (key, message) => {
961
- configIssues.push({ path: sourcePath, key, message });
962
- }), sourcePath, settingSources);
963
- if (hasOwnKey(extractedQuotaToast, "alibabaCodingPlanTier")) {
964
- configIssues.push({
965
- path: sourcePath,
966
- key: "alibabaCodingPlanTier",
967
- message: 'removed in v4; tune Alibaba through "quotaProviders"',
968
- });
969
- }
970
- if (hasOwnKey(extractedQuotaToast, "customSources")) {
971
- configIssues.push({
972
- path: sourcePath,
973
- key: "customSources",
974
- message: 'removed in v4; use the global-only "quotaProviders" property',
975
- });
976
- }
977
- if (hasOwnKey(extractedQuotaToast, "quotaProviders")) {
978
- if (candidate.scope === "global") {
979
- const validation = validateQuotaProviders(extractedQuotaToast.quotaProviders);
980
- for (const issue of validation.issues) {
981
- configIssues.push({ path: sourcePath, key: issue.key, message: issue.message });
982
- }
983
- if (validation.value) {
984
- config.quotaProviders = cloneQuotaProviders(validation.value);
985
- applySettingSource(settingSources, "quotaProviders", sourcePath);
986
- }
987
- }
988
- else {
989
- configIssues.push({
990
- path: sourcePath,
991
- key: "quotaProviders",
992
- message: "allowed only in global OpenCode or global opencode-quota config",
993
- });
994
- }
995
- }
996
- }
997
- if (usedPaths.length === 0) {
998
- return {
999
- config: null,
1000
- usedPaths: [],
1001
- globalConfigPaths: [],
1002
- workspaceConfigPaths: [],
1003
- settingSources: {},
1004
- networkSettingSources: {},
1005
- configIssues: [],
1006
- };
1007
- }
1008
- return {
1009
- config,
1010
- usedPaths,
1011
- globalConfigPaths,
1012
- workspaceConfigPaths,
1013
- settingSources,
1014
- networkSettingSources: projectNetworkSettingSources(settingSources),
1015
- configIssues,
1016
- };
1017
- }
1018
- const fileConfig = await loadFromFiles();
1019
- if (fileConfig.config) {
1020
- if (meta) {
1021
- meta.source = "files";
1022
- meta.paths = fileConfig.usedPaths;
1023
- meta.globalConfigPaths = fileConfig.globalConfigPaths;
1024
- meta.workspaceConfigPaths = fileConfig.workspaceConfigPaths;
1025
- meta.settingSources = fileConfig.settingSources;
1026
- meta.networkSettingSources = fileConfig.networkSettingSources;
1027
- meta.configIssues = fileConfig.configIssues;
1028
- }
1029
- return fileConfig.config;
1030
- }
1031
- if (client) {
1032
- try {
1033
- const response = await client.config.get();
1034
- // OpenCode config schema is strict; plugin-specific config must live under
1035
- // experimental.* to avoid "unrecognized key" validation errors.
1036
- const quotaToastConfig = response.data?.experimental?.quotaToast;
1037
- if (isPlainObject(quotaToastConfig)) {
1038
- const config = cloneDefaultConfig();
1039
- const settingSources = {};
1040
- const configIssues = [];
1041
- applyValidatedQuotaToastPatch(config, extractValidatedQuotaToastPatch(quotaToastConfig, (key, message) => {
1042
- configIssues.push({ path: "client.config.get", key, message });
1043
- }), "client.config.get", settingSources);
1044
- if (hasOwnKey(quotaToastConfig, "alibabaCodingPlanTier")) {
1045
- configIssues.push({
1046
- path: "client.config.get",
1047
- key: "alibabaCodingPlanTier",
1048
- message: 'removed in v4; tune Alibaba through "quotaProviders"',
1049
- });
1050
- }
1051
- if (hasOwnKey(quotaToastConfig, "customSources")) {
1052
- configIssues.push({
1053
- path: "client.config.get",
1054
- key: "customSources",
1055
- message: 'removed in v4; use the global-only "quotaProviders" property',
1056
- });
1057
- }
1058
- if (hasOwnKey(quotaToastConfig, "quotaProviders")) {
1059
- configIssues.push({
1060
- path: "client.config.get",
1061
- key: "quotaProviders",
1062
- message: "file provenance is required; define quotaProviders in global config",
1063
- });
1064
- }
1065
- if (meta) {
1066
- meta.source = "sdk";
1067
- meta.paths = ["client.config.get"];
1068
- meta.globalConfigPaths = [];
1069
- meta.workspaceConfigPaths = [];
1070
- meta.settingSources = settingSources;
1071
- meta.networkSettingSources = projectNetworkSettingSources(settingSources);
1072
- meta.configIssues = configIssues;
1073
- }
1074
- return config;
1075
- }
1076
- }
1077
- catch {
1078
- // ignore; fall back to defaults below
1079
- }
1080
- }
1081
- if (meta) {
1082
- meta.source = "defaults";
1083
- meta.paths = [];
1084
- meta.globalConfigPaths = [];
1085
- meta.workspaceConfigPaths = [];
1086
- meta.settingSources = {};
1087
- meta.networkSettingSources = {};
1088
- meta.configIssues = [];
1089
- }
1090
- return cloneDefaultConfig();
1091
- }
1092
- //# sourceMappingURL=config.js.map