@slkiser/opencode-quota 4.10.6 → 5.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 (390) hide show
  1. package/README.md +42 -31
  2. package/dist/bin/opencode-quota.d.ts +6 -0
  3. package/dist/bin/opencode-quota.d.ts.map +1 -1
  4. package/dist/bin/opencode-quota.js +17 -0
  5. package/dist/bin/opencode-quota.js.map +1 -1
  6. package/dist/data/modelsdev-pricing.min.json +83 -2
  7. package/dist/index.d.ts +1 -6
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +1 -13
  10. package/dist/index.js.map +1 -1
  11. package/dist/lib/accounting-format.js +1 -1
  12. package/dist/lib/accounting-format.js.map +1 -1
  13. package/dist/lib/alibaba-auth.d.ts +5 -5
  14. package/dist/lib/alibaba-auth.d.ts.map +1 -1
  15. package/dist/lib/alibaba-auth.js +15 -8
  16. package/dist/lib/alibaba-auth.js.map +1 -1
  17. package/dist/lib/alibaba-token-plan.d.ts +7 -4
  18. package/dist/lib/alibaba-token-plan.d.ts.map +1 -1
  19. package/dist/lib/alibaba-token-plan.js +32 -10
  20. package/dist/lib/alibaba-token-plan.js.map +1 -1
  21. package/dist/lib/anthropic-auth.d.ts +4 -1
  22. package/dist/lib/anthropic-auth.d.ts.map +1 -1
  23. package/dist/lib/anthropic-auth.js +5 -1
  24. package/dist/lib/anthropic-auth.js.map +1 -1
  25. package/dist/lib/anthropic.d.ts +7 -1
  26. package/dist/lib/anthropic.d.ts.map +1 -1
  27. package/dist/lib/anthropic.js +61 -7
  28. package/dist/lib/anthropic.js.map +1 -1
  29. package/dist/lib/api-key-resolver.d.ts +27 -16
  30. package/dist/lib/api-key-resolver.d.ts.map +1 -1
  31. package/dist/lib/api-key-resolver.js +46 -19
  32. package/dist/lib/api-key-resolver.js.map +1 -1
  33. package/dist/lib/chutes-config.d.ts +2 -2
  34. package/dist/lib/chutes-config.d.ts.map +1 -1
  35. package/dist/lib/chutes-config.js +4 -4
  36. package/dist/lib/chutes-config.js.map +1 -1
  37. package/dist/lib/cli-reports.d.ts +30 -0
  38. package/dist/lib/cli-reports.d.ts.map +1 -0
  39. package/dist/lib/cli-reports.js +172 -0
  40. package/dist/lib/cli-reports.js.map +1 -0
  41. package/dist/lib/cli-show.d.ts +14 -1
  42. package/dist/lib/cli-show.d.ts.map +1 -1
  43. package/dist/lib/cli-show.js +40 -138
  44. package/dist/lib/cli-show.js.map +1 -1
  45. package/dist/lib/cli-status.d.ts.map +1 -1
  46. package/dist/lib/cli-status.js +9 -36
  47. package/dist/lib/cli-status.js.map +1 -1
  48. package/dist/lib/config-file-utils.d.ts +10 -13
  49. package/dist/lib/config-file-utils.d.ts.map +1 -1
  50. package/dist/lib/config-file-utils.js +28 -30
  51. package/dist/lib/config-file-utils.js.map +1 -1
  52. package/dist/lib/config.d.ts +2 -2
  53. package/dist/lib/config.d.ts.map +1 -1
  54. package/dist/lib/config.js +6 -17
  55. package/dist/lib/config.js.map +1 -1
  56. package/dist/lib/copilot.d.ts +4 -1
  57. package/dist/lib/copilot.d.ts.map +1 -1
  58. package/dist/lib/copilot.js +17 -19
  59. package/dist/lib/copilot.js.map +1 -1
  60. package/dist/lib/cursor-detection.d.ts +1 -1
  61. package/dist/lib/cursor-detection.d.ts.map +1 -1
  62. package/dist/lib/cursor-detection.js +54 -51
  63. package/dist/lib/cursor-detection.js.map +1 -1
  64. package/dist/lib/cursor-pricing.d.ts +1 -1
  65. package/dist/lib/cursor-pricing.d.ts.map +1 -1
  66. package/dist/lib/cursor-pricing.js +85 -0
  67. package/dist/lib/cursor-pricing.js.map +1 -1
  68. package/dist/lib/deepseek-auth.d.ts +2 -2
  69. package/dist/lib/deepseek-auth.d.ts.map +1 -1
  70. package/dist/lib/deepseek-auth.js +4 -4
  71. package/dist/lib/deepseek-auth.js.map +1 -1
  72. package/dist/lib/display-sanitize.js +1 -1
  73. package/dist/lib/display-sanitize.js.map +1 -1
  74. package/dist/lib/entries.d.ts +7 -2
  75. package/dist/lib/entries.d.ts.map +1 -1
  76. package/dist/lib/format-utils.d.ts +1 -1
  77. package/dist/lib/format-utils.js +1 -1
  78. package/dist/lib/glm-coding-plan.d.ts +1 -0
  79. package/dist/lib/glm-coding-plan.d.ts.map +1 -1
  80. package/dist/lib/glm-coding-plan.js +3 -1
  81. package/dist/lib/glm-coding-plan.js.map +1 -1
  82. package/dist/lib/google-agy.d.ts +6 -12
  83. package/dist/lib/google-agy.d.ts.map +1 -1
  84. package/dist/lib/google-agy.js +26 -24
  85. package/dist/lib/google-agy.js.map +1 -1
  86. package/dist/lib/google-companion-credentials.d.ts.map +1 -1
  87. package/dist/lib/google-companion-credentials.js +76 -26
  88. package/dist/lib/google-companion-credentials.js.map +1 -1
  89. package/dist/lib/google-gemini-cli.d.ts +7 -12
  90. package/dist/lib/google-gemini-cli.d.ts.map +1 -1
  91. package/dist/lib/google-gemini-cli.js +42 -31
  92. package/dist/lib/google-gemini-cli.js.map +1 -1
  93. package/dist/lib/init-installer.d.ts +3 -1
  94. package/dist/lib/init-installer.d.ts.map +1 -1
  95. package/dist/lib/init-installer.js +69 -172
  96. package/dist/lib/init-installer.js.map +1 -1
  97. package/dist/lib/kilo-config.d.ts +2 -2
  98. package/dist/lib/kilo-config.d.ts.map +1 -1
  99. package/dist/lib/kilo-config.js +6 -5
  100. package/dist/lib/kilo-config.js.map +1 -1
  101. package/dist/lib/kimi-auth.d.ts +2 -2
  102. package/dist/lib/kimi-auth.d.ts.map +1 -1
  103. package/dist/lib/kimi-auth.js +4 -4
  104. package/dist/lib/kimi-auth.js.map +1 -1
  105. package/dist/lib/maintainer-announcements.d.ts.map +1 -1
  106. package/dist/lib/maintainer-announcements.js +5 -5
  107. package/dist/lib/maintainer-announcements.js.map +1 -1
  108. package/dist/lib/mimo-config.d.ts.map +1 -1
  109. package/dist/lib/mimo-config.js +2 -3
  110. package/dist/lib/mimo-config.js.map +1 -1
  111. package/dist/lib/minimax-auth.d.ts +6 -6
  112. package/dist/lib/minimax-auth.d.ts.map +1 -1
  113. package/dist/lib/minimax-auth.js +18 -17
  114. package/dist/lib/minimax-auth.js.map +1 -1
  115. package/dist/lib/nanogpt-config.d.ts +2 -2
  116. package/dist/lib/nanogpt-config.d.ts.map +1 -1
  117. package/dist/lib/nanogpt-config.js +4 -4
  118. package/dist/lib/nanogpt-config.js.map +1 -1
  119. package/dist/lib/ollama-cloud-config.d.ts +2 -2
  120. package/dist/lib/ollama-cloud-config.d.ts.map +1 -1
  121. package/dist/lib/ollama-cloud-config.js +6 -5
  122. package/dist/lib/ollama-cloud-config.js.map +1 -1
  123. package/dist/lib/openai.d.ts +7 -2
  124. package/dist/lib/openai.d.ts.map +1 -1
  125. package/dist/lib/openai.js +22 -8
  126. package/dist/lib/openai.js.map +1 -1
  127. package/dist/lib/opencode-auth-sqlite.d.ts +17 -0
  128. package/dist/lib/opencode-auth-sqlite.d.ts.map +1 -0
  129. package/dist/lib/opencode-auth-sqlite.js +105 -0
  130. package/dist/lib/opencode-auth-sqlite.js.map +1 -0
  131. package/dist/lib/opencode-auth.d.ts +127 -14
  132. package/dist/lib/opencode-auth.d.ts.map +1 -1
  133. package/dist/lib/opencode-auth.js +373 -46
  134. package/dist/lib/opencode-auth.js.map +1 -1
  135. package/dist/lib/opencode-config-providers.d.ts.map +1 -1
  136. package/dist/lib/opencode-config-providers.js +17 -18
  137. package/dist/lib/opencode-config-providers.js.map +1 -1
  138. package/dist/lib/opencode-console-auth.d.ts +47 -0
  139. package/dist/lib/opencode-console-auth.d.ts.map +1 -0
  140. package/dist/lib/opencode-console-auth.js +63 -0
  141. package/dist/lib/opencode-console-auth.js.map +1 -0
  142. package/dist/lib/opencode-db-path.d.ts +9 -0
  143. package/dist/lib/opencode-db-path.d.ts.map +1 -0
  144. package/dist/lib/opencode-db-path.js +16 -0
  145. package/dist/lib/opencode-db-path.js.map +1 -0
  146. package/dist/lib/opencode-go-auth.d.ts +4 -2
  147. package/dist/lib/opencode-go-auth.d.ts.map +1 -1
  148. package/dist/lib/opencode-go-auth.js +9 -5
  149. package/dist/lib/opencode-go-auth.js.map +1 -1
  150. package/dist/lib/opencode-go.d.ts +12 -0
  151. package/dist/lib/opencode-go.d.ts.map +1 -1
  152. package/dist/lib/opencode-go.js +113 -0
  153. package/dist/lib/opencode-go.js.map +1 -1
  154. package/dist/lib/opencode-runtime-paths.d.ts +6 -12
  155. package/dist/lib/opencode-runtime-paths.d.ts.map +1 -1
  156. package/dist/lib/opencode-runtime-paths.js +12 -82
  157. package/dist/lib/opencode-runtime-paths.js.map +1 -1
  158. package/dist/lib/opencode-sqlite.d.ts +4 -0
  159. package/dist/lib/opencode-sqlite.d.ts.map +1 -1
  160. package/dist/lib/opencode-sqlite.js +17 -52
  161. package/dist/lib/opencode-sqlite.js.map +1 -1
  162. package/dist/lib/opencode-storage.d.ts +4 -8
  163. package/dist/lib/opencode-storage.d.ts.map +1 -1
  164. package/dist/lib/opencode-storage.js +66 -90
  165. package/dist/lib/opencode-storage.js.map +1 -1
  166. package/dist/lib/opencode-version.d.ts +6 -0
  167. package/dist/lib/opencode-version.d.ts.map +1 -0
  168. package/dist/lib/opencode-version.js +26 -0
  169. package/dist/lib/opencode-version.js.map +1 -0
  170. package/dist/lib/opencode-zen.d.ts +10 -4
  171. package/dist/lib/opencode-zen.d.ts.map +1 -1
  172. package/dist/lib/opencode-zen.js +11 -11
  173. package/dist/lib/opencode-zen.js.map +1 -1
  174. package/dist/lib/provider-registration.d.ts +3 -4
  175. package/dist/lib/provider-registration.d.ts.map +1 -1
  176. package/dist/lib/provider-registration.js +3 -4
  177. package/dist/lib/provider-registration.js.map +1 -1
  178. package/dist/lib/quota-dialog-command-specs.d.ts +59 -0
  179. package/dist/lib/quota-dialog-command-specs.d.ts.map +1 -0
  180. package/dist/lib/quota-dialog-command-specs.js +145 -0
  181. package/dist/lib/quota-dialog-command-specs.js.map +1 -0
  182. package/dist/lib/quota-dialog-commands.d.ts +1 -25
  183. package/dist/lib/quota-dialog-commands.d.ts.map +1 -1
  184. package/dist/lib/quota-dialog-commands.js +13 -132
  185. package/dist/lib/quota-dialog-commands.js.map +1 -1
  186. package/dist/lib/quota-export.d.ts.map +1 -1
  187. package/dist/lib/quota-export.js +1 -0
  188. package/dist/lib/quota-export.js.map +1 -1
  189. package/dist/lib/quota-providers-remote.d.ts +2 -2
  190. package/dist/lib/quota-providers-remote.d.ts.map +1 -1
  191. package/dist/lib/quota-providers-remote.js +6 -4
  192. package/dist/lib/quota-providers-remote.js.map +1 -1
  193. package/dist/lib/quota-render-data.d.ts +3 -0
  194. package/dist/lib/quota-render-data.d.ts.map +1 -1
  195. package/dist/lib/quota-render-data.js +2 -0
  196. package/dist/lib/quota-render-data.js.map +1 -1
  197. package/dist/lib/quota-report-message.d.ts +21 -0
  198. package/dist/lib/quota-report-message.d.ts.map +1 -0
  199. package/dist/lib/quota-report-message.js +40 -0
  200. package/dist/lib/quota-report-message.js.map +1 -0
  201. package/dist/lib/quota-runtime-context.d.ts +1 -0
  202. package/dist/lib/quota-runtime-context.d.ts.map +1 -1
  203. package/dist/lib/quota-runtime-context.js +1 -0
  204. package/dist/lib/quota-runtime-context.js.map +1 -1
  205. package/dist/lib/quota-state-codec.js +5 -5
  206. package/dist/lib/quota-state-codec.js.map +1 -1
  207. package/dist/lib/quota-stats.js +2 -1
  208. package/dist/lib/quota-stats.js.map +1 -1
  209. package/dist/lib/quota-status.d.ts +2 -10
  210. package/dist/lib/quota-status.d.ts.map +1 -1
  211. package/dist/lib/quota-status.js +33 -42
  212. package/dist/lib/quota-status.js.map +1 -1
  213. package/dist/lib/quota-surface-data.d.ts +26 -0
  214. package/dist/lib/quota-surface-data.d.ts.map +1 -0
  215. package/dist/lib/quota-surface-data.js +299 -0
  216. package/dist/lib/quota-surface-data.js.map +1 -0
  217. package/dist/lib/scoped-update-migration.d.ts +4 -4
  218. package/dist/lib/scoped-update-migration.d.ts.map +1 -1
  219. package/dist/lib/scoped-update-migration.js +11 -18
  220. package/dist/lib/scoped-update-migration.js.map +1 -1
  221. package/dist/lib/scoped-update.d.ts +5 -1
  222. package/dist/lib/scoped-update.d.ts.map +1 -1
  223. package/dist/lib/scoped-update.js +73 -51
  224. package/dist/lib/scoped-update.js.map +1 -1
  225. package/dist/lib/synthetic-config.d.ts +2 -2
  226. package/dist/lib/synthetic-config.d.ts.map +1 -1
  227. package/dist/lib/synthetic-config.js +4 -4
  228. package/dist/lib/synthetic-config.js.map +1 -1
  229. package/dist/lib/toast-format-grouped.js +1 -1
  230. package/dist/lib/toast-format-grouped.js.map +1 -1
  231. package/dist/lib/tui-panel-state.d.ts +0 -49
  232. package/dist/lib/tui-panel-state.d.ts.map +1 -1
  233. package/dist/lib/tui-panel-state.js +1 -41
  234. package/dist/lib/tui-panel-state.js.map +1 -1
  235. package/dist/lib/tui-sidebar-format.d.ts.map +1 -1
  236. package/dist/lib/tui-sidebar-format.js +8 -1
  237. package/dist/lib/tui-sidebar-format.js.map +1 -1
  238. package/dist/lib/types.d.ts +26 -7
  239. package/dist/lib/types.d.ts.map +1 -1
  240. package/dist/lib/types.js +1 -2
  241. package/dist/lib/types.js.map +1 -1
  242. package/dist/lib/xai.d.ts +5 -1
  243. package/dist/lib/xai.d.ts.map +1 -1
  244. package/dist/lib/xai.js +13 -4
  245. package/dist/lib/xai.js.map +1 -1
  246. package/dist/lib/zai-auth.d.ts +2 -2
  247. package/dist/lib/zai-auth.d.ts.map +1 -1
  248. package/dist/lib/zai-auth.js +4 -4
  249. package/dist/lib/zai-auth.js.map +1 -1
  250. package/dist/lib/zai.d.ts +1 -0
  251. package/dist/lib/zai.d.ts.map +1 -1
  252. package/dist/lib/zai.js.map +1 -1
  253. package/dist/lib/zhipu-auth.d.ts +2 -2
  254. package/dist/lib/zhipu-auth.d.ts.map +1 -1
  255. package/dist/lib/zhipu-auth.js +4 -4
  256. package/dist/lib/zhipu-auth.js.map +1 -1
  257. package/dist/lib/zhipu.d.ts +1 -0
  258. package/dist/lib/zhipu.d.ts.map +1 -1
  259. package/dist/lib/zhipu.js.map +1 -1
  260. package/dist/plugin.d.ts +6 -9
  261. package/dist/plugin.d.ts.map +1 -1
  262. package/dist/plugin.js +213 -259
  263. package/dist/plugin.js.map +1 -1
  264. package/dist/providers/alibaba-coding-plan.d.ts.map +1 -1
  265. package/dist/providers/alibaba-coding-plan.js +1 -1
  266. package/dist/providers/alibaba-coding-plan.js.map +1 -1
  267. package/dist/providers/alibaba-token-plan.d.ts.map +1 -1
  268. package/dist/providers/alibaba-token-plan.js +1 -0
  269. package/dist/providers/alibaba-token-plan.js.map +1 -1
  270. package/dist/providers/anthropic.d.ts.map +1 -1
  271. package/dist/providers/anthropic.js +83 -1
  272. package/dist/providers/anthropic.js.map +1 -1
  273. package/dist/providers/cache-policies.d.ts +2 -2
  274. package/dist/providers/cache-policies.d.ts.map +1 -1
  275. package/dist/providers/cache-policies.js +10 -9
  276. package/dist/providers/cache-policies.js.map +1 -1
  277. package/dist/providers/copilot.d.ts.map +1 -1
  278. package/dist/providers/copilot.js +60 -9
  279. package/dist/providers/copilot.js.map +1 -1
  280. package/dist/providers/deepseek.js +1 -1
  281. package/dist/providers/deepseek.js.map +1 -1
  282. package/dist/providers/glm-coding-plan-provider.d.ts +13 -1
  283. package/dist/providers/glm-coding-plan-provider.d.ts.map +1 -1
  284. package/dist/providers/glm-coding-plan-provider.js +53 -0
  285. package/dist/providers/glm-coding-plan-provider.js.map +1 -1
  286. package/dist/providers/google-agy.d.ts.map +1 -1
  287. package/dist/providers/google-agy.js +56 -7
  288. package/dist/providers/google-agy.js.map +1 -1
  289. package/dist/providers/google-gemini-cli.d.ts.map +1 -1
  290. package/dist/providers/google-gemini-cli.js +72 -7
  291. package/dist/providers/google-gemini-cli.js.map +1 -1
  292. package/dist/providers/kilo.js +1 -1
  293. package/dist/providers/kilo.js.map +1 -1
  294. package/dist/providers/kimi-code.d.ts.map +1 -1
  295. package/dist/providers/kimi-code.js +60 -1
  296. package/dist/providers/kimi-code.js.map +1 -1
  297. package/dist/providers/minimax-coding-plan.d.ts.map +1 -1
  298. package/dist/providers/minimax-coding-plan.js +52 -1
  299. package/dist/providers/minimax-coding-plan.js.map +1 -1
  300. package/dist/providers/nanogpt.js +1 -1
  301. package/dist/providers/nanogpt.js.map +1 -1
  302. package/dist/providers/ollama-cloud.js +1 -1
  303. package/dist/providers/ollama-cloud.js.map +1 -1
  304. package/dist/providers/openai.d.ts.map +1 -1
  305. package/dist/providers/openai.js +59 -29
  306. package/dist/providers/openai.js.map +1 -1
  307. package/dist/providers/opencode-go.d.ts.map +1 -1
  308. package/dist/providers/opencode-go.js +207 -55
  309. package/dist/providers/opencode-go.js.map +1 -1
  310. package/dist/providers/opencode-zen.d.ts.map +1 -1
  311. package/dist/providers/opencode-zen.js +37 -51
  312. package/dist/providers/opencode-zen.js.map +1 -1
  313. package/dist/providers/openrouter.js +1 -1
  314. package/dist/providers/openrouter.js.map +1 -1
  315. package/dist/providers/quota-providers.js +9 -9
  316. package/dist/providers/quota-providers.js.map +1 -1
  317. package/dist/providers/result-helpers.d.ts +2 -2
  318. package/dist/providers/result-helpers.d.ts.map +1 -1
  319. package/dist/providers/result-helpers.js +2 -2
  320. package/dist/providers/result-helpers.js.map +1 -1
  321. package/dist/providers/xai.d.ts.map +1 -1
  322. package/dist/providers/xai.js +49 -1
  323. package/dist/providers/xai.js.map +1 -1
  324. package/dist/providers/zai.d.ts.map +1 -1
  325. package/dist/providers/zai.js +3 -1
  326. package/dist/providers/zai.js.map +1 -1
  327. package/dist/providers/zhipu.d.ts.map +1 -1
  328. package/dist/providers/zhipu.js +3 -1
  329. package/dist/providers/zhipu.js.map +1 -1
  330. package/dist/rpc.d.ts +72 -0
  331. package/dist/rpc.d.ts.map +1 -0
  332. package/dist/rpc.js +77 -0
  333. package/dist/rpc.js.map +1 -0
  334. package/dist/tui-v2.d.ts +5 -0
  335. package/dist/tui-v2.d.ts.map +1 -0
  336. package/dist/tui-v2.jsx +498 -0
  337. package/dist/tui-v2.jsx.map +1 -0
  338. package/dist/tui.d.ts +4 -6
  339. package/dist/tui.d.ts.map +1 -1
  340. package/dist/tui.js +542 -955
  341. package/package.json +7 -19
  342. package/dist/lib/cache.d.ts +0 -39
  343. package/dist/lib/cache.d.ts.map +0 -1
  344. package/dist/lib/cache.js +0 -124
  345. package/dist/lib/cache.js.map +0 -1
  346. package/dist/lib/command-handled.d.ts +0 -17
  347. package/dist/lib/command-handled.d.ts.map +0 -1
  348. package/dist/lib/command-handled.js +0 -36
  349. package/dist/lib/command-handled.js.map +0 -1
  350. package/dist/lib/command-surfaces.d.ts +0 -10
  351. package/dist/lib/command-surfaces.d.ts.map +0 -1
  352. package/dist/lib/command-surfaces.js +0 -9
  353. package/dist/lib/command-surfaces.js.map +0 -1
  354. package/dist/lib/opencode-zen-config.d.ts +0 -33
  355. package/dist/lib/opencode-zen-config.d.ts.map +0 -1
  356. package/dist/lib/opencode-zen-config.js +0 -158
  357. package/dist/lib/opencode-zen-config.js.map +0 -1
  358. package/dist/lib/path-pick.d.ts +0 -2
  359. package/dist/lib/path-pick.d.ts.map +0 -1
  360. package/dist/lib/path-pick.js +0 -15
  361. package/dist/lib/path-pick.js.map +0 -1
  362. package/dist/lib/quota-toast-runtime.d.ts +0 -60
  363. package/dist/lib/quota-toast-runtime.d.ts.map +0 -1
  364. package/dist/lib/quota-toast-runtime.js +0 -766
  365. package/dist/lib/quota-toast-runtime.js.map +0 -1
  366. package/dist/lib/tui-config-diagnostics.d.ts +0 -17
  367. package/dist/lib/tui-config-diagnostics.d.ts.map +0 -1
  368. package/dist/lib/tui-config-diagnostics.js +0 -72
  369. package/dist/lib/tui-config-diagnostics.js.map +0 -1
  370. package/dist/lib/tui-line-style.d.ts +0 -3
  371. package/dist/lib/tui-line-style.d.ts.map +0 -1
  372. package/dist/lib/tui-line-style.js +0 -7
  373. package/dist/lib/tui-line-style.js.map +0 -1
  374. package/dist/lib/tui-native-provider-quota.d.ts +0 -7
  375. package/dist/lib/tui-native-provider-quota.d.ts.map +0 -1
  376. package/dist/lib/tui-native-provider-quota.js +0 -25
  377. package/dist/lib/tui-native-provider-quota.js.map +0 -1
  378. package/dist/lib/tui-refresh-lifecycle.d.ts +0 -17
  379. package/dist/lib/tui-refresh-lifecycle.d.ts.map +0 -1
  380. package/dist/lib/tui-refresh-lifecycle.js +0 -82
  381. package/dist/lib/tui-refresh-lifecycle.js.map +0 -1
  382. package/dist/lib/tui-runtime.d.ts +0 -84
  383. package/dist/lib/tui-runtime.d.ts.map +0 -1
  384. package/dist/lib/tui-runtime.js +0 -527
  385. package/dist/lib/tui-runtime.js.map +0 -1
  386. package/dist/lib/tui-sidebar-content.d.ts +0 -32
  387. package/dist/lib/tui-sidebar-content.d.ts.map +0 -1
  388. package/dist/lib/tui-sidebar-content.js +0 -52
  389. package/dist/lib/tui-sidebar-content.js.map +0 -1
  390. package/dist/tui.tsx +0 -1030
