anypick 1.0.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 (1231) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +589 -0
  3. package/dist/adapters.d.ts +4 -0
  4. package/dist/adapters.d.ts.map +1 -0
  5. package/dist/adapters.js +2 -0
  6. package/dist/catalog/model-fetch.d.ts +34 -0
  7. package/dist/catalog/model-fetch.d.ts.map +1 -0
  8. package/dist/catalog/model-fetch.js +99 -0
  9. package/dist/catalog/model-fetch.js.map +1 -0
  10. package/dist/catalog/providers.d.ts +42 -0
  11. package/dist/catalog/providers.d.ts.map +1 -0
  12. package/dist/catalog/providers.js +424 -0
  13. package/dist/catalog/providers.js.map +1 -0
  14. package/dist/cli/bootstrap.d.ts +3 -0
  15. package/dist/cli/bootstrap.d.ts.map +1 -0
  16. package/dist/cli/bootstrap.js +78 -0
  17. package/dist/cli/bootstrap.js.map +1 -0
  18. package/dist/cli/commands.d.ts +29 -0
  19. package/dist/cli/commands.d.ts.map +1 -0
  20. package/dist/cli/commands.js +1043 -0
  21. package/dist/cli/commands.js.map +1 -0
  22. package/dist/cli/completion.d.ts +6 -0
  23. package/dist/cli/completion.d.ts.map +1 -0
  24. package/dist/cli/completion.js +202 -0
  25. package/dist/cli/completion.js.map +1 -0
  26. package/dist/cli/errors.d.ts +20 -0
  27. package/dist/cli/errors.d.ts.map +1 -0
  28. package/dist/cli/errors.js +47 -0
  29. package/dist/cli/errors.js.map +1 -0
  30. package/dist/cli/format.d.ts +6 -0
  31. package/dist/cli/format.d.ts.map +1 -0
  32. package/dist/cli/format.js +75 -0
  33. package/dist/cli/format.js.map +1 -0
  34. package/dist/cli/help.d.ts +6 -0
  35. package/dist/cli/help.d.ts.map +1 -0
  36. package/dist/cli/help.js +66 -0
  37. package/dist/cli/help.js.map +1 -0
  38. package/dist/cli/interactive-accounts.d.ts +3 -0
  39. package/dist/cli/interactive-accounts.d.ts.map +1 -0
  40. package/dist/cli/interactive-accounts.js +86 -0
  41. package/dist/cli/interactive-accounts.js.map +1 -0
  42. package/dist/cli/interactive-maintenance.d.ts +4 -0
  43. package/dist/cli/interactive-maintenance.d.ts.map +1 -0
  44. package/dist/cli/interactive-maintenance.js +30 -0
  45. package/dist/cli/interactive-maintenance.js.map +1 -0
  46. package/dist/cli/interactive.d.ts +14 -0
  47. package/dist/cli/interactive.d.ts.map +1 -0
  48. package/dist/cli/interactive.js +242 -0
  49. package/dist/cli/interactive.js.map +1 -0
  50. package/dist/cli/launch-client.d.ts +18 -0
  51. package/dist/cli/launch-client.d.ts.map +1 -0
  52. package/dist/cli/launch-client.js +117 -0
  53. package/dist/cli/launch-client.js.map +1 -0
  54. package/dist/cli/launcher-model.d.ts +64 -0
  55. package/dist/cli/launcher-model.d.ts.map +1 -0
  56. package/dist/cli/launcher-model.js +200 -0
  57. package/dist/cli/launcher-model.js.map +1 -0
  58. package/dist/cli/launcher-render.d.ts +22 -0
  59. package/dist/cli/launcher-render.d.ts.map +1 -0
  60. package/dist/cli/launcher-render.js +113 -0
  61. package/dist/cli/launcher-render.js.map +1 -0
  62. package/dist/cli/launcher.d.ts +27 -0
  63. package/dist/cli/launcher.d.ts.map +1 -0
  64. package/dist/cli/launcher.js +93 -0
  65. package/dist/cli/launcher.js.map +1 -0
  66. package/dist/cli/local-health.d.ts +17 -0
  67. package/dist/cli/local-health.d.ts.map +1 -0
  68. package/dist/cli/local-health.js +31 -0
  69. package/dist/cli/local-health.js.map +1 -0
  70. package/dist/cli/plugin-commands.d.ts +4 -0
  71. package/dist/cli/plugin-commands.d.ts.map +1 -0
  72. package/dist/cli/plugin-commands.js +160 -0
  73. package/dist/cli/plugin-commands.js.map +1 -0
  74. package/dist/cli/primary.d.ts +18 -0
  75. package/dist/cli/primary.d.ts.map +1 -0
  76. package/dist/cli/primary.js +593 -0
  77. package/dist/cli/primary.js.map +1 -0
  78. package/dist/cli/render-util.d.ts +24 -0
  79. package/dist/cli/render-util.d.ts.map +1 -0
  80. package/dist/cli/render-util.js +58 -0
  81. package/dist/cli/render-util.js.map +1 -0
  82. package/dist/cli/ux.d.ts +43 -0
  83. package/dist/cli/ux.d.ts.map +1 -0
  84. package/dist/cli/ux.js +114 -0
  85. package/dist/cli/ux.js.map +1 -0
  86. package/dist/cli.d.ts +3 -0
  87. package/dist/cli.d.ts.map +1 -0
  88. package/dist/cli.js +35 -0
  89. package/dist/cli.js.map +1 -0
  90. package/dist/clients/claude-client-apply.d.ts +8 -0
  91. package/dist/clients/claude-client-apply.d.ts.map +1 -0
  92. package/dist/clients/claude-client-apply.js +108 -0
  93. package/dist/clients/claude-client-apply.js.map +1 -0
  94. package/dist/clients/claude-code.d.ts +5 -0
  95. package/dist/clients/claude-code.d.ts.map +1 -0
  96. package/dist/clients/claude-code.js +189 -0
  97. package/dist/clients/claude-code.js.map +1 -0
  98. package/dist/clients/claude-settings-guard.d.ts +18 -0
  99. package/dist/clients/claude-settings-guard.d.ts.map +1 -0
  100. package/dist/clients/codex-desktop-catalog.d.ts +67 -0
  101. package/dist/clients/codex-desktop-catalog.d.ts.map +1 -0
  102. package/dist/clients/codex-desktop-catalog.js +212 -0
  103. package/dist/clients/codex-desktop-catalog.js.map +1 -0
  104. package/dist/clients/codex.d.ts +181 -0
  105. package/dist/clients/codex.d.ts.map +1 -0
  106. package/dist/clients/codex.js +783 -0
  107. package/dist/clients/codex.js.map +1 -0
  108. package/dist/clients/env-files.d.ts +14 -0
  109. package/dist/clients/env-files.d.ts.map +1 -0
  110. package/dist/clients/env-files.js +50 -0
  111. package/dist/clients/env-files.js.map +1 -0
  112. package/dist/clients/gemini-client-utils.d.ts +4 -0
  113. package/dist/clients/gemini-client-utils.d.ts.map +1 -0
  114. package/dist/clients/gemini-client-utils.js +33 -0
  115. package/dist/clients/gemini-client-utils.js.map +1 -0
  116. package/dist/clients/gemini.d.ts +16 -0
  117. package/dist/clients/gemini.d.ts.map +1 -0
  118. package/dist/clients/gemini.js +233 -0
  119. package/dist/clients/gemini.js.map +1 -0
  120. package/dist/clients/index.d.ts +14 -0
  121. package/dist/clients/index.d.ts.map +1 -0
  122. package/dist/clients/index.js +18 -0
  123. package/dist/clients/index.js.map +1 -0
  124. package/dist/clients/isolation.d.ts +28 -0
  125. package/dist/clients/isolation.d.ts.map +1 -0
  126. package/dist/clients/isolation.js +131 -0
  127. package/dist/clients/isolation.js.map +1 -0
  128. package/dist/clients/kiro.d.ts +10 -0
  129. package/dist/clients/kiro.d.ts.map +1 -0
  130. package/dist/clients/kiro.js +168 -0
  131. package/dist/clients/kiro.js.map +1 -0
  132. package/dist/clients/model-roles.d.ts +58 -0
  133. package/dist/clients/model-roles.d.ts.map +1 -0
  134. package/dist/clients/model-roles.js +139 -0
  135. package/dist/clients/model-roles.js.map +1 -0
  136. package/dist/clients/registry.d.ts +7 -0
  137. package/dist/clients/registry.d.ts.map +1 -0
  138. package/dist/clients/registry.js +16 -0
  139. package/dist/clients/registry.js.map +1 -0
  140. package/dist/clients/resolve.d.ts +27 -0
  141. package/dist/clients/resolve.d.ts.map +1 -0
  142. package/dist/clients/resolve.js +49 -0
  143. package/dist/clients/resolve.js.map +1 -0
  144. package/dist/core/account-codec.d.ts +32 -0
  145. package/dist/core/account-codec.d.ts.map +1 -0
  146. package/dist/core/account-codec.js +134 -0
  147. package/dist/core/account-codec.js.map +1 -0
  148. package/dist/core/account-transfer.d.ts +20 -0
  149. package/dist/core/account-transfer.d.ts.map +1 -0
  150. package/dist/core/account-transfer.js +136 -0
  151. package/dist/core/account-transfer.js.map +1 -0
  152. package/dist/core/activation-executor.d.ts +72 -0
  153. package/dist/core/activation-executor.d.ts.map +1 -0
  154. package/dist/core/activation-executor.js +690 -0
  155. package/dist/core/activation-executor.js.map +1 -0
  156. package/dist/core/activation-models.d.ts +6 -0
  157. package/dist/core/activation-models.d.ts.map +1 -0
  158. package/dist/core/activation-models.js +33 -0
  159. package/dist/core/activation-models.js.map +1 -0
  160. package/dist/core/activation-planner.d.ts +38 -0
  161. package/dist/core/activation-planner.d.ts.map +1 -0
  162. package/dist/core/activation-planner.js +248 -0
  163. package/dist/core/activation-planner.js.map +1 -0
  164. package/dist/core/activation-protocol.d.ts +3 -0
  165. package/dist/core/activation-protocol.d.ts.map +1 -0
  166. package/dist/core/activation-protocol.js +9 -0
  167. package/dist/core/activation-protocol.js.map +1 -0
  168. package/dist/core/activation-transport.d.ts +15 -0
  169. package/dist/core/activation-transport.d.ts.map +1 -0
  170. package/dist/core/activation-transport.js +23 -0
  171. package/dist/core/activation-transport.js.map +1 -0
  172. package/dist/core/app.d.ts +149 -0
  173. package/dist/core/app.d.ts.map +1 -0
  174. package/dist/core/app.js +372 -0
  175. package/dist/core/app.js.map +1 -0
  176. package/dist/core/binding-service.d.ts +93 -0
  177. package/dist/core/binding-service.d.ts.map +1 -0
  178. package/dist/core/binding-service.js +281 -0
  179. package/dist/core/binding-service.js.map +1 -0
  180. package/dist/core/binding-store.d.ts +23 -0
  181. package/dist/core/binding-store.d.ts.map +1 -0
  182. package/dist/core/binding-store.js +154 -0
  183. package/dist/core/binding-store.js.map +1 -0
  184. package/dist/core/brand.d.ts +18 -0
  185. package/dist/core/brand.d.ts.map +1 -0
  186. package/dist/core/brand.js +22 -0
  187. package/dist/core/brand.js.map +1 -0
  188. package/dist/core/capabilities.d.ts +30 -0
  189. package/dist/core/capabilities.d.ts.map +1 -0
  190. package/dist/core/capabilities.js +27 -0
  191. package/dist/core/capabilities.js.map +1 -0
  192. package/dist/core/client-state-store.d.ts +17 -0
  193. package/dist/core/client-state-store.d.ts.map +1 -0
  194. package/dist/core/client-state-store.js +47 -0
  195. package/dist/core/client-state-store.js.map +1 -0
  196. package/dist/core/codec/account.d.ts +52 -0
  197. package/dist/core/codec/account.d.ts.map +1 -0
  198. package/dist/core/codec/account.js +69 -0
  199. package/dist/core/codec/account.js.map +1 -0
  200. package/dist/core/codec/bindings.d.ts +38 -0
  201. package/dist/core/codec/bindings.d.ts.map +1 -0
  202. package/dist/core/codec/bindings.js +79 -0
  203. package/dist/core/codec/bindings.js.map +1 -0
  204. package/dist/core/codec/operations.d.ts +36 -0
  205. package/dist/core/codec/operations.d.ts.map +1 -0
  206. package/dist/core/codec/operations.js +82 -0
  207. package/dist/core/codec/operations.js.map +1 -0
  208. package/dist/core/codec/primitives.d.ts +59 -0
  209. package/dist/core/codec/primitives.d.ts.map +1 -0
  210. package/dist/core/codec/primitives.js +123 -0
  211. package/dist/core/codec/primitives.js.map +1 -0
  212. package/dist/core/codec/proxy-hub.d.ts +43 -0
  213. package/dist/core/codec/proxy-hub.d.ts.map +1 -0
  214. package/dist/core/codec/proxy-hub.js +69 -0
  215. package/dist/core/codec/proxy-hub.js.map +1 -0
  216. package/dist/core/codec/runtime.d.ts +41 -0
  217. package/dist/core/codec/runtime.d.ts.map +1 -0
  218. package/dist/core/codec/runtime.js +66 -0
  219. package/dist/core/codec/runtime.js.map +1 -0
  220. package/dist/core/codec.d.ts +43 -0
  221. package/dist/core/codec.d.ts.map +1 -0
  222. package/dist/core/codec.js +69 -0
  223. package/dist/core/codec.js.map +1 -0
  224. package/dist/core/codex-live-config.d.ts +92 -0
  225. package/dist/core/codex-live-config.d.ts.map +1 -0
  226. package/dist/core/codex-live-config.js +263 -0
  227. package/dist/core/codex-live-config.js.map +1 -0
  228. package/dist/core/config-service.d.ts +35 -0
  229. package/dist/core/config-service.d.ts.map +1 -0
  230. package/dist/core/config-service.js +87 -0
  231. package/dist/core/config-service.js.map +1 -0
  232. package/dist/core/config.d.ts +14 -0
  233. package/dist/core/config.d.ts.map +1 -0
  234. package/dist/core/config.js +45 -0
  235. package/dist/core/config.js.map +1 -0
  236. package/dist/core/db-schema.d.ts +30 -0
  237. package/dist/core/db-schema.d.ts.map +1 -0
  238. package/dist/core/db-schema.js +278 -0
  239. package/dist/core/db-schema.js.map +1 -0
  240. package/dist/core/db.d.ts +72 -0
  241. package/dist/core/db.d.ts.map +1 -0
  242. package/dist/core/db.js +192 -0
  243. package/dist/core/db.js.map +1 -0
  244. package/dist/core/doctor-fixes.d.ts +3 -0
  245. package/dist/core/doctor-fixes.d.ts.map +1 -0
  246. package/dist/core/doctor-fixes.js +102 -0
  247. package/dist/core/doctor-fixes.js.map +1 -0
  248. package/dist/core/doctor-format.d.ts +10 -0
  249. package/dist/core/doctor-format.d.ts.map +1 -0
  250. package/dist/core/doctor-format.js +45 -0
  251. package/dist/core/doctor-format.js.map +1 -0
  252. package/dist/core/doctor-report.d.ts +3 -0
  253. package/dist/core/doctor-report.d.ts.map +1 -0
  254. package/dist/core/doctor-report.js +174 -0
  255. package/dist/core/doctor-report.js.map +1 -0
  256. package/dist/core/doctor-scan.d.ts +7 -0
  257. package/dist/core/doctor-scan.d.ts.map +1 -0
  258. package/dist/core/doctor-scan.js +139 -0
  259. package/dist/core/doctor-scan.js.map +1 -0
  260. package/dist/core/doctor-types.d.ts +89 -0
  261. package/dist/core/doctor-types.d.ts.map +1 -0
  262. package/dist/core/doctor-types.js +14 -0
  263. package/dist/core/doctor-types.js.map +1 -0
  264. package/dist/core/doctor-utils.d.ts +3 -0
  265. package/dist/core/doctor-utils.d.ts.map +1 -0
  266. package/dist/core/doctor-utils.js +36 -0
  267. package/dist/core/doctor-utils.js.map +1 -0
  268. package/dist/core/doctor.d.ts +14 -0
  269. package/dist/core/doctor.d.ts.map +1 -0
  270. package/dist/core/doctor.js +127 -0
  271. package/dist/core/doctor.js.map +1 -0
  272. package/dist/core/events.d.ts +58 -0
  273. package/dist/core/events.d.ts.map +1 -0
  274. package/dist/core/events.js +88 -0
  275. package/dist/core/events.js.map +1 -0
  276. package/dist/core/journal.d.ts +23 -0
  277. package/dist/core/journal.d.ts.map +1 -0
  278. package/dist/core/journal.js +93 -0
  279. package/dist/core/journal.js.map +1 -0
  280. package/dist/core/lease-store.d.ts +22 -0
  281. package/dist/core/lease-store.d.ts.map +1 -0
  282. package/dist/core/lease-store.js +81 -0
  283. package/dist/core/lease-store.js.map +1 -0
  284. package/dist/core/migrate-bindings.d.ts +10 -0
  285. package/dist/core/migrate-bindings.d.ts.map +1 -0
  286. package/dist/core/migrate-bindings.js +98 -0
  287. package/dist/core/migrate-bindings.js.map +1 -0
  288. package/dist/core/migrate-fs.d.ts +11 -0
  289. package/dist/core/migrate-fs.d.ts.map +1 -0
  290. package/dist/core/migrate-fs.js +184 -0
  291. package/dist/core/migrate-fs.js.map +1 -0
  292. package/dist/core/model-cache-store.d.ts +27 -0
  293. package/dist/core/model-cache-store.d.ts.map +1 -0
  294. package/dist/core/model-cache-store.js +50 -0
  295. package/dist/core/model-cache-store.js.map +1 -0
  296. package/dist/core/model-discovery.d.ts +66 -0
  297. package/dist/core/model-discovery.d.ts.map +1 -0
  298. package/dist/core/model-discovery.js +127 -0
  299. package/dist/core/model-discovery.js.map +1 -0
  300. package/dist/core/model-policy.d.ts +40 -0
  301. package/dist/core/model-policy.d.ts.map +1 -0
  302. package/dist/core/model-policy.js +77 -0
  303. package/dist/core/model-policy.js.map +1 -0
  304. package/dist/core/model-roles.d.ts +9 -0
  305. package/dist/core/model-roles.d.ts.map +1 -0
  306. package/dist/core/model-roles.js +20 -0
  307. package/dist/core/model-roles.js.map +1 -0
  308. package/dist/core/mutation-lock.d.ts +31 -0
  309. package/dist/core/mutation-lock.d.ts.map +1 -0
  310. package/dist/core/mutation-lock.js +69 -0
  311. package/dist/core/mutation-lock.js.map +1 -0
  312. package/dist/core/paths.d.ts +49 -0
  313. package/dist/core/paths.d.ts.map +1 -0
  314. package/dist/core/paths.js +110 -0
  315. package/dist/core/paths.js.map +1 -0
  316. package/dist/core/plugin-loader.d.ts +40 -0
  317. package/dist/core/plugin-loader.d.ts.map +1 -0
  318. package/dist/core/plugin-loader.js +184 -0
  319. package/dist/core/plugin-loader.js.map +1 -0
  320. package/dist/core/plugin-service.d.ts +32 -0
  321. package/dist/core/plugin-service.d.ts.map +1 -0
  322. package/dist/core/plugin-service.js +110 -0
  323. package/dist/core/plugin-service.js.map +1 -0
  324. package/dist/core/plugin-store.d.ts +18 -0
  325. package/dist/core/plugin-store.d.ts.map +1 -0
  326. package/dist/core/plugin-store.js +50 -0
  327. package/dist/core/plugin-store.js.map +1 -0
  328. package/dist/core/pool-store.d.ts +44 -0
  329. package/dist/core/pool-store.d.ts.map +1 -0
  330. package/dist/core/pool-store.js +198 -0
  331. package/dist/core/pool-store.js.map +1 -0
  332. package/dist/core/preset-store.d.ts +29 -0
  333. package/dist/core/preset-store.d.ts.map +1 -0
  334. package/dist/core/preset-store.js +105 -0
  335. package/dist/core/preset-store.js.map +1 -0
  336. package/dist/core/profile-service.d.ts +50 -0
  337. package/dist/core/profile-service.d.ts.map +1 -0
  338. package/dist/core/profile-service.js +149 -0
  339. package/dist/core/profile-service.js.map +1 -0
  340. package/dist/core/profile-store.d.ts +20 -0
  341. package/dist/core/profile-store.d.ts.map +1 -0
  342. package/dist/core/profile-store.js +92 -0
  343. package/dist/core/profile-store.js.map +1 -0
  344. package/dist/core/profile-synth.d.ts +24 -0
  345. package/dist/core/profile-synth.d.ts.map +1 -0
  346. package/dist/core/profile-synth.js +30 -0
  347. package/dist/core/profile-synth.js.map +1 -0
  348. package/dist/core/project-root.d.ts +7 -0
  349. package/dist/core/project-root.d.ts.map +1 -0
  350. package/dist/core/project-root.js +23 -0
  351. package/dist/core/project-root.js.map +1 -0
  352. package/dist/core/proxy-hub-cli.d.ts +3 -0
  353. package/dist/core/proxy-hub-cli.d.ts.map +1 -0
  354. package/dist/core/proxy-hub-cli.js +80 -0
  355. package/dist/core/proxy-hub-cli.js.map +1 -0
  356. package/dist/core/proxy-hub-routes.d.ts +22 -0
  357. package/dist/core/proxy-hub-routes.d.ts.map +1 -0
  358. package/dist/core/proxy-hub-routes.js +92 -0
  359. package/dist/core/proxy-hub-routes.js.map +1 -0
  360. package/dist/core/proxy-hub-server.d.ts +59 -0
  361. package/dist/core/proxy-hub-server.d.ts.map +1 -0
  362. package/dist/core/proxy-hub-server.js +409 -0
  363. package/dist/core/proxy-hub-server.js.map +1 -0
  364. package/dist/core/proxy-hub-service.d.ts +97 -0
  365. package/dist/core/proxy-hub-service.d.ts.map +1 -0
  366. package/dist/core/proxy-hub-service.js +553 -0
  367. package/dist/core/proxy-hub-service.js.map +1 -0
  368. package/dist/core/proxy-hub-store.d.ts +28 -0
  369. package/dist/core/proxy-hub-store.d.ts.map +1 -0
  370. package/dist/core/proxy-hub-store.js +152 -0
  371. package/dist/core/proxy-hub-store.js.map +1 -0
  372. package/dist/core/proxy-lifecycle.d.ts +26 -0
  373. package/dist/core/proxy-lifecycle.d.ts.map +1 -0
  374. package/dist/core/proxy-lifecycle.js +33 -0
  375. package/dist/core/proxy-lifecycle.js.map +1 -0
  376. package/dist/core/proxy-ports.d.ts +50 -0
  377. package/dist/core/proxy-ports.d.ts.map +1 -0
  378. package/dist/core/proxy-ports.js +86 -0
  379. package/dist/core/proxy-ports.js.map +1 -0
  380. package/dist/core/proxy-service.d.ts +184 -0
  381. package/dist/core/proxy-service.d.ts.map +1 -0
  382. package/dist/core/proxy-service.js +860 -0
  383. package/dist/core/proxy-service.js.map +1 -0
  384. package/dist/core/quota-guard-policy.d.ts +8 -0
  385. package/dist/core/quota-guard-policy.d.ts.map +1 -0
  386. package/dist/core/quota-guard-policy.js +21 -0
  387. package/dist/core/quota-guard-policy.js.map +1 -0
  388. package/dist/core/realign-proxy-clients.d.ts +19 -0
  389. package/dist/core/realign-proxy-clients.d.ts.map +1 -0
  390. package/dist/core/realign-proxy-clients.js +40 -0
  391. package/dist/core/realign-proxy-clients.js.map +1 -0
  392. package/dist/core/refs.d.ts +84 -0
  393. package/dist/core/refs.d.ts.map +1 -0
  394. package/dist/core/refs.js +250 -0
  395. package/dist/core/refs.js.map +1 -0
  396. package/dist/core/registry.d.ts +46 -0
  397. package/dist/core/registry.d.ts.map +1 -0
  398. package/dist/core/registry.js +70 -0
  399. package/dist/core/registry.js.map +1 -0
  400. package/dist/core/resolve-source.d.ts +54 -0
  401. package/dist/core/resolve-source.d.ts.map +1 -0
  402. package/dist/core/resolve-source.js +148 -0
  403. package/dist/core/resolve-source.js.map +1 -0
  404. package/dist/core/runtime-service.d.ts +158 -0
  405. package/dist/core/runtime-service.d.ts.map +1 -0
  406. package/dist/core/runtime-service.js +422 -0
  407. package/dist/core/runtime-service.js.map +1 -0
  408. package/dist/core/service.d.ts +200 -0
  409. package/dist/core/service.d.ts.map +1 -0
  410. package/dist/core/service.js +643 -0
  411. package/dist/core/service.js.map +1 -0
  412. package/dist/core/store-snapshot.d.ts +10 -0
  413. package/dist/core/store-snapshot.d.ts.map +1 -0
  414. package/dist/core/store-snapshot.js +79 -0
  415. package/dist/core/store-snapshot.js.map +1 -0
  416. package/dist/core/store.d.ts +68 -0
  417. package/dist/core/store.d.ts.map +1 -0
  418. package/dist/core/store.js +159 -0
  419. package/dist/core/store.js.map +1 -0
  420. package/dist/core/tray-runtime.d.ts +15 -0
  421. package/dist/core/tray-runtime.d.ts.map +1 -0
  422. package/dist/core/tray-runtime.js +33 -0
  423. package/dist/core/tray-runtime.js.map +1 -0
  424. package/dist/core/tray-settings-service.d.ts +7 -0
  425. package/dist/core/tray-settings-service.d.ts.map +1 -0
  426. package/dist/core/tray-settings-service.js +24 -0
  427. package/dist/core/tray-settings-service.js.map +1 -0
  428. package/dist/core/update.d.ts +26 -0
  429. package/dist/core/update.d.ts.map +1 -0
  430. package/dist/core/update.js +128 -0
  431. package/dist/core/update.js.map +1 -0
  432. package/dist/index.d.ts +12 -0
  433. package/dist/index.d.ts.map +1 -0
  434. package/dist/index.js +7 -0
  435. package/dist/network/egress/allowlist.d.ts +2 -0
  436. package/dist/network/egress/allowlist.d.ts.map +1 -0
  437. package/dist/network/egress/allowlist.js +14 -0
  438. package/dist/network/egress/allowlist.js.map +1 -0
  439. package/dist/network/egress/direct.d.ts +17 -0
  440. package/dist/network/egress/direct.d.ts.map +1 -0
  441. package/dist/network/egress/direct.js +28 -0
  442. package/dist/network/egress/direct.js.map +1 -0
  443. package/dist/network/egress/errors.d.ts +4 -0
  444. package/dist/network/egress/errors.d.ts.map +1 -0
  445. package/dist/network/egress/errors.js +8 -0
  446. package/dist/network/egress/errors.js.map +1 -0
  447. package/dist/network/egress/index.d.ts +6 -0
  448. package/dist/network/egress/index.d.ts.map +1 -0
  449. package/dist/network/egress/index.js +11 -0
  450. package/dist/network/egress/index.js.map +1 -0
  451. package/dist/network/egress/types.d.ts +16 -0
  452. package/dist/network/egress/types.d.ts.map +1 -0
  453. package/dist/presentation/client-name.d.ts +14 -0
  454. package/dist/presentation/client-name.d.ts.map +1 -0
  455. package/dist/presentation/client-name.js +22 -0
  456. package/dist/presentation/client-name.js.map +1 -0
  457. package/dist/presentation/layout.d.ts +7 -0
  458. package/dist/presentation/layout.d.ts.map +1 -0
  459. package/dist/presentation/layout.js +10 -0
  460. package/dist/presentation/layout.js.map +1 -0
  461. package/dist/providers/auth-fingerprint.d.ts +56 -0
  462. package/dist/providers/auth-fingerprint.d.ts.map +1 -0
  463. package/dist/providers/auth-fingerprint.js +163 -0
  464. package/dist/providers/auth-fingerprint.js.map +1 -0
  465. package/dist/providers/claude.d.ts +43 -0
  466. package/dist/providers/claude.d.ts.map +1 -0
  467. package/dist/providers/claude.js +191 -0
  468. package/dist/providers/claude.js.map +1 -0
  469. package/dist/providers/codex-identity.d.ts +13 -0
  470. package/dist/providers/codex-identity.d.ts.map +1 -0
  471. package/dist/providers/codex-identity.js +69 -0
  472. package/dist/providers/codex-identity.js.map +1 -0
  473. package/dist/providers/codex-refresh.d.ts +30 -0
  474. package/dist/providers/codex-refresh.d.ts.map +1 -0
  475. package/dist/providers/codex-refresh.js +64 -0
  476. package/dist/providers/codex-refresh.js.map +1 -0
  477. package/dist/providers/codex-usage.d.ts +3 -0
  478. package/dist/providers/codex-usage.d.ts.map +1 -0
  479. package/dist/providers/codex-usage.js +42 -0
  480. package/dist/providers/codex-usage.js.map +1 -0
  481. package/dist/providers/codex.d.ts +61 -0
  482. package/dist/providers/codex.d.ts.map +1 -0
  483. package/dist/providers/codex.js +212 -0
  484. package/dist/providers/codex.js.map +1 -0
  485. package/dist/providers/gemini-antigravity-oauth.d.ts +83 -0
  486. package/dist/providers/gemini-antigravity-oauth.d.ts.map +1 -0
  487. package/dist/providers/gemini-antigravity-oauth.js +343 -0
  488. package/dist/providers/gemini-antigravity-oauth.js.map +1 -0
  489. package/dist/providers/gemini-antigravity-state.d.ts +35 -0
  490. package/dist/providers/gemini-antigravity-state.d.ts.map +1 -0
  491. package/dist/providers/gemini-antigravity-state.js +433 -0
  492. package/dist/providers/gemini-antigravity-state.js.map +1 -0
  493. package/dist/providers/gemini-env.d.ts +8 -0
  494. package/dist/providers/gemini-env.d.ts.map +1 -0
  495. package/dist/providers/gemini-env.js +78 -0
  496. package/dist/providers/gemini-env.js.map +1 -0
  497. package/dist/providers/gemini-identity.d.ts +2 -0
  498. package/dist/providers/gemini-identity.d.ts.map +1 -0
  499. package/dist/providers/gemini-identity.js +14 -0
  500. package/dist/providers/gemini-identity.js.map +1 -0
  501. package/dist/providers/gemini-proxy/main.d.ts +3 -0
  502. package/dist/providers/gemini-proxy/main.d.ts.map +1 -0
  503. package/dist/providers/gemini-proxy/main.js +176 -0
  504. package/dist/providers/gemini-proxy/main.js.map +1 -0
  505. package/dist/providers/gemini-proxy/server.d.ts +57 -0
  506. package/dist/providers/gemini-proxy/server.d.ts.map +1 -0
  507. package/dist/providers/gemini-proxy/server.js +1240 -0
  508. package/dist/providers/gemini-proxy/server.js.map +1 -0
  509. package/dist/providers/gemini-proxy-entry.d.ts +2 -0
  510. package/dist/providers/gemini-proxy-entry.d.ts.map +1 -0
  511. package/dist/providers/gemini-proxy-entry.js +16 -0
  512. package/dist/providers/gemini-proxy-entry.js.map +1 -0
  513. package/dist/providers/gemini-proxy-lifecycle.d.ts +11 -0
  514. package/dist/providers/gemini-proxy-lifecycle.d.ts.map +1 -0
  515. package/dist/providers/gemini-proxy-lifecycle.js +131 -0
  516. package/dist/providers/gemini-proxy-lifecycle.js.map +1 -0
  517. package/dist/providers/gemini.d.ts +137 -0
  518. package/dist/providers/gemini.d.ts.map +1 -0
  519. package/dist/providers/gemini.js +471 -0
  520. package/dist/providers/gemini.js.map +1 -0
  521. package/dist/providers/grok-proxy/auth.d.ts +27 -0
  522. package/dist/providers/grok-proxy/auth.d.ts.map +1 -0
  523. package/dist/providers/grok-proxy/auth.js +123 -0
  524. package/dist/providers/grok-proxy/auth.js.map +1 -0
  525. package/dist/providers/grok-proxy/main.d.ts +3 -0
  526. package/dist/providers/grok-proxy/main.d.ts.map +1 -0
  527. package/dist/providers/grok-proxy/main.js +111 -0
  528. package/dist/providers/grok-proxy/main.js.map +1 -0
  529. package/dist/providers/grok-proxy/server.d.ts +46 -0
  530. package/dist/providers/grok-proxy/server.d.ts.map +1 -0
  531. package/dist/providers/grok-proxy/server.js +595 -0
  532. package/dist/providers/grok-proxy/server.js.map +1 -0
  533. package/dist/providers/grok.d.ts +38 -0
  534. package/dist/providers/grok.d.ts.map +1 -0
  535. package/dist/providers/grok.js +250 -0
  536. package/dist/providers/grok.js.map +1 -0
  537. package/dist/providers/index.d.ts +14 -0
  538. package/dist/providers/index.d.ts.map +1 -0
  539. package/dist/providers/index.js +23 -0
  540. package/dist/providers/index.js.map +1 -0
  541. package/dist/providers/kiro-secret-store.d.ts +39 -0
  542. package/dist/providers/kiro-secret-store.d.ts.map +1 -0
  543. package/dist/providers/kiro-secret-store.js +168 -0
  544. package/dist/providers/kiro-secret-store.js.map +1 -0
  545. package/dist/providers/kiro.d.ts +50 -0
  546. package/dist/providers/kiro.d.ts.map +1 -0
  547. package/dist/providers/kiro.js +373 -0
  548. package/dist/providers/kiro.js.map +1 -0
  549. package/dist/providers/model-policy.d.ts +15 -0
  550. package/dist/providers/model-policy.d.ts.map +1 -0
  551. package/dist/providers/model-policy.js +26 -0
  552. package/dist/providers/model-policy.js.map +1 -0
  553. package/dist/providers/opencode-auth.d.ts +67 -0
  554. package/dist/providers/opencode-auth.d.ts.map +1 -0
  555. package/dist/providers/opencode-auth.js +146 -0
  556. package/dist/providers/opencode-auth.js.map +1 -0
  557. package/dist/providers/opencode-cli-entry.d.ts +36 -0
  558. package/dist/providers/opencode-cli-entry.d.ts.map +1 -0
  559. package/dist/providers/opencode-cli-entry.js +90 -0
  560. package/dist/providers/opencode-cli-entry.js.map +1 -0
  561. package/dist/providers/opencode-proxy/abort.d.ts +8 -0
  562. package/dist/providers/opencode-proxy/abort.d.ts.map +1 -0
  563. package/dist/providers/opencode-proxy/abort.js +42 -0
  564. package/dist/providers/opencode-proxy/abort.js.map +1 -0
  565. package/dist/providers/opencode-proxy/anthropic-handler.d.ts +4 -0
  566. package/dist/providers/opencode-proxy/anthropic-handler.d.ts.map +1 -0
  567. package/dist/providers/opencode-proxy/anthropic-handler.js +108 -0
  568. package/dist/providers/opencode-proxy/anthropic-handler.js.map +1 -0
  569. package/dist/providers/opencode-proxy/auth.d.ts +38 -0
  570. package/dist/providers/opencode-proxy/auth.d.ts.map +1 -0
  571. package/dist/providers/opencode-proxy/auth.js +128 -0
  572. package/dist/providers/opencode-proxy/auth.js.map +1 -0
  573. package/dist/providers/opencode-proxy/body.d.ts +9 -0
  574. package/dist/providers/opencode-proxy/body.d.ts.map +1 -0
  575. package/dist/providers/opencode-proxy/body.js +69 -0
  576. package/dist/providers/opencode-proxy/body.js.map +1 -0
  577. package/dist/providers/opencode-proxy/catalog-handlers.d.ts +7 -0
  578. package/dist/providers/opencode-proxy/catalog-handlers.d.ts.map +1 -0
  579. package/dist/providers/opencode-proxy/catalog-handlers.js +132 -0
  580. package/dist/providers/opencode-proxy/catalog-handlers.js.map +1 -0
  581. package/dist/providers/opencode-proxy/catalog.d.ts +41 -0
  582. package/dist/providers/opencode-proxy/catalog.d.ts.map +1 -0
  583. package/dist/providers/opencode-proxy/catalog.js +146 -0
  584. package/dist/providers/opencode-proxy/catalog.js.map +1 -0
  585. package/dist/providers/opencode-proxy/cli.d.ts +2 -0
  586. package/dist/providers/opencode-proxy/cli.d.ts.map +1 -0
  587. package/dist/providers/opencode-proxy/cli.js +162 -0
  588. package/dist/providers/opencode-proxy/cli.js.map +1 -0
  589. package/dist/providers/opencode-proxy/constants.d.ts +13 -0
  590. package/dist/providers/opencode-proxy/constants.d.ts.map +1 -0
  591. package/dist/providers/opencode-proxy/constants.js +15 -0
  592. package/dist/providers/opencode-proxy/constants.js.map +1 -0
  593. package/dist/providers/opencode-proxy/context-budget.d.ts +31 -0
  594. package/dist/providers/opencode-proxy/context-budget.d.ts.map +1 -0
  595. package/dist/providers/opencode-proxy/context-budget.js +165 -0
  596. package/dist/providers/opencode-proxy/context-budget.js.map +1 -0
  597. package/dist/providers/opencode-proxy/errors.d.ts +5 -0
  598. package/dist/providers/opencode-proxy/errors.d.ts.map +1 -0
  599. package/dist/providers/opencode-proxy/errors.js +45 -0
  600. package/dist/providers/opencode-proxy/errors.js.map +1 -0
  601. package/dist/providers/opencode-proxy/forwarders.d.ts +7 -0
  602. package/dist/providers/opencode-proxy/forwarders.d.ts.map +1 -0
  603. package/dist/providers/opencode-proxy/forwarders.js +214 -0
  604. package/dist/providers/opencode-proxy/forwarders.js.map +1 -0
  605. package/dist/providers/opencode-proxy/http.d.ts +11 -0
  606. package/dist/providers/opencode-proxy/http.d.ts.map +1 -0
  607. package/dist/providers/opencode-proxy/http.js +97 -0
  608. package/dist/providers/opencode-proxy/http.js.map +1 -0
  609. package/dist/providers/opencode-proxy/models.d.ts +42 -0
  610. package/dist/providers/opencode-proxy/models.d.ts.map +1 -0
  611. package/dist/providers/opencode-proxy/models.js +148 -0
  612. package/dist/providers/opencode-proxy/models.js.map +1 -0
  613. package/dist/providers/opencode-proxy/openai-handler.d.ts +5 -0
  614. package/dist/providers/opencode-proxy/openai-handler.d.ts.map +1 -0
  615. package/dist/providers/opencode-proxy/openai-handler.js +115 -0
  616. package/dist/providers/opencode-proxy/openai-handler.js.map +1 -0
  617. package/dist/providers/opencode-proxy/router.d.ts +4 -0
  618. package/dist/providers/opencode-proxy/router.d.ts.map +1 -0
  619. package/dist/providers/opencode-proxy/router.js +65 -0
  620. package/dist/providers/opencode-proxy/router.js.map +1 -0
  621. package/dist/providers/opencode-proxy/runtime.d.ts +23 -0
  622. package/dist/providers/opencode-proxy/runtime.d.ts.map +1 -0
  623. package/dist/providers/opencode-proxy/runtime.js +158 -0
  624. package/dist/providers/opencode-proxy/runtime.js.map +1 -0
  625. package/dist/providers/opencode-proxy/server.d.ts +13 -0
  626. package/dist/providers/opencode-proxy/server.d.ts.map +1 -0
  627. package/dist/providers/opencode-proxy/server.js +52 -0
  628. package/dist/providers/opencode-proxy/server.js.map +1 -0
  629. package/dist/providers/opencode-proxy/stream.d.ts +4 -0
  630. package/dist/providers/opencode-proxy/stream.d.ts.map +1 -0
  631. package/dist/providers/opencode-proxy/stream.js +71 -0
  632. package/dist/providers/opencode-proxy/stream.js.map +1 -0
  633. package/dist/providers/opencode-proxy/translate-stream.d.ts +3 -0
  634. package/dist/providers/opencode-proxy/translate-stream.d.ts.map +1 -0
  635. package/dist/providers/opencode-proxy/translate-stream.js +205 -0
  636. package/dist/providers/opencode-proxy/translate-stream.js.map +1 -0
  637. package/dist/providers/opencode-proxy/translate.d.ts +11 -0
  638. package/dist/providers/opencode-proxy/translate.d.ts.map +1 -0
  639. package/dist/providers/opencode-proxy/translate.js +250 -0
  640. package/dist/providers/opencode-proxy/translate.js.map +1 -0
  641. package/dist/providers/opencode-proxy/types.d.ts +110 -0
  642. package/dist/providers/opencode-proxy/types.d.ts.map +1 -0
  643. package/dist/providers/opencode-proxy/types.js +38 -0
  644. package/dist/providers/opencode-proxy/types.js.map +1 -0
  645. package/dist/providers/opencode-proxy-lifecycle.d.ts +11 -0
  646. package/dist/providers/opencode-proxy-lifecycle.d.ts.map +1 -0
  647. package/dist/providers/opencode-proxy-lifecycle.js +144 -0
  648. package/dist/providers/opencode-proxy-lifecycle.js.map +1 -0
  649. package/dist/providers/opencode.d.ts +40 -0
  650. package/dist/providers/opencode.d.ts.map +1 -0
  651. package/dist/providers/opencode.js +190 -0
  652. package/dist/providers/opencode.js.map +1 -0
  653. package/dist/providers/protocol/anthropic-convert.d.ts +12 -0
  654. package/dist/providers/protocol/anthropic-convert.d.ts.map +1 -0
  655. package/dist/providers/protocol/anthropic-convert.js +113 -0
  656. package/dist/providers/protocol/anthropic-convert.js.map +1 -0
  657. package/dist/providers/protocol/anthropic-helpers.d.ts +13 -0
  658. package/dist/providers/protocol/anthropic-helpers.d.ts.map +1 -0
  659. package/dist/providers/protocol/anthropic-helpers.js +179 -0
  660. package/dist/providers/protocol/anthropic-helpers.js.map +1 -0
  661. package/dist/providers/protocol/anthropic-stream-reader.d.ts +13 -0
  662. package/dist/providers/protocol/anthropic-stream-reader.d.ts.map +1 -0
  663. package/dist/providers/protocol/anthropic-stream-reader.js +46 -0
  664. package/dist/providers/protocol/anthropic-stream-reader.js.map +1 -0
  665. package/dist/providers/protocol/anthropic-stream.d.ts +7 -0
  666. package/dist/providers/protocol/anthropic-stream.d.ts.map +1 -0
  667. package/dist/providers/protocol/anthropic-stream.js +318 -0
  668. package/dist/providers/protocol/anthropic-stream.js.map +1 -0
  669. package/dist/providers/protocol/anthropic-types.d.ts +240 -0
  670. package/dist/providers/protocol/anthropic-types.d.ts.map +1 -0
  671. package/dist/providers/protocol/anthropic.d.ts +20 -0
  672. package/dist/providers/protocol/anthropic.d.ts.map +1 -0
  673. package/dist/providers/protocol/gemini/translate-anthropic.d.ts +15 -0
  674. package/dist/providers/protocol/gemini/translate-anthropic.d.ts.map +1 -0
  675. package/dist/providers/protocol/gemini/translate-anthropic.js +84 -0
  676. package/dist/providers/protocol/gemini/translate-anthropic.js.map +1 -0
  677. package/dist/providers/protocol/gemini/translate-chat.d.ts +5 -0
  678. package/dist/providers/protocol/gemini/translate-chat.d.ts.map +1 -0
  679. package/dist/providers/protocol/gemini/translate-chat.js +142 -0
  680. package/dist/providers/protocol/gemini/translate-chat.js.map +1 -0
  681. package/dist/providers/protocol/gemini/translate-models.d.ts +40 -0
  682. package/dist/providers/protocol/gemini/translate-models.d.ts.map +1 -0
  683. package/dist/providers/protocol/gemini/translate-models.js +186 -0
  684. package/dist/providers/protocol/gemini/translate-models.js.map +1 -0
  685. package/dist/providers/protocol/gemini/translate-responses.d.ts +6 -0
  686. package/dist/providers/protocol/gemini/translate-responses.d.ts.map +1 -0
  687. package/dist/providers/protocol/gemini/translate-responses.js +187 -0
  688. package/dist/providers/protocol/gemini/translate-responses.js.map +1 -0
  689. package/dist/providers/protocol/gemini/translate-schema.d.ts +9 -0
  690. package/dist/providers/protocol/gemini/translate-schema.d.ts.map +1 -0
  691. package/dist/providers/protocol/gemini/translate-schema.js +48 -0
  692. package/dist/providers/protocol/gemini/translate-schema.js.map +1 -0
  693. package/dist/providers/protocol/gemini/translate-shared.d.ts +8 -0
  694. package/dist/providers/protocol/gemini/translate-shared.d.ts.map +1 -0
  695. package/dist/providers/protocol/gemini/translate-shared.js +47 -0
  696. package/dist/providers/protocol/gemini/translate-shared.js.map +1 -0
  697. package/dist/providers/protocol/gemini/translate-thinking.d.ts +7 -0
  698. package/dist/providers/protocol/gemini/translate-thinking.d.ts.map +1 -0
  699. package/dist/providers/protocol/gemini/translate-thinking.js +65 -0
  700. package/dist/providers/protocol/gemini/translate-thinking.js.map +1 -0
  701. package/dist/providers/protocol/gemini/translate-types.d.ts +133 -0
  702. package/dist/providers/protocol/gemini/translate-types.d.ts.map +1 -0
  703. package/dist/providers/protocol/gemini/translate.d.ts +7 -0
  704. package/dist/providers/protocol/gemini/translate.d.ts.map +1 -0
  705. package/dist/providers/protocol/json-schema.d.ts +52 -0
  706. package/dist/providers/protocol/json-schema.d.ts.map +1 -0
  707. package/dist/providers/protocol/json-schema.js +189 -0
  708. package/dist/providers/protocol/json-schema.js.map +1 -0
  709. package/dist/providers/protocol/token-estimate.d.ts +15 -0
  710. package/dist/providers/protocol/token-estimate.d.ts.map +1 -0
  711. package/dist/providers/protocol/token-estimate.js +34 -0
  712. package/dist/providers/protocol/token-estimate.js.map +1 -0
  713. package/dist/providers/proxy-hub-backend.d.ts +4 -0
  714. package/dist/providers/proxy-hub-backend.d.ts.map +1 -0
  715. package/dist/providers/proxy-hub-backend.js +11 -0
  716. package/dist/providers/proxy-hub-backend.js.map +1 -0
  717. package/dist/providers/proxy-process.d.ts +35 -0
  718. package/dist/providers/proxy-process.d.ts.map +1 -0
  719. package/dist/providers/proxy-process.js +119 -0
  720. package/dist/providers/proxy-process.js.map +1 -0
  721. package/dist/providers/proxy-shared.d.ts +43 -0
  722. package/dist/providers/proxy-shared.d.ts.map +1 -0
  723. package/dist/providers/proxy-shared.js +128 -0
  724. package/dist/providers/proxy-shared.js.map +1 -0
  725. package/dist/providers/quota-guard.d.ts +49 -0
  726. package/dist/providers/quota-guard.d.ts.map +1 -0
  727. package/dist/providers/quota-guard.js +107 -0
  728. package/dist/providers/quota-guard.js.map +1 -0
  729. package/dist/providers/reasoning.d.ts +27 -0
  730. package/dist/providers/reasoning.d.ts.map +1 -0
  731. package/dist/providers/reasoning.js +61 -0
  732. package/dist/providers/reasoning.js.map +1 -0
  733. package/dist/providers/upstream-policy.d.ts +33 -0
  734. package/dist/providers/upstream-policy.d.ts.map +1 -0
  735. package/dist/providers/upstream-policy.js +97 -0
  736. package/dist/providers/upstream-policy.js.map +1 -0
  737. package/dist/public-types.d.ts +3 -0
  738. package/dist/public-types.d.ts.map +1 -0
  739. package/dist/public.d.ts +19 -0
  740. package/dist/public.d.ts.map +1 -0
  741. package/dist/public.js +16 -0
  742. package/dist/public.js.map +1 -0
  743. package/dist/sources/account-adapters.d.ts +64 -0
  744. package/dist/sources/account-adapters.d.ts.map +1 -0
  745. package/dist/sources/account-adapters.js +205 -0
  746. package/dist/sources/account-adapters.js.map +1 -0
  747. package/dist/sources/gateway-adapters.d.ts +26 -0
  748. package/dist/sources/gateway-adapters.d.ts.map +1 -0
  749. package/dist/sources/gateway-adapters.js +43 -0
  750. package/dist/sources/gateway-adapters.js.map +1 -0
  751. package/dist/sources/kiro-proxy-bin.d.ts +41 -0
  752. package/dist/sources/kiro-proxy-bin.d.ts.map +1 -0
  753. package/dist/sources/kiro-proxy-bin.js +140 -0
  754. package/dist/sources/kiro-proxy-bin.js.map +1 -0
  755. package/dist/sources/proxy-hub-adapters.d.ts +7 -0
  756. package/dist/sources/proxy-hub-adapters.d.ts.map +1 -0
  757. package/dist/sources/proxy-hub-adapters.js +26 -0
  758. package/dist/sources/proxy-hub-adapters.js.map +1 -0
  759. package/dist/testing.d.ts +9 -0
  760. package/dist/testing.d.ts.map +1 -0
  761. package/dist/testing.js +6 -0
  762. package/dist/tray/AnyPickTray.swift +3 -0
  763. package/dist/tray/activity.d.ts +18 -0
  764. package/dist/tray/activity.d.ts.map +1 -0
  765. package/dist/tray/activity.js +51 -0
  766. package/dist/tray/activity.js.map +1 -0
  767. package/dist/tray/app-icons/icon-1024.png +0 -0
  768. package/dist/tray/app-icons/icon-128.png +0 -0
  769. package/dist/tray/app-icons/icon-16.png +0 -0
  770. package/dist/tray/app-icons/icon-256.png +0 -0
  771. package/dist/tray/app-icons/icon-32.png +0 -0
  772. package/dist/tray/app-icons/icon-512.png +0 -0
  773. package/dist/tray/app-icons/icon-64.png +0 -0
  774. package/dist/tray/icons/claude.svg +1 -0
  775. package/dist/tray/icons/googlegemini.svg +1 -0
  776. package/dist/tray/icons/grok.svg +1 -0
  777. package/dist/tray/icons/kiro.svg +1 -0
  778. package/dist/tray/icons/openai.svg +1 -0
  779. package/dist/tray/icons/opencode.svg +1 -0
  780. package/dist/tray/icons/openrouter.svg +1 -0
  781. package/dist/tray/model-role-actions.d.ts +15 -0
  782. package/dist/tray/model-role-actions.d.ts.map +1 -0
  783. package/dist/tray/model-role-actions.js +41 -0
  784. package/dist/tray/model-role-actions.js.map +1 -0
  785. package/dist/tray/native/AccountsPanel.swift +434 -0
  786. package/dist/tray/native/AppEntry.swift +229 -0
  787. package/dist/tray/native/MainWindow.swift +300 -0
  788. package/dist/tray/native/ManageFormChrome.swift +332 -0
  789. package/dist/tray/native/ManageForms.swift +472 -0
  790. package/dist/tray/native/ManagePanel.swift +356 -0
  791. package/dist/tray/native/Models.swift +259 -0
  792. package/dist/tray/native/ModelsEditor.swift +390 -0
  793. package/dist/tray/native/ModelsOverview.swift +76 -0
  794. package/dist/tray/native/ModelsPickers.swift +273 -0
  795. package/dist/tray/native/ModelsRoutePickers.swift +718 -0
  796. package/dist/tray/native/MonitorPanel.swift +375 -0
  797. package/dist/tray/native/ProxyPanel.swift +326 -0
  798. package/dist/tray/native/QuickActivityRow.swift +40 -0
  799. package/dist/tray/native/QuickNav.swift +62 -0
  800. package/dist/tray/native/QuickPanel.swift +447 -0
  801. package/dist/tray/native/QuickRouteRow.swift +189 -0
  802. package/dist/tray/native/QuickServiceRows.swift +292 -0
  803. package/dist/tray/native/RoutingIssues.swift +293 -0
  804. package/dist/tray/native/SettingsPanel.swift +225 -0
  805. package/dist/tray/native/SharedUI.swift +681 -0
  806. package/dist/tray/native/Store.swift +540 -0
  807. package/dist/tray/native/Theme.swift +139 -0
  808. package/dist/tray/native/TrayChrome.swift +657 -0
  809. package/dist/tray/native/TrayControls.swift +475 -0
  810. package/dist/tray/native/TrayPreferences.swift +46 -0
  811. package/dist/tray/native/sources.txt +26 -0
  812. package/dist/tray/native-sources.d.ts +8 -0
  813. package/dist/tray/native-sources.d.ts.map +1 -0
  814. package/dist/tray/native-sources.js +19 -0
  815. package/dist/tray/native-sources.js.map +1 -0
  816. package/dist/tray/protocol.d.ts +79 -0
  817. package/dist/tray/protocol.d.ts.map +1 -0
  818. package/dist/tray/protocol.js +145 -0
  819. package/dist/tray/protocol.js.map +1 -0
  820. package/dist/tray/settings.d.ts +15 -0
  821. package/dist/tray/settings.d.ts.map +1 -0
  822. package/dist/tray/settings.js +72 -0
  823. package/dist/tray/settings.js.map +1 -0
  824. package/dist/tray/snapshot-client-routes.d.ts +11 -0
  825. package/dist/tray/snapshot-client-routes.d.ts.map +1 -0
  826. package/dist/tray/snapshot-client-routes.js +305 -0
  827. package/dist/tray/snapshot-client-routes.js.map +1 -0
  828. package/dist/tray/snapshot-helpers.d.ts +20 -0
  829. package/dist/tray/snapshot-helpers.d.ts.map +1 -0
  830. package/dist/tray/snapshot-helpers.js +74 -0
  831. package/dist/tray/snapshot-helpers.js.map +1 -0
  832. package/dist/tray/snapshot-hub.d.ts +7 -0
  833. package/dist/tray/snapshot-hub.d.ts.map +1 -0
  834. package/dist/tray/snapshot-hub.js +93 -0
  835. package/dist/tray/snapshot-hub.js.map +1 -0
  836. package/dist/tray/snapshot-resources.d.ts +19 -0
  837. package/dist/tray/snapshot-resources.d.ts.map +1 -0
  838. package/dist/tray/snapshot-resources.js +216 -0
  839. package/dist/tray/snapshot-resources.js.map +1 -0
  840. package/dist/tray/snapshot-types.d.ts +229 -0
  841. package/dist/tray/snapshot-types.d.ts.map +1 -0
  842. package/dist/tray/snapshot-usage.d.ts +9 -0
  843. package/dist/tray/snapshot-usage.d.ts.map +1 -0
  844. package/dist/tray/snapshot-usage.js +35 -0
  845. package/dist/tray/snapshot-usage.js.map +1 -0
  846. package/dist/tray/snapshot.d.ts +7 -0
  847. package/dist/tray/snapshot.d.ts.map +1 -0
  848. package/dist/tray/snapshot.js +48 -0
  849. package/dist/tray/snapshot.js.map +1 -0
  850. package/dist/tray/supervisor-actions.d.ts +19 -0
  851. package/dist/tray/supervisor-actions.d.ts.map +1 -0
  852. package/dist/tray/supervisor-actions.js +224 -0
  853. package/dist/tray/supervisor-actions.js.map +1 -0
  854. package/dist/tray/supervisor-activity.d.ts +5 -0
  855. package/dist/tray/supervisor-activity.d.ts.map +1 -0
  856. package/dist/tray/supervisor-activity.js +19 -0
  857. package/dist/tray/supervisor-activity.js.map +1 -0
  858. package/dist/tray/supervisor-errors.d.ts +9 -0
  859. package/dist/tray/supervisor-errors.d.ts.map +1 -0
  860. package/dist/tray/supervisor-errors.js +91 -0
  861. package/dist/tray/supervisor-errors.js.map +1 -0
  862. package/dist/tray/supervisor-logs.d.ts +6 -0
  863. package/dist/tray/supervisor-logs.d.ts.map +1 -0
  864. package/dist/tray/supervisor-logs.js +52 -0
  865. package/dist/tray/supervisor-logs.js.map +1 -0
  866. package/dist/tray/supervisor-mutations.d.ts +14 -0
  867. package/dist/tray/supervisor-mutations.d.ts.map +1 -0
  868. package/dist/tray/supervisor-mutations.js +218 -0
  869. package/dist/tray/supervisor-mutations.js.map +1 -0
  870. package/dist/tray/supervisor-native.d.ts +22 -0
  871. package/dist/tray/supervisor-native.d.ts.map +1 -0
  872. package/dist/tray/supervisor-native.js +227 -0
  873. package/dist/tray/supervisor-native.js.map +1 -0
  874. package/dist/tray/supervisor-proxies.d.ts +6 -0
  875. package/dist/tray/supervisor-proxies.d.ts.map +1 -0
  876. package/dist/tray/supervisor-proxies.js +37 -0
  877. package/dist/tray/supervisor-proxies.js.map +1 -0
  878. package/dist/tray/supervisor-tauri.d.ts +13 -0
  879. package/dist/tray/supervisor-tauri.d.ts.map +1 -0
  880. package/dist/tray/supervisor-tauri.js +36 -0
  881. package/dist/tray/supervisor-tauri.js.map +1 -0
  882. package/dist/tray/supervisor.d.ts +17 -0
  883. package/dist/tray/supervisor.d.ts.map +1 -0
  884. package/dist/tray/supervisor.js +372 -0
  885. package/dist/tray/supervisor.js.map +1 -0
  886. package/dist/tray/terminal-launcher.d.ts +12 -0
  887. package/dist/tray/terminal-launcher.d.ts.map +1 -0
  888. package/dist/tray/terminal-launcher.js +130 -0
  889. package/dist/tray/terminal-launcher.js.map +1 -0
  890. package/dist/tui/actions/ensure-proxy-up.d.ts +15 -0
  891. package/dist/tui/actions/ensure-proxy-up.d.ts.map +1 -0
  892. package/dist/tui/actions/ensure-proxy-up.js +41 -0
  893. package/dist/tui/actions/ensure-proxy-up.js.map +1 -0
  894. package/dist/tui/actions/use-account-actions.d.ts +35 -0
  895. package/dist/tui/actions/use-account-actions.d.ts.map +1 -0
  896. package/dist/tui/actions/use-account-actions.js +527 -0
  897. package/dist/tui/actions/use-account-actions.js.map +1 -0
  898. package/dist/tui/actions/use-app-bindings.d.ts +83 -0
  899. package/dist/tui/actions/use-app-bindings.d.ts.map +1 -0
  900. package/dist/tui/actions/use-app-bindings.js +472 -0
  901. package/dist/tui/actions/use-app-bindings.js.map +1 -0
  902. package/dist/tui/actions/use-gateway-actions.d.ts +45 -0
  903. package/dist/tui/actions/use-gateway-actions.d.ts.map +1 -0
  904. package/dist/tui/actions/use-gateway-actions.js +370 -0
  905. package/dist/tui/actions/use-gateway-actions.js.map +1 -0
  906. package/dist/tui/actions/use-home-filter.d.ts +24 -0
  907. package/dist/tui/actions/use-home-filter.d.ts.map +1 -0
  908. package/dist/tui/actions/use-home-filter.js +48 -0
  909. package/dist/tui/actions/use-home-filter.js.map +1 -0
  910. package/dist/tui/actions/use-model-role-editor.d.ts +44 -0
  911. package/dist/tui/actions/use-model-role-editor.d.ts.map +1 -0
  912. package/dist/tui/actions/use-model-role-editor.js +68 -0
  913. package/dist/tui/actions/use-model-role-editor.js.map +1 -0
  914. package/dist/tui/actions/use-provider-filter.d.ts +10 -0
  915. package/dist/tui/actions/use-provider-filter.d.ts.map +1 -0
  916. package/dist/tui/actions/use-provider-filter.js +22 -0
  917. package/dist/tui/actions/use-provider-filter.js.map +1 -0
  918. package/dist/tui/actions/use-proxy-actions.d.ts +31 -0
  919. package/dist/tui/actions/use-proxy-actions.d.ts.map +1 -0
  920. package/dist/tui/actions/use-proxy-actions.js +474 -0
  921. package/dist/tui/actions/use-proxy-actions.js.map +1 -0
  922. package/dist/tui/actions/use-text-input-submit.d.ts +16 -0
  923. package/dist/tui/actions/use-text-input-submit.d.ts.map +1 -0
  924. package/dist/tui/actions/use-text-input-submit.js +96 -0
  925. package/dist/tui/actions/use-text-input-submit.js.map +1 -0
  926. package/dist/tui/actions/use-tray-runtime-actions.d.ts +18 -0
  927. package/dist/tui/actions/use-tray-runtime-actions.d.ts.map +1 -0
  928. package/dist/tui/actions/use-tray-runtime-actions.js +78 -0
  929. package/dist/tui/actions/use-tray-runtime-actions.js.map +1 -0
  930. package/dist/tui/app-ui-helpers.d.ts +14 -0
  931. package/dist/tui/app-ui-helpers.d.ts.map +1 -0
  932. package/dist/tui/app-ui-helpers.js +48 -0
  933. package/dist/tui/app-ui-helpers.js.map +1 -0
  934. package/dist/tui/app-ui.d.ts +19 -0
  935. package/dist/tui/app-ui.d.ts.map +1 -0
  936. package/dist/tui/app-ui.js +98 -0
  937. package/dist/tui/app-ui.js.map +1 -0
  938. package/dist/tui/components/chrome/header.d.ts +39 -0
  939. package/dist/tui/components/chrome/header.d.ts.map +1 -0
  940. package/dist/tui/components/chrome/header.js +161 -0
  941. package/dist/tui/components/chrome/header.js.map +1 -0
  942. package/dist/tui/components/chrome/inputs.d.ts +34 -0
  943. package/dist/tui/components/chrome/inputs.d.ts.map +1 -0
  944. package/dist/tui/components/chrome/inputs.js +82 -0
  945. package/dist/tui/components/chrome/inputs.js.map +1 -0
  946. package/dist/tui/components/chrome/layout.d.ts +61 -0
  947. package/dist/tui/components/chrome/layout.d.ts.map +1 -0
  948. package/dist/tui/components/chrome/layout.js +119 -0
  949. package/dist/tui/components/chrome/layout.js.map +1 -0
  950. package/dist/tui/components/chrome/legacy.d.ts +84 -0
  951. package/dist/tui/components/chrome/legacy.d.ts.map +1 -0
  952. package/dist/tui/components/chrome/legacy.js +6 -0
  953. package/dist/tui/components/chrome/rows.d.ts +89 -0
  954. package/dist/tui/components/chrome/rows.d.ts.map +1 -0
  955. package/dist/tui/components/chrome/rows.js +151 -0
  956. package/dist/tui/components/chrome/rows.js.map +1 -0
  957. package/dist/tui/components/chrome/status.d.ts +50 -0
  958. package/dist/tui/components/chrome/status.d.ts.map +1 -0
  959. package/dist/tui/components/chrome/status.js +157 -0
  960. package/dist/tui/components/chrome/status.js.map +1 -0
  961. package/dist/tui/components/chrome.d.ts +7 -0
  962. package/dist/tui/components/chrome.d.ts.map +1 -0
  963. package/dist/tui/components/chrome.js +7 -0
  964. package/dist/tui/components.d.ts +26 -0
  965. package/dist/tui/components.d.ts.map +1 -0
  966. package/dist/tui/components.js +182 -0
  967. package/dist/tui/components.js.map +1 -0
  968. package/dist/tui/model/anypick.d.ts +106 -0
  969. package/dist/tui/model/anypick.d.ts.map +1 -0
  970. package/dist/tui/model/anypick.js +116 -0
  971. package/dist/tui/model/anypick.js.map +1 -0
  972. package/dist/tui/model/bindings.d.ts +39 -0
  973. package/dist/tui/model/bindings.d.ts.map +1 -0
  974. package/dist/tui/model/bindings.js +102 -0
  975. package/dist/tui/model/bindings.js.map +1 -0
  976. package/dist/tui/model/detail.d.ts +6 -0
  977. package/dist/tui/model/detail.d.ts.map +1 -0
  978. package/dist/tui/model/detail.js +85 -0
  979. package/dist/tui/model/detail.js.map +1 -0
  980. package/dist/tui/model/gateway.d.ts +46 -0
  981. package/dist/tui/model/gateway.d.ts.map +1 -0
  982. package/dist/tui/model/gateway.js +134 -0
  983. package/dist/tui/model/gateway.js.map +1 -0
  984. package/dist/tui/model/home-format.d.ts +52 -0
  985. package/dist/tui/model/home-format.d.ts.map +1 -0
  986. package/dist/tui/model/home-format.js +64 -0
  987. package/dist/tui/model/home-format.js.map +1 -0
  988. package/dist/tui/model/home-load.d.ts +8 -0
  989. package/dist/tui/model/home-load.d.ts.map +1 -0
  990. package/dist/tui/model/home-load.js +244 -0
  991. package/dist/tui/model/home-load.js.map +1 -0
  992. package/dist/tui/model/identity.d.ts +53 -0
  993. package/dist/tui/model/identity.d.ts.map +1 -0
  994. package/dist/tui/model/identity.js +176 -0
  995. package/dist/tui/model/identity.js.map +1 -0
  996. package/dist/tui/model/line-editor.d.ts +99 -0
  997. package/dist/tui/model/line-editor.d.ts.map +1 -0
  998. package/dist/tui/model/line-editor.js +186 -0
  999. package/dist/tui/model/line-editor.js.map +1 -0
  1000. package/dist/tui/model/names.d.ts +28 -0
  1001. package/dist/tui/model/names.d.ts.map +1 -0
  1002. package/dist/tui/model/names.js +42 -0
  1003. package/dist/tui/model/names.js.map +1 -0
  1004. package/dist/tui/model/pool.d.ts +11 -0
  1005. package/dist/tui/model/pool.d.ts.map +1 -0
  1006. package/dist/tui/model/pool.js +115 -0
  1007. package/dist/tui/model/pool.js.map +1 -0
  1008. package/dist/tui/model/provider-filter.d.ts +14 -0
  1009. package/dist/tui/model/provider-filter.d.ts.map +1 -0
  1010. package/dist/tui/model/provider-filter.js +46 -0
  1011. package/dist/tui/model/provider-filter.js.map +1 -0
  1012. package/dist/tui/model/proxy-hub.d.ts +23 -0
  1013. package/dist/tui/model/proxy-hub.d.ts.map +1 -0
  1014. package/dist/tui/model/proxy-hub.js +69 -0
  1015. package/dist/tui/model/proxy-hub.js.map +1 -0
  1016. package/dist/tui/model/proxy-labels.d.ts +5 -0
  1017. package/dist/tui/model/proxy-labels.d.ts.map +1 -0
  1018. package/dist/tui/model/proxy-labels.js +18 -0
  1019. package/dist/tui/model/proxy-labels.js.map +1 -0
  1020. package/dist/tui/model/proxy.d.ts +15 -0
  1021. package/dist/tui/model/proxy.d.ts.map +1 -0
  1022. package/dist/tui/model/proxy.js +214 -0
  1023. package/dist/tui/model/proxy.js.map +1 -0
  1024. package/dist/tui/model/root.d.ts +20 -0
  1025. package/dist/tui/model/root.d.ts.map +1 -0
  1026. package/dist/tui/model/root.js +126 -0
  1027. package/dist/tui/model/root.js.map +1 -0
  1028. package/dist/tui/model/route-builder.d.ts +25 -0
  1029. package/dist/tui/model/route-builder.d.ts.map +1 -0
  1030. package/dist/tui/model/route-builder.js +199 -0
  1031. package/dist/tui/model/route-builder.js.map +1 -0
  1032. package/dist/tui/model/screen.d.ts +260 -0
  1033. package/dist/tui/model/screen.d.ts.map +1 -0
  1034. package/dist/tui/model/types.d.ts +179 -0
  1035. package/dist/tui/model/types.d.ts.map +1 -0
  1036. package/dist/tui/model.d.ts +18 -0
  1037. package/dist/tui/model.d.ts.map +1 -0
  1038. package/dist/tui/model.js +17 -0
  1039. package/dist/tui/proxy-models-fetch.d.ts +34 -0
  1040. package/dist/tui/proxy-models-fetch.d.ts.map +1 -0
  1041. package/dist/tui/proxy-models-fetch.js +87 -0
  1042. package/dist/tui/proxy-models-fetch.js.map +1 -0
  1043. package/dist/tui/routes/account.d.ts +4 -0
  1044. package/dist/tui/routes/account.d.ts.map +1 -0
  1045. package/dist/tui/routes/account.js +327 -0
  1046. package/dist/tui/routes/account.js.map +1 -0
  1047. package/dist/tui/routes/apps.d.ts +3 -0
  1048. package/dist/tui/routes/apps.d.ts.map +1 -0
  1049. package/dist/tui/routes/apps.js +296 -0
  1050. package/dist/tui/routes/apps.js.map +1 -0
  1051. package/dist/tui/routes/common.d.ts +4 -0
  1052. package/dist/tui/routes/common.d.ts.map +1 -0
  1053. package/dist/tui/routes/common.js +117 -0
  1054. package/dist/tui/routes/common.js.map +1 -0
  1055. package/dist/tui/routes/context.d.ts +43 -0
  1056. package/dist/tui/routes/context.d.ts.map +1 -0
  1057. package/dist/tui/routes/gateway.d.ts +3 -0
  1058. package/dist/tui/routes/gateway.d.ts.map +1 -0
  1059. package/dist/tui/routes/gateway.js +199 -0
  1060. package/dist/tui/routes/gateway.js.map +1 -0
  1061. package/dist/tui/routes/proxy.d.ts +3 -0
  1062. package/dist/tui/routes/proxy.d.ts.map +1 -0
  1063. package/dist/tui/routes/proxy.js +234 -0
  1064. package/dist/tui/routes/proxy.js.map +1 -0
  1065. package/dist/tui/screens/account-detail.d.ts +14 -0
  1066. package/dist/tui/screens/account-detail.d.ts.map +1 -0
  1067. package/dist/tui/screens/account-detail.js +98 -0
  1068. package/dist/tui/screens/account-detail.js.map +1 -0
  1069. package/dist/tui/screens/accounts-home.d.ts +42 -0
  1070. package/dist/tui/screens/accounts-home.d.ts.map +1 -0
  1071. package/dist/tui/screens/accounts-home.js +321 -0
  1072. package/dist/tui/screens/accounts-home.js.map +1 -0
  1073. package/dist/tui/screens/add-account.d.ts +70 -0
  1074. package/dist/tui/screens/add-account.d.ts.map +1 -0
  1075. package/dist/tui/screens/add-account.js +323 -0
  1076. package/dist/tui/screens/add-account.js.map +1 -0
  1077. package/dist/tui/screens/anypick-home.d.ts +39 -0
  1078. package/dist/tui/screens/anypick-home.d.ts.map +1 -0
  1079. package/dist/tui/screens/anypick-home.js +253 -0
  1080. package/dist/tui/screens/anypick-home.js.map +1 -0
  1081. package/dist/tui/screens/anypick-preview.d.ts +13 -0
  1082. package/dist/tui/screens/anypick-preview.d.ts.map +1 -0
  1083. package/dist/tui/screens/anypick-preview.js +49 -0
  1084. package/dist/tui/screens/anypick-preview.js.map +1 -0
  1085. package/dist/tui/screens/app-route-preview.d.ts +14 -0
  1086. package/dist/tui/screens/app-route-preview.d.ts.map +1 -0
  1087. package/dist/tui/screens/app-route-preview.js +35 -0
  1088. package/dist/tui/screens/app-route-preview.js.map +1 -0
  1089. package/dist/tui/screens/app-route-source.d.ts +15 -0
  1090. package/dist/tui/screens/app-route-source.d.ts.map +1 -0
  1091. package/dist/tui/screens/app-route-source.js +97 -0
  1092. package/dist/tui/screens/app-route-source.js.map +1 -0
  1093. package/dist/tui/screens/apps-home.d.ts +22 -0
  1094. package/dist/tui/screens/apps-home.d.ts.map +1 -0
  1095. package/dist/tui/screens/apps-home.js +111 -0
  1096. package/dist/tui/screens/apps-home.js.map +1 -0
  1097. package/dist/tui/screens/confirm.d.ts +19 -0
  1098. package/dist/tui/screens/confirm.d.ts.map +1 -0
  1099. package/dist/tui/screens/confirm.js +42 -0
  1100. package/dist/tui/screens/confirm.js.map +1 -0
  1101. package/dist/tui/screens/credential-form.d.ts +30 -0
  1102. package/dist/tui/screens/credential-form.d.ts.map +1 -0
  1103. package/dist/tui/screens/credential-form.js +241 -0
  1104. package/dist/tui/screens/credential-form.js.map +1 -0
  1105. package/dist/tui/screens/gateway-connection-form.d.ts +16 -0
  1106. package/dist/tui/screens/gateway-connection-form.d.ts.map +1 -0
  1107. package/dist/tui/screens/gateway-connection-form.js +127 -0
  1108. package/dist/tui/screens/gateway-connection-form.js.map +1 -0
  1109. package/dist/tui/screens/gateway-pick-provider.d.ts +19 -0
  1110. package/dist/tui/screens/gateway-pick-provider.d.ts.map +1 -0
  1111. package/dist/tui/screens/gateway-pick-provider.js +62 -0
  1112. package/dist/tui/screens/gateway-pick-provider.js.map +1 -0
  1113. package/dist/tui/screens/gateways-home.d.ts +38 -0
  1114. package/dist/tui/screens/gateways-home.d.ts.map +1 -0
  1115. package/dist/tui/screens/gateways-home.js +247 -0
  1116. package/dist/tui/screens/gateways-home.js.map +1 -0
  1117. package/dist/tui/screens/health.d.ts +16 -0
  1118. package/dist/tui/screens/health.d.ts.map +1 -0
  1119. package/dist/tui/screens/health.js +109 -0
  1120. package/dist/tui/screens/health.js.map +1 -0
  1121. package/dist/tui/screens/help.d.ts +10 -0
  1122. package/dist/tui/screens/help.d.ts.map +1 -0
  1123. package/dist/tui/screens/help.js +213 -0
  1124. package/dist/tui/screens/help.js.map +1 -0
  1125. package/dist/tui/screens/manage-apps.d.ts +29 -0
  1126. package/dist/tui/screens/manage-apps.d.ts.map +1 -0
  1127. package/dist/tui/screens/manage-apps.js +165 -0
  1128. package/dist/tui/screens/manage-apps.js.map +1 -0
  1129. package/dist/tui/screens/proxy-board-helpers.d.ts +9 -0
  1130. package/dist/tui/screens/proxy-board-helpers.d.ts.map +1 -0
  1131. package/dist/tui/screens/proxy-board-helpers.js +70 -0
  1132. package/dist/tui/screens/proxy-board-helpers.js.map +1 -0
  1133. package/dist/tui/screens/proxy-board.d.ts +43 -0
  1134. package/dist/tui/screens/proxy-board.d.ts.map +1 -0
  1135. package/dist/tui/screens/proxy-board.js +351 -0
  1136. package/dist/tui/screens/proxy-board.js.map +1 -0
  1137. package/dist/tui/screens/proxy-hub.d.ts +21 -0
  1138. package/dist/tui/screens/proxy-hub.d.ts.map +1 -0
  1139. package/dist/tui/screens/proxy-hub.js +150 -0
  1140. package/dist/tui/screens/proxy-hub.js.map +1 -0
  1141. package/dist/tui/screens/proxy-models-utils.d.ts +13 -0
  1142. package/dist/tui/screens/proxy-models-utils.d.ts.map +1 -0
  1143. package/dist/tui/screens/proxy-models-utils.js +53 -0
  1144. package/dist/tui/screens/proxy-models-utils.js.map +1 -0
  1145. package/dist/tui/screens/proxy-models.d.ts +65 -0
  1146. package/dist/tui/screens/proxy-models.d.ts.map +1 -0
  1147. package/dist/tui/screens/proxy-models.js +252 -0
  1148. package/dist/tui/screens/proxy-models.js.map +1 -0
  1149. package/dist/tui/screens/proxy.d.ts +26 -0
  1150. package/dist/tui/screens/proxy.d.ts.map +1 -0
  1151. package/dist/tui/screens/text-input.d.ts +18 -0
  1152. package/dist/tui/screens/text-input.d.ts.map +1 -0
  1153. package/dist/tui/screens/text-input.js +67 -0
  1154. package/dist/tui/screens/text-input.js.map +1 -0
  1155. package/dist/tui/screens/tray-runtime.d.ts +19 -0
  1156. package/dist/tui/screens/tray-runtime.d.ts.map +1 -0
  1157. package/dist/tui/screens/tray-runtime.js +108 -0
  1158. package/dist/tui/screens/tray-runtime.js.map +1 -0
  1159. package/dist/tui/use-tui-nav.d.ts +40 -0
  1160. package/dist/tui/use-tui-nav.d.ts.map +1 -0
  1161. package/dist/tui/use-tui-nav.js +256 -0
  1162. package/dist/tui/use-tui-nav.js.map +1 -0
  1163. package/dist/tui/use-tui-shell.d.ts +46 -0
  1164. package/dist/tui/use-tui-shell.d.ts.map +1 -0
  1165. package/dist/tui/use-tui-shell.js +95 -0
  1166. package/dist/tui/use-tui-shell.js.map +1 -0
  1167. package/dist/types/account.d.ts +410 -0
  1168. package/dist/types/account.d.ts.map +1 -0
  1169. package/dist/types/account.js +7 -0
  1170. package/dist/types/account.js.map +1 -0
  1171. package/dist/types/bindings.d.ts +300 -0
  1172. package/dist/types/bindings.d.ts.map +1 -0
  1173. package/dist/types/catalog.d.ts +165 -0
  1174. package/dist/types/catalog.d.ts.map +1 -0
  1175. package/dist/types/clients.d.ts +174 -0
  1176. package/dist/types/clients.d.ts.map +1 -0
  1177. package/dist/types/clients.js +11 -0
  1178. package/dist/types/clients.js.map +1 -0
  1179. package/dist/types/plugins.d.ts +89 -0
  1180. package/dist/types/plugins.d.ts.map +1 -0
  1181. package/dist/types/plugins.js +14 -0
  1182. package/dist/types/plugins.js.map +1 -0
  1183. package/dist/types/proxy-hub.d.ts +109 -0
  1184. package/dist/types/proxy-hub.d.ts.map +1 -0
  1185. package/dist/types.d.ts +7 -0
  1186. package/dist/types.d.ts.map +1 -0
  1187. package/dist/types.js +1 -0
  1188. package/dist/utils/errors.d.ts +61 -0
  1189. package/dist/utils/errors.d.ts.map +1 -0
  1190. package/dist/utils/errors.js +119 -0
  1191. package/dist/utils/errors.js.map +1 -0
  1192. package/dist/utils/fs.d.ts +39 -0
  1193. package/dist/utils/fs.d.ts.map +1 -0
  1194. package/dist/utils/fs.js +126 -0
  1195. package/dist/utils/fs.js.map +1 -0
  1196. package/dist/utils/lock.d.ts +33 -0
  1197. package/dist/utils/lock.d.ts.map +1 -0
  1198. package/dist/utils/lock.js +95 -0
  1199. package/dist/utils/lock.js.map +1 -0
  1200. package/dist/utils/log.d.ts +10 -0
  1201. package/dist/utils/log.d.ts.map +1 -0
  1202. package/dist/utils/log.js +21 -0
  1203. package/dist/utils/log.js.map +1 -0
  1204. package/dist/utils/network.d.ts +3 -0
  1205. package/dist/utils/network.d.ts.map +1 -0
  1206. package/dist/utils/network.js +13 -0
  1207. package/dist/utils/network.js.map +1 -0
  1208. package/dist/utils/process/binary.d.ts +14 -0
  1209. package/dist/utils/process/binary.d.ts.map +1 -0
  1210. package/dist/utils/process/binary.js +29 -0
  1211. package/dist/utils/process/binary.js.map +1 -0
  1212. package/dist/utils/process/follow.d.ts +2 -0
  1213. package/dist/utils/process/follow.d.ts.map +1 -0
  1214. package/dist/utils/process/follow.js +90 -0
  1215. package/dist/utils/process/follow.js.map +1 -0
  1216. package/dist/utils/process/health.d.ts +43 -0
  1217. package/dist/utils/process/health.d.ts.map +1 -0
  1218. package/dist/utils/process/health.js +132 -0
  1219. package/dist/utils/process/health.js.map +1 -0
  1220. package/dist/utils/process/pid.d.ts +95 -0
  1221. package/dist/utils/process/pid.d.ts.map +1 -0
  1222. package/dist/utils/process/pid.js +243 -0
  1223. package/dist/utils/process/pid.js.map +1 -0
  1224. package/dist/utils/process.d.ts +5 -0
  1225. package/dist/utils/process.d.ts.map +1 -0
  1226. package/dist/utils/process.js +5 -0
  1227. package/dist/utils/slug.d.ts +18 -0
  1228. package/dist/utils/slug.d.ts.map +1 -0
  1229. package/dist/utils/slug.js +42 -0
  1230. package/dist/utils/slug.js.map +1 -0
  1231. package/package.json +121 -0
