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