@slkiser/opencode-quota 4.0.1 → 4.2.0

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 (358) hide show
  1. package/README.md +94 -28
  2. package/dist/bin/opencode-quota.d.ts.map +1 -1
  3. package/dist/bin/opencode-quota.js +8 -0
  4. package/dist/bin/opencode-quota.js.map +1 -1
  5. package/dist/index.d.ts +1 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/lib/anthropic.d.ts.map +1 -1
  8. package/dist/lib/anthropic.js +78 -72
  9. package/dist/lib/anthropic.js.map +1 -1
  10. package/dist/lib/api-key-resolver.d.ts +73 -22
  11. package/dist/lib/api-key-resolver.d.ts.map +1 -1
  12. package/dist/lib/api-key-resolver.js +116 -39
  13. package/dist/lib/api-key-resolver.js.map +1 -1
  14. package/dist/lib/atomic-json.d.ts +3 -1
  15. package/dist/lib/atomic-json.d.ts.map +1 -1
  16. package/dist/lib/atomic-json.js +23 -9
  17. package/dist/lib/atomic-json.js.map +1 -1
  18. package/dist/lib/chutes-config.d.ts.map +1 -1
  19. package/dist/lib/chutes-config.js +2 -4
  20. package/dist/lib/chutes-config.js.map +1 -1
  21. package/dist/lib/chutes.d.ts.map +1 -1
  22. package/dist/lib/chutes.js +28 -23
  23. package/dist/lib/chutes.js.map +1 -1
  24. package/dist/lib/cli-show.d.ts +9 -0
  25. package/dist/lib/cli-show.d.ts.map +1 -1
  26. package/dist/lib/cli-show.js +34 -5
  27. package/dist/lib/cli-show.js.map +1 -1
  28. package/dist/lib/cli-status.d.ts +8 -0
  29. package/dist/lib/cli-status.d.ts.map +1 -0
  30. package/dist/lib/cli-status.js +125 -0
  31. package/dist/lib/cli-status.js.map +1 -0
  32. package/dist/lib/config.d.ts +1 -1
  33. package/dist/lib/config.d.ts.map +1 -1
  34. package/dist/lib/config.js +47 -12
  35. package/dist/lib/config.js.map +1 -1
  36. package/dist/lib/copilot.d.ts +11 -5
  37. package/dist/lib/copilot.d.ts.map +1 -1
  38. package/dist/lib/copilot.js +378 -79
  39. package/dist/lib/copilot.js.map +1 -1
  40. package/dist/lib/deepseek-auth.d.ts.map +1 -1
  41. package/dist/lib/deepseek-auth.js +3 -7
  42. package/dist/lib/deepseek-auth.js.map +1 -1
  43. package/dist/lib/deepseek.d.ts.map +1 -1
  44. package/dist/lib/deepseek.js +22 -17
  45. package/dist/lib/deepseek.js.map +1 -1
  46. package/dist/lib/display-sanitize.d.ts.map +1 -1
  47. package/dist/lib/display-sanitize.js +8 -0
  48. package/dist/lib/display-sanitize.js.map +1 -1
  49. package/dist/lib/entries.d.ts +14 -0
  50. package/dist/lib/entries.d.ts.map +1 -1
  51. package/dist/lib/entries.js.map +1 -1
  52. package/dist/lib/format-utils.d.ts +7 -0
  53. package/dist/lib/format-utils.d.ts.map +1 -1
  54. package/dist/lib/format-utils.js +18 -0
  55. package/dist/lib/format-utils.js.map +1 -1
  56. package/dist/lib/format.d.ts +1 -0
  57. package/dist/lib/format.d.ts.map +1 -1
  58. package/dist/lib/format.js +22 -7
  59. package/dist/lib/format.js.map +1 -1
  60. package/dist/lib/glm-coding-plan.d.ts +18 -0
  61. package/dist/lib/glm-coding-plan.d.ts.map +1 -0
  62. package/dist/lib/glm-coding-plan.js +68 -0
  63. package/dist/lib/glm-coding-plan.js.map +1 -0
  64. package/dist/lib/google-agy-companion.d.ts +4 -25
  65. package/dist/lib/google-agy-companion.d.ts.map +1 -1
  66. package/dist/lib/google-agy-companion.js +47 -272
  67. package/dist/lib/google-agy-companion.js.map +1 -1
  68. package/dist/lib/google-agy.d.ts.map +1 -1
  69. package/dist/lib/google-agy.js +204 -111
  70. package/dist/lib/google-agy.js.map +1 -1
  71. package/dist/lib/google-antigravity-companion.d.ts +4 -25
  72. package/dist/lib/google-antigravity-companion.d.ts.map +1 -1
  73. package/dist/lib/google-antigravity-companion.js +44 -283
  74. package/dist/lib/google-antigravity-companion.js.map +1 -1
  75. package/dist/lib/google-companion-credentials.d.ts +70 -0
  76. package/dist/lib/google-companion-credentials.d.ts.map +1 -0
  77. package/dist/lib/google-companion-credentials.js +265 -0
  78. package/dist/lib/google-companion-credentials.js.map +1 -0
  79. package/dist/lib/google-gemini-cli-companion.d.ts +4 -25
  80. package/dist/lib/google-gemini-cli-companion.d.ts.map +1 -1
  81. package/dist/lib/google-gemini-cli-companion.js +47 -258
  82. package/dist/lib/google-gemini-cli-companion.js.map +1 -1
  83. package/dist/lib/google-gemini-cli.d.ts.map +1 -1
  84. package/dist/lib/google-gemini-cli.js +55 -61
  85. package/dist/lib/google-gemini-cli.js.map +1 -1
  86. package/dist/lib/google-token-cache.d.ts.map +1 -1
  87. package/dist/lib/google-token-cache.js +87 -34
  88. package/dist/lib/google-token-cache.js.map +1 -1
  89. package/dist/lib/google.d.ts.map +1 -1
  90. package/dist/lib/google.js +80 -84
  91. package/dist/lib/google.js.map +1 -1
  92. package/dist/lib/grouped-entry-normalization.d.ts.map +1 -1
  93. package/dist/lib/grouped-entry-normalization.js +7 -1
  94. package/dist/lib/grouped-entry-normalization.js.map +1 -1
  95. package/dist/lib/http.d.ts +12 -7
  96. package/dist/lib/http.d.ts.map +1 -1
  97. package/dist/lib/http.js +28 -15
  98. package/dist/lib/http.js.map +1 -1
  99. package/dist/lib/init-installer.d.ts +2 -1
  100. package/dist/lib/init-installer.d.ts.map +1 -1
  101. package/dist/lib/init-installer.js +29 -2
  102. package/dist/lib/init-installer.js.map +1 -1
  103. package/dist/lib/kimi-auth.d.ts +3 -26
  104. package/dist/lib/kimi-auth.d.ts.map +1 -1
  105. package/dist/lib/kimi-auth.js +24 -91
  106. package/dist/lib/kimi-auth.js.map +1 -1
  107. package/dist/lib/kimi.d.ts.map +1 -1
  108. package/dist/lib/kimi.js +20 -15
  109. package/dist/lib/kimi.js.map +1 -1
  110. package/dist/lib/maintainer-announcements.d.ts.map +1 -1
  111. package/dist/lib/maintainer-announcements.js +5 -0
  112. package/dist/lib/maintainer-announcements.js.map +1 -1
  113. package/dist/lib/map-with-concurrency.d.ts +2 -0
  114. package/dist/lib/map-with-concurrency.d.ts.map +1 -0
  115. package/dist/lib/map-with-concurrency.js +17 -0
  116. package/dist/lib/map-with-concurrency.js.map +1 -0
  117. package/dist/lib/mimo-config.d.ts +29 -0
  118. package/dist/lib/mimo-config.d.ts.map +1 -0
  119. package/dist/lib/mimo-config.js +147 -0
  120. package/dist/lib/mimo-config.js.map +1 -0
  121. package/dist/lib/mimo.d.ts +35 -0
  122. package/dist/lib/mimo.d.ts.map +1 -0
  123. package/dist/lib/mimo.js +236 -0
  124. package/dist/lib/mimo.js.map +1 -0
  125. package/dist/lib/modelsdev-pricing.d.ts.map +1 -1
  126. package/dist/lib/modelsdev-pricing.js +39 -27
  127. package/dist/lib/modelsdev-pricing.js.map +1 -1
  128. package/dist/lib/nanogpt-config.d.ts.map +1 -1
  129. package/dist/lib/nanogpt-config.js +2 -4
  130. package/dist/lib/nanogpt-config.js.map +1 -1
  131. package/dist/lib/nanogpt.d.ts.map +1 -1
  132. package/dist/lib/nanogpt.js +40 -30
  133. package/dist/lib/nanogpt.js.map +1 -1
  134. package/dist/lib/ollama-cloud.d.ts +1 -1
  135. package/dist/lib/ollama-cloud.d.ts.map +1 -1
  136. package/dist/lib/ollama-cloud.js +73 -68
  137. package/dist/lib/ollama-cloud.js.map +1 -1
  138. package/dist/lib/openai.d.ts.map +1 -1
  139. package/dist/lib/openai.js +53 -48
  140. package/dist/lib/openai.js.map +1 -1
  141. package/dist/lib/opencode-config-providers.d.ts.map +1 -1
  142. package/dist/lib/opencode-config-providers.js +13 -16
  143. package/dist/lib/opencode-config-providers.js.map +1 -1
  144. package/dist/lib/opencode-config-read.d.ts +23 -0
  145. package/dist/lib/opencode-config-read.d.ts.map +1 -0
  146. package/dist/lib/opencode-config-read.js +30 -0
  147. package/dist/lib/opencode-config-read.js.map +1 -0
  148. package/dist/lib/opencode-go.d.ts.map +1 -1
  149. package/dist/lib/opencode-go.js +44 -39
  150. package/dist/lib/opencode-go.js.map +1 -1
  151. package/dist/lib/opencode-zen-config.d.ts +34 -0
  152. package/dist/lib/opencode-zen-config.d.ts.map +1 -0
  153. package/dist/lib/opencode-zen-config.js +103 -0
  154. package/dist/lib/opencode-zen-config.js.map +1 -0
  155. package/dist/lib/opencode-zen.d.ts +27 -0
  156. package/dist/lib/opencode-zen.d.ts.map +1 -0
  157. package/dist/lib/opencode-zen.js +143 -0
  158. package/dist/lib/opencode-zen.js.map +1 -0
  159. package/dist/lib/openrouter.d.ts +13 -0
  160. package/dist/lib/openrouter.d.ts.map +1 -0
  161. package/dist/lib/openrouter.js +41 -0
  162. package/dist/lib/openrouter.js.map +1 -0
  163. package/dist/lib/provider-add-command.d.ts.map +1 -1
  164. package/dist/lib/provider-add-command.js +4 -12
  165. package/dist/lib/provider-add-command.js.map +1 -1
  166. package/dist/lib/provider-add-json-v1-questionnaire.d.ts +32 -0
  167. package/dist/lib/provider-add-json-v1-questionnaire.d.ts.map +1 -0
  168. package/dist/lib/provider-add-json-v1-questionnaire.js +336 -0
  169. package/dist/lib/provider-add-json-v1-questionnaire.js.map +1 -0
  170. package/dist/lib/provider-availability.d.ts +2 -2
  171. package/dist/lib/provider-availability.d.ts.map +1 -1
  172. package/dist/lib/provider-availability.js +2 -3
  173. package/dist/lib/provider-availability.js.map +1 -1
  174. package/dist/lib/provider-metadata.d.ts +300 -1
  175. package/dist/lib/provider-metadata.d.ts.map +1 -1
  176. package/dist/lib/provider-metadata.js +332 -227
  177. package/dist/lib/provider-metadata.js.map +1 -1
  178. package/dist/lib/quota-command-format.d.ts.map +1 -1
  179. package/dist/lib/quota-command-format.js +12 -16
  180. package/dist/lib/quota-command-format.js.map +1 -1
  181. package/dist/lib/quota-dialog-commands.d.ts +59 -2
  182. package/dist/lib/quota-dialog-commands.d.ts.map +1 -1
  183. package/dist/lib/quota-dialog-commands.js +73 -39
  184. package/dist/lib/quota-dialog-commands.js.map +1 -1
  185. package/dist/lib/quota-entry-display.d.ts +2 -0
  186. package/dist/lib/quota-entry-display.d.ts.map +1 -1
  187. package/dist/lib/quota-entry-display.js +27 -13
  188. package/dist/lib/quota-entry-display.js.map +1 -1
  189. package/dist/lib/quota-providers-remote.d.ts +0 -1
  190. package/dist/lib/quota-providers-remote.d.ts.map +1 -1
  191. package/dist/lib/quota-providers-remote.js +3 -16
  192. package/dist/lib/quota-providers-remote.js.map +1 -1
  193. package/dist/lib/quota-render-data.d.ts +4 -0
  194. package/dist/lib/quota-render-data.d.ts.map +1 -1
  195. package/dist/lib/quota-render-data.js +118 -127
  196. package/dist/lib/quota-render-data.js.map +1 -1
  197. package/dist/lib/quota-runtime-context.d.ts +9 -1
  198. package/dist/lib/quota-runtime-context.d.ts.map +1 -1
  199. package/dist/lib/quota-runtime-context.js +5 -0
  200. package/dist/lib/quota-runtime-context.js.map +1 -1
  201. package/dist/lib/quota-state.d.ts.map +1 -1
  202. package/dist/lib/quota-state.js +25 -1
  203. package/dist/lib/quota-state.js.map +1 -1
  204. package/dist/lib/quota-stats.d.ts +1 -0
  205. package/dist/lib/quota-stats.d.ts.map +1 -1
  206. package/dist/lib/quota-stats.js +14 -4
  207. package/dist/lib/quota-stats.js.map +1 -1
  208. package/dist/lib/quota-status.d.ts +7 -17
  209. package/dist/lib/quota-status.d.ts.map +1 -1
  210. package/dist/lib/quota-status.js +123 -948
  211. package/dist/lib/quota-status.js.map +1 -1
  212. package/dist/lib/runtime-provider-ids.d.ts +4 -0
  213. package/dist/lib/runtime-provider-ids.d.ts.map +1 -0
  214. package/dist/lib/runtime-provider-ids.js +10 -0
  215. package/dist/lib/runtime-provider-ids.js.map +1 -0
  216. package/dist/lib/session-tokens.d.ts +2 -0
  217. package/dist/lib/session-tokens.d.ts.map +1 -1
  218. package/dist/lib/session-tokens.js +4 -2
  219. package/dist/lib/session-tokens.js.map +1 -1
  220. package/dist/lib/synthetic-config.d.ts.map +1 -1
  221. package/dist/lib/synthetic-config.js +2 -4
  222. package/dist/lib/synthetic-config.js.map +1 -1
  223. package/dist/lib/synthetic.d.ts.map +1 -1
  224. package/dist/lib/synthetic.js +37 -32
  225. package/dist/lib/synthetic.js.map +1 -1
  226. package/dist/lib/toast-format-grouped.d.ts +1 -0
  227. package/dist/lib/toast-format-grouped.d.ts.map +1 -1
  228. package/dist/lib/toast-format-grouped.js +33 -29
  229. package/dist/lib/toast-format-grouped.js.map +1 -1
  230. package/dist/lib/tui-refresh-lifecycle.d.ts +17 -0
  231. package/dist/lib/tui-refresh-lifecycle.d.ts.map +1 -0
  232. package/dist/lib/tui-refresh-lifecycle.js +83 -0
  233. package/dist/lib/tui-refresh-lifecycle.js.map +1 -0
  234. package/dist/lib/tui-runtime.d.ts +0 -5
  235. package/dist/lib/tui-runtime.d.ts.map +1 -1
  236. package/dist/lib/tui-runtime.js +1 -6
  237. package/dist/lib/tui-runtime.js.map +1 -1
  238. package/dist/lib/tui-sidebar-format.d.ts +1 -1
  239. package/dist/lib/tui-sidebar-format.d.ts.map +1 -1
  240. package/dist/lib/tui-sidebar-format.js +1 -0
  241. package/dist/lib/tui-sidebar-format.js.map +1 -1
  242. package/dist/lib/types.d.ts +72 -8
  243. package/dist/lib/types.d.ts.map +1 -1
  244. package/dist/lib/types.js +2 -0
  245. package/dist/lib/types.js.map +1 -1
  246. package/dist/lib/xai.d.ts +39 -0
  247. package/dist/lib/xai.d.ts.map +1 -0
  248. package/dist/lib/xai.js +153 -0
  249. package/dist/lib/xai.js.map +1 -0
  250. package/dist/lib/zai-auth.d.ts +3 -26
  251. package/dist/lib/zai-auth.d.ts.map +1 -1
  252. package/dist/lib/zai-auth.js +24 -94
  253. package/dist/lib/zai-auth.js.map +1 -1
  254. package/dist/lib/zai.d.ts +1 -8
  255. package/dist/lib/zai.d.ts.map +1 -1
  256. package/dist/lib/zai.js +11 -91
  257. package/dist/lib/zai.js.map +1 -1
  258. package/dist/lib/zhipu-auth.d.ts +3 -26
  259. package/dist/lib/zhipu-auth.d.ts.map +1 -1
  260. package/dist/lib/zhipu-auth.js +24 -94
  261. package/dist/lib/zhipu-auth.js.map +1 -1
  262. package/dist/lib/zhipu.d.ts +1 -8
  263. package/dist/lib/zhipu.d.ts.map +1 -1
  264. package/dist/lib/zhipu.js +10 -84
  265. package/dist/lib/zhipu.js.map +1 -1
  266. package/dist/plugin.d.ts.map +1 -1
  267. package/dist/plugin.js +20 -145
  268. package/dist/plugin.js.map +1 -1
  269. package/dist/providers/alibaba-coding-plan.d.ts.map +1 -1
  270. package/dist/providers/alibaba-coding-plan.js +33 -6
  271. package/dist/providers/alibaba-coding-plan.js.map +1 -1
  272. package/dist/providers/anthropic.d.ts.map +1 -1
  273. package/dist/providers/anthropic.js +35 -7
  274. package/dist/providers/anthropic.js.map +1 -1
  275. package/dist/providers/chutes.d.ts.map +1 -1
  276. package/dist/providers/chutes.js +10 -3
  277. package/dist/providers/chutes.js.map +1 -1
  278. package/dist/providers/copilot.d.ts.map +1 -1
  279. package/dist/providers/copilot.js +102 -31
  280. package/dist/providers/copilot.js.map +1 -1
  281. package/dist/providers/cursor.d.ts.map +1 -1
  282. package/dist/providers/cursor.js +34 -6
  283. package/dist/providers/cursor.js.map +1 -1
  284. package/dist/providers/deepseek.d.ts.map +1 -1
  285. package/dist/providers/deepseek.js +10 -3
  286. package/dist/providers/deepseek.js.map +1 -1
  287. package/dist/providers/glm-coding-plan-provider.d.ts +44 -0
  288. package/dist/providers/glm-coding-plan-provider.d.ts.map +1 -0
  289. package/dist/providers/glm-coding-plan-provider.js +62 -0
  290. package/dist/providers/glm-coding-plan-provider.js.map +1 -0
  291. package/dist/providers/google-agy.d.ts.map +1 -1
  292. package/dist/providers/google-agy.js +83 -42
  293. package/dist/providers/google-agy.js.map +1 -1
  294. package/dist/providers/google-antigravity.d.ts.map +1 -1
  295. package/dist/providers/google-antigravity.js +31 -6
  296. package/dist/providers/google-antigravity.js.map +1 -1
  297. package/dist/providers/google-gemini-cli.d.ts.map +1 -1
  298. package/dist/providers/google-gemini-cli.js +24 -6
  299. package/dist/providers/google-gemini-cli.js.map +1 -1
  300. package/dist/providers/kimi-code.d.ts.map +1 -1
  301. package/dist/providers/kimi-code.js +27 -8
  302. package/dist/providers/kimi-code.js.map +1 -1
  303. package/dist/providers/mimo.d.ts +3 -0
  304. package/dist/providers/mimo.d.ts.map +1 -0
  305. package/dist/providers/mimo.js +127 -0
  306. package/dist/providers/mimo.js.map +1 -0
  307. package/dist/providers/minimax-coding-plan.d.ts.map +1 -1
  308. package/dist/providers/minimax-coding-plan.js +68 -32
  309. package/dist/providers/minimax-coding-plan.js.map +1 -1
  310. package/dist/providers/nanogpt.d.ts.map +1 -1
  311. package/dist/providers/nanogpt.js +41 -4
  312. package/dist/providers/nanogpt.js.map +1 -1
  313. package/dist/providers/openai.d.ts.map +1 -1
  314. package/dist/providers/openai.js +20 -3
  315. package/dist/providers/openai.js.map +1 -1
  316. package/dist/providers/opencode-go.d.ts.map +1 -1
  317. package/dist/providers/opencode-go.js +33 -15
  318. package/dist/providers/opencode-go.js.map +1 -1
  319. package/dist/providers/opencode-zen.d.ts +3 -0
  320. package/dist/providers/opencode-zen.d.ts.map +1 -0
  321. package/dist/providers/opencode-zen.js +99 -0
  322. package/dist/providers/opencode-zen.js.map +1 -0
  323. package/dist/providers/openrouter.d.ts +6 -0
  324. package/dist/providers/openrouter.d.ts.map +1 -0
  325. package/dist/providers/openrouter.js +25 -0
  326. package/dist/providers/openrouter.js.map +1 -0
  327. package/dist/providers/quota-providers.d.ts.map +1 -1
  328. package/dist/providers/quota-providers.js +3 -3
  329. package/dist/providers/quota-providers.js.map +1 -1
  330. package/dist/providers/qwen-code.d.ts.map +1 -1
  331. package/dist/providers/qwen-code.js +19 -5
  332. package/dist/providers/qwen-code.js.map +1 -1
  333. package/dist/providers/registry.d.ts.map +1 -1
  334. package/dist/providers/registry.js +8 -0
  335. package/dist/providers/registry.js.map +1 -1
  336. package/dist/providers/result-helpers.d.ts +29 -1
  337. package/dist/providers/result-helpers.d.ts.map +1 -1
  338. package/dist/providers/result-helpers.js +69 -0
  339. package/dist/providers/result-helpers.js.map +1 -1
  340. package/dist/providers/synthetic.d.ts.map +1 -1
  341. package/dist/providers/synthetic.js +10 -3
  342. package/dist/providers/synthetic.js.map +1 -1
  343. package/dist/providers/xai.d.ts +6 -0
  344. package/dist/providers/xai.d.ts.map +1 -0
  345. package/dist/providers/xai.js +51 -0
  346. package/dist/providers/xai.js.map +1 -0
  347. package/dist/providers/zai.d.ts +1 -7
  348. package/dist/providers/zai.d.ts.map +1 -1
  349. package/dist/providers/zai.js +11 -46
  350. package/dist/providers/zai.js.map +1 -1
  351. package/dist/providers/zhipu.d.ts +1 -7
  352. package/dist/providers/zhipu.d.ts.map +1 -1
  353. package/dist/providers/zhipu.js +11 -46
  354. package/dist/providers/zhipu.js.map +1 -1
  355. package/dist/tui.d.ts.map +1 -1
  356. package/dist/tui.js +47 -136
  357. package/dist/tui.tsx +62 -179
  358. package/package.json +1 -1