@@ -0,0 +1,422 @@
1
+ import { getAnyPickRoot, recoveryDir } from "./paths.js";
2
+ import { normalizeProfileName } from "../utils/slug.js";
3
+ import { resolveFromContext } from "../clients/resolve.js";
4
+ import { syntheticProxyProfile } from "./profile-synth.js";
5
+ import { proxyEndpointSourceAdapter } from "../sources/account-adapters.js";
6
+ import { existsSync } from "node:fs";
7
+ import { basename, dirname, join } from "node:path";
8
+ import { copyFile, mkdir, rm } from "node:fs/promises";
9
+ import { homedir } from "node:os";
10
+ import { createHash } from "node:crypto";
11
+ //#region src/core/runtime-service.ts
12
+ var RuntimeService = class {
13
+ profiles;
14
+ clientState;
15
+ clients;
16
+ config;
17
+ accountRegistry;
18
+ root;
19
+ constructor(profiles, clientState, clients, config, root, accountRegistry) {
20
+ this.profiles = profiles;
21
+ this.clientState = clientState;
22
+ this.clients = clients;
23
+ this.config = config;
24
+ this.accountRegistry = accountRegistry;
25
+ this.root = getAnyPickRoot(root);
26
+ }
27
+ /**
28
+ * Optional Codex live-config hooks, wired in app.ts so this service does not
29
+ * depend on Proxy/Hub services it was not constructed with.
30
+ */
31
+ codexLiveConfigSync;
32
+ codexLiveConfigRestoreNative;
33
+ codexLiveConfigPublish;
34
+ setCodexLiveConfigSync(fn) {
35
+ this.codexLiveConfigSync = fn;
36
+ }
37
+ setCodexLiveConfigRestoreNative(fn) {
38
+ this.codexLiveConfigRestoreNative = fn;
39
+ }
40
+ setCodexLiveConfigPublish(fn) {
41
+ this.codexLiveConfigPublish = fn;
42
+ }
43
+ async syncCodexLiveConfig(opts) {
44
+ try {
45
+ await this.codexLiveConfigSync?.(opts);
46
+ } catch {}
47
+ }
48
+ /**
49
+ * Re-publish the Codex live block after the global binding is committed.
50
+ * AttachProxyHubRoute may sync earlier — before modelRoles land in the store —
51
+ * so Default/Model 2–5 would otherwise leave a stale Desktop catalog.
52
+ */
53
+ async refreshCodexLiveConfig(opts) {
54
+ await this.syncCodexLiveConfig(opts ?? { forceRouted: true });
55
+ }
56
+ /** Restore user top-level Codex defaults after a native account switch. */
57
+ async restoreCodexLiveForNative() {
58
+ try {
59
+ await this.codexLiveConfigRestoreNative?.();
60
+ } catch {}
61
+ }
62
+ /**
63
+ * Switch to a runtime profile and apply it immediately.
64
+ * This is the main entry point (profile use / profile switch).
65
+ */
66
+ async switchProfile(profileName, opts = {}) {
67
+ const name = normalizeProfileName(profileName);
68
+ await this.profiles.require(name);
69
+ const clientIds = await this.resolveTargetClients(opts);
70
+ const results = [];
71
+ for (const clientId of clientIds) results.push(await this.apply(name, clientId, {
72
+ dryRun: opts.dryRun,
73
+ verbose: opts.verbose
74
+ }));
75
+ if (!opts.dryRun && this.config) await this.config.update((cfg) => ({
76
+ ...cfg,
77
+ activeProfile: name
78
+ }));
79
+ return {
80
+ profileName: name,
81
+ clients: results,
82
+ dryRun: Boolean(opts.dryRun)
83
+ };
84
+ }
85
+ /**
86
+ * Snapshot the client's previously-managed config files before overwriting.
87
+ * Returns `src=>dest` backup entries for any that currently exist on disk, so
88
+ * a crashed activation can be restored on next startup (TXN-01).
89
+ *
90
+ * Backups are stored in the owner-only AnyPick recovery directory (not the
91
+ * system temp dir) with collision-free hashed filenames, so two targets with
92
+ * the same basename — or concurrent activations — never clobber each other's
93
+ * backup. Files that do not yet exist (first apply) yield no backup: there is
94
+ * nothing to lose.
95
+ */
96
+ async prepareClientConfigRecovery(clientId, operationId) {
97
+ try {
98
+ const prior = await this.clientState.get(clientId);
99
+ const inspected = await this.clients.get(clientId).inspect();
100
+ const targets = [
101
+ ...prior?.managedPaths ?? [],
102
+ ...inspected.configPaths,
103
+ join(this.root, "clients", clientId, "env.sh"),
104
+ join(this.root, "clients", clientId, "env.ps1")
105
+ ].toSorted();
106
+ const unique = [...new Set(targets)];
107
+ const dir = operationId ? join(recoveryDir(this.root), "clients", clientId, operationId) : join(recoveryDir(this.root), "clients", clientId);
108
+ await mkdir(dir, {
109
+ recursive: true,
110
+ mode: 448
111
+ });
112
+ const entries = [];
113
+ for (const target of unique) {
114
+ if (!existsSync(target)) {
115
+ entries.push(`delete=>${target}`);
116
+ continue;
117
+ }
118
+ const dest = join(dir, `${createHash("sha1").update(target).digest("hex").slice(0, 16)}-${basename(target)}`);
119
+ try {
120
+ await copyFile(target, dest);
121
+ entries.push(`${dest}=>${target}`);
122
+ } catch (err) {
123
+ throw new Error(`Could not back up ${target}: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
124
+ }
125
+ }
126
+ return { backupPaths: entries };
127
+ } catch {
128
+ throw new Error(`Could not prepare durable recovery for client ${clientId}`);
129
+ }
130
+ }
131
+ async restoreClientConfigRecovery(recovery) {
132
+ for (const entry of recovery.backupPaths) {
133
+ const [source, target] = entry.split("=>").map((value) => value.trim());
134
+ if (!source || !target) throw new Error(`Invalid client recovery entry: ${entry}`);
135
+ if (source === "delete") {
136
+ await rm(target, { force: true });
137
+ continue;
138
+ }
139
+ if (!existsSync(source)) throw new Error(`Client recovery backup is missing: ${source}`);
140
+ await mkdir(dirname(target), {
141
+ recursive: true,
142
+ mode: 448
143
+ });
144
+ await copyFile(source, target);
145
+ }
146
+ }
147
+ async apply(profileName, clientId, opts = {}) {
148
+ const name = normalizeProfileName(profileName);
149
+ const profile = await this.profiles.require(name);
150
+ const client = this.clients.get(clientId);
151
+ const dryRun = Boolean(opts.dryRun);
152
+ const recovery = dryRun ? { backupPaths: [] } : opts.recovery ?? await this.prepareClientConfigRecovery(clientId);
153
+ const ctx = {
154
+ profile,
155
+ clientId: client.id,
156
+ dryRun,
157
+ verbose: Boolean(opts.verbose),
158
+ anypickRoot: this.root,
159
+ proxyEndpoint: opts.proxyEndpoint
160
+ };
161
+ await client.validate(ctx);
162
+ const result = await client.apply(ctx);
163
+ if (!dryRun) {
164
+ const state = {
165
+ clientId: client.id,
166
+ mode: "profile",
167
+ profileName: name,
168
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString(),
169
+ managedPaths: result.managedPaths,
170
+ managedEnvKeys: result.managedEnvKeys
171
+ };
172
+ await this.clientState.write(state);
173
+ if (client.id === "codex") await this.publishCodexGatewayLive(ctx, name);
174
+ }
175
+ return {
176
+ clientId: client.id,
177
+ profileName: name,
178
+ managedPaths: result.managedPaths,
179
+ managedEnvKeys: result.managedEnvKeys,
180
+ dryRun,
181
+ envHint: `${this.root}/clients/${client.id}/env.sh`,
182
+ backupPaths: recovery.backupPaths.length ? recovery.backupPaths : void 0
183
+ };
184
+ }
185
+ async publishCodexProxyLive(source, endpoint, apiKey, defaultModel) {
186
+ try {
187
+ const token = apiKey?.trim();
188
+ if (!endpoint || !token) {
189
+ await this.syncCodexLiveConfig({ forceRouted: true });
190
+ return;
191
+ }
192
+ await this.codexLiveConfigPublish?.({
193
+ source,
194
+ endpoint,
195
+ token,
196
+ defaultModel
197
+ });
198
+ } catch {}
199
+ }
200
+ async publishCodexGatewayLive(ctx, profileName) {
201
+ try {
202
+ const resolved = resolveFromContext({
203
+ profile: ctx.profile,
204
+ clientId: "codex",
205
+ dryRun: false,
206
+ verbose: false,
207
+ anypickRoot: this.root,
208
+ proxyEndpoint: ctx.proxyEndpoint
209
+ });
210
+ if (!resolved.endpoint || !resolved.apiKey) return;
211
+ await this.codexLiveConfigPublish?.({
212
+ source: `gateway:${profileName}`,
213
+ endpoint: resolved.endpoint,
214
+ token: resolved.apiKey,
215
+ defaultModel: resolved.defaultModel
216
+ });
217
+ } catch {}
218
+ }
219
+ /**
220
+ * Apply client config for an account+proxy activation (spec §22).
221
+ * Injects the managed proxy endpoint into the client without requiring
222
+ * a saved gateway profile.
223
+ */
224
+ async applyProxyEndpoint(clientId, opts) {
225
+ const client = this.clients.get(clientId);
226
+ const dryRun = Boolean(opts.dryRun);
227
+ const recovery = dryRun ? { backupPaths: [] } : opts.recovery ?? await this.prepareClientConfigRecovery(clientId);
228
+ const label = opts.label ?? (opts.accountRef ? `proxy:${opts.accountRef.provider}/${opts.accountRef.name}` : "proxy:account");
229
+ const roles = opts.modelRoles;
230
+ const defaultModel = opts.defaultModel ?? roles?.default;
231
+ const profile = syntheticProxyProfile({
232
+ name: label,
233
+ endpoint: opts.endpoint,
234
+ apiKey: opts.apiKey ?? "anypick-proxy",
235
+ defaultModel,
236
+ sonnetModel: opts.sonnetModel ?? roles?.sonnet,
237
+ opusModel: opts.opusModel ?? roles?.opus,
238
+ haikuModel: opts.haikuModel ?? roles?.haiku,
239
+ modelRoles: roles,
240
+ provider: "custom"
241
+ });
242
+ if (client.applyPersistent) {
243
+ const providerId = opts.accountRef?.provider ?? "unknown";
244
+ const accountName = opts.accountRef?.name ?? "unknown";
245
+ const provider = this.accountRegistry?.has(providerId) ? this.accountRegistry.get(providerId) : void 0;
246
+ const plan = {
247
+ clientId: client.id,
248
+ source: {
249
+ ref: {
250
+ kind: "account",
251
+ provider: providerId,
252
+ name: accountName
253
+ },
254
+ kind: "account",
255
+ adapter: proxyEndpointSourceAdapter(providerId, accountName, provider),
256
+ display: label
257
+ },
258
+ transport: {
259
+ capability: "managed_builtin_proxy",
260
+ protocol: client.capabilities?.protocolPreference ?? client.capabilities?.acceptedProtocols[0] ?? "openai",
261
+ endpoint: opts.endpoint
262
+ },
263
+ model: defaultModel ? {
264
+ mode: "explicit",
265
+ id: defaultModel
266
+ } : { mode: "omitted" },
267
+ mode: "persistent",
268
+ profile,
269
+ dryRun,
270
+ verbose: Boolean(opts.verbose),
271
+ anypickRoot: this.root
272
+ };
273
+ const result = await client.applyPersistent(plan);
274
+ if (!dryRun) {
275
+ await this.clientState.write({
276
+ clientId: client.id,
277
+ mode: "account",
278
+ accountRef: opts.accountRef,
279
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString(),
280
+ managedPaths: result.managedPaths,
281
+ managedEnvKeys: result.managedEnvKeys
282
+ });
283
+ if (client.id === "codex") await this.publishCodexProxyLive(label, opts.endpoint, opts.apiKey, defaultModel);
284
+ }
285
+ return {
286
+ clientId: client.id,
287
+ profileName: label,
288
+ managedPaths: result.managedPaths,
289
+ managedEnvKeys: result.managedEnvKeys,
290
+ dryRun,
291
+ envHint: `${this.root}/clients/${client.id}/env.sh`,
292
+ backupPaths: recovery.backupPaths.length ? recovery.backupPaths : void 0
293
+ };
294
+ }
295
+ const ctx = {
296
+ profile,
297
+ clientId: client.id,
298
+ dryRun,
299
+ verbose: Boolean(opts.verbose),
300
+ anypickRoot: this.root,
301
+ proxyEndpoint: opts.endpoint
302
+ };
303
+ await client.validate(ctx);
304
+ const result = await client.apply(ctx);
305
+ if (!dryRun) {
306
+ await this.clientState.write({
307
+ clientId: client.id,
308
+ mode: "account",
309
+ accountRef: opts.accountRef,
310
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString(),
311
+ managedPaths: result.managedPaths,
312
+ managedEnvKeys: result.managedEnvKeys
313
+ });
314
+ if (client.id === "codex") await this.publishCodexProxyLive(label, opts.endpoint, opts.apiKey, defaultModel);
315
+ }
316
+ return {
317
+ clientId: client.id,
318
+ profileName: label,
319
+ managedPaths: result.managedPaths,
320
+ managedEnvKeys: result.managedEnvKeys,
321
+ dryRun,
322
+ envHint: `${this.root}/clients/${client.id}/env.sh`,
323
+ backupPaths: recovery.backupPaths.length ? recovery.backupPaths : void 0
324
+ };
325
+ }
326
+ /**
327
+ * Build an isolated ephemeral runtime for `anypick run` (spec §9.7.1).
328
+ * Never mutates live client configuration.
329
+ */
330
+ async createEphemeralRuntime(plan) {
331
+ const client = this.clients.get(plan.clientId);
332
+ const caps = client.capabilities;
333
+ if (caps?.supportsIsolatedHome && client.listIsolatablePaths && client.createIsolatedRuntime) {
334
+ const liveHome = process.env.HOME ?? homedir();
335
+ const paths = await client.listIsolatablePaths({ home: liveHome });
336
+ const runtime = await client.createIsolatedRuntime(plan, paths);
337
+ return {
338
+ environment: runtime.environment,
339
+ args: runtime.args,
340
+ cleanup: () => runtime.cleanup(),
341
+ directory: runtime.directory
342
+ };
343
+ }
344
+ if (caps?.supportsEnvironmentOverlay && client.createEnvironmentOverlay) {
345
+ const runtime = await client.createEnvironmentOverlay(plan);
346
+ return {
347
+ environment: runtime.environment,
348
+ args: runtime.args,
349
+ cleanup: () => runtime.cleanup(),
350
+ directory: runtime.directory
351
+ };
352
+ }
353
+ throw new Error(`Client ${plan.clientId} does not implement an ephemeral runtime`);
354
+ }
355
+ async reset(clientId, opts = {}) {
356
+ const client = this.clients.get(clientId);
357
+ const existing = await this.clientState.get(client.id);
358
+ const dryRun = Boolean(opts.dryRun);
359
+ const state = existing ?? {
360
+ clientId: client.id,
361
+ mode: "none",
362
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString(),
363
+ managedPaths: [],
364
+ managedEnvKeys: []
365
+ };
366
+ if (!dryRun) {
367
+ await client.reset(state);
368
+ await this.clientState.write({
369
+ clientId: client.id,
370
+ mode: "none",
371
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString(),
372
+ managedPaths: [],
373
+ managedEnvKeys: []
374
+ });
375
+ }
376
+ return {
377
+ clientId: client.id,
378
+ previousMode: state.mode,
379
+ previousProfile: state.profileName,
380
+ dryRun
381
+ };
382
+ }
383
+ async status(clientId) {
384
+ const list = clientId ? [this.clients.get(clientId)] : this.clients.list();
385
+ const out = [];
386
+ for (const c of list) out.push({
387
+ clientId: c.id,
388
+ clientName: c.name,
389
+ state: await this.clientState.get(c.id),
390
+ inspect: await c.inspect()
391
+ });
392
+ return out;
393
+ }
394
+ async which(clientId) {
395
+ this.clients.get(clientId);
396
+ return this.clientState.get(clientId);
397
+ }
398
+ async activeProfile() {
399
+ if (!this.config) return null;
400
+ return (await this.config.read()).activeProfile ?? null;
401
+ }
402
+ async resolveTargetClients(opts) {
403
+ if (opts.allClients) return this.clients.ids();
404
+ if (opts.client) {
405
+ this.clients.get(opts.client);
406
+ return [opts.client];
407
+ }
408
+ let defaultClient = "claude";
409
+ if (this.config) {
410
+ const cfg = await this.config.read();
411
+ if (cfg.defaultClient) defaultClient = cfg.defaultClient;
412
+ }
413
+ if (this.clients.has(defaultClient)) return [defaultClient];
414
+ const first = this.clients.ids()[0];
415
+ if (!first) throw new Error("No client adapters registered.");
416
+ return [first];
417
+ }
418
+ };
419
+ //#endregion
420
+ export { RuntimeService };
421
+
422
+ //# sourceMappingURL=runtime-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-service.js","names":[],"sources":["../../src/core/runtime-service.ts"],"sourcesContent":["import type { ClientState, GlobalConfig, ResolvedClientPlan, RuntimeProfile } from '../types';\nimport type { ClientRegistry } from '../clients/registry';\nimport type { ClientStateStore } from './client-state-store';\nimport type { ProfileStore } from './profile-store';\nimport type { ConfigService } from './config-service';\nimport type { ProviderRegistry } from './registry';\nimport { resolveFromContext } from '../clients/resolve';\nimport { normalizeProfileName } from '../utils/slug';\nimport { getAnyPickRoot } from './paths';\nimport { syntheticProxyProfile } from './profile-synth';\nimport { proxyEndpointSourceAdapter } from '../sources/account-adapters';\nimport { homedir } from 'node:os';\nimport { mkdir, copyFile, rm } from 'node:fs/promises';\nimport { join, basename, dirname } from 'node:path';\nimport { existsSync } from 'node:fs';\nimport { createHash } from 'node:crypto';\nimport { recoveryDir } from './paths';\n\nexport interface RuntimeApplyResult {\n clientId: string;\n profileName: string;\n managedPaths: string[];\n managedEnvKeys: string[];\n dryRun: boolean;\n envHint?: string;\n /**\n * `src=>dest` entries of the on-disk backups taken for the files this apply\n * was about to overwrite (the client's previously-managed config paths).\n * Empty on first apply (nothing to lose). Consumed by the activation journal\n * so a crash mid-activation can be restored on next startup.\n */\n backupPaths?: string[];\n}\n\nexport interface RuntimeSwitchResult {\n profileName: string;\n clients: RuntimeApplyResult[];\n dryRun: boolean;\n}\n\nexport interface RuntimeResetResult {\n clientId: string;\n previousMode: string;\n previousProfile?: string;\n dryRun: boolean;\n}\n\n/**\n * Durable compensation prepared before a client adapter is allowed to mutate\n * local configuration. `backupPaths` is journal-compatible: `src=>dest`\n * restores an existing file while `delete=>dest` removes a newly-created one.\n */\nexport interface ClientConfigRecovery {\n backupPaths: string[];\n}\n\nexport class RuntimeService {\n readonly root: string;\n\n constructor(\n private readonly profiles: ProfileStore,\n private readonly clientState: ClientStateStore,\n private readonly clients: ClientRegistry,\n private readonly config?: ConfigService,\n root?: string,\n private readonly accountRegistry?: ProviderRegistry,\n ) {\n this.root = getAnyPickRoot(root);\n }\n\n /**\n * Optional Codex live-config hooks, wired in app.ts so this service does not\n * depend on Proxy/Hub services it was not constructed with.\n */\n private codexLiveConfigSync?: (opts?: { forceRouted?: boolean }) => Promise<void>;\n private codexLiveConfigRestoreNative?: () => Promise<void>;\n private codexLiveConfigPublish?: (provider: {\n source: string;\n endpoint: string;\n token: string;\n defaultModel?: string;\n }) => Promise<void>;\n\n setCodexLiveConfigSync(fn: (opts?: { forceRouted?: boolean }) => Promise<void>): void {\n this.codexLiveConfigSync = fn;\n }\n\n setCodexLiveConfigRestoreNative(fn: () => Promise<void>): void {\n this.codexLiveConfigRestoreNative = fn;\n }\n\n setCodexLiveConfigPublish(\n fn: (provider: {\n source: string;\n endpoint: string;\n token: string;\n defaultModel?: string;\n }) => Promise<void>,\n ): void {\n this.codexLiveConfigPublish = fn;\n }\n\n private async syncCodexLiveConfig(opts?: { forceRouted?: boolean }): Promise<void> {\n try {\n await this.codexLiveConfigSync?.(opts);\n } catch {\n // Best-effort: a failed live-block refresh must never fail activation.\n }\n }\n\n /**\n * Re-publish the Codex live block after the global binding is committed.\n * AttachProxyHubRoute may sync earlier — before modelRoles land in the store —\n * so Default/Model 2–5 would otherwise leave a stale Desktop catalog.\n */\n async refreshCodexLiveConfig(opts?: { forceRouted?: boolean }): Promise<void> {\n await this.syncCodexLiveConfig(opts ?? { forceRouted: true });\n }\n\n /** Restore user top-level Codex defaults after a native account switch. */\n async restoreCodexLiveForNative(): Promise<void> {\n try {\n await this.codexLiveConfigRestoreNative?.();\n } catch {\n // Best-effort.\n }\n }\n\n /**\n * Switch to a runtime profile and apply it immediately.\n * This is the main entry point (profile use / profile switch).\n */\n async switchProfile(\n profileName: string,\n opts: {\n client?: string;\n allClients?: boolean;\n dryRun?: boolean;\n verbose?: boolean;\n } = {},\n ): Promise<RuntimeSwitchResult> {\n const name = normalizeProfileName(profileName);\n await this.profiles.require(name);\n\n const clientIds = await this.resolveTargetClients(opts);\n const results: RuntimeApplyResult[] = [];\n for (const clientId of clientIds) {\n results.push(\n await this.apply(name, clientId, {\n dryRun: opts.dryRun,\n verbose: opts.verbose,\n }),\n );\n }\n\n if (!opts.dryRun && this.config) {\n await this.config.update(\n (cfg) =>\n ({\n ...cfg,\n activeProfile: name,\n }) satisfies GlobalConfig,\n );\n }\n\n return {\n profileName: name,\n clients: results,\n dryRun: Boolean(opts.dryRun),\n };\n }\n\n /**\n * Snapshot the client's previously-managed config files before overwriting.\n * Returns `src=>dest` backup entries for any that currently exist on disk, so\n * a crashed activation can be restored on next startup (TXN-01).\n *\n * Backups are stored in the owner-only AnyPick recovery directory (not the\n * system temp dir) with collision-free hashed filenames, so two targets with\n * the same basename — or concurrent activations — never clobber each other's\n * backup. Files that do not yet exist (first apply) yield no backup: there is\n * nothing to lose.\n */\n async prepareClientConfigRecovery(\n clientId: string,\n operationId?: string,\n ): Promise<ClientConfigRecovery> {\n try {\n const prior = await this.clientState.get(clientId);\n const client = this.clients.get(clientId);\n const inspected = await client.inspect();\n const targets = [\n ...(prior?.managedPaths ?? []),\n ...inspected.configPaths,\n // All bundled adapters use these AnyPick-owned environment files. They\n // must be compensated too even on a first apply.\n join(this.root, 'clients', clientId, 'env.sh'),\n join(this.root, 'clients', clientId, 'env.ps1'),\n ].toSorted();\n const unique = [...new Set(targets)];\n const dir = operationId\n ? join(recoveryDir(this.root), 'clients', clientId, operationId)\n : join(recoveryDir(this.root), 'clients', clientId);\n await mkdir(dir, { recursive: true, mode: 0o700 });\n const entries: string[] = [];\n for (const target of unique) {\n if (!existsSync(target)) {\n entries.push(`delete=>${target}`);\n continue;\n }\n // Hash the absolute target so two different files named e.g. settings.json\n // back up to distinct paths; include the basename for human readability.\n const hash = createHash('sha1').update(target).digest('hex').slice(0, 16);\n const dest = join(dir, `${hash}-${basename(target)}`);\n try {\n await copyFile(target, dest);\n entries.push(`${dest}=>${target}`);\n } catch (err) {\n // Existing state that cannot be snapshotted is not safe to overwrite.\n // Do not turn this into a best-effort backup: the caller has already\n // promised the journal can compensate every managed write.\n throw new Error(\n `Could not back up ${target}: ${err instanceof Error ? err.message : String(err)}`,\n { cause: err },\n );\n }\n }\n return { backupPaths: entries };\n } catch {\n // A recovery plan that cannot be prepared must never permit a mutation.\n throw new Error(`Could not prepare durable recovery for client ${clientId}`);\n }\n }\n\n async restoreClientConfigRecovery(recovery: ClientConfigRecovery): Promise<void> {\n for (const entry of recovery.backupPaths) {\n const [source, target] = entry.split('=>').map((value) => value.trim());\n if (!source || !target) {\n throw new Error(`Invalid client recovery entry: ${entry}`);\n }\n if (source === 'delete') {\n await rm(target, { force: true });\n continue;\n }\n if (!existsSync(source)) {\n throw new Error(`Client recovery backup is missing: ${source}`);\n }\n await mkdir(dirname(target), { recursive: true, mode: 0o700 });\n await copyFile(source, target);\n }\n }\n\n async apply(\n profileName: string,\n clientId: string,\n opts: {\n dryRun?: boolean;\n verbose?: boolean;\n /** Override endpoint (e.g. managed proxy URL). */\n proxyEndpoint?: string;\n /** Prepared and journaled before this method is allowed to mutate. */\n recovery?: ClientConfigRecovery;\n } = {},\n ): Promise<RuntimeApplyResult> {\n const name = normalizeProfileName(profileName);\n const profile = await this.profiles.require(name);\n const client = this.clients.get(clientId);\n const dryRun = Boolean(opts.dryRun);\n\n const recovery = dryRun\n ? { backupPaths: [] }\n : (opts.recovery ?? (await this.prepareClientConfigRecovery(clientId)));\n\n const ctx = {\n profile,\n clientId: client.id,\n dryRun,\n verbose: Boolean(opts.verbose),\n anypickRoot: this.root,\n proxyEndpoint: opts.proxyEndpoint,\n };\n\n await client.validate(ctx);\n const result = await client.apply(ctx);\n\n if (!dryRun) {\n const state: ClientState = {\n clientId: client.id,\n mode: 'profile',\n profileName: name,\n updatedAt: new Date().toISOString(),\n managedPaths: result.managedPaths,\n managedEnvKeys: result.managedEnvKeys,\n };\n await this.clientState.write(state);\n // Gateway profile apply: also take over top-level ~/.codex/config.toml so\n // plain `codex` / desktop honor the gateway without --profile.\n if (client.id === 'codex') {\n await this.publishCodexGatewayLive(ctx, name);\n }\n }\n\n return {\n clientId: client.id,\n profileName: name,\n managedPaths: result.managedPaths,\n managedEnvKeys: result.managedEnvKeys,\n dryRun,\n envHint: `${this.root}/clients/${client.id}/env.sh`,\n backupPaths: recovery.backupPaths.length ? recovery.backupPaths : undefined,\n };\n }\n\n private async publishCodexProxyLive(\n source: string,\n endpoint: string,\n apiKey: string | undefined,\n defaultModel: string | undefined,\n ): Promise<void> {\n try {\n const token = apiKey?.trim();\n if (!endpoint || !token) {\n // Fall back to hub/proxy resolution without a sticky model override.\n await this.syncCodexLiveConfig({ forceRouted: true });\n return;\n }\n await this.codexLiveConfigPublish?.({\n source,\n endpoint,\n token,\n defaultModel,\n });\n } catch {\n // Best-effort: profile files already written.\n }\n }\n\n private async publishCodexGatewayLive(\n ctx: {\n profile: RuntimeProfile;\n proxyEndpoint?: string;\n },\n profileName: string,\n ): Promise<void> {\n try {\n const resolved = resolveFromContext({\n profile: ctx.profile,\n clientId: 'codex',\n dryRun: false,\n verbose: false,\n anypickRoot: this.root,\n proxyEndpoint: ctx.proxyEndpoint,\n });\n if (!resolved.endpoint || !resolved.apiKey) {\n return;\n }\n await this.codexLiveConfigPublish?.({\n source: `gateway:${profileName}`,\n endpoint: resolved.endpoint,\n token: resolved.apiKey,\n defaultModel: resolved.defaultModel,\n });\n } catch {\n // Best-effort: profile files already written.\n }\n }\n\n /**\n * Apply client config for an account+proxy activation (spec §22).\n * Injects the managed proxy endpoint into the client without requiring\n * a saved gateway profile.\n */\n async applyProxyEndpoint(\n clientId: string,\n opts: {\n endpoint: string;\n apiKey?: string;\n defaultModel?: string;\n sonnetModel?: string;\n opusModel?: string;\n haikuModel?: string;\n /** Role id → model id (preferred; fills default/sonnet/opus/haiku). */\n modelRoles?: Record<string, string>;\n accountRef?: { provider: string; name: string };\n dryRun?: boolean;\n verbose?: boolean;\n /** Label for synthetic profile / state tracking. */\n label?: string;\n /** Prepared and journaled before this method is allowed to mutate. */\n recovery?: ClientConfigRecovery;\n },\n ): Promise<RuntimeApplyResult> {\n const client = this.clients.get(clientId);\n const dryRun = Boolean(opts.dryRun);\n const recovery = dryRun\n ? { backupPaths: [] }\n : (opts.recovery ?? (await this.prepareClientConfigRecovery(clientId)));\n const label =\n opts.label ??\n (opts.accountRef\n ? `proxy:${opts.accountRef.provider}/${opts.accountRef.name}`\n : 'proxy:account');\n\n const roles = opts.modelRoles;\n const defaultModel = opts.defaultModel ?? roles?.default;\n const profile: RuntimeProfile = syntheticProxyProfile({\n name: label,\n endpoint: opts.endpoint,\n apiKey: opts.apiKey ?? 'anypick-proxy',\n defaultModel,\n sonnetModel: opts.sonnetModel ?? roles?.sonnet,\n opusModel: opts.opusModel ?? roles?.opus,\n haikuModel: opts.haikuModel ?? roles?.haiku,\n modelRoles: roles,\n provider: 'custom',\n });\n\n // Prefer applyPersistent when available\n if (client.applyPersistent) {\n const providerId = opts.accountRef?.provider ?? 'unknown';\n const accountName = opts.accountRef?.name ?? 'unknown';\n const provider = this.accountRegistry?.has(providerId)\n ? this.accountRegistry.get(providerId)\n : undefined;\n const plan: ResolvedClientPlan = {\n clientId: client.id,\n source: {\n ref: { kind: 'account', provider: providerId, name: accountName },\n kind: 'account',\n adapter: proxyEndpointSourceAdapter(providerId, accountName, provider),\n display: label,\n },\n transport: {\n capability: 'managed_builtin_proxy',\n protocol:\n client.capabilities?.protocolPreference ??\n client.capabilities?.acceptedProtocols[0] ??\n 'openai',\n endpoint: opts.endpoint,\n },\n model: defaultModel ? { mode: 'explicit', id: defaultModel } : { mode: 'omitted' },\n mode: 'persistent',\n profile,\n dryRun,\n verbose: Boolean(opts.verbose),\n anypickRoot: this.root,\n };\n const result = await client.applyPersistent(plan);\n if (!dryRun) {\n await this.clientState.write({\n clientId: client.id,\n mode: 'account',\n accountRef: opts.accountRef,\n updatedAt: new Date().toISOString(),\n managedPaths: result.managedPaths,\n managedEnvKeys: result.managedEnvKeys,\n });\n if (client.id === 'codex') {\n // Activation bound Codex to a proxy: take over top-level with the\n // chosen default model (force routed even after a native switch).\n await this.publishCodexProxyLive(label, opts.endpoint, opts.apiKey, defaultModel);\n }\n }\n return {\n clientId: client.id,\n profileName: label,\n managedPaths: result.managedPaths,\n managedEnvKeys: result.managedEnvKeys,\n dryRun,\n envHint: `${this.root}/clients/${client.id}/env.sh`,\n backupPaths: recovery.backupPaths.length ? recovery.backupPaths : undefined,\n };\n }\n\n const ctx = {\n profile,\n clientId: client.id,\n dryRun,\n verbose: Boolean(opts.verbose),\n anypickRoot: this.root,\n proxyEndpoint: opts.endpoint,\n };\n await client.validate(ctx);\n const result = await client.apply(ctx);\n if (!dryRun) {\n await this.clientState.write({\n clientId: client.id,\n mode: 'account',\n accountRef: opts.accountRef,\n updatedAt: new Date().toISOString(),\n managedPaths: result.managedPaths,\n managedEnvKeys: result.managedEnvKeys,\n });\n if (client.id === 'codex') {\n await this.publishCodexProxyLive(label, opts.endpoint, opts.apiKey, defaultModel);\n }\n }\n return {\n clientId: client.id,\n profileName: label,\n managedPaths: result.managedPaths,\n managedEnvKeys: result.managedEnvKeys,\n dryRun,\n envHint: `${this.root}/clients/${client.id}/env.sh`,\n backupPaths: recovery.backupPaths.length ? recovery.backupPaths : undefined,\n };\n }\n\n /**\n * Build an isolated ephemeral runtime for `anypick run` (spec §9.7.1).\n * Never mutates live client configuration.\n */\n async createEphemeralRuntime(plan: ResolvedClientPlan): Promise<{\n environment: Record<string, string>;\n args?: string[];\n cleanup: () => Promise<void>;\n directory: string;\n }> {\n const client = this.clients.get(plan.clientId);\n const caps = client.capabilities;\n if (caps?.supportsIsolatedHome && client.listIsolatablePaths && client.createIsolatedRuntime) {\n const liveHome = process.env.HOME ?? homedir();\n const paths = await client.listIsolatablePaths({ home: liveHome });\n const runtime = await client.createIsolatedRuntime(plan, paths);\n return {\n environment: runtime.environment,\n args: runtime.args,\n cleanup: () => runtime.cleanup(),\n directory: runtime.directory,\n };\n }\n\n if (caps?.supportsEnvironmentOverlay && client.createEnvironmentOverlay) {\n const runtime = await client.createEnvironmentOverlay(plan);\n return {\n environment: runtime.environment,\n args: runtime.args,\n cleanup: () => runtime.cleanup(),\n directory: runtime.directory,\n };\n }\n\n throw new Error(`Client ${plan.clientId} does not implement an ephemeral runtime`);\n }\n\n async reset(clientId: string, opts: { dryRun?: boolean } = {}): Promise<RuntimeResetResult> {\n const client = this.clients.get(clientId);\n const existing = await this.clientState.get(client.id);\n const dryRun = Boolean(opts.dryRun);\n\n const state: ClientState = existing ?? {\n clientId: client.id,\n mode: 'none',\n updatedAt: new Date().toISOString(),\n managedPaths: [],\n managedEnvKeys: [],\n };\n\n if (!dryRun) {\n await client.reset(state);\n await this.clientState.write({\n clientId: client.id,\n mode: 'none',\n updatedAt: new Date().toISOString(),\n managedPaths: [],\n managedEnvKeys: [],\n });\n }\n\n return {\n clientId: client.id,\n previousMode: state.mode,\n previousProfile: state.profileName,\n dryRun,\n };\n }\n\n async status(clientId?: string): Promise<\n Array<{\n clientId: string;\n clientName: string;\n state: ClientState | null;\n inspect: Awaited<ReturnType<import('../types').ClientAdapter['inspect']>>;\n }>\n > {\n const list = clientId ? [this.clients.get(clientId)] : this.clients.list();\n\n const out = [];\n for (const c of list) {\n out.push({\n clientId: c.id,\n clientName: c.name,\n state: await this.clientState.get(c.id),\n inspect: await c.inspect(),\n });\n }\n return out;\n }\n\n async which(clientId: string): Promise<ClientState | null> {\n this.clients.get(clientId);\n return this.clientState.get(clientId);\n }\n\n async activeProfile(): Promise<string | null> {\n if (!this.config) {\n return null;\n }\n const cfg = await this.config.read();\n return cfg.activeProfile ?? null;\n }\n\n private async resolveTargetClients(opts: {\n client?: string;\n allClients?: boolean;\n }): Promise<string[]> {\n if (opts.allClients) {\n return this.clients.ids();\n }\n if (opts.client) {\n this.clients.get(opts.client);\n return [opts.client];\n }\n // Default client from config (claude)\n let defaultClient = 'claude';\n if (this.config) {\n const cfg = await this.config.read();\n if (cfg.defaultClient) {\n defaultClient = cfg.defaultClient;\n }\n }\n if (this.clients.has(defaultClient)) {\n return [defaultClient];\n }\n const first = this.clients.ids()[0];\n if (!first) {\n throw new Error('No client adapters registered.');\n }\n return [first];\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,200 @@
1
+ import type { Account, AccountMeta, CredentialInput, LiveAuthStatus, LiveUsage, Provider } from '../types.js';
2
+ import type { ProviderRegistry } from './registry.js';
3
+ import type { AccountStore } from './store.js';
4
+ import { ProxyService } from './proxy-service.js';
5
+ export interface ListedAccount {
6
+ name: string;
7
+ provider: string;
8
+ identity?: string;
9
+ label?: string;
10
+ active: boolean;
11
+ updatedAt: string;
12
+ createdAt: string;
13
+ proxyEnabled: boolean;
14
+ proxyRunning: boolean;
15
+ /** True when this snapshot's material matches the current live login. */
16
+ isLiveMatch: boolean;
17
+ /** False when comparing this provider's live credential would require a secret prompt. */
18
+ liveMatchKnown: boolean;
19
+ }
20
+ export interface SwitchResult {
21
+ provider: string;
22
+ providerName: string;
23
+ from: string | null;
24
+ to: string;
25
+ /** Whether the previous live auth was re-saved into the prior active account. */
26
+ refreshedPrevious: boolean;
27
+ /** Saved account whose snapshot received the latest live auth before switching. */
28
+ refreshedAccount?: string;
29
+ /** Proxy outcome for the newly active account (if any). */
30
+ proxy?: {
31
+ enabled: boolean;
32
+ running: boolean;
33
+ endpoint?: string;
34
+ compatibility?: string;
35
+ error?: string;
36
+ };
37
+ }
38
+ /** Exact local-auth checkpoint used to compensate a failed/scoped switch. */
39
+ export interface LiveAuthCheckpoint {
40
+ providerId: string;
41
+ activeAccount: string | null;
42
+ hadLiveAuth: boolean;
43
+ directory: string;
44
+ }
45
+ /**
46
+ * High-level account operations: save, switch, stash, refresh, delete,
47
+ * and account metadata listing. Proxy lifecycle, pools, and port allocation
48
+ * live in the injected `ProxyService` (exposed as `app.proxy`); this service
49
+ * delegates to it for the proxy side effects of switch/stash/delete.
50
+ *
51
+ * CLI commands call this for account CRUD, and `app.proxy` for proxy control.
52
+ */
53
+ export declare class AccountService {
54
+ private readonly store;
55
+ private readonly registry;
56
+ /** Proxy lifecycle collaborator (start/stop/pool/port). */
57
+ readonly proxy: ProxyService;
58
+ /**
59
+ * Optional post-delete side effects (Proxy Hub source prune, pool member
60
+ * sync). Wired from app.ts after Hub exists — AccountService is constructed
61
+ * before Hub to avoid a cycle.
62
+ */
63
+ private afterDelete?;
64
+ /**
65
+ * `proxy` stays optional for callers that only need account CRUD (several
66
+ * tests, and any embedder that never starts a proxy). When omitted a private
67
+ * one is built here — deliberately without a lease store, because a service
68
+ * that was never handed the app's lease table must not record leases into a
69
+ * table nobody reaps.
70
+ */
71
+ constructor(store: AccountStore, registry: ProviderRegistry, proxy?: ProxyService);
72
+ setAfterDelete(fn: (providerId: string, accountName: string) => Promise<void>): void;
73
+ provider(id: string): Provider;
74
+ listProviders(): Provider[];
75
+ /** Currently active (live) account name for a provider, if any. */
76
+ getActive(providerId: string): Promise<string | null>;
77
+ /** Load a saved account or return null if missing. */
78
+ get(providerId: string, name: string): Promise<Account | null>;
79
+ /** Saved local name for an upstream identity, if one is already known. */
80
+ findNameByIdentity(providerId: string, identity: string): Promise<string | null>;
81
+ /**
82
+ * Capture the real local login before a switch. The checkpoint is private to
83
+ * the current operation and must be cleaned by `discardLiveAuthCheckpoint`.
84
+ */
85
+ checkpointLiveAuth(providerId: string, opts?: {
86
+ durable?: boolean;
87
+ }): Promise<LiveAuthCheckpoint>;
88
+ /** Restore a checkpoint, including the provider active pointer. */
89
+ restoreLiveAuthCheckpoint(checkpoint: LiveAuthCheckpoint): Promise<void>;
90
+ discardLiveAuthCheckpoint(checkpoint: LiveAuthCheckpoint): Promise<void>;
91
+ list(providerId?: string): Promise<ListedAccount[]>;
92
+ current(providerId: string): Promise<{
93
+ active: string | null;
94
+ live: LiveAuthStatus;
95
+ account: Account | null;
96
+ proxy: import('../types.js').ProxyStatus | null;
97
+ isLiveMatch: boolean;
98
+ liveMatchKnown: boolean;
99
+ }>;
100
+ /** Best-effort usage for the provider's currently live local login only. */
101
+ liveUsage(providerId: string): Promise<LiveUsage | null>;
102
+ /**
103
+ * Save current live auth as a named account.
104
+ * If the name already exists, overwrite the snapshot (refresh).
105
+ * Proxy config is preserved.
106
+ */
107
+ save(providerId: string, name: string, opts?: {
108
+ label?: string;
109
+ notes?: string;
110
+ force?: boolean;
111
+ source?: string;
112
+ /** Credential typed by the user; replaces reading a live login. */
113
+ input?: CredentialInput;
114
+ }): Promise<AccountMeta>;
115
+ private saveLocked;
116
+ /**
117
+ * Resolve the saved name for the auth material currently on disk.
118
+ *
119
+ * Existing identities always win so a refreshed token overwrites its saved
120
+ * snapshot instead of creating an alias such as "default". A new login gets
121
+ * a stable identity-derived name unless the caller supplied one.
122
+ */
123
+ resolveCurrentSaveName(providerId: string, requestedName?: string): Promise<string>;
124
+ /** Save current auth, reusing its existing account whenever possible. */
125
+ saveCurrent(providerId: string, requestedName?: string): Promise<AccountMeta>;
126
+ /**
127
+ * Switch live auth to a saved account.
128
+ * Stops the previous account's proxy, restores auth, starts the new proxy if enabled.
129
+ */
130
+ use(providerId: string, name: string, opts?: {
131
+ noRefresh?: boolean;
132
+ noProxy?: boolean;
133
+ }): Promise<SwitchResult>;
134
+ private useLocked;
135
+ /**
136
+ * Stash live auth: auto-backup (prefer matching email), then remove local
137
+ * live files so the tool allows a new login — WITHOUT server-side logout/revoke.
138
+ */
139
+ stash(providerId: string, opts?: {
140
+ /** Skip auto-backup before removing live files. */
141
+ noBackup?: boolean;
142
+ /** Force backup into this account name. */
143
+ as?: string;
144
+ /** Sign-in source to stash for providers that have more than one. */
145
+ source?: 'gemini-cli' | 'antigravity';
146
+ }): Promise<{
147
+ provider: string;
148
+ cleared: boolean;
149
+ backedUpTo: string | null;
150
+ previousIdentity?: string;
151
+ /** True when backup reused an existing account with the same email. */
152
+ matchedByIdentity: boolean;
153
+ /** True when there was no live auth to back up (nothing to save). */
154
+ skippedBackup: boolean;
155
+ }>;
156
+ private stashLocked;
157
+ /**
158
+ * Pick account name for stash auto-backup, preferring same-email reuse.
159
+ */
160
+ private resolveStashBackupTarget;
161
+ private findAccountNameByIdentity;
162
+ /**
163
+ * Save live auth only into an already-saved account.
164
+ *
165
+ * Switching must never invent a new account or overwrite a stale active
166
+ * pointer with another identity. An unsaved login is blocked so the caller
167
+ * can explicitly name/save it before replacing the live auth file.
168
+ */
169
+ private saveLiveIntoExistingAccount;
170
+ /** Resolve a duplicate identity to its existing local account after confirmation. */
171
+ private resolveIdentityTarget;
172
+ /**
173
+ * Refresh OAuth/OIDC tokens.
174
+ *
175
+ * - `refresh codex` → live auth (+ sync into active saved account if any)
176
+ * - `refresh codex lucy` → saved snapshot `lucy` (+ restore to live if active)
177
+ * - `refresh codex --all` → every saved account for a provider
178
+ */
179
+ refresh(providerId: string, name?: string, opts?: {
180
+ all?: boolean;
181
+ }): Promise<Array<{
182
+ target: string;
183
+ identity?: string;
184
+ ok: boolean;
185
+ error?: string;
186
+ }>>;
187
+ private refreshLocked;
188
+ private refreshSavedAccount;
189
+ private refreshLiveAuth;
190
+ /** Update display metadata without touching the credential snapshot bytes. */
191
+ edit(providerId: string, name: string, opts: {
192
+ label?: string | null;
193
+ }): Promise<AccountMeta>;
194
+ delete(providerId: string, name: string): Promise<void>;
195
+ exportAccount(providerId: string, name: string, outPath: string): Promise<void>;
196
+ importAccount(providerId: string, name: string, inPath: string, opts?: {
197
+ force?: boolean;
198
+ }): Promise<AccountMeta>;
199
+ }
200
+ //# sourceMappingURL=service.d.ts.map