@@ -1,78 +1,405 @@
1
1
  /**
2
- * OpenCode auth.json reader
2
+ * OpenCode login reader
3
3
  *
4
- * Shared helper to read auth from ~/.local/share/opencode/auth.json
5
- * (or platform equivalent). Providers should prefer this to duplicating
6
- * file/path parsing.
4
+ * Reads OpenCode 2 logins through the bound credential source. The server
5
+ * plugin binds its integration API (`ctx.integration`) in `setup`; the terminal
6
+ * command binds the read-only database reader in `opencode-auth-sqlite.ts`
7
+ * while one report runs; the TUI binds nothing, so a read there finds no login.
8
+ * Every read names the integration ids it needs, so OpenCode resolves (and may
9
+ * refresh) only those logins.
7
10
  */
8
- import { readFile } from "fs/promises";
9
- import { join } from "path";
10
- import { getOpencodeRuntimeDirCandidates, getOpencodeRuntimeDirs, } from "./opencode-runtime-paths.js";
11
- const DEFAULT_AUTH_CACHE_MAX_AGE_MS = 5_000;
12
- let authCache = null;
11
+ import { sanitizeSingleLineDisplayText } from "./display-sanitize.js";
12
+ import { getOpenCodeDbPath } from "./opencode-db-path.js";
13
+ /** A failed login is resolved again at most this often. */
14
+ const FAILED_LOGIN_RETRY_MS = 60_000;
15
+ /** Bound sources; reads use the last one. */
16
+ const credentialSources = [];
17
+ let unboundWarningShown = false;
13
18
  /**
14
- * Get candidate auth.json paths in priority order.
15
- * Some OpenCode installations use Linux-style paths even on macOS,
16
- * so we check multiple locations.
19
+ * Failed logins, keyed by connection id (by integration id for a failed
20
+ * `active()`, which has no connection). An entry lives until that login reads
21
+ * again, a credential event arrives, or `notifyCredentialsChanged` runs.
17
22
  */
