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,189 @@
1
+ import { AnyPickError } from "../utils/errors.js";
2
+ import { ensureDir, pathExists, readJsonFile, writeJsonFile } from "../utils/fs.js";
3
+ import { resolveFromContext } from "./resolve.js";
4
+ import { syntheticProxyProfile } from "../core/profile-synth.js";
5
+ import { ANYPICK_MANAGED_KEY, removeClientEnvFiles } from "./env-files.js";
6
+ import { createTempRuntimeRoot, makeIsolatedRuntime, materializeIsolatablePaths } from "./isolation.js";
7
+ import { CLAUDE_MODEL_ROLES } from "./model-roles.js";
8
+ import { applyClaudeToHome, settingsPath } from "./claude-client-apply.js";
9
+ import { join } from "node:path";
10
+ import { homedir } from "node:os";
11
+ //#region src/clients/claude-code.ts
12
+ function effectiveHome(ctx, liveHome) {
13
+ return ctx.isolatedHome ?? liveHome;
14
+ }
15
+ function createClaudeCodeClient(home = process.env.HOME ?? homedir()) {
16
+ const liveSettings = settingsPath(home);
17
+ const adapter = {
18
+ id: "claude",
19
+ name: "Claude Code",
20
+ shortName: "Claude",
21
+ binaryName: "claude",
22
+ binaryEnvVar: "CLAUDE_BINARY",
23
+ description: "Anthropic Claude Code CLI / IDE",
24
+ supportedApiStyles: [
25
+ "openai",
26
+ "anthropic",
27
+ "custom"
28
+ ],
29
+ nativeInstallations: [{
30
+ sourceId: "claude-code",
31
+ executables: ["claude"],
32
+ macApplications: ["Claude.app"]
33
+ }],
34
+ routingSurfacePolicy: "all-compatible",
35
+ capabilities: {
36
+ id: "claude",
37
+ acceptedProtocols: ["anthropic"],
38
+ supportsEnvironmentOverlay: false,
39
+ supportsIsolatedHome: true,
40
+ supportsPersistentConfig: true,
41
+ protocolPreference: "anthropic"
42
+ },
43
+ modelRoles: () => CLAUDE_MODEL_ROLES,
44
+ async validate(ctx) {
45
+ if (!resolveFromContext(ctx).endpoint) throw new AnyPickError("Profile has no endpoint. Set with: profile edit <name> --endpoint …", "CLIENT_CONFIG_INVALID");
46
+ },
47
+ async apply(ctx) {
48
+ return applyClaudeToHome(ctx, effectiveHome(ctx, home));
49
+ },
50
+ async listIsolatablePaths(liveState) {
51
+ return [{
52
+ sourcePath: settingsPath(liveState.home),
53
+ destinationPath: join(".claude", "settings.json"),
54
+ kind: "file",
55
+ required: false
56
+ }];
57
+ },
58
+ async createIsolatedRuntime(plan, paths) {
59
+ const runtimeRoot = await createTempRuntimeRoot("anypick-claude-");
60
+ const isoHome = join(runtimeRoot, "home");
61
+ await ensureDir(isoHome);
62
+ await materializeIsolatablePaths(isoHome, paths);
63
+ const endpoint = plan.transport.endpoint ?? (plan.transport.managedProxy ? `http://127.0.0.1:${plan.transport.managedProxy.port}` : "");
64
+ const profile = plan.profile ?? syntheticProxyProfile({
65
+ name: `ephemeral-${plan.source.display}`,
66
+ endpoint,
67
+ apiKey: "anypick-proxy",
68
+ defaultModel: plan.model.mode === "explicit" ? plan.model.id : void 0
69
+ });
70
+ const ctx = {
71
+ profile: {
72
+ ...profile,
73
+ meta: {
74
+ ...profile.meta,
75
+ endpoint
76
+ },
77
+ secrets: {
78
+ ...profile.secrets,
79
+ apiKey: profile.secrets.apiKey ?? "anypick-proxy"
80
+ }
81
+ },
82
+ clientId: "claude",
83
+ dryRun: plan.dryRun,
84
+ verbose: plan.verbose,
85
+ proxyEndpoint: endpoint || void 0,
86
+ anypickRoot: plan.anypickRoot,
87
+ isolatedHome: isoHome
88
+ };
89
+ if (!plan.dryRun) {
90
+ await adapter.validate(ctx);
91
+ await applyClaudeToHome(ctx, isoHome);
92
+ }
93
+ return makeIsolatedRuntime(runtimeRoot, { HOME: isoHome });
94
+ },
95
+ async applyPersistent(plan) {
96
+ const profile = plan.profile ?? syntheticProxyProfile({
97
+ name: `proxy-${plan.source.display}`,
98
+ endpoint: plan.transport.endpoint ?? "",
99
+ apiKey: "anypick-proxy",
100
+ defaultModel: plan.model.mode === "explicit" ? plan.model.id : void 0
101
+ });
102
+ const endpoint = plan.transport.endpoint ?? (plan.transport.managedProxy ? `http://127.0.0.1:${plan.transport.managedProxy.port}` : profile.meta.endpoint ?? "");
103
+ const ctx = {
104
+ profile: {
105
+ ...profile,
106
+ meta: {
107
+ ...profile.meta,
108
+ endpoint
109
+ }
110
+ },
111
+ clientId: "claude",
112
+ dryRun: plan.dryRun,
113
+ verbose: plan.verbose,
114
+ proxyEndpoint: endpoint || void 0,
115
+ anypickRoot: plan.anypickRoot
116
+ };
117
+ await adapter.validate(ctx);
118
+ return applyClaudeToHome(ctx, home);
119
+ },
120
+ async reset(state) {
121
+ await removeClientEnvFiles(stateHomeRoot(state), "claude");
122
+ const anypickRoot = inferAnyPickRoot(state) ?? process.env.ANYPICK_HOME;
123
+ if (anypickRoot) await removeClientEnvFiles(anypickRoot, "claude");
124
+ if (await pathExists(liveSettings)) try {
125
+ const doc = await readJsonFile(liveSettings);
126
+ const keys = [
127
+ ...doc["_anypickManaged"]?.keys ?? state.managedEnvKeys ?? [],
128
+ "OPENAI_API_KEY",
129
+ "OPENAI_BASE_URL",
130
+ "OPENAI_MODEL"
131
+ ];
132
+ if (doc.env && typeof doc.env === "object") {
133
+ const env = { ...doc.env };
134
+ for (const key of keys) delete env[key];
135
+ if (Object.keys(env).length === 0) delete doc.env;
136
+ else doc.env = env;
137
+ }
138
+ delete doc[ANYPICK_MANAGED_KEY];
139
+ await writeJsonFile(liveSettings, doc, 384);
140
+ } catch (err) {
141
+ throw new Error(`Could not safely reset Claude Code settings: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
142
+ }
143
+ },
144
+ async inspect() {
145
+ const present = await pathExists(liveSettings);
146
+ const issues = [];
147
+ let summary;
148
+ if (present) try {
149
+ const doc = await readJsonFile(liveSettings);
150
+ const managed = doc[ANYPICK_MANAGED_KEY];
151
+ const env = doc.env && typeof doc.env === "object" ? doc.env : {};
152
+ if (env.OPENAI_API_KEY || env.OPENAI_BASE_URL) issues.push("settings.env still has OPENAI_* keys (not used by Claude Code) — re-run runtime use or reset");
153
+ for (const k of [
154
+ "ANTHROPIC_MODEL",
155
+ "ANTHROPIC_DEFAULT_SONNET_MODEL",
156
+ "ANTHROPIC_DEFAULT_OPUS_MODEL",
157
+ "ANTHROPIC_DEFAULT_HAIKU_MODEL"
158
+ ]) {
159
+ const v = env[k];
160
+ if (v && v.includes("/")) issues.push(`${k}="${v}" has a provider prefix; Claude Code expects bare model ids`);
161
+ }
162
+ summary = managed?.keys?.length ? `anypick-managed env keys: ${managed.keys.length}` : "settings present (no anypick marker)";
163
+ } catch {
164
+ issues.push("settings.json unreadable");
165
+ }
166
+ return {
167
+ present,
168
+ configPaths: [liveSettings],
169
+ summary,
170
+ issues: issues.length ? issues : void 0
171
+ };
172
+ }
173
+ };
174
+ return adapter;
175
+ }
176
+ function inferAnyPickRoot(state) {
177
+ for (const p of state.managedPaths) {
178
+ const idx = p.replace(/\\/g, "/").indexOf("/clients/claude/");
179
+ if (idx > 0) return p.slice(0, idx);
180
+ }
181
+ }
182
+ function stateHomeRoot(state) {
183
+ return inferAnyPickRoot(state) ?? process.env.ANYPICK_HOME ?? join(homedir(), ".anypick");
184
+ }
185
+ var claudeCodeClient = createClaudeCodeClient();
186
+ //#endregion
187
+ export { claudeCodeClient, createClaudeCodeClient };
188
+
189
+ //# sourceMappingURL=claude-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code.js","names":[],"sources":["../../src/clients/claude-code.ts"],"sourcesContent":["import { join } from 'node:path';\nimport { homedir } from 'node:os';\nimport type {\n ApplyContext,\n ClientAdapter,\n ClientInspectResult,\n ClientLiveState,\n ClientState,\n IsolatablePath,\n IsolatedClientRuntime,\n ResolvedClientPlan,\n} from '../types';\nimport { AnyPickError } from '../utils/errors';\nimport { ensureDir, pathExists, readJsonFile, writeJsonFile } from '../utils/fs';\nimport { resolveFromContext } from './resolve';\nimport { removeClientEnvFiles, ANYPICK_MANAGED_KEY } from './env-files';\nimport {\n createTempRuntimeRoot,\n makeIsolatedRuntime,\n materializeIsolatablePaths,\n syntheticProxyProfile,\n} from './isolation';\nimport { CLAUDE_MODEL_ROLES } from './model-roles';\nimport { applyClaudeToHome, settingsPath } from './claude-client-apply';\nexport { bareModelId } from './claude-client-apply';\n\nfunction effectiveHome(ctx: ApplyContext, liveHome: string): string {\n return ctx.isolatedHome ?? liveHome;\n}\n\nexport function createClaudeCodeClient(home = process.env.HOME ?? homedir()): ClientAdapter {\n const liveSettings = settingsPath(home);\n\n const adapter: ClientAdapter = {\n id: 'claude',\n name: 'Claude Code',\n shortName: 'Claude',\n binaryName: 'claude',\n binaryEnvVar: 'CLAUDE_BINARY',\n description: 'Anthropic Claude Code CLI / IDE',\n supportedApiStyles: ['openai', 'anthropic', 'custom'],\n nativeInstallations: [\n {\n sourceId: 'claude-code',\n executables: ['claude'],\n macApplications: ['Claude.app'],\n },\n ],\n routingSurfacePolicy: 'all-compatible',\n capabilities: {\n id: 'claude',\n acceptedProtocols: ['anthropic'],\n supportsEnvironmentOverlay: false,\n supportsIsolatedHome: true,\n supportsPersistentConfig: true,\n protocolPreference: 'anthropic',\n },\n modelRoles: () => CLAUDE_MODEL_ROLES,\n\n async validate(ctx: ApplyContext): Promise<void> {\n const r = resolveFromContext(ctx);\n if (!r.endpoint) {\n throw new AnyPickError(\n 'Profile has no endpoint. Set with: profile edit <name> --endpoint …',\n 'CLIENT_CONFIG_INVALID',\n );\n }\n },\n\n async apply(ctx: ApplyContext) {\n const targetHome = effectiveHome(ctx, home);\n return applyClaudeToHome(ctx, targetHome);\n },\n\n async listIsolatablePaths(liveState: ClientLiveState): Promise<readonly IsolatablePath[]> {\n return [\n {\n sourcePath: settingsPath(liveState.home),\n destinationPath: join('.claude', 'settings.json'),\n kind: 'file',\n required: false,\n },\n ];\n },\n\n async createIsolatedRuntime(\n plan: ResolvedClientPlan,\n paths: readonly IsolatablePath[],\n ): Promise<IsolatedClientRuntime> {\n const runtimeRoot = await createTempRuntimeRoot('anypick-claude-');\n const isoHome = join(runtimeRoot, 'home');\n await ensureDir(isoHome);\n\n await materializeIsolatablePaths(isoHome, paths);\n\n const endpoint =\n plan.transport.endpoint ??\n (plan.transport.managedProxy ? `http://127.0.0.1:${plan.transport.managedProxy.port}` : '');\n\n const profile =\n plan.profile ??\n syntheticProxyProfile({\n name: `ephemeral-${plan.source.display}`,\n endpoint,\n apiKey: 'anypick-proxy',\n defaultModel: plan.model.mode === 'explicit' ? plan.model.id : undefined,\n });\n\n const ctx: ApplyContext = {\n profile: {\n ...profile,\n meta: { ...profile.meta, endpoint },\n secrets: {\n ...profile.secrets,\n apiKey: profile.secrets.apiKey ?? 'anypick-proxy',\n },\n },\n clientId: 'claude',\n dryRun: plan.dryRun,\n verbose: plan.verbose,\n proxyEndpoint: endpoint || undefined,\n anypickRoot: plan.anypickRoot,\n isolatedHome: isoHome,\n };\n\n if (!plan.dryRun) {\n await adapter.validate(ctx);\n await applyClaudeToHome(ctx, isoHome);\n }\n\n return makeIsolatedRuntime(runtimeRoot, {\n HOME: isoHome,\n });\n },\n\n async applyPersistent(plan: ResolvedClientPlan) {\n const profile =\n plan.profile ??\n syntheticProxyProfile({\n name: `proxy-${plan.source.display}`,\n endpoint: plan.transport.endpoint ?? '',\n apiKey: 'anypick-proxy',\n defaultModel: plan.model.mode === 'explicit' ? plan.model.id : undefined,\n });\n const endpoint =\n plan.transport.endpoint ??\n (plan.transport.managedProxy\n ? `http://127.0.0.1:${plan.transport.managedProxy.port}`\n : (profile.meta.endpoint ?? ''));\n const ctx: ApplyContext = {\n profile: {\n ...profile,\n meta: { ...profile.meta, endpoint },\n },\n clientId: 'claude',\n dryRun: plan.dryRun,\n verbose: plan.verbose,\n proxyEndpoint: endpoint || undefined,\n anypickRoot: plan.anypickRoot,\n };\n await adapter.validate(ctx);\n return applyClaudeToHome(ctx, home);\n },\n\n async reset(state: ClientState): Promise<void> {\n await removeClientEnvFiles(stateHomeRoot(state), 'claude');\n\n const anypickRoot = inferAnyPickRoot(state) ?? process.env.ANYPICK_HOME;\n if (anypickRoot) {\n await removeClientEnvFiles(anypickRoot, 'claude');\n }\n\n if (await pathExists(liveSettings)) {\n try {\n const doc = await readJsonFile<Record<string, unknown>>(liveSettings);\n const managed = doc[ANYPICK_MANAGED_KEY] as { keys?: string[] } | undefined;\n const keys = [\n ...(managed?.keys ?? state.managedEnvKeys ?? []),\n 'OPENAI_API_KEY',\n 'OPENAI_BASE_URL',\n 'OPENAI_MODEL',\n ];\n if (doc.env && typeof doc.env === 'object') {\n const env = { ...(doc.env as Record<string, string>) };\n for (const key of keys) {\n delete env[key];\n }\n if (Object.keys(env).length === 0) {\n delete doc.env;\n } else {\n doc.env = env;\n }\n }\n delete doc[ANYPICK_MANAGED_KEY];\n await writeJsonFile(liveSettings, doc, 0o600);\n } catch (err) {\n // Never report a successful reset when the file that may contain a\n // managed endpoint/token could not be inspected safely.\n throw new Error(\n `Could not safely reset Claude Code settings: ${err instanceof Error ? err.message : String(err)}`,\n { cause: err },\n );\n }\n }\n },\n\n async inspect(): Promise<ClientInspectResult> {\n const present = await pathExists(liveSettings);\n const issues: string[] = [];\n let summary: string | undefined;\n if (present) {\n try {\n const doc = await readJsonFile<Record<string, unknown>>(liveSettings);\n const managed = doc[ANYPICK_MANAGED_KEY] as { keys?: string[] } | undefined;\n const env =\n doc.env && typeof doc.env === 'object' ? (doc.env as Record<string, string>) : {};\n if (env.OPENAI_API_KEY || env.OPENAI_BASE_URL) {\n issues.push(\n 'settings.env still has OPENAI_* keys (not used by Claude Code) — re-run runtime use or reset',\n );\n }\n for (const k of [\n 'ANTHROPIC_MODEL',\n 'ANTHROPIC_DEFAULT_SONNET_MODEL',\n 'ANTHROPIC_DEFAULT_OPUS_MODEL',\n 'ANTHROPIC_DEFAULT_HAIKU_MODEL',\n ]) {\n const v = env[k];\n if (v && v.includes('/')) {\n issues.push(`${k}=\"${v}\" has a provider prefix; Claude Code expects bare model ids`);\n }\n }\n summary = managed?.keys?.length\n ? `anypick-managed env keys: ${managed.keys.length}`\n : 'settings present (no anypick marker)';\n } catch {\n issues.push('settings.json unreadable');\n }\n }\n return {\n present,\n configPaths: [liveSettings],\n summary,\n issues: issues.length ? issues : undefined,\n };\n },\n };\n\n return adapter;\n}\n\nfunction inferAnyPickRoot(state: ClientState): string | undefined {\n for (const p of state.managedPaths) {\n const idx = p.replace(/\\\\/g, '/').indexOf('/clients/claude/');\n if (idx > 0) {\n return p.slice(0, idx);\n }\n }\n return undefined;\n}\n\nfunction stateHomeRoot(state: ClientState): string {\n return inferAnyPickRoot(state) ?? process.env.ANYPICK_HOME ?? join(homedir(), '.anypick');\n}\n\nexport const claudeCodeClient = createClaudeCodeClient();\n"],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface ClaudeSettingsGuardOptions {
2
+ /** Expected ANTHROPIC_BASE_URL (local proxy). */
3
+ endpoint: string;
4
+ /** Dummy key Claude sends to the proxy. */
5
+ apiKey?: string;
6
+ home?: string;
7
+ intervalMs?: number;
8
+ log?: (line: string) => void;
9
+ }
10
+ /**
11
+ * One-shot repair. Returns true when a write was needed and applied.
12
+ */
13
+ export declare function repairClaudeSettingsIfDrifted(opts: ClaudeSettingsGuardOptions): Promise<boolean>;
14
+ /**
15
+ * Poll settings and repair drift until stop() is called.
16
+ */
17
+ export declare function startClaudeSettingsGuard(opts: ClaudeSettingsGuardOptions): () => void;
18
+ //# sourceMappingURL=claude-settings-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-settings-guard.d.ts","sourceRoot":"","sources":["../../src/clients/claude-settings-guard.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,0BAA0B;IACzC,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAUD;;GAEG;AACH,wBAAsB,6BAA6B,CACjD,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC,OAAO,CAAC,CA6ClB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,0BAA0B,GAAG,MAAM,IAAI,CAqBrF"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Codex Desktop only lists models whose slugs pass a server-delivered allowlist
3
+ * of native GPT ids (typically ~5 "list" entries). Custom hub slugs (big-pickle,
4
+ * claude-*, gemini-*) load fine in the CLI but are filtered out of the Desktop
5
+ * picker — the same constraint codex-router works around by republishing
6
+ * external models under native GPT slugs and rewriting on the wire.
7
+ *
8
+ * AnyPick mirrors that for Proxy Hub: catalog entries use native slugs + Hub
9
+ * display names; the Hub route table maps those slugs back via `upstreamModel`.
10
+ */
11
+ import type { CodexCatalogModel } from './codex.js';
12
+ import type { ProxyHubRouteTarget } from '../types.js';
13
+ /** Fallback when `codex debug models --bundled` is unavailable. */
14
+ export declare const FALLBACK_NATIVE_LIST_SLUGS: readonly ['gpt-5.6-sol', 'gpt-5.6-terra', 'gpt-5.6-luna', 'gpt-5.5', 'gpt-5.2'];
15
+ export interface NativeListSlot {
16
+ slug: string;
17
+ /** Full native catalog row used as a capability template when present. */
18
+ template?: Record<string, unknown>;
19
+ }
20
+ export interface DesktopModelAlias {
21
+ /** Allowlisted GPT slug shown in Desktop. */
22
+ nativeSlug: string;
23
+ /** Real Hub / upstream model id. */
24
+ hubModel: string;
25
+ }
26
+ /**
27
+ * Prefer configured models first (Default + List 2–5 from Apps / Configure
28
+ * Models), then the rest of the hub catalog. Stable unique order.
29
+ */
30
+ export declare function orderHubModelsForDesktop(hubModels: readonly string[], preferred?: string | readonly string[]): string[];
31
+ /** Role order for Codex Desktop list slots (matches CODEX_DESKTOP_MODEL_ROLES). */
32
+ export declare const CODEX_DESKTOP_ROLE_ORDER: readonly ['default', 'list2', 'list3', 'list4', 'list5'];
33
+ /**
34
+ * Pull preferred Hub models from binding clientOptions.modelRoles in Desktop
35
+ * slot order. Only non-empty customized roles are included (inherited slots
36
+ * stay unset so the catalog can auto-fill from the Hub list).
37
+ */
38
+ export declare function preferredHubModelsFromRoles(roles: Record<string, string> | undefined | null): string[];
39
+ /**
40
+ * Pair non-allowlisted hub models (claude-*, gemini-*, big-pickle, …) onto the
41
+ * native GPT list slots Desktop will actually show. Hub catalogs often also
42
+ * list real `gpt-*` ids — those keep their own slugs for the CLI, but Desktop
43
+ * slots are reserved for external Hub models (codex-router login-free style).
44
+ */
45
+ export declare function assignDesktopAliases(hubModelsOrdered: readonly string[], nativeSlots: readonly NativeListSlot[]): DesktopModelAlias[];
46
+ /**
47
+ * Expand a Hub route table so Desktop-selected GPT slugs rewrite to real hub
48
+ * models via `upstreamModel` (see proxy-hub-server request rewrite). Overwrites
49
+ * a native-slug route when the hub already exposes that id — the Desktop picker
50
+ * slot is the alias surface, not a second GPT identity.
51
+ */
52
+ export declare function expandHubRoutesWithDesktopAliases(routes: readonly ProxyHubRouteTarget[], aliases: readonly DesktopModelAlias[]): ProxyHubRouteTarget[];
53
+ /** Config top-level `model` that Desktop will highlight for a hub selection. */
54
+ export declare function desktopConfigModelId(preferredHubModel: string | undefined, aliases: readonly DesktopModelAlias[]): string | undefined;
55
+ /**
56
+ * Build catalog models for live publish: Desktop-visible native-slug aliases
57
+ * first (friendly Hub names), then every real hub model under its own slug for
58
+ * CLI `/model` and direct use. Alias rows win on slug collision so Hub labels
59
+ * surface instead of stock GPT names.
60
+ */
61
+ export declare function desktopAwareRouteModels(routeModels: readonly CodexCatalogModel[], aliases: readonly DesktopModelAlias[], nativeSlots: readonly NativeListSlot[]): CodexCatalogModel[];
62
+ /**
63
+ * Load list-visible native GPT models from the local Codex CLI (bundled catalog).
64
+ * Falls back to a static allowlist when Codex is missing or the probe fails.
65
+ */
66
+ export declare function loadNativeListSlots(): NativeListSlot[];
67
+ //# sourceMappingURL=codex-desktop-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-desktop-catalog.d.ts","sourceRoot":"","sources":["../../src/clients/codex-desktop-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAuB,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEzE,mEAAmE;AACnE,eAAO,MAAM,0BAA0B,YACrC,aAAa,EACb,eAAe,EACf,cAAc,EACd,SAAS,EACT,SAAS,CACD,CAAC;AAEX,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GACrC,MAAM,EAAE,CAmBV;AAED,mFAAmF;AACnF,eAAO,MAAM,wBAAwB,YAAI,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAU,CAAC;AAEjG;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAAG,IAAI,GAC/C,MAAM,EAAE,CAeV;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,gBAAgB,EAAE,SAAS,MAAM,EAAE,EACnC,WAAW,EAAE,SAAS,cAAc,EAAE,GACrC,iBAAiB,EAAE,CAgBrB;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,SAAS,mBAAmB,EAAE,EACtC,OAAO,EAAE,SAAS,iBAAiB,EAAE,GACpC,mBAAmB,EAAE,CAiBvB;AAED,gFAAgF;AAChF,wBAAgB,oBAAoB,CAClC,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,OAAO,EAAE,SAAS,iBAAiB,EAAE,GACpC,MAAM,GAAG,SAAS,CAQpB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,SAAS,iBAAiB,EAAE,EACzC,OAAO,EAAE,SAAS,iBAAiB,EAAE,EACrC,WAAW,EAAE,SAAS,cAAc,EAAE,GACrC,iBAAiB,EAAE,CAoDrB;AAsCD;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,cAAc,EAAE,CAoCtD"}
@@ -0,0 +1,212 @@
1
+ import { spawnSync } from "node:child_process";
2
+ //#region src/clients/codex-desktop-catalog.ts
3
+ /**
4
+ * Codex Desktop only lists models whose slugs pass a server-delivered allowlist
5
+ * of native GPT ids (typically ~5 "list" entries). Custom hub slugs (big-pickle,
6
+ * claude-*, gemini-*) load fine in the CLI but are filtered out of the Desktop
7
+ * picker — the same constraint codex-router works around by republishing
8
+ * external models under native GPT slugs and rewriting on the wire.
9
+ *
10
+ * AnyPick mirrors that for Proxy Hub: catalog entries use native slugs + Hub
11
+ * display names; the Hub route table maps those slugs back via `upstreamModel`.
12
+ */
13
+ /** Fallback when `codex debug models --bundled` is unavailable. */
14
+ var FALLBACK_NATIVE_LIST_SLUGS = [
15
+ "gpt-5.6-sol",
16
+ "gpt-5.6-terra",
17
+ "gpt-5.6-luna",
18
+ "gpt-5.5",
19
+ "gpt-5.2"
20
+ ];
21
+ /**
22
+ * Prefer configured models first (Default + List 2–5 from Apps / Configure
23
+ * Models), then the rest of the hub catalog. Stable unique order.
24
+ */
25
+ function orderHubModelsForDesktop(hubModels, preferred) {
26
+ const seen = /* @__PURE__ */ new Set();
27
+ const out = [];
28
+ const push = (raw) => {
29
+ const model = raw?.trim();
30
+ if (!model || seen.has(model)) return;
31
+ seen.add(model);
32
+ out.push(model);
33
+ };
34
+ const preferredList = typeof preferred === "string" ? [preferred] : preferred ?? [];
35
+ for (const model of preferredList) push(model);
36
+ for (const model of hubModels) push(model);
37
+ return out;
38
+ }
39
+ /** Role order for Codex Desktop list slots (matches CODEX_DESKTOP_MODEL_ROLES). */
40
+ var CODEX_DESKTOP_ROLE_ORDER = [
41
+ "default",
42
+ "list2",
43
+ "list3",
44
+ "list4",
45
+ "list5"
46
+ ];
47
+ /**
48
+ * Pull preferred Hub models from binding clientOptions.modelRoles in Desktop
49
+ * slot order. Only non-empty customized roles are included (inherited slots
50
+ * stay unset so the catalog can auto-fill from the Hub list).
51
+ */
52
+ function preferredHubModelsFromRoles(roles) {
53
+ if (!roles || typeof roles !== "object") return [];
54
+ const out = [];
55
+ const seen = /* @__PURE__ */ new Set();
56
+ for (const id of CODEX_DESKTOP_ROLE_ORDER) {
57
+ const model = roles[id]?.trim();
58
+ if (!model || seen.has(model)) continue;
59
+ seen.add(model);
60
+ out.push(model);
61
+ }
62
+ return out;
63
+ }
64
+ /**
65
+ * Pair non-allowlisted hub models (claude-*, gemini-*, big-pickle, …) onto the
66
+ * native GPT list slots Desktop will actually show. Hub catalogs often also
67
+ * list real `gpt-*` ids — those keep their own slugs for the CLI, but Desktop
68
+ * slots are reserved for external Hub models (codex-router login-free style).
69
+ */
70
+ function assignDesktopAliases(hubModelsOrdered, nativeSlots) {
71
+ const nativeSlugSet = new Set(nativeSlots.map((slot) => slot.slug));
72
+ const external = hubModelsOrdered.filter((model) => !nativeSlugSet.has(model));
73
+ const n = Math.min(external.length, nativeSlots.length);
74
+ const out = [];
75
+ for (let i = 0; i < n; i++) {
76
+ const slot = nativeSlots[i];
77
+ const hubModel = external[i];
78
+ if (!slot?.slug || !hubModel) continue;
79
+ out.push({
80
+ nativeSlug: slot.slug,
81
+ hubModel
82
+ });
83
+ }
84
+ return out;
85
+ }
86
+ /**
87
+ * Expand a Hub route table so Desktop-selected GPT slugs rewrite to real hub
88
+ * models via `upstreamModel` (see proxy-hub-server request rewrite). Overwrites
89
+ * a native-slug route when the hub already exposes that id — the Desktop picker
90
+ * slot is the alias surface, not a second GPT identity.
91
+ */
92
+ function expandHubRoutesWithDesktopAliases(routes, aliases) {
93
+ if (aliases.length === 0) return [...routes];
94
+ const byModel = new Map(routes.map((route) => [route.model, route]));
95
+ for (const alias of aliases) {
96
+ const base = byModel.get(alias.hubModel);
97
+ if (!base) continue;
98
+ byModel.set(alias.nativeSlug, {
99
+ model: alias.nativeSlug,
100
+ source: base.source,
101
+ upstreamModel: base.upstreamModel
102
+ });
103
+ }
104
+ return [...byModel.values()];
105
+ }
106
+ /** Config top-level `model` that Desktop will highlight for a hub selection. */
107
+ function desktopConfigModelId(preferredHubModel, aliases) {
108
+ if (preferredHubModel) {
109
+ const hit = aliases.find((alias) => alias.hubModel === preferredHubModel);
110
+ if (hit) return hit.nativeSlug;
111
+ }
112
+ return aliases[0]?.nativeSlug ?? preferredHubModel;
113
+ }
114
+ /**
115
+ * Build catalog models for live publish: Desktop-visible native-slug aliases
116
+ * first (friendly Hub names), then every real hub model under its own slug for
117
+ * CLI `/model` and direct use. Alias rows win on slug collision so Hub labels
118
+ * surface instead of stock GPT names.
119
+ */
120
+ function desktopAwareRouteModels(routeModels, aliases, nativeSlots) {
121
+ const hubBySlug = new Map(routeModels.map((model) => [model.slug, model]));
122
+ const aliasModels = [];
123
+ for (const alias of aliases) {
124
+ const hub = hubBySlug.get(alias.hubModel);
125
+ const displayName = `${hub?.displayName ?? hub?.slug ?? alias.hubModel} · Hub`;
126
+ const template = nativeSlots.find((entry) => entry.slug === alias.nativeSlug)?.template;
127
+ const contextWindow = hub?.contextWindow ?? positiveFromUnknown(template?.context_window);
128
+ const maxContextWindow = hub?.maxContextWindow ?? positiveFromUnknown(template?.max_context_window);
129
+ const autoCompactTokenLimit = hub?.autoCompactTokenLimit ?? positiveFromUnknown(template?.auto_compact_token_limit);
130
+ const supportedReasoningLevels = hub?.supportedReasoningLevels?.length ? hub.supportedReasoningLevels : reasoningLevelsFromTemplate(template);
131
+ const defaultReasoningLevel = hub?.defaultReasoningLevel ?? (typeof template?.default_reasoning_level === "string" ? template.default_reasoning_level : void 0);
132
+ const supportsVerbosity = hub?.supportsVerbosity ?? (typeof template?.support_verbosity === "boolean" ? template.support_verbosity : void 0);
133
+ aliasModels.push({
134
+ slug: alias.nativeSlug,
135
+ displayName,
136
+ description: hub?.description ?? `Proxy Hub: ${alias.hubModel} (Desktop picker slot ${alias.nativeSlug}).`,
137
+ contextWindow,
138
+ maxContextWindow,
139
+ autoCompactTokenLimit,
140
+ defaultReasoningLevel,
141
+ supportedReasoningLevels,
142
+ inputModalities: hub?.inputModalities,
143
+ supportsParallelToolCalls: hub?.supportsParallelToolCalls,
144
+ supportsSearchTool: hub?.supportsSearchTool,
145
+ supportsVerbosity,
146
+ supportsImageDetailOriginal: hub?.supportsImageDetailOriginal
147
+ });
148
+ }
149
+ const aliasSlugs = new Set(aliasModels.map((model) => model.slug));
150
+ const rest = routeModels.filter((model) => !aliasSlugs.has(model.slug));
151
+ return [...aliasModels, ...rest];
152
+ }
153
+ function positiveFromUnknown(value) {
154
+ if (typeof value === "number" && Number.isFinite(value) && value > 0) return Math.floor(value);
155
+ if (typeof value === "string" && value.trim()) {
156
+ const n = Number(value);
157
+ if (Number.isFinite(n) && n > 0) return Math.floor(n);
158
+ }
159
+ }
160
+ /** Copy native allowlist reasoning efforts so Desktop keeps the effort UI. */
161
+ function reasoningLevelsFromTemplate(template) {
162
+ const raw = template?.supported_reasoning_levels;
163
+ if (!Array.isArray(raw)) return;
164
+ const levels = [];
165
+ for (const item of raw) {
166
+ if (!item || typeof item !== "object" || Array.isArray(item)) continue;
167
+ const row = item;
168
+ const effort = typeof row.effort === "string" ? row.effort.trim() : "";
169
+ const description = typeof row.description === "string" ? row.description.trim() : "";
170
+ if (effort && description) levels.push({
171
+ effort,
172
+ description
173
+ });
174
+ }
175
+ return levels.length > 0 ? levels : void 0;
176
+ }
177
+ /**
178
+ * Load list-visible native GPT models from the local Codex CLI (bundled catalog).
179
+ * Falls back to a static allowlist when Codex is missing or the probe fails.
180
+ */
181
+ function loadNativeListSlots() {
182
+ try {
183
+ const result = spawnSync("codex", [
184
+ "debug",
185
+ "models",
186
+ "--bundled"
187
+ ], {
188
+ encoding: "utf8",
189
+ timeout: 2e4,
190
+ maxBuffer: 16 * 1024 * 1024
191
+ });
192
+ if (result.status !== 0 || !result.stdout?.trim()) return fallbackSlots();
193
+ const parsed = JSON.parse(result.stdout);
194
+ if (!Array.isArray(parsed.models)) return fallbackSlots();
195
+ const slots = parsed.models.filter((model) => Boolean(model) && typeof model === "object" && !Array.isArray(model) && model.visibility === "list" && typeof model.slug === "string").map((model) => ({
196
+ slug: String(model.slug),
197
+ template: model
198
+ })).toSorted((left, right) => {
199
+ return Number(left.template?.priority ?? 999) - Number(right.template?.priority ?? 999) || left.slug.localeCompare(right.slug);
200
+ });
201
+ return slots.length > 0 ? slots : fallbackSlots();
202
+ } catch {
203
+ return fallbackSlots();
204
+ }
205
+ }
206
+ function fallbackSlots() {
207
+ return FALLBACK_NATIVE_LIST_SLUGS.map((slug) => ({ slug }));
208
+ }
209
+ //#endregion
210
+ export { CODEX_DESKTOP_ROLE_ORDER, FALLBACK_NATIVE_LIST_SLUGS, assignDesktopAliases, desktopAwareRouteModels, desktopConfigModelId, expandHubRoutesWithDesktopAliases, loadNativeListSlots, orderHubModelsForDesktop, preferredHubModelsFromRoles };
211
+
212
+ //# sourceMappingURL=codex-desktop-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-desktop-catalog.js","names":[],"sources":["../../src/clients/codex-desktop-catalog.ts"],"sourcesContent":["/**\n * Codex Desktop only lists models whose slugs pass a server-delivered allowlist\n * of native GPT ids (typically ~5 \"list\" entries). Custom hub slugs (big-pickle,\n * claude-*, gemini-*) load fine in the CLI but are filtered out of the Desktop\n * picker — the same constraint codex-router works around by republishing\n * external models under native GPT slugs and rewriting on the wire.\n *\n * AnyPick mirrors that for Proxy Hub: catalog entries use native slugs + Hub\n * display names; the Hub route table maps those slugs back via `upstreamModel`.\n */\n\nimport { spawnSync } from 'node:child_process';\nimport type { CodexCatalogModel } from './codex';\nimport type { ModelReasoningLevel, ProxyHubRouteTarget } from '../types';\n\n/** Fallback when `codex debug models --bundled` is unavailable. */\nexport const FALLBACK_NATIVE_LIST_SLUGS = [\n 'gpt-5.6-sol',\n 'gpt-5.6-terra',\n 'gpt-5.6-luna',\n 'gpt-5.5',\n 'gpt-5.2',\n] as const;\n\nexport interface NativeListSlot {\n slug: string;\n /** Full native catalog row used as a capability template when present. */\n template?: Record<string, unknown>;\n}\n\nexport interface DesktopModelAlias {\n /** Allowlisted GPT slug shown in Desktop. */\n nativeSlug: string;\n /** Real Hub / upstream model id. */\n hubModel: string;\n}\n\n/**\n * Prefer configured models first (Default + List 2–5 from Apps / Configure\n * Models), then the rest of the hub catalog. Stable unique order.\n */\nexport function orderHubModelsForDesktop(\n hubModels: readonly string[],\n preferred?: string | readonly string[],\n): string[] {\n const seen = new Set<string>();\n const out: string[] = [];\n const push = (raw: string | undefined) => {\n const model = raw?.trim();\n if (!model || seen.has(model)) {\n return;\n }\n seen.add(model);\n out.push(model);\n };\n const preferredList = typeof preferred === 'string' ? [preferred] : (preferred ?? []);\n for (const model of preferredList) {\n push(model);\n }\n for (const model of hubModels) {\n push(model);\n }\n return out;\n}\n\n/** Role order for Codex Desktop list slots (matches CODEX_DESKTOP_MODEL_ROLES). */\nexport const CODEX_DESKTOP_ROLE_ORDER = ['default', 'list2', 'list3', 'list4', 'list5'] as const;\n\n/**\n * Pull preferred Hub models from binding clientOptions.modelRoles in Desktop\n * slot order. Only non-empty customized roles are included (inherited slots\n * stay unset so the catalog can auto-fill from the Hub list).\n */\nexport function preferredHubModelsFromRoles(\n roles: Record<string, string> | undefined | null,\n): string[] {\n if (!roles || typeof roles !== 'object') {\n return [];\n }\n const out: string[] = [];\n const seen = new Set<string>();\n for (const id of CODEX_DESKTOP_ROLE_ORDER) {\n const model = roles[id]?.trim();\n if (!model || seen.has(model)) {\n continue;\n }\n seen.add(model);\n out.push(model);\n }\n return out;\n}\n\n/**\n * Pair non-allowlisted hub models (claude-*, gemini-*, big-pickle, …) onto the\n * native GPT list slots Desktop will actually show. Hub catalogs often also\n * list real `gpt-*` ids — those keep their own slugs for the CLI, but Desktop\n * slots are reserved for external Hub models (codex-router login-free style).\n */\nexport function assignDesktopAliases(\n hubModelsOrdered: readonly string[],\n nativeSlots: readonly NativeListSlot[],\n): DesktopModelAlias[] {\n const nativeSlugSet = new Set(nativeSlots.map((slot) => slot.slug));\n // Prefer external models as alias *targets*; native GPT ids already pass the\n // Desktop allowlist under their own names when the hub routes them.\n const external = hubModelsOrdered.filter((model) => !nativeSlugSet.has(model));\n const n = Math.min(external.length, nativeSlots.length);\n const out: DesktopModelAlias[] = [];\n for (let i = 0; i < n; i++) {\n const slot = nativeSlots[i];\n const hubModel = external[i];\n if (!slot?.slug || !hubModel) {\n continue;\n }\n out.push({ nativeSlug: slot.slug, hubModel });\n }\n return out;\n}\n\n/**\n * Expand a Hub route table so Desktop-selected GPT slugs rewrite to real hub\n * models via `upstreamModel` (see proxy-hub-server request rewrite). Overwrites\n * a native-slug route when the hub already exposes that id — the Desktop picker\n * slot is the alias surface, not a second GPT identity.\n */\nexport function expandHubRoutesWithDesktopAliases(\n routes: readonly ProxyHubRouteTarget[],\n aliases: readonly DesktopModelAlias[],\n): ProxyHubRouteTarget[] {\n if (aliases.length === 0) {\n return [...routes];\n }\n const byModel = new Map(routes.map((route) => [route.model, route]));\n for (const alias of aliases) {\n const base = byModel.get(alias.hubModel);\n if (!base) {\n continue;\n }\n byModel.set(alias.nativeSlug, {\n model: alias.nativeSlug,\n source: base.source,\n upstreamModel: base.upstreamModel,\n });\n }\n return [...byModel.values()];\n}\n\n/** Config top-level `model` that Desktop will highlight for a hub selection. */\nexport function desktopConfigModelId(\n preferredHubModel: string | undefined,\n aliases: readonly DesktopModelAlias[],\n): string | undefined {\n if (preferredHubModel) {\n const hit = aliases.find((alias) => alias.hubModel === preferredHubModel);\n if (hit) {\n return hit.nativeSlug;\n }\n }\n return aliases[0]?.nativeSlug ?? preferredHubModel;\n}\n\n/**\n * Build catalog models for live publish: Desktop-visible native-slug aliases\n * first (friendly Hub names), then every real hub model under its own slug for\n * CLI `/model` and direct use. Alias rows win on slug collision so Hub labels\n * surface instead of stock GPT names.\n */\nexport function desktopAwareRouteModels(\n routeModels: readonly CodexCatalogModel[],\n aliases: readonly DesktopModelAlias[],\n nativeSlots: readonly NativeListSlot[],\n): CodexCatalogModel[] {\n const hubBySlug = new Map(routeModels.map((model) => [model.slug, model]));\n const aliasModels: CodexCatalogModel[] = [];\n for (const alias of aliases) {\n const hub = hubBySlug.get(alias.hubModel);\n // Hub id + marker so the Desktop picker is not mistaken for stock GPT.\n const hubLabel = hub?.displayName ?? hub?.slug ?? alias.hubModel;\n const displayName = `${hubLabel} · Hub`;\n const slot = nativeSlots.find((entry) => entry.slug === alias.nativeSlug);\n const template = slot?.template;\n // Prefer hub capability fields; fall back to the native allowlist row so\n // Desktop keeps treating the entry as a first-class list model — including\n // reasoning-effort / verbosity controls that empty catalog rows disable.\n const contextWindow = hub?.contextWindow ?? positiveFromUnknown(template?.context_window);\n const maxContextWindow =\n hub?.maxContextWindow ?? positiveFromUnknown(template?.max_context_window);\n const autoCompactTokenLimit =\n hub?.autoCompactTokenLimit ?? positiveFromUnknown(template?.auto_compact_token_limit);\n const supportedReasoningLevels = hub?.supportedReasoningLevels?.length\n ? hub.supportedReasoningLevels\n : reasoningLevelsFromTemplate(template);\n const defaultReasoningLevel =\n hub?.defaultReasoningLevel ??\n (typeof template?.default_reasoning_level === 'string'\n ? template.default_reasoning_level\n : undefined);\n const supportsVerbosity =\n hub?.supportsVerbosity ??\n (typeof template?.support_verbosity === 'boolean' ? template.support_verbosity : undefined);\n aliasModels.push({\n slug: alias.nativeSlug,\n displayName,\n description:\n hub?.description ??\n `Proxy Hub: ${alias.hubModel} (Desktop picker slot ${alias.nativeSlug}).`,\n contextWindow,\n maxContextWindow,\n autoCompactTokenLimit,\n defaultReasoningLevel,\n supportedReasoningLevels,\n inputModalities: hub?.inputModalities,\n supportsParallelToolCalls: hub?.supportsParallelToolCalls,\n supportsSearchTool: hub?.supportsSearchTool,\n supportsVerbosity,\n supportsImageDetailOriginal: hub?.supportsImageDetailOriginal,\n });\n }\n // Real hub slugs remain listed so CLI users can pick beyond the Desktop slots.\n // Drop hub rows whose slug was claimed by an alias (aliases win the label).\n const aliasSlugs = new Set(aliasModels.map((model) => model.slug));\n const rest = routeModels.filter((model) => !aliasSlugs.has(model.slug));\n return [...aliasModels, ...rest];\n}\n\nfunction positiveFromUnknown(value: unknown): number | undefined {\n if (typeof value === 'number' && Number.isFinite(value) && value > 0) {\n return Math.floor(value);\n }\n if (typeof value === 'string' && value.trim()) {\n const n = Number(value);\n if (Number.isFinite(n) && n > 0) {\n return Math.floor(n);\n }\n }\n return undefined;\n}\n\n/** Copy native allowlist reasoning efforts so Desktop keeps the effort UI. */\nfunction reasoningLevelsFromTemplate(\n template: Record<string, unknown> | undefined,\n): readonly ModelReasoningLevel[] | undefined {\n const raw = template?.supported_reasoning_levels;\n if (!Array.isArray(raw)) {\n return undefined;\n }\n const levels: ModelReasoningLevel[] = [];\n for (const item of raw) {\n if (!item || typeof item !== 'object' || Array.isArray(item)) {\n continue;\n }\n const row = item as Record<string, unknown>;\n const effort = typeof row.effort === 'string' ? row.effort.trim() : '';\n const description = typeof row.description === 'string' ? row.description.trim() : '';\n if (effort && description) {\n levels.push({ effort, description });\n }\n }\n return levels.length > 0 ? levels : undefined;\n}\n\n/**\n * Load list-visible native GPT models from the local Codex CLI (bundled catalog).\n * Falls back to a static allowlist when Codex is missing or the probe fails.\n */\nexport function loadNativeListSlots(): NativeListSlot[] {\n try {\n const result = spawnSync('codex', ['debug', 'models', '--bundled'], {\n encoding: 'utf8',\n timeout: 20_000,\n maxBuffer: 16 * 1024 * 1024,\n });\n if (result.status !== 0 || !result.stdout?.trim()) {\n return fallbackSlots();\n }\n const parsed = JSON.parse(result.stdout) as { models?: unknown };\n if (!Array.isArray(parsed.models)) {\n return fallbackSlots();\n }\n const slots = parsed.models\n .filter(\n (model): model is Record<string, unknown> =>\n Boolean(model) &&\n typeof model === 'object' &&\n !Array.isArray(model) &&\n (model as { visibility?: unknown }).visibility === 'list' &&\n typeof (model as { slug?: unknown }).slug === 'string',\n )\n .map((model) => ({\n slug: String(model.slug),\n template: model,\n }))\n .toSorted((left, right) => {\n const lp = Number(left.template?.priority ?? 999);\n const rp = Number(right.template?.priority ?? 999);\n return lp - rp || left.slug.localeCompare(right.slug);\n });\n return slots.length > 0 ? slots : fallbackSlots();\n } catch {\n return fallbackSlots();\n }\n}\n\nfunction fallbackSlots(): NativeListSlot[] {\n return FALLBACK_NATIVE_LIST_SLUGS.map((slug) => ({ slug }));\n}\n"],"mappings":"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"}