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,372 @@
1
+ import { AnyPickError } from "../utils/errors.js";
2
+ import { ensureDir, writeJsonFile } from "../utils/fs.js";
3
+ import { isProcessRunning, spawnDetached, stopPidFile } from "../utils/process/pid.js";
4
+ import { trayLaunchAtLoginEnabled, trayPreferences } from "./settings.js";
5
+ import { readTrayState, runningTrayPid, trayLogPath, trayPidPath, trayRuntimeDir, trayStatePath } from "../core/tray-runtime.js";
6
+ import { openAnyPickTerminal } from "./terminal-launcher.js";
7
+ import { assertNativeTrayPlatform, nativeTrayBinary, nativeTrayNeedsRestart, sendProxyLogs, sendSnapshot } from "./supervisor-native.js";
8
+ import { decodeTrayCommand } from "./protocol.js";
9
+ import { buildTraySnapshot } from "./snapshot.js";
10
+ import { buildTrayUsage } from "./snapshot-usage.js";
11
+ import { TrayActivityService } from "./activity.js";
12
+ import { tauriTrayBinary } from "./supervisor-tauri.js";
13
+ import { recordTrayActivity } from "./supervisor-activity.js";
14
+ import { invokeTrayAction, invokeTrayModelRoles } from "./supervisor-actions.js";
15
+ import { resolveTrayProxyLogs } from "./supervisor-logs.js";
16
+ import { startConfiguredProxies, startEnabledProxies, stopAllProxies, totalRunningProxyCount } from "./supervisor-proxies.js";
17
+ import { invokeTrayMutation } from "./supervisor-mutations.js";
18
+ import { resolve } from "node:path";
19
+ import { readFile, unlink, writeFile } from "node:fs/promises";
20
+ import { randomUUID } from "node:crypto";
21
+ import { spawn } from "node:child_process";
22
+ import { createInterface } from "node:readline";
23
+ //#region src/tray/supervisor.ts
24
+ /**
25
+ * Resolve how to re-exec `tray run` as a detached supervisor.
26
+ * - Built package: `node dist/cli.js tray run` (or any .js entry)
27
+ * - Dev TypeScript: `node --import tsx src/cli.ts tray run`
28
+ *
29
+ * Never fall back to a stale dist/ when the entry is .ts — that still ships
30
+ * the old single-file AnyPickTray.swift. Prefer `node --import tsx` over the
31
+ * `tsx` binary so the supervisor PID matches `process.pid` written into
32
+ * state.json (the tsx CLI re-spawns Node and breaks the ready wait).
33
+ */
34
+ async function traySupervisorLaunchArgs(cliEntry) {
35
+ const entry = resolve(cliEntry);
36
+ if (!(entry.endsWith(".ts") || entry.endsWith(".tsx"))) return {
37
+ command: process.execPath,
38
+ args: [
39
+ entry,
40
+ "tray",
41
+ "run"
42
+ ]
43
+ };
44
+ return {
45
+ command: process.execPath,
46
+ args: [
47
+ "--import",
48
+ "tsx",
49
+ entry,
50
+ "tray",
51
+ "run"
52
+ ]
53
+ };
54
+ }
55
+ async function trayStatus(root) {
56
+ const pid = await runningTrayPid(root);
57
+ if (pid == null) return { running: false };
58
+ const state = await readTrayState(root);
59
+ return {
60
+ running: true,
61
+ pid,
62
+ proxyCount: state?.proxyCount,
63
+ startedAt: state?.startedAt,
64
+ mode: state?.mode ?? (process.platform === "darwin" ? "native" : "headless")
65
+ };
66
+ }
67
+ async function startTray(root, cliEntry) {
68
+ let current = await runningTrayPid(root);
69
+ if (current != null) {
70
+ if (!(process.platform === "darwin" && await nativeTrayNeedsRestart(root).catch(() => false))) return {
71
+ pid: current,
72
+ started: false
73
+ };
74
+ await stopTray(root);
75
+ current = await runningTrayPid(root);
76
+ if (current != null) return {
77
+ pid: current,
78
+ started: false
79
+ };
80
+ }
81
+ await ensureDir(trayRuntimeDir(root));
82
+ await unlink(trayStatePath(root)).catch(() => {});
83
+ await writeFile(trayLogPath(root), "", { mode: 384 });
84
+ const entry = resolve(cliEntry);
85
+ const { command: nodeOrTsx, args: runArgs } = await traySupervisorLaunchArgs(entry);
86
+ const { pid } = await spawnDetached(nodeOrTsx, runArgs, {
87
+ pidPath: trayPidPath(root),
88
+ logPath: trayLogPath(root),
89
+ env: {
90
+ ...process.env,
91
+ ANYPICK_HOME: root,
92
+ ANYPICK_TRAY_PROCESS: "1",
93
+ ANYPICK_TRAY_CLI_ENTRY: entry
94
+ }
95
+ });
96
+ const deadline = Date.now() + 2e4;
97
+ while (Date.now() < deadline) {
98
+ if (!isProcessRunning(pid)) {
99
+ const log = await readFile(trayLogPath(root), "utf8").catch(() => "");
100
+ throw new AnyPickError(`AnyPick tray exited during startup.${log ? `\n${log.slice(-2e3)}` : ""}`, "TRAY_START_FAILED");
101
+ }
102
+ const state = await readTrayState(root);
103
+ if (state?.ready && (state.pid === pid || state.pid != null && isProcessRunning(state.pid))) return {
104
+ pid: state.pid === pid ? pid : state.pid,
105
+ started: true
106
+ };
107
+ await new Promise((resolveWait) => setTimeout(resolveWait, 100));
108
+ }
109
+ await stopPidFile(trayPidPath(root), {
110
+ graceMs: 5e3,
111
+ verifyHealth: false
112
+ });
113
+ throw new AnyPickError("Timed out waiting for the AnyPick supervisor.", "TRAY_START_TIMEOUT");
114
+ }
115
+ async function stopTray(root) {
116
+ const stopped = await stopPidFile(trayPidPath(root), {
117
+ graceMs: 15e3,
118
+ verifyHealth: false
119
+ });
120
+ if (!await runningTrayPid(root)) await unlink(trayStatePath(root)).catch(() => {});
121
+ return stopped;
122
+ }
123
+ /** Keep proxy ownership alive when no desktop tray helper is installed. */
124
+ async function runHeadlessSupervisor(app) {
125
+ await startConfiguredProxies(app);
126
+ let proxyCount = await totalRunningProxyCount(app, await app.proxy.adoptRunningProxies());
127
+ const startedAt = (/* @__PURE__ */ new Date()).toISOString();
128
+ const writeState = async (ready) => {
129
+ const state = {
130
+ pid: process.pid,
131
+ ready,
132
+ proxyCount,
133
+ startedAt,
134
+ mode: "headless"
135
+ };
136
+ await writeJsonFile(trayStatePath(app.root), state);
137
+ };
138
+ await writeState(true);
139
+ let operation = Promise.resolve();
140
+ let shutdownPromise;
141
+ const refresh = async () => {
142
+ proxyCount = await totalRunningProxyCount(app, await app.proxy.adoptRunningProxies());
143
+ await writeState(true);
144
+ };
145
+ const refreshTimer = setInterval(() => {
146
+ operation = operation.then(refresh).catch((err) => {
147
+ process.stderr.write(`[tray] ${err instanceof Error ? err.message : String(err)}\n`);
148
+ });
149
+ }, 2500);
150
+ const shutdown = (waitForOperation = true) => {
151
+ if (shutdownPromise) return shutdownPromise;
152
+ shutdownPromise = (async () => {
153
+ clearInterval(refreshTimer);
154
+ if (waitForOperation) await operation.catch(() => {});
155
+ await stopAllProxies(app).catch(() => {});
156
+ await unlink(trayStatePath(app.root)).catch(() => {});
157
+ })();
158
+ return shutdownPromise;
159
+ };
160
+ await new Promise((resolveDone) => {
161
+ const requestShutdown = () => {
162
+ shutdown().finally(resolveDone);
163
+ };
164
+ process.once("SIGINT", requestShutdown);
165
+ process.once("SIGTERM", requestShutdown);
166
+ });
167
+ }
168
+ /** Long-running owner for enabled proxies and the platform desktop tray helper. */
169
+ async function runTraySupervisor(app) {
170
+ let binary;
171
+ let trayMode;
172
+ if (process.platform === "darwin") {
173
+ assertNativeTrayPlatform();
174
+ binary = await nativeTrayBinary(app.root);
175
+ trayMode = "native";
176
+ } else {
177
+ binary = await tauriTrayBinary();
178
+ if (!binary) {
179
+ process.stderr.write("[tray] No packaged Tauri helper is available; continuing in headless mode.\n");
180
+ await runHeadlessSupervisor(app);
181
+ return;
182
+ }
183
+ trayMode = "tauri";
184
+ }
185
+ await startConfiguredProxies(app);
186
+ let proxyCount = await totalRunningProxyCount(app, await app.proxy.adoptRunningProxies());
187
+ const native = spawn(binary, [String(proxyCount)], {
188
+ stdio: [
189
+ "pipe",
190
+ "pipe",
191
+ "pipe"
192
+ ],
193
+ env: process.env
194
+ });
195
+ const startedAt = (/* @__PURE__ */ new Date()).toISOString();
196
+ const activity = new TrayActivityService(app.root);
197
+ const writeState = async (ready) => {
198
+ const state = {
199
+ pid: process.pid,
200
+ ready,
201
+ proxyCount,
202
+ startedAt,
203
+ mode: trayMode
204
+ };
205
+ await writeJsonFile(trayStatePath(app.root), state);
206
+ };
207
+ await writeState(true);
208
+ let actionRevision = 0;
209
+ const actionSets = /* @__PURE__ */ new Map();
210
+ const stableActionIds = /* @__PURE__ */ new Map();
211
+ let usage = [];
212
+ let usageRefreshedAt = 0;
213
+ let usageStale = true;
214
+ let usageGeneration = 0;
215
+ let usageFetchInFlight;
216
+ const refreshUsageInBackground = () => {
217
+ if (!usageStale && Date.now() - usageRefreshedAt < 6e4) return;
218
+ if (usageFetchInFlight) return;
219
+ const generation = usageGeneration;
220
+ usageFetchInFlight = buildTrayUsage(app).then((nextUsage) => {
221
+ if (generation !== usageGeneration) return;
222
+ usage = nextUsage;
223
+ usageRefreshedAt = Date.now();
224
+ usageStale = false;
225
+ }).catch(() => {
226
+ if (generation !== usageGeneration) return;
227
+ usage = [];
228
+ usageRefreshedAt = Date.now();
229
+ usageStale = false;
230
+ }).finally(() => {
231
+ usageFetchInFlight = void 0;
232
+ });
233
+ };
234
+ let operation = Promise.resolve();
235
+ let shutdownPromise;
236
+ const refresh = async () => {
237
+ const accountProxyCount = await app.proxy.adoptRunningProxies();
238
+ const quotaEvents = await app.proxy.quotaGuardEvents();
239
+ await Promise.all(quotaEvents.map((event) => activity.record(event.to ? `Quota Guard switched ${event.providerId}/${event.from} → ${event.to}.` : `Quota Guard put ${event.providerId}/${event.from} on cooldown; no eligible backup.`, false, "quota", `quota-guard:${event.id}`)));
240
+ const preferences = trayPreferences(await app.config.read(), await trayLaunchAtLoginEnabled());
241
+ if (preferences.showQuota) refreshUsageInBackground();
242
+ const revision = actionRevision + 1;
243
+ const nextTargets = /* @__PURE__ */ new Map();
244
+ const snapshot = await buildTraySnapshot(app, accountProxyCount, {
245
+ revision,
246
+ register(target) {
247
+ const key = JSON.stringify(target);
248
+ const id = stableActionIds.get(key) ?? randomUUID();
249
+ stableActionIds.set(key, id);
250
+ nextTargets.set(id, target);
251
+ return id;
252
+ }
253
+ }, {
254
+ usage: preferences.showQuota ? usage : [],
255
+ settings: preferences,
256
+ activity: await activity.list()
257
+ });
258
+ proxyCount = snapshot.proxyCount;
259
+ actionRevision = revision;
260
+ actionSets.set(revision, {
261
+ targets: nextTargets,
262
+ labels: new Map([
263
+ ...snapshot.actions.map((action) => [action.id, action.label]),
264
+ ...snapshot.proxies.flatMap((proxy) => [
265
+ [proxy.toggleActionId, proxy.label],
266
+ [proxy.restartActionId, proxy.label],
267
+ ...proxy.testActionId ? [[proxy.testActionId, `${proxy.label} test`]] : []
268
+ ]),
269
+ ...snapshot.hubConflicts.flatMap((conflict) => conflict.candidates.map((candidate) => [candidate.actionId, `${candidate.label} for ${conflict.models.length} model${conflict.models.length === 1 ? "" : "s"}`]))
270
+ ])
271
+ });
272
+ while (actionSets.size > 2) {
273
+ const oldestRevision = actionSets.keys().next().value;
274
+ if (oldestRevision === void 0) break;
275
+ actionSets.delete(oldestRevision);
276
+ }
277
+ sendSnapshot(native, snapshot);
278
+ await writeState(true);
279
+ };
280
+ await refresh();
281
+ const refreshTimer = setInterval(() => {
282
+ operation = operation.then(refresh).catch((err) => {
283
+ process.stderr.write(`[tray] ${err instanceof Error ? err.message : String(err)}\n`);
284
+ });
285
+ }, 2500);
286
+ const shutdown = (waitForOperation = true) => {
287
+ if (shutdownPromise) return shutdownPromise;
288
+ shutdownPromise = (async () => {
289
+ clearInterval(refreshTimer);
290
+ if (waitForOperation) await operation.catch(() => {});
291
+ await stopAllProxies(app).catch(() => {});
292
+ native.stdin.end();
293
+ if (native.pid != null && isProcessRunning(native.pid)) native.kill("SIGTERM");
294
+ await unlink(trayStatePath(app.root)).catch(() => {});
295
+ })();
296
+ return shutdownPromise;
297
+ };
298
+ const cliEntry = process.env.ANYPICK_TRAY_CLI_ENTRY || process.argv[1] || "";
299
+ createInterface({ input: native.stdout }).on("line", (line) => {
300
+ const command = decodeTrayCommand(line);
301
+ if (!command) return;
302
+ operation = operation.then(async () => {
303
+ switch (command.kind) {
304
+ case "open":
305
+ await openAnyPickTerminal(cliEntry);
306
+ break;
307
+ case "navigate":
308
+ await openAnyPickTerminal(cliEntry, command.screen);
309
+ break;
310
+ case "refresh":
311
+ usageGeneration += 1;
312
+ usageStale = true;
313
+ await refresh();
314
+ break;
315
+ case "restart":
316
+ await stopAllProxies(app);
317
+ await startEnabledProxies(app);
318
+ await recordTrayActivity(activity, "Restarted enabled proxies.", false, "proxy");
319
+ await refresh();
320
+ break;
321
+ case "stop":
322
+ await stopAllProxies(app);
323
+ await recordTrayActivity(activity, "Stopped all proxies.", false, "proxy");
324
+ await refresh();
325
+ break;
326
+ case "quit":
327
+ shutdown(false);
328
+ break;
329
+ case "invoke":
330
+ await invokeTrayAction(app, native, command.payload, actionSets, activity, refresh, () => {
331
+ usageGeneration += 1;
332
+ usageStale = true;
333
+ });
334
+ break;
335
+ case "apply-model-roles":
336
+ await invokeTrayModelRoles(app, native, command.payload, actionSets, activity, refresh, () => {
337
+ usageGeneration += 1;
338
+ usageStale = true;
339
+ });
340
+ break;
341
+ case "logs":
342
+ await sendTrayProxyLogs(app, native, command.payload);
343
+ break;
344
+ case "mutate":
345
+ await invokeTrayMutation(app, native, command.payload, cliEntry, activity, refresh, () => {
346
+ usageGeneration += 1;
347
+ usageStale = true;
348
+ });
349
+ break;
350
+ default: break;
351
+ }
352
+ }).catch((err) => {
353
+ process.stderr.write(`[tray] ${err instanceof Error ? err.message : String(err)}\n`);
354
+ });
355
+ });
356
+ native.stderr.on("data", (chunk) => process.stderr.write(chunk));
357
+ await new Promise((resolveDone) => {
358
+ const requestShutdown = () => {
359
+ shutdown().finally(resolveDone);
360
+ };
361
+ process.once("SIGINT", requestShutdown);
362
+ process.once("SIGTERM", requestShutdown);
363
+ native.once("exit", requestShutdown);
364
+ });
365
+ }
366
+ async function sendTrayProxyLogs(app, native, payload) {
367
+ sendProxyLogs(native, await resolveTrayProxyLogs(app, payload));
368
+ }
369
+ //#endregion
370
+ export { runTraySupervisor, startTray, stopTray, trayStatus };
371
+
372
+ //# sourceMappingURL=supervisor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supervisor.js","names":[],"sources":["../../src/tray/supervisor.ts"],"sourcesContent":["import { spawn } from 'node:child_process';\nimport { randomUUID } from 'node:crypto';\nimport { readFile, unlink, writeFile } from 'node:fs/promises';\nimport { resolve } from 'node:path';\nimport { createInterface } from 'node:readline';\nimport type { AnyPickApp } from '../core/app';\nimport {\n readTrayState,\n runningTrayPid,\n trayLogPath,\n trayPidPath,\n trayRuntimeDir,\n trayStatePath,\n type TrayRuntimeState,\n} from '../core/tray-runtime';\nimport { ensureDir, writeJsonFile } from '../utils/fs';\nimport { isProcessRunning, spawnDetached, stopPidFile } from '../utils/process';\nimport { AnyPickError } from '../utils/errors';\nimport { openAnyPickTerminal } from './terminal-launcher';\nimport {\n assertNativeTrayPlatform,\n nativeTrayBinary,\n nativeTrayNeedsRestart,\n sendProxyLogs,\n sendSnapshot,\n} from './supervisor-native';\nimport { buildTraySnapshot } from './snapshot';\nimport { buildTrayUsage } from './snapshot-usage';\nimport type { TrayActionTarget, TrayProxyActionTarget, TrayUsageSnapshot } from './snapshot-types';\nimport { decodeTrayCommand } from './protocol';\nimport type { TrayLogsCommand } from './protocol';\nimport { trayLaunchAtLoginEnabled, trayPreferences } from './settings';\nimport { TrayActivityService } from './activity';\nimport { tauriTrayBinary } from './supervisor-tauri';\nimport { invokeTrayAction, invokeTrayModelRoles, type TrayActionSet } from './supervisor-actions';\nimport { recordTrayActivity } from './supervisor-activity';\nimport { resolveTrayProxyLogs } from './supervisor-logs';\nimport { invokeTrayMutation } from './supervisor-mutations';\nimport {\n startConfiguredProxies,\n startEnabledProxies,\n stopAllProxies,\n totalRunningProxyCount,\n} from './supervisor-proxies';\n\nexport interface TrayStatus {\n running: boolean;\n pid?: number;\n proxyCount?: number;\n startedAt?: string;\n mode?: 'native' | 'tauri' | 'headless';\n}\n\n/**\n * Resolve how to re-exec `tray run` as a detached supervisor.\n * - Built package: `node dist/cli.js tray run` (or any .js entry)\n * - Dev TypeScript: `node --import tsx src/cli.ts tray run`\n *\n * Never fall back to a stale dist/ when the entry is .ts — that still ships\n * the old single-file AnyPickTray.swift. Prefer `node --import tsx` over the\n * `tsx` binary so the supervisor PID matches `process.pid` written into\n * state.json (the tsx CLI re-spawns Node and breaks the ready wait).\n */\nasync function traySupervisorLaunchArgs(\n cliEntry: string,\n): Promise<{ command: string; args: string[] }> {\n const entry = resolve(cliEntry);\n const isTypeScript = entry.endsWith('.ts') || entry.endsWith('.tsx');\n if (!isTypeScript) {\n return { command: process.execPath, args: [entry, 'tray', 'run'] };\n }\n\n return {\n command: process.execPath,\n args: ['--import', 'tsx', entry, 'tray', 'run'],\n };\n}\n\nexport async function trayStatus(root: string): Promise<TrayStatus> {\n const pid = await runningTrayPid(root);\n if (pid == null) {\n return { running: false };\n }\n const state = await readTrayState(root);\n return {\n running: true,\n pid,\n proxyCount: state?.proxyCount,\n startedAt: state?.startedAt,\n mode: state?.mode ?? (process.platform === 'darwin' ? 'native' : 'headless'),\n };\n}\n\nexport async function startTray(\n root: string,\n cliEntry: string,\n): Promise<{ pid: number; started: boolean }> {\n let current = await runningTrayPid(root);\n if (current != null) {\n const staleNativeHelper =\n process.platform === 'darwin' && (await nativeTrayNeedsRestart(root).catch(() => false));\n if (!staleNativeHelper) {\n return { pid: current, started: false };\n }\n await stopTray(root);\n current = await runningTrayPid(root);\n if (current != null) {\n return { pid: current, started: false };\n }\n }\n await ensureDir(trayRuntimeDir(root));\n await unlink(trayStatePath(root)).catch(() => {});\n // A failed helper appends compiler diagnostics to this file. Clear it for a\n // new supervisor attempt so startup errors never report stale diagnostics\n // from an already-fixed source asset.\n await writeFile(trayLogPath(root), '', { mode: 0o600 });\n const entry = resolve(cliEntry);\n // `pnpm dev tray start` passes a .ts entry. Detached child must load TS via\n // `node --import tsx` (same PID as state.json) — never bare `node src/cli.ts`\n // and never a stale dist/ when developing from source.\n const { command: nodeOrTsx, args: runArgs } = await traySupervisorLaunchArgs(entry);\n const { pid } = await spawnDetached(nodeOrTsx, runArgs, {\n pidPath: trayPidPath(root),\n logPath: trayLogPath(root),\n env: {\n ...process.env,\n ANYPICK_HOME: root,\n ANYPICK_TRAY_PROCESS: '1',\n ANYPICK_TRAY_CLI_ENTRY: entry,\n },\n });\n\n const deadline = Date.now() + 20_000;\n while (Date.now() < deadline) {\n if (!isProcessRunning(pid)) {\n const log = await readFile(trayLogPath(root), 'utf8').catch(() => '');\n throw new AnyPickError(\n `AnyPick tray exited during startup.${log ? `\\n${log.slice(-2000)}` : ''}`,\n 'TRAY_START_FAILED',\n );\n }\n const state = await readTrayState(root);\n // Prefer exact PID match. Also accept a ready state whose pid is alive when\n // a loader re-execs (historical tsx CLI) — stop still uses the pid file.\n if (state?.ready && (state.pid === pid || (state.pid != null && isProcessRunning(state.pid)))) {\n return { pid: state.pid === pid ? pid : state.pid, started: true };\n }\n await new Promise((resolveWait) => setTimeout(resolveWait, 100));\n }\n // The tray proves ownership through its ready-state file rather than HTTP.\n // Keep the same explicit exception used by stopTray for timeout cleanup.\n await stopPidFile(trayPidPath(root), { graceMs: 5000, verifyHealth: false });\n throw new AnyPickError('Timed out waiting for the AnyPick supervisor.', 'TRAY_START_TIMEOUT');\n}\n\nexport async function stopTray(root: string): Promise<boolean> {\n // The tray has no HTTP health endpoint; its owner identity is the separate\n // ready state file checked by runningTrayPid. Keep the explicit opt-out local\n // to this supervisor rather than weakening proxy PID ownership globally.\n const stopped = await stopPidFile(trayPidPath(root), {\n graceMs: 15_000,\n verifyHealth: false,\n });\n if (!(await runningTrayPid(root))) {\n await unlink(trayStatePath(root)).catch(() => {});\n }\n return stopped;\n}\n\n/** Keep proxy ownership alive when no desktop tray helper is installed. */\nasync function runHeadlessSupervisor(app: AnyPickApp): Promise<void> {\n await startConfiguredProxies(app);\n let proxyCount = await totalRunningProxyCount(app, await app.proxy.adoptRunningProxies());\n const startedAt = new Date().toISOString();\n const writeState = async (ready: boolean) => {\n const state: TrayRuntimeState = {\n pid: process.pid,\n ready,\n proxyCount,\n startedAt,\n mode: 'headless',\n };\n await writeJsonFile(trayStatePath(app.root), state);\n };\n await writeState(true);\n\n let operation = Promise.resolve();\n let shutdownPromise: Promise<void> | undefined;\n const refresh = async () => {\n proxyCount = await totalRunningProxyCount(app, await app.proxy.adoptRunningProxies());\n await writeState(true);\n };\n const refreshTimer = setInterval(() => {\n operation = operation.then(refresh).catch((err: unknown) => {\n process.stderr.write(`[tray] ${err instanceof Error ? err.message : String(err)}\\n`);\n });\n }, 2500);\n const shutdown = (waitForOperation = true): Promise<void> => {\n if (shutdownPromise) {\n return shutdownPromise;\n }\n shutdownPromise = (async () => {\n clearInterval(refreshTimer);\n if (waitForOperation) {\n await operation.catch(() => {});\n }\n await stopAllProxies(app).catch(() => {});\n await unlink(trayStatePath(app.root)).catch(() => {});\n })();\n return shutdownPromise;\n };\n\n await new Promise<void>((resolveDone) => {\n const requestShutdown = () => {\n void shutdown().finally(resolveDone);\n };\n process.once('SIGINT', requestShutdown);\n process.once('SIGTERM', requestShutdown);\n });\n}\n\n/** Long-running owner for enabled proxies and the platform desktop tray helper. */\nexport async function runTraySupervisor(app: AnyPickApp): Promise<void> {\n let binary: string | undefined;\n let trayMode: 'native' | 'tauri';\n if (process.platform === 'darwin') {\n assertNativeTrayPlatform();\n binary = await nativeTrayBinary(app.root);\n trayMode = 'native';\n } else {\n binary = await tauriTrayBinary();\n if (!binary) {\n process.stderr.write(\n '[tray] No packaged Tauri helper is available; continuing in headless mode.\\n',\n );\n await runHeadlessSupervisor(app);\n return;\n }\n trayMode = 'tauri';\n }\n await startConfiguredProxies(app);\n let proxyCount = await totalRunningProxyCount(app, await app.proxy.adoptRunningProxies());\n const native = spawn(binary, [String(proxyCount)], {\n stdio: ['pipe', 'pipe', 'pipe'],\n env: process.env,\n });\n const startedAt = new Date().toISOString();\n const activity = new TrayActivityService(app.root);\n const writeState = async (ready: boolean) => {\n const state: TrayRuntimeState = {\n pid: process.pid,\n ready,\n proxyCount,\n startedAt,\n mode: trayMode,\n };\n await writeJsonFile(trayStatePath(app.root), state);\n };\n await writeState(true);\n\n // Action ids are intentionally process-local and opaque. The native helper\n // may render non-secret display labels, but a click only echoes an id +\n // revision; executable source refs and model-role settings stay here.\n let actionRevision = 0;\n const actionSets = new Map<number, TrayActionSet>();\n const stableActionIds = new Map<string, string>();\n let usage: TrayUsageSnapshot[] = [];\n let usageRefreshedAt = 0;\n let usageStale = true;\n let usageGeneration = 0;\n let usageFetchInFlight: Promise<void> | undefined;\n\n // Quota endpoints can be slow or unavailable. Keep the first menu render\n // independent from them, then let the next periodic refresh publish cards.\n const refreshUsageInBackground = () => {\n if (!usageStale && Date.now() - usageRefreshedAt < 60_000) {\n return;\n }\n if (usageFetchInFlight) {\n return;\n }\n const generation = usageGeneration;\n usageFetchInFlight = buildTrayUsage(app)\n .then((nextUsage) => {\n if (generation !== usageGeneration) {\n return;\n }\n usage = nextUsage;\n usageRefreshedAt = Date.now();\n usageStale = false;\n })\n .catch(() => {\n if (generation !== usageGeneration) {\n return;\n }\n usage = [];\n usageRefreshedAt = Date.now();\n usageStale = false;\n })\n .finally(() => {\n usageFetchInFlight = undefined;\n });\n };\n\n let operation = Promise.resolve();\n let shutdownPromise: Promise<void> | undefined;\n const refresh = async () => {\n const accountProxyCount = await app.proxy.adoptRunningProxies();\n const quotaEvents = await app.proxy.quotaGuardEvents();\n await Promise.all(\n quotaEvents.map((event) =>\n activity.record(\n event.to\n ? `Quota Guard switched ${event.providerId}/${event.from} → ${event.to}.`\n : `Quota Guard put ${event.providerId}/${event.from} on cooldown; no eligible backup.`,\n false,\n 'quota',\n `quota-guard:${event.id}`,\n ),\n ),\n );\n const preferences = trayPreferences(await app.config.read(), await trayLaunchAtLoginEnabled());\n if (preferences.showQuota) {\n refreshUsageInBackground();\n }\n const revision = actionRevision + 1;\n const nextTargets = new Map<string, TrayActionTarget | TrayProxyActionTarget>();\n const snapshot = await buildTraySnapshot(\n app,\n accountProxyCount,\n {\n revision,\n register(target) {\n const key = JSON.stringify(target);\n const id = stableActionIds.get(key) ?? randomUUID();\n stableActionIds.set(key, id);\n nextTargets.set(id, target);\n return id;\n },\n },\n {\n usage: preferences.showQuota ? usage : [],\n settings: preferences,\n activity: await activity.list(),\n },\n );\n proxyCount = snapshot.proxyCount;\n actionRevision = revision;\n actionSets.set(revision, {\n targets: nextTargets,\n labels: new Map([\n ...snapshot.actions.map((action): [string, string] => [action.id, action.label]),\n ...snapshot.proxies.flatMap(\n (proxy): Array<[string, string]> => [\n [proxy.toggleActionId, proxy.label],\n [proxy.restartActionId, proxy.label],\n ...(proxy.testActionId\n ? ([[proxy.testActionId, `${proxy.label} test`]] as Array<[string, string]>)\n : []),\n ],\n ),\n ...snapshot.hubConflicts.flatMap((conflict) =>\n conflict.candidates.map((candidate): [string, string] => [\n candidate.actionId,\n `${candidate.label} for ${conflict.models.length} model${conflict.models.length === 1 ? '' : 's'}`,\n ]),\n ),\n ]),\n });\n // Keep one previous menu generation so a click racing the 2.5 s refresh\n // still performs the exact opaque target it displayed. Older replays are\n // rejected, and a removed resource will still fail during activation.\n while (actionSets.size > 2) {\n const oldestRevision = actionSets.keys().next().value;\n if (oldestRevision === undefined) {\n break;\n }\n actionSets.delete(oldestRevision);\n }\n sendSnapshot(native, snapshot);\n await writeState(true);\n };\n await refresh();\n const refreshTimer = setInterval(() => {\n operation = operation.then(refresh).catch((err: unknown) => {\n process.stderr.write(`[tray] ${err instanceof Error ? err.message : String(err)}\\n`);\n });\n }, 2500);\n const shutdown = (waitForOperation = true): Promise<void> => {\n if (shutdownPromise) {\n return shutdownPromise;\n }\n shutdownPromise = (async () => {\n clearInterval(refreshTimer);\n if (waitForOperation) {\n await operation.catch(() => {});\n }\n await stopAllProxies(app).catch(() => {});\n native.stdin.end();\n if (native.pid != null && isProcessRunning(native.pid)) {\n native.kill('SIGTERM');\n }\n await unlink(trayStatePath(app.root)).catch(() => {});\n })();\n return shutdownPromise;\n };\n\n const cliEntry = process.env.ANYPICK_TRAY_CLI_ENTRY || process.argv[1] || '';\n const lines = createInterface({ input: native.stdout });\n lines.on('line', (line) => {\n const command = decodeTrayCommand(line);\n if (!command) {\n return;\n }\n operation = operation\n .then(async () => {\n switch (command.kind) {\n case 'open':\n await openAnyPickTerminal(cliEntry);\n break;\n case 'navigate':\n await openAnyPickTerminal(cliEntry, command.screen);\n break;\n case 'refresh':\n usageGeneration += 1;\n usageStale = true;\n await refresh();\n break;\n case 'restart':\n await stopAllProxies(app);\n await startEnabledProxies(app);\n await recordTrayActivity(activity, 'Restarted enabled proxies.', false, 'proxy');\n await refresh();\n break;\n case 'stop':\n await stopAllProxies(app);\n await recordTrayActivity(activity, 'Stopped all proxies.', false, 'proxy');\n await refresh();\n break;\n case 'quit':\n void shutdown(false);\n break;\n case 'invoke':\n await invokeTrayAction(\n app,\n native,\n command.payload,\n actionSets,\n activity,\n refresh,\n () => {\n usageGeneration += 1;\n usageStale = true;\n },\n );\n break;\n case 'apply-model-roles':\n await invokeTrayModelRoles(\n app,\n native,\n command.payload,\n actionSets,\n activity,\n refresh,\n () => {\n usageGeneration += 1;\n usageStale = true;\n },\n );\n break;\n case 'logs':\n await sendTrayProxyLogs(app, native, command.payload);\n break;\n case 'mutate':\n await invokeTrayMutation(\n app,\n native,\n command.payload,\n cliEntry,\n activity,\n refresh,\n () => {\n usageGeneration += 1;\n usageStale = true;\n },\n );\n break;\n default:\n break;\n }\n })\n .catch((err: unknown) => {\n process.stderr.write(`[tray] ${err instanceof Error ? err.message : String(err)}\\n`);\n });\n });\n native.stderr.on('data', (chunk: Buffer) => process.stderr.write(chunk));\n\n await new Promise<void>((resolveDone) => {\n const requestShutdown = () => {\n void shutdown().finally(resolveDone);\n };\n process.once('SIGINT', requestShutdown);\n process.once('SIGTERM', requestShutdown);\n native.once('exit', requestShutdown);\n });\n}\n\nasync function sendTrayProxyLogs(\n app: AnyPickApp,\n native: import('node:child_process').ChildProcessWithoutNullStreams,\n payload: TrayLogsCommand,\n): Promise<void> {\n sendProxyLogs(native, await resolveTrayProxyLogs(app, payload));\n}\n"],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export type TerminalLaunchCandidate = {
2
+ kind: 'mac-app';
3
+ application: 'iTerm2' | 'Terminal';
4
+ } | {
5
+ kind: 'process';
6
+ command: string;
7
+ args: string[];
8
+ };
9
+ /** Return platform-specific terminal options without touching the host. */
10
+ export declare function terminalLaunchCandidates(platform?: NodeJS.Platform, env?: NodeJS.ProcessEnv, nodePath?: string, cliEntry?: string): TerminalLaunchCandidate[];
11
+ export declare function openAnyPickTerminal(cliEntry: string, initialScreen?: 'accounts' | 'gateways' | 'proxy' | 'proxy-hub' | 'add-account' | 'add-gateway'): Promise<void>;
12
+ //# sourceMappingURL=terminal-launcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-launcher.d.ts","sourceRoot":"","sources":["../../src/tray/terminal-launcher.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,uBAAuB,GAC/B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,WAAW,EAAE,QAAQ,GAAG,UAAU,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAUzD,2EAA2E;AAC3E,wBAAgB,wBAAwB,CACtC,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,QAAQ,SAAmB,EAC3B,QAAQ,SAAK,GACZ,uBAAuB,EAAE,CA+C3B;AAuDD,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,OAAO,GAAG,WAAW,GAAG,aAAa,GAAG,aAAa,GAC9F,OAAO,CAAC,IAAI,CAAC,CA0Cf"}
@@ -0,0 +1,130 @@
1
+ import { AnyPickError } from "../utils/errors.js";
2
+ import { pathExists } from "../utils/fs.js";
3
+ import { execFile, spawn } from "node:child_process";
4
+ import { promisify } from "node:util";
5
+ //#region src/tray/terminal-launcher.ts
6
+ var execFileAsync = promisify(execFile);
7
+ function shellQuote(value) {
8
+ return "'" + value.replaceAll("'", "'\"'\"'") + "'";
9
+ }
10
+ function powershellQuote(value) {
11
+ return "'" + value.replaceAll("'", "''") + "'";
12
+ }
13
+ /** Return platform-specific terminal options without touching the host. */
14
+ function terminalLaunchCandidates(platform = process.platform, env = process.env, nodePath = process.execPath, cliEntry = "") {
15
+ const nodeArgs = [nodePath, cliEntry];
16
+ if (platform === "darwin") return [{
17
+ kind: "mac-app",
18
+ application: "iTerm2"
19
+ }, {
20
+ kind: "mac-app",
21
+ application: "Terminal"
22
+ }];
23
+ if (platform === "win32") {
24
+ const powershell = "& " + powershellQuote(nodePath) + " " + powershellQuote(cliEntry);
25
+ return [
26
+ {
27
+ kind: "process",
28
+ command: "wt.exe",
29
+ args: ["new-tab", ...nodeArgs]
30
+ },
31
+ {
32
+ kind: "process",
33
+ command: "powershell.exe",
34
+ args: [
35
+ "-NoExit",
36
+ "-Command",
37
+ powershell
38
+ ]
39
+ },
40
+ {
41
+ kind: "process",
42
+ command: "cmd.exe",
43
+ args: ["/k", "\"" + nodePath + "\" \"" + cliEntry + "\""]
44
+ }
45
+ ];
46
+ }
47
+ const preferred = env.TERMINAL?.trim();
48
+ const commands = [
49
+ ...preferred && !/\s/.test(preferred) ? [preferred] : [],
50
+ "x-terminal-emulator",
51
+ "gnome-terminal",
52
+ "konsole",
53
+ "xfce4-terminal",
54
+ "kitty",
55
+ "alacritty",
56
+ "xterm"
57
+ ];
58
+ return [...new Set(commands)].map((command) => {
59
+ return {
60
+ kind: "process",
61
+ command,
62
+ args: command === "gnome-terminal" ? ["--", ...nodeArgs] : command === "konsole" ? ["-e", ...nodeArgs] : command === "xfce4-terminal" ? ["--command", shellQuote(nodePath) + " " + shellQuote(cliEntry)] : command === "kitty" ? ["--", ...nodeArgs] : command === "alacritty" ? ["-e", ...nodeArgs] : ["-e", ...nodeArgs]
63
+ };
64
+ });
65
+ }
66
+ async function executableAvailable(command) {
67
+ if (command.includes("/") || process.platform === "win32" && command.includes("\\")) return pathExists(command);
68
+ try {
69
+ await execFileAsync(process.platform === "win32" ? "where.exe" : "which", [command]);
70
+ return true;
71
+ } catch {
72
+ return false;
73
+ }
74
+ }
75
+ async function macAppAvailable(application) {
76
+ try {
77
+ await execFileAsync("/usr/bin/open", ["-Ra", application]);
78
+ return true;
79
+ } catch {
80
+ return false;
81
+ }
82
+ }
83
+ function macAppleScript(application, command) {
84
+ if (application === "iTerm2") return [
85
+ "tell application \"iTerm2\"",
86
+ "activate",
87
+ "if (count of windows) = 0 then",
88
+ "create window with default profile",
89
+ "end if",
90
+ "tell current session of current window to write text " + JSON.stringify(command),
91
+ "end tell"
92
+ ].join("\n");
93
+ return "tell application \"Terminal\"\nactivate\ndo script " + JSON.stringify(command) + "\nend tell";
94
+ }
95
+ async function spawnTerminal(command, args) {
96
+ await new Promise((resolveSpawn, rejectSpawn) => {
97
+ const child = spawn(command, args, {
98
+ detached: true,
99
+ stdio: "ignore",
100
+ windowsHide: false
101
+ });
102
+ child.once("error", rejectSpawn);
103
+ child.once("spawn", () => {
104
+ child.unref();
105
+ resolveSpawn();
106
+ });
107
+ });
108
+ }
109
+ async function openAnyPickTerminal(cliEntry, initialScreen) {
110
+ const candidates = terminalLaunchCandidates(process.platform, process.env, process.execPath, cliEntry);
111
+ const errors = [];
112
+ for (const candidate of candidates) try {
113
+ if (candidate.kind === "mac-app") {
114
+ if (!await macAppAvailable(candidate.application)) continue;
115
+ const command = (initialScreen ? `ANYPICK_TUI_SCREEN=${shellQuote(initialScreen)} ` : "") + shellQuote(process.execPath) + " " + shellQuote(cliEntry);
116
+ await execFileAsync("/usr/bin/osascript", ["-e", macAppleScript(candidate.application, command)]);
117
+ return;
118
+ }
119
+ if (!await executableAvailable(candidate.command)) continue;
120
+ await spawnTerminal(candidate.command, candidate.args);
121
+ return;
122
+ } catch (err) {
123
+ errors.push((candidate.kind === "mac-app" ? candidate.application : candidate.command) + ": " + String(err));
124
+ }
125
+ throw new AnyPickError("Could not find a supported terminal to open AnyPick on " + process.platform + "." + (errors.length ? " " + errors.join(" · ") : ""), "TRAY_TERMINAL_OPEN_FAILED");
126
+ }
127
+ //#endregion
128
+ export { openAnyPickTerminal, terminalLaunchCandidates };
129
+
130
+ //# sourceMappingURL=terminal-launcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-launcher.js","names":[],"sources":["../../src/tray/terminal-launcher.ts"],"sourcesContent":["import { spawn } from 'node:child_process';\nimport { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\nimport { pathExists } from '../utils/fs';\nimport { AnyPickError } from '../utils/errors';\n\nconst execFileAsync = promisify(execFile);\n\nexport type TerminalLaunchCandidate =\n | { kind: 'mac-app'; application: 'iTerm2' | 'Terminal' }\n | { kind: 'process'; command: string; args: string[] };\n\nfunction shellQuote(value: string): string {\n return \"'\" + value.replaceAll(\"'\", \"'\\\"'\\\"'\") + \"'\";\n}\n\nfunction powershellQuote(value: string): string {\n return \"'\" + value.replaceAll(\"'\", \"''\") + \"'\";\n}\n\n/** Return platform-specific terminal options without touching the host. */\nexport function terminalLaunchCandidates(\n platform: NodeJS.Platform = process.platform,\n env: NodeJS.ProcessEnv = process.env,\n nodePath = process.execPath,\n cliEntry = '',\n): TerminalLaunchCandidate[] {\n const nodeArgs = [nodePath, cliEntry];\n if (platform === 'darwin') {\n return [\n { kind: 'mac-app', application: 'iTerm2' },\n { kind: 'mac-app', application: 'Terminal' },\n ];\n }\n if (platform === 'win32') {\n const powershell = '& ' + powershellQuote(nodePath) + ' ' + powershellQuote(cliEntry);\n return [\n { kind: 'process', command: 'wt.exe', args: ['new-tab', ...nodeArgs] },\n { kind: 'process', command: 'powershell.exe', args: ['-NoExit', '-Command', powershell] },\n {\n kind: 'process',\n command: 'cmd.exe',\n args: ['/k', '\"' + nodePath + '\" \"' + cliEntry + '\"'],\n },\n ];\n }\n\n const preferred = env.TERMINAL?.trim();\n const commands = [\n ...(preferred && !/\\s/.test(preferred) ? [preferred] : []),\n 'x-terminal-emulator',\n 'gnome-terminal',\n 'konsole',\n 'xfce4-terminal',\n 'kitty',\n 'alacritty',\n 'xterm',\n ];\n return [...new Set(commands)].map((command): TerminalLaunchCandidate => {\n const args =\n command === 'gnome-terminal'\n ? ['--', ...nodeArgs]\n : command === 'konsole'\n ? ['-e', ...nodeArgs]\n : command === 'xfce4-terminal'\n ? ['--command', shellQuote(nodePath) + ' ' + shellQuote(cliEntry)]\n : command === 'kitty'\n ? ['--', ...nodeArgs]\n : command === 'alacritty'\n ? ['-e', ...nodeArgs]\n : ['-e', ...nodeArgs];\n return { kind: 'process', command, args };\n });\n}\n\nasync function executableAvailable(command: string): Promise<boolean> {\n if (command.includes('/') || (process.platform === 'win32' && command.includes('\\\\'))) {\n return pathExists(command);\n }\n try {\n await execFileAsync(process.platform === 'win32' ? 'where.exe' : 'which', [command]);\n return true;\n } catch {\n return false;\n }\n}\n\nasync function macAppAvailable(application: string): Promise<boolean> {\n try {\n await execFileAsync('/usr/bin/open', ['-Ra', application]);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction macAppleScript(application: 'iTerm2' | 'Terminal', command: string): string {\n if (application === 'iTerm2') {\n return [\n 'tell application \"iTerm2\"',\n 'activate',\n 'if (count of windows) = 0 then',\n 'create window with default profile',\n 'end if',\n 'tell current session of current window to write text ' + JSON.stringify(command),\n 'end tell',\n ].join('\\n');\n }\n return (\n 'tell application \"Terminal\"\\nactivate\\ndo script ' + JSON.stringify(command) + '\\nend tell'\n );\n}\n\nasync function spawnTerminal(command: string, args: string[]): Promise<void> {\n await new Promise<void>((resolveSpawn, rejectSpawn) => {\n const child = spawn(command, args, {\n detached: true,\n stdio: 'ignore',\n windowsHide: false,\n });\n child.once('error', rejectSpawn);\n child.once('spawn', () => {\n child.unref();\n resolveSpawn();\n });\n });\n}\n\nexport async function openAnyPickTerminal(\n cliEntry: string,\n initialScreen?: 'accounts' | 'gateways' | 'proxy' | 'proxy-hub' | 'add-account' | 'add-gateway',\n): Promise<void> {\n const candidates = terminalLaunchCandidates(\n process.platform,\n process.env,\n process.execPath,\n cliEntry,\n );\n const errors: string[] = [];\n for (const candidate of candidates) {\n try {\n if (candidate.kind === 'mac-app') {\n if (!(await macAppAvailable(candidate.application))) {\n continue;\n }\n const screenEnv = initialScreen ? `ANYPICK_TUI_SCREEN=${shellQuote(initialScreen)} ` : '';\n const command = screenEnv + shellQuote(process.execPath) + ' ' + shellQuote(cliEntry);\n await execFileAsync('/usr/bin/osascript', [\n '-e',\n macAppleScript(candidate.application, command),\n ]);\n return;\n }\n if (!(await executableAvailable(candidate.command))) {\n continue;\n }\n await spawnTerminal(candidate.command, candidate.args);\n return;\n } catch (err) {\n errors.push(\n (candidate.kind === 'mac-app' ? candidate.application : candidate.command) +\n ': ' +\n String(err),\n );\n }\n }\n throw new AnyPickError(\n 'Could not find a supported terminal to open AnyPick on ' +\n process.platform +\n '.' +\n (errors.length ? ' ' + errors.join(' · ') : ''),\n 'TRAY_TERMINAL_OPEN_FAILED',\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { AnyPickApp } from '../../core/app.js';
2
+ import type { ProxyRow } from '../model.js';
3
+ export interface ProxyUpResult {
4
+ endpoint?: string;
5
+ restarted: boolean;
6
+ realignedClients?: string[];
7
+ }
8
+ /**
9
+ * Bring the proxy for `row` up, whatever state it is in.
10
+ *
11
+ * `enableProxy` only auto-starts the *active* account, so a row the user picked
12
+ * off the board still has to be started explicitly.
13
+ */
14
+ export declare function ensureProxyUp(app: AnyPickApp, row: ProxyRow): Promise<ProxyUpResult>;
15
+ //# sourceMappingURL=ensure-proxy-up.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensure-proxy-up.d.ts","sourceRoot":"","sources":["../../../src/tui/actions/ensure-proxy-up.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGzC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,CAmC1F"}
@@ -0,0 +1,41 @@
1
+ import { proxyRef } from "../app-ui-helpers.js";
2
+ //#region src/tui/actions/ensure-proxy-up.ts
3
+ /**
4
+ * Bring the proxy for `row` up, whatever state it is in.
5
+ *
6
+ * `enableProxy` only auto-starts the *active* account, so a row the user picked
7
+ * off the board still has to be started explicitly.
8
+ */
9
+ async function ensureProxyUp(app, row) {
10
+ if (row.needsApiKey) throw new Error(row.attentionHint ?? `${proxyRef(row)} needs GEMINI_API_KEY in the saved login .env`);
11
+ if (row.rowKind === "pool") {
12
+ const handle = await app.proxy.startPoolProxy(row.providerId);
13
+ return {
14
+ endpoint: handle.endpoint,
15
+ restarted: false,
16
+ realignedClients: handle.realignedClients
17
+ };
18
+ }
19
+ const enabled = await app.proxy.enableProxy(row.providerId, row.name, { start: true });
20
+ if (enabled.started) return {
21
+ endpoint: enabled.started.endpoint,
22
+ restarted: false,
23
+ realignedClients: enabled.started.realignedClients
24
+ };
25
+ const st = await app.proxy.proxyStatus(row.providerId, row.name);
26
+ if (st.running) return {
27
+ endpoint: st.endpoint,
28
+ restarted: false
29
+ };
30
+ if (!st.enabled) await app.proxy.enableProxy(row.providerId, row.name, { start: false });
31
+ const handle = await app.proxy.startProxy(row.providerId, row.name);
32
+ return {
33
+ endpoint: handle.endpoint,
34
+ restarted: false,
35
+ realignedClients: handle.realignedClients
36
+ };
37
+ }
38
+ //#endregion
39
+ export { ensureProxyUp };
40
+
41
+ //# sourceMappingURL=ensure-proxy-up.js.map