18
- export function getAuthPaths() {
19
- // OpenCode stores auth at `${Global.Path.data}/auth.json`.
20
- // We generate candidates based on OpenCode runtime dir semantics (xdg-basedir)
21
- // plus platform fallbacks for alternate/legacy installs.
22
- const { dataDirs } = getOpencodeRuntimeDirCandidates();
23
- return dataDirs.map((d) => join(d, "auth.json"));
24
- }
25
- /** Returns OpenCode's primary auth.json path (for display/logging) */
26
- export function getAuthPath() {
27
- return join(getOpencodeRuntimeDirs().dataDir, "auth.json");
28
- }
29
- export async function readAuthFile() {
30
- const paths = getAuthPaths();
31
- for (const path of paths) {
23
+ const credentialFailures = new Map();
24
+ /** One `resolve()` at a time per connection id. */
25
+ const pendingResolves = new Map();
26
+ let lastListError;
27
+ /**
28
+ * Connection labels OpenCode assigns when the user never named the connection:
29
+ * `default` for a new connection, and `OAuth` / `API key` for credentials
30
+ * imported from the legacy auth.json. They say nothing about the account, so
31
+ * they must not appear in headers like `[OpenAI OAuth]`.
32
+ */
33
+ const GENERIC_CREDENTIAL_LABELS = new Set(["default", "oauth", "api key"]);
34
+ export function formatCredentialDisplayNames(providerName, credentials) {
35
+ const counts = new Map();
36
+ return credentials.map(({ row, fallbackName }) => {
37
+ const alias = row.label.trim();
38
+ const redundantAlias = !alias ||
39
+ GENERIC_CREDENTIAL_LABELS.has(alias.toLowerCase()) ||
40
+ alias.toLowerCase() === providerName.toLowerCase();
41
+ const fallbackCategory = fallbackName
42
+ .trim()
43
+ .replace(new RegExp(`^${providerName.replace(/[.*+?^${}()|[\]\\]/gu, "\\$&")}\\s*`, "iu"), "")
44
+ .trim()
45
+ .replace(/^\((.*)\)$/u, "$1")
46
+ .trim();
47
+ const aliasKey = redundantAlias ? "" : alias;
48
+ const duplicate = aliasKey ? (counts.get(aliasKey) ?? 0) + 1 : 1;
49
+ if (aliasKey)
50
+ counts.set(aliasKey, duplicate);
51
+ const numberedAlias = duplicate === 1 ? aliasKey : `${aliasKey} ${duplicate}`;
52
+ const base = `[${providerName}${numberedAlias ? ` ${numberedAlias}` : ""}]`;
53
+ const category = fallbackCategory ? ` (${fallbackCategory})` : "";
54
+ const active = row.active || (credentials.length === 1 && !credentials[0].row.active);
55
+ return `${base}${category}${active ? "*" : ""}`;
56
+ });
57
+ }
58
+ /** Cached auth maps keyed by the sorted integration id list and the method filter. */
59
+ const authCache = new Map();
60
+ /** Changes when the cache is dropped, so a read started before that does not refill it. */
61
+ let authCacheGeneration = 0;
62
+ /**
63
+ * The database OpenCode keeps its logins in: the one resolved path, or none
64
+ * when `OPENCODE_DB` is `:memory:`. Inside OpenCode it is for diagnostics only
65
+ * (logins are read through OpenCode); the terminal command reads its logins
66
+ * from this file.
67
+ */
68
+ export function getCredentialDatabasePaths() {
69
+ const path = getOpenCodeDbPath();
70
+ return path === ":memory:" ? [] : [path];
71
+ }
72
+ /**
73
+ * Makes `source` the one reads use until the returned function unbinds it.
74
+ * Unbinding removes only this binding; the last binding still bound wins.
75
+ */
76
+ export function bindCredentialSource(source) {
77
+ const binding = { source };
78
+ credentialSources.push(binding);
79
+ return () => {
80
+ const index = credentialSources.indexOf(binding);
81
+ if (index !== -1)
82
+ credentialSources.splice(index, 1);
83
+ };
84
+ }
85
+ /** Drops cached logins, failed-login entries and the last `list()` error. */
86
+ export function notifyCredentialsChanged() {
87
+ credentialFailures.clear();
88
+ authCache.clear();
89
+ authCacheGeneration += 1;
90
+ lastListError = undefined;
91
+ }
92
+ export function getCredentialSourceDiagnostics() {
93
+ const source = credentialSources.at(-1)?.source;
94
+ return {
95
+ ...(source ? { state: "bound", kind: source.kind } : { state: "unbound" }),
96
+ ...(lastListError ? { lastListError: { ...lastListError } } : {}),
97
+ failures: Array.from(credentialFailures, ([connectionId, failure]) => ({
98
+ integrationId: failure.integrationId,
99
+ connectionId,
100
+ label: failure.label,
101
+ category: failure.category,
102
+ detail: failure.detail,
103
+ at: failure.at,
104
+ })),
105
+ };
106
+ }
107
+ /**
108
+ * Error text that is safe to show and to store: one sanitized line with
109
+ * JWT-shaped and long opaque strings (tokens) replaced, at most 120 characters.
110
+ */
111
+ export function scrubCredentialErrorText(message) {
112
+ // Redact before cutting to length, so a token cut at the limit cannot leave a readable part.
113
+ return sanitizeSingleLineDisplayText(message)
114
+ .replace(/eyJ[A-Za-z0-9_-]{10,}(\.[A-Za-z0-9_-]+)*/gu, "[redacted]")
115
+ .replace(/[A-Za-z0-9_-]{32,}/gu, "[redacted]")
116
+ .slice(0, 120);
117
+ }
118
+ function credentialErrorDetail(error) {
119
+ return scrubCredentialErrorText(error instanceof Error ? error.message : String(error));
120
+ }
121
+ /** The active connection of one integration id; works for ids OpenCode has not registered. */
122
+ async function activeConnectionSlots(integration, integrationId) {
123
+ try {
124
+ const connection = await integration.connection.active(integrationId);
125
+ credentialFailures.delete(integrationId);
126
+ // An env connection means no stored login; providers apply their own env rules.
127
+ return connection?.type === "credential" ? [{ integrationId, connection }] : [];
128
+ }
129
+ catch (error) {
130
+ const activeFailure = {
131
+ at: Date.now(),
132
+ category: "active_failed",
133
+ detail: credentialErrorDetail(error),
134
+ integrationId,
135
+ label: "",
136
+ };
137
+ credentialFailures.set(integrationId, activeFailure);
138
+ return [{ integrationId, activeFailure }];
139
+ }
140
+ }
141
+ /**
142
+ * Every connection of the requested ids: all of them for ids `list()` shows
143
+ * (registered integrations), the active one for any other id.
144
+ */
145
+ async function listedConnectionSlots(integration, integrationIds) {
146
+ let listed;
147
+ try {
148
+ const { data } = await integration.list();
149
+ listed = new Map(data.map((info) => [info.id, info.connections]));
150
+ lastListError = undefined;
151
+ }
152
+ catch (error) {
153
+ // One malformed login anywhere makes list() fail; each id's active login still reads.
154
+ lastListError = { at: Date.now(), detail: credentialErrorDetail(error) };
155
+ }
156
+ const slots = [];
157
+ for (const integrationId of integrationIds) {
158
+ const connections = listed?.get(integrationId);
159
+ if (connections === undefined) {
160
+ slots.push(...(await activeConnectionSlots(integration, integrationId)));
161
+ continue;
162
+ }
163
+ for (const connection of connections) {
164
+ if (connection.type === "credential")
165
+ slots.push({ integrationId, connection });
166
+ }
167
+ }
168
+ return slots;
169
+ }
170
+ function recordResolveFailure(connection, failure) {
171
+ const recorded = { ...failure, at: Date.now(), label: connection.label };
172
+ credentialFailures.set(connection.id, recorded);
173
+ return { failure: recorded };
174
+ }
175
+ /**
176
+ * Resolves one connection (OpenCode may refresh its token). A login that failed
177
+ * less than a minute ago is not resolved again; concurrent reads share one call.
178
+ */
179
+ function resolveCredentialConnection(integration, integrationId, connection) {
180
+ const failure = credentialFailures.get(connection.id);
181
+ if (failure && Date.now() - failure.at < FAILED_LOGIN_RETRY_MS) {
182
+ return Promise.resolve({ failure });
183
+ }
184
+ const pending = pendingResolves.get(connection.id);
185
+ if (pending)
186
+ return pending;
187
+ const outcome = (async () => {
32
188
  try {
33
- const content = await readFile(path, "utf-8");
34
- return JSON.parse(content);
189
+ const value = await integration.connection.resolve(connection);
190
+ if (value === undefined) {
191
+ return recordResolveFailure(connection, {
192
+ category: "resolve_empty",
193
+ detail: "OpenCode returned no login",
194
+ integrationId,
195
+ });
196
+ }
197
+ credentialFailures.delete(connection.id);
198
+ return { value };
35
199
  }
36
- catch {
37
- // Try next path
200
+ catch (error) {
201
+ return recordResolveFailure(connection, {
202
+ category: "refresh_failed",
203
+ detail: credentialErrorDetail(error),
204
+ integrationId,
205
+ });
38
206
  }
207
+ })().finally(() => {
208
+ pendingResolves.delete(connection.id);
209
+ });
210
+ pendingResolves.set(connection.id, outcome);
211
+ return outcome;
212
+ }
213
+ /** The value resolvers read: metadata fields on top (kept under `metadata` too), `key` as `api`. */
214
+ function credentialRowValue(value) {
215
+ const flattened = { ...value.metadata, ...value };
216
+ if (flattened.type === "key")
217
+ flattened.type = "api";
218
+ return flattened;
219
+ }
220
+ async function credentialRowForSlot(integration, slot, methods) {
221
+ if ("activeFailure" in slot) {
222
+ const failure = slot.activeFailure;
223
+ return {
224
+ id: slot.integrationId,
225
+ integrationId: slot.integrationId,
226
+ label: "",
227
+ active: false,
228
+ // A failed active() has no connection, so its method is unknown: a key-only read
229
+ // gets a key-shaped failure, every other read an OAuth-shaped one.
230
+ value: { type: methods && !methods.includes("oauth") ? "api" : "oauth" },
231
+ resolveError: `${failure.category}: ${failure.detail}`,
232
+ };
233
+ }
234
+ const { connection } = slot;
235
+ const outcome = await resolveCredentialConnection(integration, slot.integrationId, connection);
236
+ if ("value" in outcome) {
237
+ return {
238
+ id: connection.id,
239
+ integrationId: slot.integrationId,
240
+ label: connection.label,
241
+ active: false,
242
+ value: credentialRowValue(outcome.value),
243
+ };
244
+ }
245
+ return {
246
+ id: connection.id,
247
+ integrationId: slot.integrationId,
248
+ label: connection.label,
249
+ active: false,
250
+ value: { type: connection.method === "key" ? "api" : "oauth" },
251
+ resolveError: `${outcome.failure.category}: ${outcome.failure.detail}`,
252
+ };
253
+ }
254
+ /** The credential source backed by the server plugin's `ctx.integration`. */
255
+ export function createIntegrationCredentialSource(integration) {
256
+ return {
257
+ kind: "opencode-integration-api",
258
+ async readRows(request) {
259
+ const slots = [];
260
+ if (request.firstOnly) {
261
+ for (const integrationId of request.integrationIds) {
262
+ slots.push(...(await activeConnectionSlots(integration, integrationId)));
263
+ }
264
+ }
265
+ else {
266
+ slots.push(...(await listedConnectionSlots(integration, request.integrationIds)));
267
+ }
268
+ const methods = request.methods;
269
+ const wanted = slots.filter((slot) => !methods || !("connection" in slot) || methods.includes(slot.connection.method));
270
+ const rows = await Promise.all(wanted.map((slot) => credentialRowForSlot(integration, slot, methods)));
271
+ // The `*` goes to the first row of the first requested id that has rows.
272
+ return rows.map((row, index) => ({ ...row, active: index === 0 }));
273
+ },
274
+ };
275
+ }
276
+ /**
277
+ * The auth entry resolvers read for a row: its value, plus `resolveError`
278
+ * when OpenCode could not return the login.
279
+ */
280
+ export function credentialRowAuthEntry(row) {
281
+ return row.resolveError === undefined
282
+ ? row.value
283
+ : { ...row.value, resolveError: row.resolveError };
284
+ }
285
+ /**
286
+ * Map of the first (active) login per requested integration id. With `methods`,
287
+ * an active login using another method is left out without OpenCode resolving it.
288
+ */
289
+ export async function readAuthFile(params) {
290
+ const rows = await readCredentialRows(params.integrationIds, {
291
+ methods: params.methods,
292
+ firstOnly: true,
293
+ });
294
+ const auth = {};
295
+ for (const row of rows) {
296
+ if (!(row.integrationId in auth))
297
+ auth[row.integrationId] = credentialRowAuthEntry(row);
39
298
  }
40
- return null;
299
+ return Object.keys(auth).length > 0 ? auth : null;
300
+ }
301
+ /**
302
+ * Credential rows of the requested integration ids from the last bound source.
303
+ * Row order depends on the source: the integration API returns request-id
304
+ * order, then OpenCode's connection order (active first, then newest); the
305
+ * database reader returns database order. With no bound source (the TUI) there
306
+ * are none.
307
+ */
308
+ export async function readCredentialRows(integrationIds, options = {}) {
309
+ const source = credentialSources.at(-1)?.source;
310
+ if (!source) {
311
+ if (!unboundWarningShown) {
312
+ unboundWarningShown = true;
313
+ console.warn("[opencode-quota] credential source is not bound");
314
+ }
315
+ return [];
316
+ }
317
+ return source.readRows({ integrationIds, ...options });
318
+ }
319
+ function canonicalCredentialValueKey(value) {
320
+ if (Array.isArray(value)) {
321
+ return `[${value.map((item) => canonicalCredentialValueKey(item)).join(",")}]`;
322
+ }
323
+ if (value !== null && typeof value === "object") {
324
+ const entries = Object.entries(value).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0);
325
+ return `{${entries
326
+ .map(([key, nested]) => `${JSON.stringify(key)}:${canonicalCredentialValueKey(nested)}`)
327
+ .join(",")}}`;
328
+ }
329
+ return value === undefined ? "undefined" : JSON.stringify(value);
330
+ }
331
+ /**
332
+ * Collapse credential rows that represent the same upstream connection.
333
+ *
334
+ * Rows holding identical credential values are the same connection (e.g. the
335
+ * same workspace key stored under the `opencode-go` integration and its legacy
336
+ * `opencode` alias), and rows under `primaryIntegrationId` take precedence over
337
+ * alias rows so a real credential for another integration that shares the key
338
+ * is not reported as an additional connection. A failed row holds only
339
+ * `{ type }`, so its connection id keeps each failed login a row of its own.
340
+ * Input order is preserved otherwise.
341
+ */
342
+ export function selectConnectionCredentialRows(rows, primaryIntegrationId) {
343
+ const primaryRows = rows.filter((row) => row.integrationId === primaryIntegrationId);
344
+ const candidates = primaryRows.length > 0 ? primaryRows : [...rows];
345
+ const seen = new Set();
346
+ const selected = [];
347
+ for (const row of candidates) {
348
+ const key = row.resolveError === undefined
349
+ ? canonicalCredentialValueKey(row.value)
350
+ : canonicalCredentialValueKey({ failedConnectionId: row.id, value: row.value });
351
+ if (seen.has(key))
352
+ continue;
353
+ seen.add(key);
354
+ selected.push(row);
355
+ }
356
+ return selected;
41
357
  }
42
358
  /**
43
359
  * Cached auth reader for frequently triggered code paths (e.g. per-question hooks).
44
- * This avoids repeated filesystem reads while keeping auth updates visible quickly.
360
+ * This avoids asking OpenCode on every call while keeping login changes visible quickly.
45
361
  */
46
362
  export async function readAuthFileCached(params) {
47
- const maxAgeMs = Math.max(0, params?.maxAgeMs ?? DEFAULT_AUTH_CACHE_MAX_AGE_MS);
363
+ const maxAgeMs = Math.max(0, params.maxAgeMs);
364
+ const cacheKey = `${[...params.integrationIds].sort().join(",")}|${params.methods ? [...params.methods].sort().join(",") : "any"}`;
365
+ const cached = authCache.get(cacheKey);
48
366
  const now = Date.now();
49
- if (authCache && now - authCache.timestamp <= maxAgeMs) {
50
- return authCache.value;
367
+ if (cached && now - cached.timestamp <= maxAgeMs) {
368
+ return cached.value;
51
369
  }
52
- if (authCache?.inFlight) {
53
- return authCache.inFlight;
370
+ if (cached?.inFlight) {
371
+ return cached.inFlight;
54
372
  }
373
+ const generation = authCacheGeneration;
55
374
  const inFlight = (async () => {
56
- const value = await readAuthFile();
57
- authCache = { timestamp: Date.now(), value };
375
+ const value = await readAuthFile({
376
+ integrationIds: params.integrationIds,
377
+ methods: params.methods,
378
+ });
379
+ // A login change during the read may make this value stale: return it, but do not cache it.
380
+ if (generation === authCacheGeneration) {
381
+ authCache.set(cacheKey, { timestamp: Date.now(), value });
382
+ }
58
383
  return value;
59
384
  })();
60
- authCache = {
61
- timestamp: authCache?.timestamp ?? 0,
62
- value: authCache?.value ?? null,
385
+ authCache.set(cacheKey, {
386
+ timestamp: cached?.timestamp ?? 0,
387
+ value: cached?.value ?? null,
63
388
  inFlight,
64
- };
389
+ });
65
390
  try {
66
391
  return await inFlight;
67
392
  }
68
393
  finally {
69
- if (authCache?.inFlight === inFlight) {
70
- authCache.inFlight = undefined;
394
+ const entry = authCache.get(cacheKey);
395
+ if (entry?.inFlight === inFlight) {
396
+ entry.inFlight = undefined;
71
397
  }
72
398
  }
73
399
  }
74
400
  /** Test helper to clear cached auth state between test cases. */
75
401
  export function clearReadAuthFileCacheForTests() {
76
- authCache = null;
402
+ authCache.clear();
403
+ authCacheGeneration += 1;
77
404
  }
78
405
  //# sourceMappingURL=opencode-auth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"opencode-auth.js","sourceRoot":"","sources":["../../src/lib/opencode-auth.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EACL,+BAA+B,EAC/B,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AAIrC,MAAM,6BAA6B,GAAG,KAAK,CAAC;AAQ5C,IAAI,SAAS,GAA0B,IAAI,CAAC;AAE5C;;;;GAIG;AACH,MAAM,UAAU,YAAY;IAC1B,2DAA2D;IAC3D,+EAA+E;IAC/E,yDAAyD;IACzD,MAAM,EAAE,QAAQ,EAAE,GAAG,+BAA+B,EAAE,CAAC;IACvD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,WAAW;IACzB,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;IAE7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAa,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,gBAAgB;QAClB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAA8B;IACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,IAAI,6BAA6B,CAAC,CAAC;IAChF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,IAAI,SAAS,IAAI,GAAG,GAAG,SAAS,CAAC,SAAS,IAAI,QAAQ,EAAE,CAAC;QACvD,OAAO,SAAS,CAAC,KAAK,CAAC;IACzB,CAAC;IAED,IAAI,SAAS,EAAE,QAAQ,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC,QAAQ,CAAC;IAC5B,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,KAAK,IAAI,EAAE;QAC3B,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAC;QACnC,SAAS,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC;QAC7C,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,EAAE,CAAC;IAEL,SAAS,GAAG;QACV,SAAS,EAAE,SAAS,EAAE,SAAS,IAAI,CAAC;QACpC,KAAK,EAAE,SAAS,EAAE,KAAK,IAAI,IAAI;QAC/B,QAAQ;KACT,CAAC;IAEF,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC;IACxB,CAAC;YAAS,CAAC;QACT,IAAI,SAAS,EAAE,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACrC,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC;QACjC,CAAC;IACH,CAAC;AACH,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,8BAA8B;IAC5C,SAAS,GAAG,IAAI,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"opencode-auth.js","sourceRoot":"","sources":["../../src/lib/opencode-auth.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"opencode-config-providers.d.ts","sourceRoot":"","sources":["../../src/lib/opencode-config-providers.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,gBAAgB,EAMtB,MAAM,wBAAwB,CAAC;AAoBhC,MAAM,WAAW,gCAAgC;IAC/C,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,sCAAsC;IACrD,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,qCAAqC;IACpD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB;AA6ED,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAYlC;AAED,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,MAAM,EAAE,CAAC,CAMnB;AAUD;;;GAGG;AACH,wBAAsB,wCAAwC,CAC5D,OAAO,EAAE,sCAAsC,GAC9C,OAAO,CAAC,qCAAqC,CAAC,CAsEhD"}
1
+ {"version":3,"file":"opencode-config-providers.d.ts","sourceRoot":"","sources":["../../src/lib/opencode-config-providers.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,gBAAgB,EAMtB,MAAM,wBAAwB,CAAC;AAoBhC,MAAM,WAAW,gCAAgC;IAC/C,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,sCAAsC;IACrD,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,qCAAqC;IACpD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB;AAiFD,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAYlC;AAED,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,MAAM,EAAE,CAAC,CAMnB;AAUD;;;GAGG;AACH,wBAAsB,wCAAwC,CAC5D,OAAO,EAAE,sCAAsC,GAC9C,OAAO,CAAC,qCAAqC,CAAC,CAqEhD"}
@@ -2,16 +2,13 @@ import { readFile } from "fs/promises";
2
2
  import { dedupeNonEmptyStrings, extractPluginSpecsFromParsedConfig, extractProviderIdsFromParsedConfig, resolveEditableConfigPath, resolveExistingConfigPath, } from "./config-file-utils.js";
3
3
  import { applyConfigDocumentEdit, ConfigDocumentError, parseConfigDocument, planConfigDocumentEdit, } from "./opencode-config-editor.js";
4
4
  import { buildOpenCodeConfigCandidates, readOpenCodeConfigCandidate, selectFirstExistingOpenCodeConfigCandidate, } from "./opencode-config-read.js";
5
- import { getOpencodeRuntimeDirCandidates } from "./opencode-runtime-paths.js";
5
+ import { getOpencodeRuntimeDirs } from "./opencode-runtime-paths.js";
6
6
  import { getQuotaProviderRuntimeIds, getQuotaProviderShape, normalizeQuotaProviderId, } from "./provider-metadata.js";
7
7
  function isRecord(value) {
8
8
  return Boolean(value) && typeof value === "object" && !Array.isArray(value);
9
9
  }
10
10
  function getCandidates(configRootDir) {
11
- return dedupeNonEmptyStrings([
12
- ...getOpencodeRuntimeDirCandidates().configDirs,
13
- configRootDir,
14
- ]).flatMap((directory) => {
11
+ return dedupeNonEmptyStrings([getOpencodeRuntimeDirs().configDir, configRootDir]).flatMap((directory) => {
15
12
  const selected = selectFirstExistingOpenCodeConfigCandidate(buildOpenCodeConfigCandidates({
16
13
  directories: [directory],
17
14
  formatOrder: ["jsonc", "json"],
@@ -25,16 +22,7 @@ async function readConfig(candidate) {
25
22
  }
26
23
  const COMPANION_PLUGIN_PROVIDER_IDS = [
27
24
  { providerId: "google-gemini-cli", matches: ["opencode-gemini-auth"] },
28
- {
29
- providerId: "cursor",
30
- matches: [
31
- "@playwo/opencode-cursor-oauth",
32
- "opencode-cursor-oauth",
33
- "opencode-cursor",
34
- "open-cursor",
35
- "@rama_nigg/open-cursor",
36
- ],
37
- },
25
+ { providerId: "cursor", matches: ["cursor-opencode-provider"] },
38
26
  ];
39
27
  function mergeOpenCodeConfig(base, next) {
40
28
  const merged = { ...base, ...next };
@@ -44,12 +32,24 @@ function mergeOpenCodeConfig(base, next) {
44
32
  ...(isRecord(next.provider) ? next.provider : {}),
45
33
  };
46
34
  }
35
+ if (isRecord(base.providers) || isRecord(next.providers)) {
36
+ merged.providers = {
37
+ ...(isRecord(base.providers) ? base.providers : {}),
38
+ ...(isRecord(next.providers) ? next.providers : {}),
39
+ };
40
+ }
47
41
  if (Array.isArray(base.plugin) || Array.isArray(next.plugin)) {
48
42
  merged.plugin = [
49
43
  ...(Array.isArray(base.plugin) ? base.plugin : []),
50
44
  ...(Array.isArray(next.plugin) ? next.plugin : []),
51
45
  ];
52
46
  }
47
+ if (Array.isArray(base.plugins) || Array.isArray(next.plugins)) {
48
+ merged.plugins = [
49
+ ...(Array.isArray(base.plugins) ? base.plugins : []),
50
+ ...(Array.isArray(next.plugins) ? next.plugins : []),
51
+ ];
52
+ }
53
53
  return merged;
54
54
  }
55
55
  function inferProviderIdsFromPluginSpecs(specs) {
@@ -91,9 +91,8 @@ export async function reconcileDetectedProvidersInGlobalConfig(options) {
91
91
  const shape = getQuotaProviderShape(providerId);
92
92
  return Boolean(shape && shape.id !== "quota-providers");
93
93
  }));
94
- const { configDirs } = getOpencodeRuntimeDirCandidates();
95
- const globalConfigDir = configDirs[0];
96
- if (!globalConfigDir || detectedProviderIds.length === 0) {
94
+ const globalConfigDir = getOpencodeRuntimeDirs().configDir;
95
+ if (detectedProviderIds.length === 0) {
97
96
  return { path: null, format: null, addedProviderIds: [], changed: false };
98
97
  }
99
98
  const effectiveConfig = await loadConfiguredOpenCodeConfig({
@@ -1 +1 @@
1
- {"version":3,"file":"opencode-config-providers.js","sourceRoot":"","sources":["../../src/lib/opencode-config-providers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opencode-config-providers.js","sourceRoot":"","sources":["../../src/lib/opencode-config-providers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * OpenCode Console credential reader
3
+ *
4
+ * OpenCode 2 keeps its OpenCode Console sign-in (`opencode auth login opencode`)
5
+ * under the `opencode` integration as an OAuth connection created by the device
6
+ * flow (`client_id: opencode-cli`, default server `https://opencode.ai/console`,
7
+ * stored as `metadata.server`). Consumers call the console APIs with
8
+ * `consoleBaseUrl` and `consoleHeaders`: the access token as
9
+ * `Authorization: Bearer`, plus `metadata.orgID` as `x-org-id` when present.
10
+ *
11
+ * The login is read through OpenCode's plugin API, which refreshes a token that
12
+ * is about to expire (and saves the new one) before returning it. A failed
13
+ * refresh is reported as `invalid`.
14
+ */
15
+ export declare const OPENCODE_CONSOLE_BASE_URL = "https://opencode.ai/console";
16
+ export declare const OPENCODE_CONSOLE_INTEGRATION_ID = "opencode";
17
+ export interface OpenCodeConsoleCredential {
18
+ accessToken: string;
19
+ refreshToken?: string;
20
+ expiresAt?: number;
21
+ accountId?: string;
22
+ orgId?: string;
23
+ orgName?: string;
24
+ email?: string;
25
+ server?: string;
26
+ }
27
+ export type OpenCodeConsoleAuthState = {
28
+ state: "none";
29
+ reason?: "not_oauth";
30
+ } | {
31
+ state: "configured";
32
+ credential: OpenCodeConsoleCredential;
33
+ } | {
34
+ state: "expired";
35
+ credential: OpenCodeConsoleCredential;
36
+ } | {
37
+ state: "invalid";
38
+ error: string;
39
+ };
40
+ export declare function resolveOpenCodeConsoleAuth(params?: {
41
+ nowMs?: number;
42
+ }): Promise<OpenCodeConsoleAuthState>;
43
+ /** The Console server the login belongs to. */
44
+ export declare function consoleBaseUrl(credential: OpenCodeConsoleCredential): string;
45
+ /** Console API request headers; `x-org-id` only when the login has an org. */
46
+ export declare function consoleHeaders(credential: OpenCodeConsoleCredential): Record<string, string>;
47
+ //# sourceMappingURL=opencode-console-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-console-auth.d.ts","sourceRoot":"","sources":["../../src/lib/opencode-console-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,eAAO,MAAM,yBAAyB,gCAAgC,CAAC;AACvE,eAAO,MAAM,+BAA+B,aAAa,CAAC;AAE1D,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,wBAAwB,GAChC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GACvC;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,yBAAyB,CAAA;CAAE,GAC9D;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,yBAAyB,CAAA;CAAE,GAC3D;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAExC,wBAAsB,0BAA0B,CAAC,MAAM,CAAC,EAAE;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAmCpC;AAED,+CAA+C;AAC/C,wBAAgB,cAAc,CAAC,UAAU,EAAE,yBAAyB,GAAG,MAAM,CAE5E;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,UAAU,EAAE,yBAAyB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAM5F"}