@@ -0,0 +1,336 @@
1
+ import { JSON_V1_MAX_MAPPINGS, JSON_V1_MAX_PATH_SEGMENTS, } from "./quota-providers.js";
2
+ const RESULT_TYPE_OPTIONS = [
3
+ { label: "Quota", value: "quota" },
4
+ { label: "Rate limit", value: "rate_limit" },
5
+ { label: "Usage", value: "usage" },
6
+ { label: "Spend", value: "spend" },
7
+ { label: "Budget", value: "budget" },
8
+ { label: "Balance", value: "balance" },
9
+ { label: "Status", value: "status" },
10
+ ];
11
+ const TIMESTAMP_ENCODING_OPTIONS = [
12
+ { label: "ISO 8601", value: "iso-8601", hint: "Example: 2026-07-23T12:00:00Z" },
13
+ { label: "Unix seconds", value: "unix-seconds" },
14
+ { label: "Unix milliseconds", value: "unix-milliseconds" },
15
+ ];
16
+ function requiredText(value, prompts) {
17
+ if (prompts.isCancel(value))
18
+ return null;
19
+ const normalized = typeof value === "string" ? value.trim() : "";
20
+ return normalized || null;
21
+ }
22
+ function optionalText(value, prompts) {
23
+ if (prompts.isCancel(value))
24
+ return null;
25
+ if (typeof value !== "string" || value.trim() === "")
26
+ return undefined;
27
+ return value.trim();
28
+ }
29
+ async function selectChoice(prompts, options) {
30
+ const value = await prompts.select(options);
31
+ if (prompts.isCancel(value) ||
32
+ typeof value !== "string" ||
33
+ !options.options.some((option) => option.value === value)) {
34
+ return null;
35
+ }
36
+ return value;
37
+ }
38
+ async function confirmChoice(prompts, message, initialValue) {
39
+ const value = await prompts.confirm({ message, initialValue });
40
+ return prompts.isCancel(value) || typeof value !== "boolean" ? null : value;
41
+ }
42
+ async function promptPath(prompts, purpose) {
43
+ const path = [];
44
+ while (path.length < JSON_V1_MAX_PATH_SEGMENTS) {
45
+ const ordinal = path.length + 1;
46
+ const segment = requiredText(await prompts.text({
47
+ message: `${purpose}: property segment ${ordinal}`,
48
+ placeholder: ordinal === 1 ? "data" : "items",
49
+ }), prompts);
50
+ if (!segment)
51
+ return null;
52
+ path.push(segment);
53
+ if (path.length === JSON_V1_MAX_PATH_SEGMENTS)
54
+ return path;
55
+ const addSegment = await confirmChoice(prompts, `Add another property segment to ${purpose}?`, false);
56
+ if (addSegment === null)
57
+ return null;
58
+ if (!addSegment)
59
+ return path;
60
+ }
61
+ return path;
62
+ }
63
+ async function promptNumberSource(prompts, name) {
64
+ const sourceType = await selectChoice(prompts, {
65
+ message: `${name} source`,
66
+ options: [
67
+ { label: "Response field", value: "path", hint: "Choose property segments" },
68
+ { label: "Fixed number", value: "literal", hint: "Saved in the config preview" },
69
+ ],
70
+ initialValue: "path",
71
+ });
72
+ if (!sourceType)
73
+ return null;
74
+ if (sourceType === "literal") {
75
+ const literal = requiredText(await prompts.text({ message: `${name} fixed number`, placeholder: "0" }), prompts);
76
+ return literal === null ? null : { literal: Number(literal) };
77
+ }
78
+ const path = await promptPath(prompts, `${name} response field`);
79
+ if (!path)
80
+ return null;
81
+ const divideBy = await selectChoice(prompts, {
82
+ message: `Scale ${name} after reading it?`,
83
+ options: [
84
+ { label: "Do not scale", value: "none" },
85
+ { label: "Divide by 100", value: "100" },
86
+ { label: "Divide by 1,000", value: "1000" },
87
+ { label: "Divide by 1,000,000", value: "1000000" },
88
+ ],
89
+ initialValue: "none",
90
+ });
91
+ if (!divideBy)
92
+ return null;
93
+ if (divideBy === "none")
94
+ return { path };
95
+ return { path, divideBy: Number(divideBy) };
96
+ }
97
+ async function promptTextSource(prompts, name) {
98
+ const sourceType = await selectChoice(prompts, {
99
+ message: `${name} source`,
100
+ options: [
101
+ { label: "Response field", value: "path", hint: "Choose property segments" },
102
+ { label: "Fixed text", value: "literal", hint: "Saved in the config preview" },
103
+ ],
104
+ initialValue: "path",
105
+ });
106
+ if (!sourceType)
107
+ return null;
108
+ if (sourceType === "literal") {
109
+ const literal = requiredText(await prompts.text({ message: `${name} fixed text`, placeholder: "Available" }), prompts);
110
+ return literal === null ? null : { literal };
111
+ }
112
+ const path = await promptPath(prompts, `${name} response field`);
113
+ return path ? { path } : null;
114
+ }
115
+ async function promptTimestampSource(prompts, name) {
116
+ const sourceType = await selectChoice(prompts, {
117
+ message: `${name} source`,
118
+ options: [
119
+ { label: "Response field", value: "path", hint: "Choose property segments" },
120
+ { label: "Fixed timestamp", value: "literal", hint: "Saved in the config preview" },
121
+ ],
122
+ initialValue: "path",
123
+ });
124
+ if (!sourceType)
125
+ return null;
126
+ const encoding = await selectChoice(prompts, {
127
+ message: `${name} format`,
128
+ options: TIMESTAMP_ENCODING_OPTIONS,
129
+ initialValue: "iso-8601",
130
+ });
131
+ if (!encoding)
132
+ return null;
133
+ if (sourceType === "path") {
134
+ const path = await promptPath(prompts, `${name} response field`);
135
+ return path ? { path, encoding } : null;
136
+ }
137
+ const literal = requiredText(await prompts.text({
138
+ message: `${name} fixed value`,
139
+ placeholder: encoding === "iso-8601" ? "2026-07-23T12:00:00Z" : "1784808000",
140
+ }), prompts);
141
+ if (literal === null)
142
+ return null;
143
+ return {
144
+ literal: encoding === "iso-8601" ? literal : Number(literal),
145
+ encoding,
146
+ };
147
+ }
148
+ async function promptOptionalTimestamp(prompts, name) {
149
+ const include = await confirmChoice(prompts, `Add ${name}?`, false);
150
+ if (include === null)
151
+ return null;
152
+ if (!include)
153
+ return undefined;
154
+ return promptTimestampSource(prompts, name);
155
+ }
156
+ function metricOptions(resultType) {
157
+ if (resultType === "quota" || resultType === "rate_limit") {
158
+ return [
159
+ { label: "Percentage", value: "percentage" },
160
+ { label: "Used and limit", value: "used-limit" },
161
+ { label: "Remaining and limit", value: "remaining-limit" },
162
+ { label: "Used value", value: "value-used" },
163
+ { label: "Limit value", value: "value-limit" },
164
+ { label: "Remaining value", value: "value-remaining" },
165
+ ];
166
+ }
167
+ if (resultType === "budget") {
168
+ return [
169
+ { label: "Percentage", value: "percentage" },
170
+ { label: "Spend and budget", value: "spend-budget" },
171
+ { label: "Remaining and budget", value: "remaining-budget" },
172
+ { label: "Budget value", value: "value-budget" },
173
+ ];
174
+ }
175
+ return undefined;
176
+ }
177
+ async function promptMetric(prompts, resultType) {
178
+ let metricType;
179
+ const options = metricOptions(resultType);
180
+ if (options) {
181
+ const selected = await selectChoice(prompts, {
182
+ message: "How should this result be calculated?",
183
+ options,
184
+ initialValue: options[0].value,
185
+ });
186
+ if (!selected)
187
+ return null;
188
+ metricType = selected;
189
+ }
190
+ else {
191
+ metricType =
192
+ resultType === "usage"
193
+ ? "value-used"
194
+ : resultType === "spend"
195
+ ? "value-spend"
196
+ : resultType === "balance"
197
+ ? "value-balance"
198
+ : "status";
199
+ }
200
+ if (metricType === "percentage") {
201
+ const meaning = await selectChoice(prompts, {
202
+ message: "What does the percentage mean?",
203
+ options: [
204
+ { label: "Remaining", value: "remaining" },
205
+ { label: "Used", value: "used" },
206
+ ],
207
+ initialValue: "remaining",
208
+ });
209
+ if (!meaning)
210
+ return null;
211
+ const percentage = await promptNumberSource(prompts, "Percentage");
212
+ return percentage ? { type: "percentage", percentage, meaning } : null;
213
+ }
214
+ if (metricType === "used-limit") {
215
+ const used = await promptNumberSource(prompts, "Used");
216
+ if (!used)
217
+ return null;
218
+ const limit = await promptNumberSource(prompts, "Limit");
219
+ return limit ? { type: "used-limit", used, limit } : null;
220
+ }
221
+ if (metricType === "remaining-limit") {
222
+ const remaining = await promptNumberSource(prompts, "Remaining");
223
+ if (!remaining)
224
+ return null;
225
+ const limit = await promptNumberSource(prompts, "Limit");
226
+ return limit ? { type: "remaining-limit", remaining, limit } : null;
227
+ }
228
+ if (metricType === "spend-budget") {
229
+ const spend = await promptNumberSource(prompts, "Spend");
230
+ if (!spend)
231
+ return null;
232
+ const budget = await promptNumberSource(prompts, "Budget");
233
+ return budget ? { type: "spend-budget", spend, budget } : null;
234
+ }
235
+ if (metricType === "remaining-budget") {
236
+ const remaining = await promptNumberSource(prompts, "Remaining");
237
+ if (!remaining)
238
+ return null;
239
+ const budget = await promptNumberSource(prompts, "Budget");
240
+ return budget ? { type: "remaining-budget", remaining, budget } : null;
241
+ }
242
+ if (metricType === "status") {
243
+ const value = await promptTextSource(prompts, "Status");
244
+ return value ? { type: "status", value } : null;
245
+ }
246
+ const valueType = metricType.slice("value-".length);
247
+ const value = await promptNumberSource(prompts, "Value");
248
+ return value ? { type: "value", valueType, value } : null;
249
+ }
250
+ async function promptMapping(prompts, ordinal) {
251
+ const resultType = await selectChoice(prompts, {
252
+ message: `Mapping ${ordinal} result type`,
253
+ options: RESULT_TYPE_OPTIONS,
254
+ initialValue: "quota",
255
+ });
256
+ if (!resultType)
257
+ return null;
258
+ const name = requiredText(await prompts.text({ message: `Mapping ${ordinal} name`, placeholder: "Requests" }), prompts);
259
+ if (!name)
260
+ return null;
261
+ const label = optionalText(await prompts.text({ message: `Mapping ${ordinal} display label (optional)` }), prompts);
262
+ if (label === null)
263
+ return null;
264
+ const metric = await promptMetric(prompts, resultType);
265
+ if (!metric)
266
+ return null;
267
+ let unit;
268
+ let unitPosition;
269
+ if (metric.type !== "percentage" && metric.type !== "status") {
270
+ const unitAnswer = optionalText(await prompts.text({
271
+ message: `Mapping ${ordinal} unit (optional; saved in config)`,
272
+ placeholder: "requests",
273
+ }), prompts);
274
+ if (unitAnswer === null)
275
+ return null;
276
+ unit = unitAnswer;
277
+ if (unit) {
278
+ const position = await selectChoice(prompts, {
279
+ message: `Mapping ${ordinal} unit position`,
280
+ options: [
281
+ { label: "Before the value", value: "prefix" },
282
+ { label: "After the value", value: "suffix" },
283
+ ],
284
+ initialValue: "suffix",
285
+ });
286
+ if (!position)
287
+ return null;
288
+ unitPosition = position;
289
+ }
290
+ }
291
+ const resetTime = await promptOptionalTimestamp(prompts, "reset time");
292
+ if (resetTime === null)
293
+ return null;
294
+ const observedTime = await promptOptionalTimestamp(prompts, "observed time");
295
+ if (observedTime === null)
296
+ return null;
297
+ return {
298
+ resultType,
299
+ name,
300
+ ...(label ? { label } : {}),
301
+ ...(unit ? { unit, unitPosition } : {}),
302
+ ...(resetTime ? { resetTime } : {}),
303
+ ...(observedTime ? { observedTime } : {}),
304
+ metric,
305
+ };
306
+ }
307
+ export async function promptJsonV1Adapter(prompts) {
308
+ const nestedRows = await confirmChoice(prompts, "Are response rows inside a nested property?", false);
309
+ if (nestedRows === null)
310
+ return { state: "cancelled" };
311
+ const rowsPath = nestedRows ? await promptPath(prompts, "Rows path") : undefined;
312
+ if (rowsPath === null)
313
+ return { state: "cancelled" };
314
+ const mappings = [];
315
+ while (mappings.length < JSON_V1_MAX_MAPPINGS) {
316
+ const mapping = await promptMapping(prompts, mappings.length + 1);
317
+ if (!mapping)
318
+ return { state: "cancelled" };
319
+ mappings.push(mapping);
320
+ if (mappings.length === JSON_V1_MAX_MAPPINGS)
321
+ break;
322
+ const addAnother = await confirmChoice(prompts, "Add another response mapping?", false);
323
+ if (addAnother === null)
324
+ return { state: "cancelled" };
325
+ if (!addAnother)
326
+ break;
327
+ }
328
+ return {
329
+ state: "complete",
330
+ adapter: {
331
+ ...(rowsPath ? { rowsPath } : {}),
332
+ mappings,
333
+ },
334
+ };
335
+ }
336
+ //# sourceMappingURL=provider-add-json-v1-questionnaire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-add-json-v1-questionnaire.js","sourceRoot":"","sources":["../../src/lib/provider-add-json-v1-questionnaire.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import type { QuotaProviderContext } from "./entries.js";
2
2
  import { type CanonicalQuotaProviderId } from "./provider-metadata.js";
