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,102 @@
1
+ import { pathExists } from "../utils/fs.js";
2
+ import { isProcessRunning, readPidFile } from "../utils/process/pid.js";
3
+ import { isLockStale, readLockInfo } from "../utils/lock.js";
4
+ import { isUnderRoot, walkAnyPickOwned } from "./doctor-utils.js";
5
+ import { recoverIncompleteOperations } from "./activation-executor.js";
6
+ import { join } from "node:path";
7
+ import { chmod, rm, stat } from "node:fs/promises";
8
+ import { tmpdir } from "node:os";
9
+ //#region src/core/doctor-fixes.ts
10
+ async function executeDoctorFix(action, root, deps) {
11
+ switch (action.kind) {
12
+ case "delete_stale_lock": return fixDeleteStaleLock(action.target, root);
13
+ case "delete_stale_pid": return fixDeleteStalePid(action.target, root);
14
+ case "stop_orphan_proxy": return fixStopOrphanProxy(action, deps);
15
+ case "delete_temp_overlay": return fixDeleteTempOverlay(action.target);
16
+ case "repair_permissions": return fixRepairPermissions(root);
17
+ case "rebuild_caches": return fixRebuildCaches(root);
18
+ case "complete_journal_rollback": return fixJournal(action, deps);
19
+ default: {
20
+ const kind = action.kind;
21
+ throw new Error(`Unknown fix kind: ${String(kind)}`);
22
+ }
23
+ }
24
+ }
25
+ async function fixDeleteStaleLock(target, root) {
26
+ if (!isUnderRoot(target, root)) throw new Error(`Refusing to delete lock outside anypick root: ${target}`);
27
+ if (!await pathExists(target)) return `Lock already gone: ${target}`;
28
+ if (!target.endsWith(".lock")) throw new Error(`Not a lock file: ${target}`);
29
+ if (!await isLockStale(target)) {
30
+ const info = await readLockInfo(target);
31
+ throw new Error(`Lock still held by live process ${info?.pid ?? "?"}; refusing delete: ${target}`);
32
+ }
33
+ await rm(target, { force: true });
34
+ return `Deleted stale lock: ${target}`;
35
+ }
36
+ async function fixDeleteStalePid(target, root) {
37
+ if (!isUnderRoot(target, root)) throw new Error(`Refusing to delete PID outside anypick root: ${target}`);
38
+ if (!target.endsWith(".pid") && !target.endsWith("proxy.pid")) throw new Error(`Not a PID record: ${target}`);
39
+ const pid = await readPidFile(target);
40
+ if (pid != null && isProcessRunning(pid)) throw new Error(`Process ${pid} still running; refusing to delete PID file ${target}`);
41
+ await rm(target, { force: true });
42
+ return `Deleted stale PID record: ${target}`;
43
+ }
44
+ async function fixStopOrphanProxy(action, deps) {
45
+ const provider = String(action.params?.provider ?? "");
46
+ const account = String(action.params?.account ?? "");
47
+ if (!provider || !account) throw new Error("Orphan proxy fix requires provider and account");
48
+ if (deps.leases?.findByProviderAccount(provider, account)) throw new Error(`Live lease still references ${provider}/${account}; not an orphan`);
49
+ if (deps.bindings) {
50
+ for (const b of deps.bindings.listGlobal()) {
51
+ const s = b.spec.source;
52
+ if (s.kind === "account" && s.provider === provider && s.name === account) throw new Error(`Global binding for ${b.client} still references ${provider}/${account}`);
53
+ }
54
+ for (const b of deps.bindings.listAllProjects()) {
55
+ const s = b.spec.source;
56
+ if (s.kind === "account" && s.provider === provider && s.name === account) throw new Error(`Project binding for ${b.client} still references ${provider}/${account}`);
57
+ }
58
+ }
59
+ await deps.proxy.stopProxy(provider, account);
60
+ return `Stopped orphan proxy ${provider}/${account}`;
61
+ }
62
+ async function fixDeleteTempOverlay(target) {
63
+ if (!isUnderRoot(target, tmpdir())) throw new Error(`Refusing to delete overlay outside system temp: ${target}`);
64
+ const base = target.split(/[/\\]/).pop() ?? "";
65
+ if (!/^anypick-(claude|codex|kiro|client)-/.test(base)) throw new Error(`Not a AnyPick-owned temp overlay: ${target}`);
66
+ const st = await stat(target);
67
+ const ageMs = Date.now() - st.mtimeMs;
68
+ if (ageMs < 3600 * 1e3) throw new Error(`Overlay too recent (${Math.round(ageMs / 1e3)}s); refusing delete`);
69
+ await rm(target, {
70
+ recursive: true,
71
+ force: true
72
+ });
73
+ return `Deleted temp overlay: ${target}`;
74
+ }
75
+ async function fixRepairPermissions(root) {
76
+ let fixed = 0;
77
+ await walkAnyPickOwned(root, async (path, isDir) => {
78
+ try {
79
+ await chmod(path, isDir ? 448 : 384);
80
+ fixed++;
81
+ } catch {}
82
+ });
83
+ return `Repaired permissions on ${fixed} AnyPick-owned path(s) under ${root}`;
84
+ }
85
+ async function fixRebuildCaches(root) {
86
+ const { writeFile, mkdir } = await import("node:fs/promises");
87
+ const cacheDir = join(root, "cache");
88
+ await mkdir(cacheDir, { recursive: true });
89
+ await writeFile(join(cacheDir, "doctor-rebuild.json"), `${JSON.stringify({ rebuiltAt: (/* @__PURE__ */ new Date()).toISOString() }, null, 2)}\n`, { mode: 384 });
90
+ return `Rebuilt local cache metadata under ${cacheDir}`;
91
+ }
92
+ async function fixJournal(action, deps) {
93
+ if (!deps.journal) throw new Error("Journal store not available");
94
+ const id = String(action.params?.checkId ?? action.target).replace(/^journal:/, "");
95
+ if (!deps.journal.get(id)) return `Journal entry already gone: ${id}`;
96
+ const result = await recoverIncompleteOperations({ journal: deps.journal });
97
+ return `Journal recovery: recovered=${result.recovered} failed=${result.failed.length} refused=${result.refused.length}`;
98
+ }
99
+ //#endregion
100
+ export { executeDoctorFix };
101
+
102
+ //# sourceMappingURL=doctor-fixes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-fixes.js","names":[],"sources":["../../src/core/doctor-fixes.ts"],"sourcesContent":["import { chmod, rm, stat } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { tmpdir } from 'node:os';\nimport { pathExists } from '../utils/fs';\nimport { isProcessRunning, readPidFile } from '../utils/process';\nimport { isLockStale, readLockInfo } from '../utils/lock';\nimport { recoverIncompleteOperations } from './activation-executor';\nimport type { DoctorFixAction, DoctorServiceDeps } from './doctor-types';\nimport { isUnderRoot, walkAnyPickOwned } from './doctor-utils';\n\nexport async function executeDoctorFix(\n action: DoctorFixAction,\n root: string,\n deps: DoctorServiceDeps,\n): Promise<string> {\n switch (action.kind) {\n case 'delete_stale_lock':\n return fixDeleteStaleLock(action.target, root);\n case 'delete_stale_pid':\n return fixDeleteStalePid(action.target, root);\n case 'stop_orphan_proxy':\n return fixStopOrphanProxy(action, deps);\n case 'delete_temp_overlay':\n return fixDeleteTempOverlay(action.target);\n case 'repair_permissions':\n return fixRepairPermissions(root);\n case 'rebuild_caches':\n return fixRebuildCaches(root);\n case 'complete_journal_rollback':\n return fixJournal(action, deps);\n default: {\n const kind: never = action.kind;\n throw new Error(`Unknown fix kind: ${String(kind)}`);\n }\n }\n}\n\nasync function fixDeleteStaleLock(target: string, root: string): Promise<string> {\n if (!isUnderRoot(target, root)) {\n throw new Error(`Refusing to delete lock outside anypick root: ${target}`);\n }\n if (!(await pathExists(target))) {\n return `Lock already gone: ${target}`;\n }\n if (!target.endsWith('.lock')) {\n throw new Error(`Not a lock file: ${target}`);\n }\n if (!(await isLockStale(target))) {\n const info = await readLockInfo(target);\n throw new Error(\n `Lock still held by live process ${info?.pid ?? '?'}; refusing delete: ${target}`,\n );\n }\n await rm(target, { force: true });\n return `Deleted stale lock: ${target}`;\n}\n\nasync function fixDeleteStalePid(target: string, root: string): Promise<string> {\n if (!isUnderRoot(target, root)) {\n throw new Error(`Refusing to delete PID outside anypick root: ${target}`);\n }\n if (!target.endsWith('.pid') && !target.endsWith('proxy.pid')) {\n throw new Error(`Not a PID record: ${target}`);\n }\n const pid = await readPidFile(target);\n if (pid != null && isProcessRunning(pid)) {\n throw new Error(`Process ${pid} still running; refusing to delete PID file ${target}`);\n }\n await rm(target, { force: true });\n return `Deleted stale PID record: ${target}`;\n}\n\nasync function fixStopOrphanProxy(\n action: DoctorFixAction,\n deps: DoctorServiceDeps,\n): Promise<string> {\n const provider = String(action.params?.provider ?? '');\n const account = String(action.params?.account ?? '');\n if (!provider || !account) {\n throw new Error('Orphan proxy fix requires provider and account');\n }\n\n if (deps.leases?.findByProviderAccount(provider, account)) {\n throw new Error(`Live lease still references ${provider}/${account}; not an orphan`);\n }\n\n if (deps.bindings) {\n for (const b of deps.bindings.listGlobal()) {\n const s = b.spec.source;\n if (s.kind === 'account' && s.provider === provider && s.name === account) {\n throw new Error(`Global binding for ${b.client} still references ${provider}/${account}`);\n }\n }\n for (const b of deps.bindings.listAllProjects()) {\n const s = b.spec.source;\n if (s.kind === 'account' && s.provider === provider && s.name === account) {\n throw new Error(`Project binding for ${b.client} still references ${provider}/${account}`);\n }\n }\n }\n\n await deps.proxy.stopProxy(provider, account);\n return `Stopped orphan proxy ${provider}/${account}`;\n}\n\nasync function fixDeleteTempOverlay(target: string): Promise<string> {\n const tmp = tmpdir();\n if (!isUnderRoot(target, tmp)) {\n throw new Error(`Refusing to delete overlay outside system temp: ${target}`);\n }\n const base = target.split(/[/\\\\]/).pop() ?? '';\n if (!/^anypick-(claude|codex|kiro|client)-/.test(base)) {\n throw new Error(`Not a AnyPick-owned temp overlay: ${target}`);\n }\n const st = await stat(target);\n const ageMs = Date.now() - st.mtimeMs;\n if (ageMs < 60 * 60 * 1000) {\n throw new Error(`Overlay too recent (${Math.round(ageMs / 1000)}s); refusing delete`);\n }\n await rm(target, { recursive: true, force: true });\n return `Deleted temp overlay: ${target}`;\n}\n\nasync function fixRepairPermissions(root: string): Promise<string> {\n let fixed = 0;\n await walkAnyPickOwned(root, async (path, isDir) => {\n try {\n await chmod(path, isDir ? 0o700 : 0o600);\n fixed++;\n } catch {\n // ignore unchmodable\n }\n });\n return `Repaired permissions on ${fixed} AnyPick-owned path(s) under ${root}`;\n}\n\nasync function fixRebuildCaches(root: string): Promise<string> {\n const { writeFile, mkdir } = await import('node:fs/promises');\n const cacheDir = join(root, 'cache');\n await mkdir(cacheDir, { recursive: true });\n await writeFile(\n join(cacheDir, 'doctor-rebuild.json'),\n `${JSON.stringify({ rebuiltAt: new Date().toISOString() }, null, 2)}\\n`,\n { mode: 0o600 },\n );\n return `Rebuilt local cache metadata under ${cacheDir}`;\n}\n\nasync function fixJournal(action: DoctorFixAction, deps: DoctorServiceDeps): Promise<string> {\n if (!deps.journal) {\n throw new Error('Journal store not available');\n }\n const checkId = String(action.params?.checkId ?? action.target);\n const id = checkId.replace(/^journal:/, '');\n const entry = deps.journal.get(id);\n if (!entry) {\n return `Journal entry already gone: ${id}`;\n }\n const result = await recoverIncompleteOperations({ journal: deps.journal });\n return `Journal recovery: recovered=${result.recovered} failed=${result.failed.length} refused=${result.refused.length}`;\n}\n"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { DoctorFixPlan } from './doctor-types.js';
2
+ /**
3
+ * Format forbidden findings for human output (spec §18.5 example).
4
+ */
5
+ export declare function formatForbiddenManual(item: DoctorFixPlan['manual'][number]): string;
6
+ /**
7
+ * Re-plan orphan proxy actions with provider/account params from check ids.
8
+ */
9
+ export declare function enrichFixPlan(plan: DoctorFixPlan): DoctorFixPlan;
10
+ //# sourceMappingURL=doctor-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-format.d.ts","sourceRoot":"","sources":["../../src/core/doctor-format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CASnF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,aAAa,CA4BhE"}
@@ -0,0 +1,45 @@
1
+ //#region src/core/doctor-format.ts
2
+ /**
3
+ * Format forbidden findings for human output (spec §18.5 example).
4
+ */
5
+ function formatForbiddenManual(item) {
6
+ const lines = [
7
+ item.message,
8
+ "",
9
+ "Doctor will not perform this change automatically.",
10
+ ""
11
+ ];
12
+ if (item.suggestions.length) {
13
+ lines.push("Review / fix manually:");
14
+ for (const s of item.suggestions) lines.push(` ${s}`);
15
+ }
16
+ return lines.join("\n");
17
+ }
18
+ /**
19
+ * Re-plan orphan proxy actions with provider/account params from check ids.
20
+ */
21
+ function enrichFixPlan(plan) {
22
+ return {
23
+ ...plan,
24
+ actions: plan.actions.map((a) => {
25
+ if (a.kind === "stop_orphan_proxy") {
26
+ const m = a.id.match(/orphan-proxy:([^/]+)\/(.+)$/);
27
+ if (m) return {
28
+ ...a,
29
+ params: {
30
+ ...a.params,
31
+ provider: m[1],
32
+ account: m[2]
33
+ }
34
+ };
35
+ }
36
+ if (a.kind === "delete_stale_pid" && a.target.endsWith("proxy.pid")) return a;
37
+ if (a.kind === "delete_temp_overlay" || a.kind === "delete_stale_lock" || a.kind === "delete_stale_pid") return a;
38
+ return a;
39
+ })
40
+ };
41
+ }
42
+ //#endregion
43
+ export { enrichFixPlan, formatForbiddenManual };
44
+
45
+ //# sourceMappingURL=doctor-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-format.js","names":[],"sources":["../../src/core/doctor-format.ts"],"sourcesContent":["import type { DoctorFixPlan } from './doctor-types';\n\n/**\n * Format forbidden findings for human output (spec §18.5 example).\n */\nexport function formatForbiddenManual(item: DoctorFixPlan['manual'][number]): string {\n const lines = [item.message, '', 'Doctor will not perform this change automatically.', ''];\n if (item.suggestions.length) {\n lines.push('Review / fix manually:');\n for (const s of item.suggestions) {\n lines.push(` ${s}`);\n }\n }\n return lines.join('\\n');\n}\n\n/**\n * Re-plan orphan proxy actions with provider/account params from check ids.\n */\nexport function enrichFixPlan(plan: DoctorFixPlan): DoctorFixPlan {\n return {\n ...plan,\n actions: plan.actions.map((a) => {\n if (a.kind === 'stop_orphan_proxy') {\n // id: stop_orphan_proxy:orphan-proxy:provider/account\n const m = a.id.match(/orphan-proxy:([^/]+)\\/(.+)$/);\n if (m) {\n return {\n ...a,\n params: { ...a.params, provider: m[1], account: m[2] },\n };\n }\n }\n if (a.kind === 'delete_stale_pid' && a.target.endsWith('proxy.pid')) {\n return a;\n }\n if (\n a.kind === 'delete_temp_overlay' ||\n a.kind === 'delete_stale_lock' ||\n a.kind === 'delete_stale_pid'\n ) {\n // ensure target is the detail path when available\n return a;\n }\n return a;\n }),\n };\n}\n"],"mappings":";;;;AAKA,SAAgB,sBAAsB,MAA+C;CACnF,MAAM,QAAQ;EAAC,KAAK;EAAS;EAAI;EAAsD;CAAE;CACzF,IAAI,KAAK,YAAY,QAAQ;EAC3B,MAAM,KAAK,wBAAwB;EACnC,KAAK,MAAM,KAAK,KAAK,aACnB,MAAM,KAAK,KAAK,GAAG;CAEvB;CACA,OAAO,MAAM,KAAK,IAAI;AACxB;;;;AAKA,SAAgB,cAAc,MAAoC;CAChE,OAAO;EACL,GAAG;EACH,SAAS,KAAK,QAAQ,KAAK,MAAM;GAC/B,IAAI,EAAE,SAAS,qBAAqB;IAElC,MAAM,IAAI,EAAE,GAAG,MAAM,6BAA6B;IAClD,IAAI,GACF,OAAO;KACL,GAAG;KACH,QAAQ;MAAE,GAAG,EAAE;MAAQ,UAAU,EAAE;MAAI,SAAS,EAAE;KAAG;IACvD;GAEJ;GACA,IAAI,EAAE,SAAS,sBAAsB,EAAE,OAAO,SAAS,WAAW,GAChE,OAAO;GAET,IACE,EAAE,SAAS,yBACX,EAAE,SAAS,uBACX,EAAE,SAAS,oBAGX,OAAO;GAET,OAAO;EACT,CAAC;CACH;AACF"}
@@ -0,0 +1,3 @@
1
+ import type { DoctorReport, DoctorServiceDeps } from './doctor-types.js';
2
+ export declare function runDoctorReport(deps: DoctorServiceDeps, target?: string): Promise<DoctorReport>;
3
+ //# sourceMappingURL=doctor-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-report.d.ts","sourceRoot":"","sources":["../../src/core/doctor-report.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAe,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnF,wBAAsB,eAAe,CACnC,IAAI,EAAE,iBAAiB,EACvB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,YAAY,CAAC,CA8NvB"}
@@ -0,0 +1,174 @@
1
+ import { pathExists } from "../utils/fs.js";
2
+ import { anypickDbPath, getAnyPickRoot } from "./paths.js";
3
+ import { displayRef } from "./refs.js";
4
+ import { scanPermissions, scanProxyPids, scanStaleLocks, scanTempOverlays } from "./doctor-scan.js";
5
+ import { mkdir } from "node:fs/promises";
6
+ //#region src/core/doctor-report.ts
7
+ async function runDoctorReport(deps, target) {
8
+ const root = getAnyPickRoot(deps.root);
9
+ const checks = [];
10
+ const filter = target?.trim().toLowerCase();
11
+ const push = (c) => {
12
+ if (filter && !c.id.toLowerCase().includes(filter) && filter !== "all") {
13
+ if (!c.message.toLowerCase().includes(filter) && !c.id.toLowerCase().startsWith(filter)) return;
14
+ }
15
+ checks.push(c);
16
+ };
17
+ push({
18
+ id: "root",
19
+ ok: true,
20
+ message: `Data root: ${root}`
21
+ });
22
+ const dbFile = anypickDbPath(root);
23
+ const dbExists = await pathExists(dbFile);
24
+ push({
25
+ id: "sqlite",
26
+ ok: dbExists,
27
+ message: dbExists ? `SQLite: ${dbFile}` : `SQLite missing (expected ${dbFile})`
28
+ });
29
+ for (const p of deps.accounts.listProviders()) try {
30
+ const live = await p.detectLive();
31
+ push({
32
+ id: `auth:${p.id}`,
33
+ ok: true,
34
+ message: `${p.id}: ${live.present ? "live auth present" : "no live auth"}`,
35
+ detail: live.identity
36
+ });
37
+ } catch (err) {
38
+ push({
39
+ id: `auth:${p.id}`,
40
+ ok: false,
41
+ message: `${p.id}: detectLive failed`,
42
+ detail: err instanceof Error ? err.message : String(err),
43
+ forbidden: "modify_native_auth",
44
+ suggestions: [`anypick current ${deps.clients.has(p.id) ? p.id : ""}`.trim(), `anypick add account ${p.id} --current --name <name>`]
45
+ });
46
+ }
47
+ push({
48
+ id: "catalog",
49
+ ok: deps.catalog.list().length > 0,
50
+ message: `Catalog providers: ${deps.catalog.ids().join(", ") || "(none)"}`
51
+ });
52
+ const profiles = await deps.profiles.list();
53
+ push({
54
+ id: "profiles",
55
+ ok: true,
56
+ message: `Gateways (profiles): ${profiles.length}`,
57
+ detail: profiles.map((p) => p.meta.name).join(", ") || void 0
58
+ });
59
+ for (const profile of profiles) {
60
+ if (!deps.catalog.has(profile.meta.provider)) push({
61
+ id: `profile:${profile.meta.name}:provider`,
62
+ ok: false,
63
+ message: `Gateway "${profile.meta.name}" references unknown provider "${profile.meta.provider}"`,
64
+ forbidden: "change_gateway_endpoint",
65
+ suggestions: [`anypick edit gateway/${profile.meta.name}`, `anypick remove @preset or anypick list gateways`]
66
+ });
67
+ if (!profile.secrets.apiKey) push({
68
+ id: `profile:${profile.meta.name}:key`,
69
+ ok: true,
70
+ message: `Gateway "${profile.meta.name}" has no API key (ok if proxy ignores it)`
71
+ });
72
+ }
73
+ for (const c of deps.clients.list()) try {
74
+ const inspect = await c.inspect();
75
+ const state = await deps.runtime.which(c.id);
76
+ const binding = deps.bindings?.getGlobal(c.id);
77
+ push({
78
+ id: `client:${c.id}`,
79
+ ok: true,
80
+ message: binding ? `${c.id}: binding ${displayRef(binding.spec.source)}` : `${c.id}: mode=${state?.mode ?? "none"}${state?.profileName ? ` profile=${state.profileName}` : ""}`,
81
+ detail: inspect.summary
82
+ });
83
+ if (inspect.issues?.length) for (const issue of inspect.issues) push({
84
+ id: `client:${c.id}:issue`,
85
+ ok: false,
86
+ message: `${c.id}: ${issue}`,
87
+ forbidden: "modify_unmanaged_client_config",
88
+ suggestions: [`anypick current ${c.id} --verbose`, `anypick reset ${c.id}`]
89
+ });
90
+ } catch (err) {
91
+ push({
92
+ id: `client:${c.id}`,
93
+ ok: false,
94
+ message: `${c.id}: inspect failed`,
95
+ detail: err instanceof Error ? err.message : String(err)
96
+ });
97
+ }
98
+ await scanProxyPids(root, deps, push);
99
+ await scanStaleLocks(root, push);
100
+ if (deps.journal) {
101
+ const incomplete = deps.journal.listIncomplete();
102
+ for (const entry of incomplete) push({
103
+ id: `journal:${entry.id}`,
104
+ ok: false,
105
+ message: `Incomplete operation journal: ${entry.type} (${entry.state})`,
106
+ detail: entry.affectedResources.join(", "),
107
+ fixable: "complete_journal_rollback"
108
+ });
109
+ }
110
+ if (deps.bindings) for (const pb of deps.bindings.listAllProjects()) {
111
+ const src = pb.spec.source;
112
+ if (src.kind === "gateway") {
113
+ if (!new Set((await deps.profiles.list()).map((p) => p.meta.name)).has(src.name)) push({
114
+ id: `project-binding:${pb.projectRoot}:${pb.client}`,
115
+ ok: false,
116
+ message: `Project binding ${pb.client} → gateway/${src.name} references missing gateway`,
117
+ forbidden: "mutate_binding",
118
+ suggestions: [`anypick unlink ${pb.client}`, `anypick link ${pb.client} --with <source>`]
119
+ });
120
+ } else if (src.kind === "account") {
121
+ if (!await deps.accounts.get(src.provider, src.name)) push({
122
+ id: `project-binding:${pb.projectRoot}:${pb.client}`,
123
+ ok: false,
124
+ message: `Project binding ${pb.client} → ${src.provider}/${src.name} references missing account`,
125
+ forbidden: "mutate_binding",
126
+ suggestions: [`anypick unlink ${pb.client}`, `anypick add account ${src.provider} --current --name ${src.name}`]
127
+ });
128
+ }
129
+ }
130
+ if (deps.plugins) {
131
+ const { loadedNames, failures } = deps.plugins;
132
+ const records = deps.plugins.installed();
133
+ const enabled = records.filter((r) => r.enabled);
134
+ push({
135
+ id: "plugins",
136
+ ok: true,
137
+ message: `Plugins: ${loadedNames.length} loaded, ${records.length - enabled.length} disabled`,
138
+ detail: loadedNames.length > 0 ? loadedNames.join(", ") : void 0
139
+ });
140
+ for (const f of failures) push({
141
+ id: `plugin:${f.name}`,
142
+ ok: false,
143
+ message: f.untrusted ? `Plugin ${f.name} was refused: its code changed since you trusted it` : `Plugin ${f.name} failed to load`,
144
+ detail: f.reason,
145
+ suggestions: f.untrusted ? [`anypick plugin trust ${f.name}`, `anypick plugin remove ${f.name}`] : [`anypick plugin disable ${f.name}`]
146
+ });
147
+ }
148
+ await scanTempOverlays(push);
149
+ await scanPermissions(root, push);
150
+ try {
151
+ await mkdir(root, { recursive: true });
152
+ push({
153
+ id: "writable",
154
+ ok: await pathExists(root),
155
+ message: "Data root is writable"
156
+ });
157
+ } catch (err) {
158
+ push({
159
+ id: "writable",
160
+ ok: false,
161
+ message: "Data root is not writable",
162
+ detail: err instanceof Error ? err.message : String(err)
163
+ });
164
+ }
165
+ return {
166
+ ok: checks.every((c) => c.ok),
167
+ root,
168
+ checks
169
+ };
170
+ }
171
+ //#endregion
172
+ export { runDoctorReport };
173
+
174
+ //# sourceMappingURL=doctor-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-report.js","names":[],"sources":["../../src/core/doctor-report.ts"],"sourcesContent":["import { mkdir } from 'node:fs/promises';\nimport { getAnyPickRoot, anypickDbPath } from './paths';\nimport { pathExists } from '../utils/fs';\nimport { displayRef } from './refs';\nimport { scanPermissions, scanProxyPids, scanStaleLocks, scanTempOverlays } from './doctor-scan';\nimport type { DoctorCheck, DoctorReport, DoctorServiceDeps } from './doctor-types';\n\nexport async function runDoctorReport(\n deps: DoctorServiceDeps,\n target?: string,\n): Promise<DoctorReport> {\n const root = getAnyPickRoot(deps.root);\n const checks: DoctorCheck[] = [];\n const filter = target?.trim().toLowerCase();\n\n const push = (c: DoctorCheck) => {\n if (filter && !c.id.toLowerCase().includes(filter) && filter !== 'all') {\n if (!c.message.toLowerCase().includes(filter) && !c.id.toLowerCase().startsWith(filter)) {\n return;\n }\n }\n checks.push(c);\n };\n\n push({\n id: 'root',\n ok: true,\n message: `Data root: ${root}`,\n });\n\n const dbFile = anypickDbPath(root);\n const dbExists = await pathExists(dbFile);\n push({\n id: 'sqlite',\n ok: dbExists,\n message: dbExists ? `SQLite: ${dbFile}` : `SQLite missing (expected ${dbFile})`,\n });\n\n for (const p of deps.accounts.listProviders()) {\n try {\n const live = await p.detectLive();\n push({\n id: `auth:${p.id}`,\n ok: true,\n message: `${p.id}: ${live.present ? 'live auth present' : 'no live auth'}`,\n detail: live.identity,\n });\n } catch (err) {\n push({\n id: `auth:${p.id}`,\n ok: false,\n message: `${p.id}: detectLive failed`,\n detail: err instanceof Error ? err.message : String(err),\n forbidden: 'modify_native_auth',\n suggestions: [\n `anypick current ${deps.clients.has(p.id) ? p.id : ''}`.trim(),\n `anypick add account ${p.id} --current --name <name>`,\n ],\n });\n }\n }\n\n push({\n id: 'catalog',\n ok: deps.catalog.list().length > 0,\n message: `Catalog providers: ${deps.catalog.ids().join(', ') || '(none)'}`,\n });\n\n const profiles = await deps.profiles.list();\n push({\n id: 'profiles',\n ok: true,\n message: `Gateways (profiles): ${profiles.length}`,\n detail: profiles.map((p) => p.meta.name).join(', ') || undefined,\n });\n\n for (const profile of profiles) {\n if (!deps.catalog.has(profile.meta.provider)) {\n push({\n id: `profile:${profile.meta.name}:provider`,\n ok: false,\n message: `Gateway \"${profile.meta.name}\" references unknown provider \"${profile.meta.provider}\"`,\n forbidden: 'change_gateway_endpoint',\n suggestions: [\n `anypick edit gateway/${profile.meta.name}`,\n `anypick remove @preset or anypick list gateways`,\n ],\n });\n }\n if (!profile.secrets.apiKey) {\n push({\n id: `profile:${profile.meta.name}:key`,\n ok: true,\n message: `Gateway \"${profile.meta.name}\" has no API key (ok if proxy ignores it)`,\n });\n }\n }\n\n for (const c of deps.clients.list()) {\n try {\n const inspect = await c.inspect();\n const state = await deps.runtime.which(c.id);\n const binding = deps.bindings?.getGlobal(c.id);\n push({\n id: `client:${c.id}`,\n ok: true,\n message: binding\n ? `${c.id}: binding ${displayRef(binding.spec.source)}`\n : `${c.id}: mode=${state?.mode ?? 'none'}${state?.profileName ? ` profile=${state.profileName}` : ''}`,\n detail: inspect.summary,\n });\n if (inspect.issues?.length) {\n for (const issue of inspect.issues) {\n push({\n id: `client:${c.id}:issue`,\n ok: false,\n message: `${c.id}: ${issue}`,\n forbidden: 'modify_unmanaged_client_config',\n suggestions: [`anypick current ${c.id} --verbose`, `anypick reset ${c.id}`],\n });\n }\n }\n } catch (err) {\n push({\n id: `client:${c.id}`,\n ok: false,\n message: `${c.id}: inspect failed`,\n detail: err instanceof Error ? err.message : String(err),\n });\n }\n }\n\n await scanProxyPids(root, deps, push);\n await scanStaleLocks(root, push);\n\n if (deps.journal) {\n const incomplete = deps.journal.listIncomplete();\n for (const entry of incomplete) {\n push({\n id: `journal:${entry.id}`,\n ok: false,\n message: `Incomplete operation journal: ${entry.type} (${entry.state})`,\n detail: entry.affectedResources.join(', '),\n fixable: 'complete_journal_rollback',\n });\n }\n }\n\n if (deps.bindings) {\n for (const pb of deps.bindings.listAllProjects()) {\n const src = pb.spec.source;\n if (src.kind === 'gateway') {\n const names = new Set((await deps.profiles.list()).map((p) => p.meta.name));\n if (!names.has(src.name)) {\n push({\n id: `project-binding:${pb.projectRoot}:${pb.client}`,\n ok: false,\n message: `Project binding ${pb.client} → gateway/${src.name} references missing gateway`,\n forbidden: 'mutate_binding',\n suggestions: [\n `anypick unlink ${pb.client}`,\n `anypick link ${pb.client} --with <source>`,\n ],\n });\n }\n } else if (src.kind === 'account') {\n const acc = await deps.accounts.get(src.provider, src.name);\n if (!acc) {\n push({\n id: `project-binding:${pb.projectRoot}:${pb.client}`,\n ok: false,\n message: `Project binding ${pb.client} → ${src.provider}/${src.name} references missing account`,\n forbidden: 'mutate_binding',\n suggestions: [\n `anypick unlink ${pb.client}`,\n `anypick add account ${src.provider} --current --name ${src.name}`,\n ],\n });\n }\n }\n }\n }\n\n if (deps.plugins) {\n const { loadedNames, failures } = deps.plugins;\n const records = deps.plugins.installed();\n const enabled = records.filter((r) => r.enabled);\n push({\n id: 'plugins',\n ok: true,\n message: `Plugins: ${loadedNames.length} loaded, ${records.length - enabled.length} disabled`,\n detail: loadedNames.length > 0 ? loadedNames.join(', ') : undefined,\n });\n for (const f of failures) {\n push({\n id: `plugin:${f.name}`,\n ok: false,\n message: f.untrusted\n ? `Plugin ${f.name} was refused: its code changed since you trusted it`\n : `Plugin ${f.name} failed to load`,\n detail: f.reason,\n suggestions: f.untrusted\n ? [`anypick plugin trust ${f.name}`, `anypick plugin remove ${f.name}`]\n : [`anypick plugin disable ${f.name}`],\n });\n }\n }\n\n await scanTempOverlays(push);\n await scanPermissions(root, push);\n\n try {\n await mkdir(root, { recursive: true });\n push({\n id: 'writable',\n ok: await pathExists(root),\n message: 'Data root is writable',\n });\n } catch (err) {\n push({\n id: 'writable',\n ok: false,\n message: 'Data root is not writable',\n detail: err instanceof Error ? err.message : String(err),\n });\n }\n\n return {\n ok: checks.every((c) => c.ok),\n root,\n checks,\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { DoctorCheck, DoctorServiceDeps } from './doctor-types.js';
2
+ export type DoctorPush = (c: DoctorCheck) => void;
3
+ export declare function scanProxyPids(root: string, deps: DoctorServiceDeps, push: DoctorPush): Promise<void>;
4
+ export declare function scanStaleLocks(root: string, push: DoctorPush): Promise<void>;
5
+ export declare function scanTempOverlays(push: DoctorPush): Promise<void>;
6
+ export declare function scanPermissions(root: string, push: DoctorPush): Promise<void>;
7
+ //# sourceMappingURL=doctor-scan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-scan.d.ts","sourceRoot":"","sources":["../../src/core/doctor-scan.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGrE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,WAAW,KAAK,IAAI,CAAC;AAElD,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,IAAI,CAAC,CAmCf;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBlF;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCtE;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAoCnF"}
@@ -0,0 +1,139 @@
1
+ import { pathExists } from "../utils/fs.js";
2
+ import { isProcessRunning, readPidFile } from "../utils/process/pid.js";
3
+ import { isLockStale, readLockInfo } from "../utils/lock.js";
4
+ import { walkAnyPickOwned } from "./doctor-utils.js";
5
+ import { join, relative } from "node:path";
6
+ import { readdir, stat } from "node:fs/promises";
7
+ import { tmpdir } from "node:os";
8
+ //#region src/core/doctor-scan.ts
9
+ async function scanProxyPids(root, deps, push) {
10
+ if (!deps.accountStore) {
11
+ const providersRoot = join(root, "providers");
12
+ if (!await pathExists(providersRoot)) return;
13
+ try {
14
+ const providers = await readdir(providersRoot);
15
+ for (const provider of providers) {
16
+ const accountsRoot = join(providersRoot, provider, "accounts");
17
+ if (!await pathExists(accountsRoot)) continue;
18
+ const accounts = await readdir(accountsRoot);
19
+ for (const account of accounts) await checkPidFile(join(accountsRoot, account, "runtime", "proxy.pid"), provider, account, deps, push);
20
+ }
21
+ } catch {}
22
+ return;
23
+ }
24
+ for (const p of deps.accounts.listProviders()) {
25
+ if (typeof p.startProxy !== "function") continue;
26
+ const accounts = await deps.accountStore.listAccounts(p.id);
27
+ for (const a of accounts) await checkPidFile(deps.accountStore.pidPath(p.id, a.meta.name), p.id, a.meta.name, deps, push);
28
+ }
29
+ }
30
+ async function scanStaleLocks(root, push) {
31
+ await walkAnyPickOwned(root, async (path, isDir) => {
32
+ if (isDir || !path.endsWith(".lock")) return;
33
+ if (!await isLockStale(path)) return;
34
+ const info = await readLockInfo(path);
35
+ push({
36
+ id: `stale-lock:${relative(root, path)}`,
37
+ ok: false,
38
+ message: info ? `Stale AnyPick lock (dead pid ${info.pid}): ${relative(root, path)}` : `Stale or corrupt AnyPick lock: ${relative(root, path)}`,
39
+ detail: path,
40
+ fixable: "delete_stale_lock"
41
+ });
42
+ });
43
+ }
44
+ async function scanTempOverlays(push) {
45
+ const tmp = tmpdir();
46
+ try {
47
+ const entries = await readdir(tmp);
48
+ for (const name of entries) {
49
+ if (!/^anypick-(claude|codex|kiro|client)-/.test(name)) continue;
50
+ const full = join(tmp, name);
51
+ try {
52
+ const st = await stat(full);
53
+ if (!st.isDirectory()) continue;
54
+ if (Date.now() - st.mtimeMs < 3600 * 1e3) continue;
55
+ push({
56
+ id: `overlay:${name}`,
57
+ ok: false,
58
+ message: `Leftover temporary client overlay: ${name}`,
59
+ detail: full,
60
+ fixable: "delete_temp_overlay"
61
+ });
62
+ } catch {}
63
+ }
64
+ } catch {}
65
+ }
66
+ async function scanPermissions(root, push) {
67
+ let bad = 0;
68
+ try {
69
+ await walkAnyPickOwned(root, async (path, isDir) => {
70
+ try {
71
+ const mode = (await stat(path)).mode & 511;
72
+ if (isDir) {
73
+ if (mode & 18) bad++;
74
+ } else if (mode & 63) bad++;
75
+ } catch {}
76
+ });
77
+ } catch {}
78
+ if (bad > 0) push({
79
+ id: "permissions",
80
+ ok: false,
81
+ message: `${bad} AnyPick-owned path(s) have overly permissive mode`,
82
+ detail: root,
83
+ fixable: "repair_permissions"
84
+ });
85
+ else push({
86
+ id: "permissions",
87
+ ok: true,
88
+ message: "AnyPick-owned permissions look restrictive"
89
+ });
90
+ }
91
+ async function checkPidFile(pidPath, provider, account, deps, push) {
92
+ if (!await pathExists(pidPath)) return;
93
+ const pid = await readPidFile(pidPath);
94
+ if (pid == null) {
95
+ push({
96
+ id: `pid:${provider}/${account}`,
97
+ ok: false,
98
+ message: `Corrupt proxy PID file for ${provider}/${account}`,
99
+ detail: pidPath,
100
+ fixable: "delete_stale_pid"
101
+ });
102
+ return;
103
+ }
104
+ if (!isProcessRunning(pid)) {
105
+ push({
106
+ id: `pid:${provider}/${account}`,
107
+ ok: false,
108
+ message: `Stale proxy PID ${pid} for ${provider}/${account}`,
109
+ detail: pidPath,
110
+ fixable: "delete_stale_pid"
111
+ });
112
+ return;
113
+ }
114
+ const hasLease = Boolean(deps.leases?.findByProviderAccount(provider, account));
115
+ let hasBinding = false;
116
+ if (deps.bindings) for (const b of [...deps.bindings.listGlobal(), ...deps.bindings.listAllProjects()]) {
117
+ const s = b.spec.source;
118
+ if (s.kind === "account" && s.provider === provider && s.name === account) {
119
+ hasBinding = true;
120
+ break;
121
+ }
122
+ }
123
+ if (!hasLease && !hasBinding) push({
124
+ id: `orphan-proxy:${provider}/${account}`,
125
+ ok: false,
126
+ message: `Orphan proxy running for ${provider}/${account} (pid ${pid})`,
127
+ detail: pidPath,
128
+ fixable: "stop_orphan_proxy"
129
+ });
130
+ else push({
131
+ id: `proxy:${provider}/${account}`,
132
+ ok: true,
133
+ message: `Proxy ${provider}/${account} running (pid ${pid})`
134
+ });
135
+ }
136
+ //#endregion
137
+ export { scanPermissions, scanProxyPids, scanStaleLocks, scanTempOverlays };
138
+
139
+ //# sourceMappingURL=doctor-scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-scan.js","names":[],"sources":["../../src/core/doctor-scan.ts"],"sourcesContent":["import { readdir, stat } from 'node:fs/promises';\nimport { join, relative } from 'node:path';\nimport { tmpdir } from 'node:os';\nimport { pathExists } from '../utils/fs';\nimport { isProcessRunning, readPidFile } from '../utils/process';\nimport { isLockStale, readLockInfo } from '../utils/lock';\nimport type { DoctorCheck, DoctorServiceDeps } from './doctor-types';\nimport { walkAnyPickOwned } from './doctor-utils';\n\nexport type DoctorPush = (c: DoctorCheck) => void;\n\nexport async function scanProxyPids(\n root: string,\n deps: DoctorServiceDeps,\n push: DoctorPush,\n): Promise<void> {\n if (!deps.accountStore) {\n const providersRoot = join(root, 'providers');\n if (!(await pathExists(providersRoot))) {\n return;\n }\n try {\n const providers = await readdir(providersRoot);\n for (const provider of providers) {\n const accountsRoot = join(providersRoot, provider, 'accounts');\n if (!(await pathExists(accountsRoot))) {\n continue;\n }\n const accounts = await readdir(accountsRoot);\n for (const account of accounts) {\n const pidPath = join(accountsRoot, account, 'runtime', 'proxy.pid');\n await checkPidFile(pidPath, provider, account, deps, push);\n }\n }\n } catch {\n // ignore scan errors\n }\n return;\n }\n\n for (const p of deps.accounts.listProviders()) {\n if (typeof p.startProxy !== 'function') {\n continue;\n }\n const accounts = await deps.accountStore.listAccounts(p.id);\n for (const a of accounts) {\n const pidPath = deps.accountStore.pidPath(p.id, a.meta.name);\n await checkPidFile(pidPath, p.id, a.meta.name, deps, push);\n }\n }\n}\n\nexport async function scanStaleLocks(root: string, push: DoctorPush): Promise<void> {\n await walkAnyPickOwned(root, async (path, isDir) => {\n if (isDir || !path.endsWith('.lock')) {\n return;\n }\n if (!(await isLockStale(path))) {\n return;\n }\n const info = await readLockInfo(path);\n push({\n id: `stale-lock:${relative(root, path)}`,\n ok: false,\n message: info\n ? `Stale AnyPick lock (dead pid ${info.pid}): ${relative(root, path)}`\n : `Stale or corrupt AnyPick lock: ${relative(root, path)}`,\n detail: path,\n fixable: 'delete_stale_lock',\n });\n });\n}\n\nexport async function scanTempOverlays(push: DoctorPush): Promise<void> {\n const tmp = tmpdir();\n try {\n const entries = await readdir(tmp);\n for (const name of entries) {\n if (!/^anypick-(claude|codex|kiro|client)-/.test(name)) {\n continue;\n }\n const full = join(tmp, name);\n try {\n const st = await stat(full);\n if (!st.isDirectory()) {\n continue;\n }\n const ageMs = Date.now() - st.mtimeMs;\n if (ageMs < 60 * 60 * 1000) {\n continue;\n }\n push({\n id: `overlay:${name}`,\n ok: false,\n message: `Leftover temporary client overlay: ${name}`,\n detail: full,\n fixable: 'delete_temp_overlay',\n });\n } catch {\n // ignore\n }\n }\n } catch {\n // ignore tmp unreadable\n }\n}\n\nexport async function scanPermissions(root: string, push: DoctorPush): Promise<void> {\n let bad = 0;\n try {\n await walkAnyPickOwned(root, async (path, isDir) => {\n try {\n const st = await stat(path);\n const mode = st.mode & 0o777;\n if (isDir) {\n if (mode & 0o022) {\n bad++;\n }\n } else if (mode & 0o077) {\n bad++;\n }\n } catch {\n // ignore\n }\n });\n } catch {\n // ignore\n }\n if (bad > 0) {\n push({\n id: 'permissions',\n ok: false,\n message: `${bad} AnyPick-owned path(s) have overly permissive mode`,\n detail: root,\n fixable: 'repair_permissions',\n });\n } else {\n push({\n id: 'permissions',\n ok: true,\n message: 'AnyPick-owned permissions look restrictive',\n });\n }\n}\n\nasync function checkPidFile(\n pidPath: string,\n provider: string,\n account: string,\n deps: DoctorServiceDeps,\n push: DoctorPush,\n): Promise<void> {\n if (!(await pathExists(pidPath))) {\n return;\n }\n const pid = await readPidFile(pidPath);\n if (pid == null) {\n push({\n id: `pid:${provider}/${account}`,\n ok: false,\n message: `Corrupt proxy PID file for ${provider}/${account}`,\n detail: pidPath,\n fixable: 'delete_stale_pid',\n });\n return;\n }\n if (!isProcessRunning(pid)) {\n push({\n id: `pid:${provider}/${account}`,\n ok: false,\n message: `Stale proxy PID ${pid} for ${provider}/${account}`,\n detail: pidPath,\n fixable: 'delete_stale_pid',\n });\n return;\n }\n\n const hasLease = Boolean(deps.leases?.findByProviderAccount(provider, account));\n let hasBinding = false;\n if (deps.bindings) {\n for (const b of [...deps.bindings.listGlobal(), ...deps.bindings.listAllProjects()]) {\n const s = b.spec.source;\n if (s.kind === 'account' && s.provider === provider && s.name === account) {\n hasBinding = true;\n break;\n }\n }\n }\n if (!hasLease && !hasBinding) {\n push({\n id: `orphan-proxy:${provider}/${account}`,\n ok: false,\n message: `Orphan proxy running for ${provider}/${account} (pid ${pid})`,\n detail: pidPath,\n fixable: 'stop_orphan_proxy',\n });\n } else {\n push({\n id: `proxy:${provider}/${account}`,\n ok: true,\n message: `Proxy ${provider}/${account} running (pid ${pid})`,\n });\n }\n}\n"],"mappings":"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"}