3
3
  export declare function isAnyProviderIdAvailable(params: {
4
- ctx: Pick<QuotaProviderContext, "client">;
4
+ ctx: Pick<QuotaProviderContext, "resolveRuntimeProviderIds">;
5
5
  candidateIds: readonly string[];
6
6
  fallbackOnError: boolean;
7
7
  }): Promise<boolean>;
8
8
  export declare function isCanonicalProviderAvailable(params: {
9
- ctx: Pick<QuotaProviderContext, "client">;
9
+ ctx: Pick<QuotaProviderContext, "resolveRuntimeProviderIds">;
10
10
  providerId: CanonicalQuotaProviderId;
11
11
  fallbackOnError: boolean;
12
12
  }): Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"provider-availability.d.ts","sourceRoot":"","sources":["../../src/lib/provider-availability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,wBAAwB,CAAC;AAEhC,wBAAsB,wBAAwB,CAAC,MAAM,EAAE;IACrD,GAAG,EAAE,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IAC1C,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,eAAe,EAAE,OAAO,CAAC;CAC1B,GAAG,OAAO,CAAC,OAAO,CAAC,CAUnB;AAED,wBAAsB,4BAA4B,CAAC,MAAM,EAAE;IACzD,GAAG,EAAE,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IAC1C,UAAU,EAAE,wBAAwB,CAAC;IACrC,eAAe,EAAE,OAAO,CAAC;CAC1B,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnB"}
1
+ {"version":3,"file":"provider-availability.d.ts","sourceRoot":"","sources":["../../src/lib/provider-availability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAA8B,KAAK,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAEnG,wBAAsB,wBAAwB,CAAC,MAAM,EAAE;IACrD,GAAG,EAAE,IAAI,CAAC,oBAAoB,EAAE,2BAA2B,CAAC,CAAC;IAC7D,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,eAAe,EAAE,OAAO,CAAC;CAC1B,GAAG,OAAO,CAAC,OAAO,CAAC,CASnB;AAED,wBAAsB,4BAA4B,CAAC,MAAM,EAAE;IACzD,GAAG,EAAE,IAAI,CAAC,oBAAoB,EAAE,2BAA2B,CAAC,CAAC;IAC7D,UAAU,EAAE,wBAAwB,CAAC;IACrC,eAAe,EAAE,OAAO,CAAC;CAC1B,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnB"}
@@ -1,9 +1,8 @@
1
- import { getQuotaProviderRuntimeIds, } from "./provider-metadata.js";
1
+ import { getQuotaProviderRuntimeIds } from "./provider-metadata.js";
2
2
  export async function isAnyProviderIdAvailable(params) {
3
3
  const { ctx, candidateIds, fallbackOnError } = params;
4
4
  try {
5
- const resp = await ctx.client.config.providers();
6
- const ids = new Set((resp.data?.providers ?? []).map((p) => p.id));
5
+ const ids = await ctx.resolveRuntimeProviderIds();
7
6
  return candidateIds.some((id) => ids.has(id));
8
7
  }
9
8
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"provider-availability.js","sourceRoot":"","sources":["../../src/lib/provider-availability.ts"],"names":[],"mappings":"AACA,OAAO,EACL,0BAA0B,GAE3B,MAAM,wBAAwB,CAAC;AAEhC,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,MAI9C;IACC,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;IAEtD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnE,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,eAAe,CAAC;IACzB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,MAIlD;IACC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;IACpD,OAAO,wBAAwB,CAAC;QAC9B,GAAG;QACH,YAAY,EAAE,0BAA0B,CAAC,UAAU,CAAC;QACpD,eAAe;KAChB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"provider-availability.js","sourceRoot":"","sources":["../../src/lib/provider-availability.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAiC,MAAM,wBAAwB,CAAC;AAEnG,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,MAI9C;IACC,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;IAEtD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,yBAAyB,EAAE,CAAC;QAClD,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,eAAe,CAAC;IACzB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,MAIlD;IACC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;IACpD,OAAO,wBAAwB,CAAC;QAC9B,GAAG;QACH,YAAY,EAAE,0BAA0B,CAAC,UAAU,CAAC;QACpD,eAAe;KAChB,CAAC,CAAC;AACL,CAAC"}