anypick 1.0.0 → 1.1.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/README.md +16 -582
  2. package/bin/anypick.js +249 -0
  3. package/package.json +14 -106
  4. package/dist/adapters.d.ts +0 -4
  5. package/dist/adapters.d.ts.map +0 -1
  6. package/dist/adapters.js +0 -2
  7. package/dist/catalog/model-fetch.d.ts +0 -34
  8. package/dist/catalog/model-fetch.d.ts.map +0 -1
  9. package/dist/catalog/model-fetch.js +0 -99
  10. package/dist/catalog/model-fetch.js.map +0 -1
  11. package/dist/catalog/providers.d.ts +0 -42
  12. package/dist/catalog/providers.d.ts.map +0 -1
  13. package/dist/catalog/providers.js +0 -424
  14. package/dist/catalog/providers.js.map +0 -1
  15. package/dist/cli/bootstrap.d.ts +0 -3
  16. package/dist/cli/bootstrap.d.ts.map +0 -1
  17. package/dist/cli/bootstrap.js +0 -78
  18. package/dist/cli/bootstrap.js.map +0 -1
  19. package/dist/cli/commands.d.ts +0 -29
  20. package/dist/cli/commands.d.ts.map +0 -1
  21. package/dist/cli/commands.js +0 -1043
  22. package/dist/cli/commands.js.map +0 -1
  23. package/dist/cli/completion.d.ts +0 -6
  24. package/dist/cli/completion.d.ts.map +0 -1
  25. package/dist/cli/completion.js +0 -202
  26. package/dist/cli/completion.js.map +0 -1
  27. package/dist/cli/errors.d.ts +0 -20
  28. package/dist/cli/errors.d.ts.map +0 -1
  29. package/dist/cli/errors.js +0 -47
  30. package/dist/cli/errors.js.map +0 -1
  31. package/dist/cli/format.d.ts +0 -6
  32. package/dist/cli/format.d.ts.map +0 -1
  33. package/dist/cli/format.js +0 -75
  34. package/dist/cli/format.js.map +0 -1
  35. package/dist/cli/help.d.ts +0 -6
  36. package/dist/cli/help.d.ts.map +0 -1
  37. package/dist/cli/help.js +0 -66
  38. package/dist/cli/help.js.map +0 -1
  39. package/dist/cli/interactive-accounts.d.ts +0 -3
  40. package/dist/cli/interactive-accounts.d.ts.map +0 -1
  41. package/dist/cli/interactive-accounts.js +0 -86
  42. package/dist/cli/interactive-accounts.js.map +0 -1
  43. package/dist/cli/interactive-maintenance.d.ts +0 -4
  44. package/dist/cli/interactive-maintenance.d.ts.map +0 -1
  45. package/dist/cli/interactive-maintenance.js +0 -30
  46. package/dist/cli/interactive-maintenance.js.map +0 -1
  47. package/dist/cli/interactive.d.ts +0 -14
  48. package/dist/cli/interactive.d.ts.map +0 -1
  49. package/dist/cli/interactive.js +0 -242
  50. package/dist/cli/interactive.js.map +0 -1
  51. package/dist/cli/launch-client.d.ts +0 -18
  52. package/dist/cli/launch-client.d.ts.map +0 -1
  53. package/dist/cli/launch-client.js +0 -117
  54. package/dist/cli/launch-client.js.map +0 -1
  55. package/dist/cli/launcher-model.d.ts +0 -64
  56. package/dist/cli/launcher-model.d.ts.map +0 -1
  57. package/dist/cli/launcher-model.js +0 -200
  58. package/dist/cli/launcher-model.js.map +0 -1
  59. package/dist/cli/launcher-render.d.ts +0 -22
  60. package/dist/cli/launcher-render.d.ts.map +0 -1
  61. package/dist/cli/launcher-render.js +0 -113
  62. package/dist/cli/launcher-render.js.map +0 -1
  63. package/dist/cli/launcher.d.ts +0 -27
  64. package/dist/cli/launcher.d.ts.map +0 -1
  65. package/dist/cli/launcher.js +0 -93
  66. package/dist/cli/launcher.js.map +0 -1
  67. package/dist/cli/local-health.d.ts +0 -17
  68. package/dist/cli/local-health.d.ts.map +0 -1
  69. package/dist/cli/local-health.js +0 -31
  70. package/dist/cli/local-health.js.map +0 -1
  71. package/dist/cli/plugin-commands.d.ts +0 -4
  72. package/dist/cli/plugin-commands.d.ts.map +0 -1
  73. package/dist/cli/plugin-commands.js +0 -160
  74. package/dist/cli/plugin-commands.js.map +0 -1
  75. package/dist/cli/primary.d.ts +0 -18
  76. package/dist/cli/primary.d.ts.map +0 -1
  77. package/dist/cli/primary.js +0 -593
  78. package/dist/cli/primary.js.map +0 -1
  79. package/dist/cli/render-util.d.ts +0 -24
  80. package/dist/cli/render-util.d.ts.map +0 -1
  81. package/dist/cli/render-util.js +0 -58
  82. package/dist/cli/render-util.js.map +0 -1
  83. package/dist/cli/ux.d.ts +0 -43
  84. package/dist/cli/ux.d.ts.map +0 -1
  85. package/dist/cli/ux.js +0 -114
  86. package/dist/cli/ux.js.map +0 -1
  87. package/dist/cli.d.ts +0 -3
  88. package/dist/cli.d.ts.map +0 -1
  89. package/dist/cli.js +0 -35
  90. package/dist/cli.js.map +0 -1
  91. package/dist/clients/claude-client-apply.d.ts +0 -8
  92. package/dist/clients/claude-client-apply.d.ts.map +0 -1
  93. package/dist/clients/claude-client-apply.js +0 -108
  94. package/dist/clients/claude-client-apply.js.map +0 -1
  95. package/dist/clients/claude-code.d.ts +0 -5
  96. package/dist/clients/claude-code.d.ts.map +0 -1
  97. package/dist/clients/claude-code.js +0 -189
  98. package/dist/clients/claude-code.js.map +0 -1
  99. package/dist/clients/claude-settings-guard.d.ts +0 -18
  100. package/dist/clients/claude-settings-guard.d.ts.map +0 -1
  101. package/dist/clients/codex-desktop-catalog.d.ts +0 -67
  102. package/dist/clients/codex-desktop-catalog.d.ts.map +0 -1
  103. package/dist/clients/codex-desktop-catalog.js +0 -212
  104. package/dist/clients/codex-desktop-catalog.js.map +0 -1
  105. package/dist/clients/codex.d.ts +0 -181
  106. package/dist/clients/codex.d.ts.map +0 -1
  107. package/dist/clients/codex.js +0 -783
  108. package/dist/clients/codex.js.map +0 -1
  109. package/dist/clients/env-files.d.ts +0 -14
  110. package/dist/clients/env-files.d.ts.map +0 -1
  111. package/dist/clients/env-files.js +0 -50
  112. package/dist/clients/env-files.js.map +0 -1
  113. package/dist/clients/gemini-client-utils.d.ts +0 -4
  114. package/dist/clients/gemini-client-utils.d.ts.map +0 -1
  115. package/dist/clients/gemini-client-utils.js +0 -33
  116. package/dist/clients/gemini-client-utils.js.map +0 -1
  117. package/dist/clients/gemini.d.ts +0 -16
  118. package/dist/clients/gemini.d.ts.map +0 -1
  119. package/dist/clients/gemini.js +0 -233
  120. package/dist/clients/gemini.js.map +0 -1
  121. package/dist/clients/index.d.ts +0 -14
  122. package/dist/clients/index.d.ts.map +0 -1
  123. package/dist/clients/index.js +0 -18
  124. package/dist/clients/index.js.map +0 -1
  125. package/dist/clients/isolation.d.ts +0 -28
  126. package/dist/clients/isolation.d.ts.map +0 -1
  127. package/dist/clients/isolation.js +0 -131
  128. package/dist/clients/isolation.js.map +0 -1
  129. package/dist/clients/kiro.d.ts +0 -10
  130. package/dist/clients/kiro.d.ts.map +0 -1
  131. package/dist/clients/kiro.js +0 -168
  132. package/dist/clients/kiro.js.map +0 -1
  133. package/dist/clients/model-roles.d.ts +0 -58
  134. package/dist/clients/model-roles.d.ts.map +0 -1
  135. package/dist/clients/model-roles.js +0 -139
  136. package/dist/clients/model-roles.js.map +0 -1
  137. package/dist/clients/registry.d.ts +0 -7
  138. package/dist/clients/registry.d.ts.map +0 -1
  139. package/dist/clients/registry.js +0 -16
  140. package/dist/clients/registry.js.map +0 -1
  141. package/dist/clients/resolve.d.ts +0 -27
  142. package/dist/clients/resolve.d.ts.map +0 -1
  143. package/dist/clients/resolve.js +0 -49
  144. package/dist/clients/resolve.js.map +0 -1
  145. package/dist/core/account-codec.d.ts +0 -32
  146. package/dist/core/account-codec.d.ts.map +0 -1
  147. package/dist/core/account-codec.js +0 -134
  148. package/dist/core/account-codec.js.map +0 -1
  149. package/dist/core/account-transfer.d.ts +0 -20
  150. package/dist/core/account-transfer.d.ts.map +0 -1
  151. package/dist/core/account-transfer.js +0 -136
  152. package/dist/core/account-transfer.js.map +0 -1
  153. package/dist/core/activation-executor.d.ts +0 -72
  154. package/dist/core/activation-executor.d.ts.map +0 -1
  155. package/dist/core/activation-executor.js +0 -690
  156. package/dist/core/activation-executor.js.map +0 -1
  157. package/dist/core/activation-models.d.ts +0 -6
  158. package/dist/core/activation-models.d.ts.map +0 -1
  159. package/dist/core/activation-models.js +0 -33
  160. package/dist/core/activation-models.js.map +0 -1
  161. package/dist/core/activation-planner.d.ts +0 -38
  162. package/dist/core/activation-planner.d.ts.map +0 -1
  163. package/dist/core/activation-planner.js +0 -248
  164. package/dist/core/activation-planner.js.map +0 -1
  165. package/dist/core/activation-protocol.d.ts +0 -3
  166. package/dist/core/activation-protocol.d.ts.map +0 -1
  167. package/dist/core/activation-protocol.js +0 -9
  168. package/dist/core/activation-protocol.js.map +0 -1
  169. package/dist/core/activation-transport.d.ts +0 -15
  170. package/dist/core/activation-transport.d.ts.map +0 -1
  171. package/dist/core/activation-transport.js +0 -23
  172. package/dist/core/activation-transport.js.map +0 -1
  173. package/dist/core/app.d.ts +0 -149
  174. package/dist/core/app.d.ts.map +0 -1
  175. package/dist/core/app.js +0 -372
  176. package/dist/core/app.js.map +0 -1
  177. package/dist/core/binding-service.d.ts +0 -93
  178. package/dist/core/binding-service.d.ts.map +0 -1
  179. package/dist/core/binding-service.js +0 -281
  180. package/dist/core/binding-service.js.map +0 -1
  181. package/dist/core/binding-store.d.ts +0 -23
  182. package/dist/core/binding-store.d.ts.map +0 -1
  183. package/dist/core/binding-store.js +0 -154
  184. package/dist/core/binding-store.js.map +0 -1
  185. package/dist/core/brand.d.ts +0 -18
  186. package/dist/core/brand.d.ts.map +0 -1
  187. package/dist/core/brand.js +0 -22
  188. package/dist/core/brand.js.map +0 -1
  189. package/dist/core/capabilities.d.ts +0 -30
  190. package/dist/core/capabilities.d.ts.map +0 -1
  191. package/dist/core/capabilities.js +0 -27
  192. package/dist/core/capabilities.js.map +0 -1
  193. package/dist/core/client-state-store.d.ts +0 -17
  194. package/dist/core/client-state-store.d.ts.map +0 -1
  195. package/dist/core/client-state-store.js +0 -47
  196. package/dist/core/client-state-store.js.map +0 -1
  197. package/dist/core/codec/account.d.ts +0 -52
  198. package/dist/core/codec/account.d.ts.map +0 -1
  199. package/dist/core/codec/account.js +0 -69
  200. package/dist/core/codec/account.js.map +0 -1
  201. package/dist/core/codec/bindings.d.ts +0 -38
  202. package/dist/core/codec/bindings.d.ts.map +0 -1
  203. package/dist/core/codec/bindings.js +0 -79
  204. package/dist/core/codec/bindings.js.map +0 -1
  205. package/dist/core/codec/operations.d.ts +0 -36
  206. package/dist/core/codec/operations.d.ts.map +0 -1
  207. package/dist/core/codec/operations.js +0 -82
  208. package/dist/core/codec/operations.js.map +0 -1
  209. package/dist/core/codec/primitives.d.ts +0 -59
  210. package/dist/core/codec/primitives.d.ts.map +0 -1
  211. package/dist/core/codec/primitives.js +0 -123
  212. package/dist/core/codec/primitives.js.map +0 -1
  213. package/dist/core/codec/proxy-hub.d.ts +0 -43
  214. package/dist/core/codec/proxy-hub.d.ts.map +0 -1
  215. package/dist/core/codec/proxy-hub.js +0 -69
  216. package/dist/core/codec/proxy-hub.js.map +0 -1
  217. package/dist/core/codec/runtime.d.ts +0 -41
  218. package/dist/core/codec/runtime.d.ts.map +0 -1
  219. package/dist/core/codec/runtime.js +0 -66
  220. package/dist/core/codec/runtime.js.map +0 -1
  221. package/dist/core/codec.d.ts +0 -43
  222. package/dist/core/codec.d.ts.map +0 -1
  223. package/dist/core/codec.js +0 -69
  224. package/dist/core/codec.js.map +0 -1
  225. package/dist/core/codex-live-config.d.ts +0 -92
  226. package/dist/core/codex-live-config.d.ts.map +0 -1
  227. package/dist/core/codex-live-config.js +0 -263
  228. package/dist/core/codex-live-config.js.map +0 -1
  229. package/dist/core/config-service.d.ts +0 -35
  230. package/dist/core/config-service.d.ts.map +0 -1
  231. package/dist/core/config-service.js +0 -87
  232. package/dist/core/config-service.js.map +0 -1
  233. package/dist/core/config.d.ts +0 -14
  234. package/dist/core/config.d.ts.map +0 -1
  235. package/dist/core/config.js +0 -45
  236. package/dist/core/config.js.map +0 -1
  237. package/dist/core/db-schema.d.ts +0 -30
  238. package/dist/core/db-schema.d.ts.map +0 -1
  239. package/dist/core/db-schema.js +0 -278
  240. package/dist/core/db-schema.js.map +0 -1
  241. package/dist/core/db.d.ts +0 -72
  242. package/dist/core/db.d.ts.map +0 -1
  243. package/dist/core/db.js +0 -192
  244. package/dist/core/db.js.map +0 -1
  245. package/dist/core/doctor-fixes.d.ts +0 -3
  246. package/dist/core/doctor-fixes.d.ts.map +0 -1
  247. package/dist/core/doctor-fixes.js +0 -102
  248. package/dist/core/doctor-fixes.js.map +0 -1
  249. package/dist/core/doctor-format.d.ts +0 -10
  250. package/dist/core/doctor-format.d.ts.map +0 -1
  251. package/dist/core/doctor-format.js +0 -45
  252. package/dist/core/doctor-format.js.map +0 -1
  253. package/dist/core/doctor-report.d.ts +0 -3
  254. package/dist/core/doctor-report.d.ts.map +0 -1
  255. package/dist/core/doctor-report.js +0 -174
  256. package/dist/core/doctor-report.js.map +0 -1
  257. package/dist/core/doctor-scan.d.ts +0 -7
  258. package/dist/core/doctor-scan.d.ts.map +0 -1
  259. package/dist/core/doctor-scan.js +0 -139
  260. package/dist/core/doctor-scan.js.map +0 -1
  261. package/dist/core/doctor-types.d.ts +0 -89
  262. package/dist/core/doctor-types.d.ts.map +0 -1
  263. package/dist/core/doctor-types.js +0 -14
  264. package/dist/core/doctor-types.js.map +0 -1
  265. package/dist/core/doctor-utils.d.ts +0 -3
  266. package/dist/core/doctor-utils.d.ts.map +0 -1
  267. package/dist/core/doctor-utils.js +0 -36
  268. package/dist/core/doctor-utils.js.map +0 -1
  269. package/dist/core/doctor.d.ts +0 -14
  270. package/dist/core/doctor.d.ts.map +0 -1
  271. package/dist/core/doctor.js +0 -127
  272. package/dist/core/doctor.js.map +0 -1
  273. package/dist/core/events.d.ts +0 -58
  274. package/dist/core/events.d.ts.map +0 -1
  275. package/dist/core/events.js +0 -88
  276. package/dist/core/events.js.map +0 -1
  277. package/dist/core/journal.d.ts +0 -23
  278. package/dist/core/journal.d.ts.map +0 -1
  279. package/dist/core/journal.js +0 -93
  280. package/dist/core/journal.js.map +0 -1
  281. package/dist/core/lease-store.d.ts +0 -22
  282. package/dist/core/lease-store.d.ts.map +0 -1
  283. package/dist/core/lease-store.js +0 -81
  284. package/dist/core/lease-store.js.map +0 -1
  285. package/dist/core/migrate-bindings.d.ts +0 -10
  286. package/dist/core/migrate-bindings.d.ts.map +0 -1
  287. package/dist/core/migrate-bindings.js +0 -98
  288. package/dist/core/migrate-bindings.js.map +0 -1
  289. package/dist/core/migrate-fs.d.ts +0 -11
  290. package/dist/core/migrate-fs.d.ts.map +0 -1
  291. package/dist/core/migrate-fs.js +0 -184
  292. package/dist/core/migrate-fs.js.map +0 -1
  293. package/dist/core/model-cache-store.d.ts +0 -27
  294. package/dist/core/model-cache-store.d.ts.map +0 -1
  295. package/dist/core/model-cache-store.js +0 -50
  296. package/dist/core/model-cache-store.js.map +0 -1
  297. package/dist/core/model-discovery.d.ts +0 -66
  298. package/dist/core/model-discovery.d.ts.map +0 -1
  299. package/dist/core/model-discovery.js +0 -127
  300. package/dist/core/model-discovery.js.map +0 -1
  301. package/dist/core/model-policy.d.ts +0 -40
  302. package/dist/core/model-policy.d.ts.map +0 -1
  303. package/dist/core/model-policy.js +0 -77
  304. package/dist/core/model-policy.js.map +0 -1
  305. package/dist/core/model-roles.d.ts +0 -9
  306. package/dist/core/model-roles.d.ts.map +0 -1
  307. package/dist/core/model-roles.js +0 -20
  308. package/dist/core/model-roles.js.map +0 -1
  309. package/dist/core/mutation-lock.d.ts +0 -31
  310. package/dist/core/mutation-lock.d.ts.map +0 -1
  311. package/dist/core/mutation-lock.js +0 -69
  312. package/dist/core/mutation-lock.js.map +0 -1
  313. package/dist/core/paths.d.ts +0 -49
  314. package/dist/core/paths.d.ts.map +0 -1
  315. package/dist/core/paths.js +0 -110
  316. package/dist/core/paths.js.map +0 -1
  317. package/dist/core/plugin-loader.d.ts +0 -40
  318. package/dist/core/plugin-loader.d.ts.map +0 -1
  319. package/dist/core/plugin-loader.js +0 -184
  320. package/dist/core/plugin-loader.js.map +0 -1
  321. package/dist/core/plugin-service.d.ts +0 -32
  322. package/dist/core/plugin-service.d.ts.map +0 -1
  323. package/dist/core/plugin-service.js +0 -110
  324. package/dist/core/plugin-service.js.map +0 -1
  325. package/dist/core/plugin-store.d.ts +0 -18
  326. package/dist/core/plugin-store.d.ts.map +0 -1
  327. package/dist/core/plugin-store.js +0 -50
  328. package/dist/core/plugin-store.js.map +0 -1
  329. package/dist/core/pool-store.d.ts +0 -44
  330. package/dist/core/pool-store.d.ts.map +0 -1
  331. package/dist/core/pool-store.js +0 -198
  332. package/dist/core/pool-store.js.map +0 -1
  333. package/dist/core/preset-store.d.ts +0 -29
  334. package/dist/core/preset-store.d.ts.map +0 -1
  335. package/dist/core/preset-store.js +0 -105
  336. package/dist/core/preset-store.js.map +0 -1
  337. package/dist/core/profile-service.d.ts +0 -50
  338. package/dist/core/profile-service.d.ts.map +0 -1
  339. package/dist/core/profile-service.js +0 -149
  340. package/dist/core/profile-service.js.map +0 -1
  341. package/dist/core/profile-store.d.ts +0 -20
  342. package/dist/core/profile-store.d.ts.map +0 -1
  343. package/dist/core/profile-store.js +0 -92
  344. package/dist/core/profile-store.js.map +0 -1
  345. package/dist/core/profile-synth.d.ts +0 -24
  346. package/dist/core/profile-synth.d.ts.map +0 -1
  347. package/dist/core/profile-synth.js +0 -30
  348. package/dist/core/profile-synth.js.map +0 -1
  349. package/dist/core/project-root.d.ts +0 -7
  350. package/dist/core/project-root.d.ts.map +0 -1
  351. package/dist/core/project-root.js +0 -23
  352. package/dist/core/project-root.js.map +0 -1
  353. package/dist/core/proxy-hub-cli.d.ts +0 -3
  354. package/dist/core/proxy-hub-cli.d.ts.map +0 -1
  355. package/dist/core/proxy-hub-cli.js +0 -80
  356. package/dist/core/proxy-hub-cli.js.map +0 -1
  357. package/dist/core/proxy-hub-routes.d.ts +0 -22
  358. package/dist/core/proxy-hub-routes.d.ts.map +0 -1
  359. package/dist/core/proxy-hub-routes.js +0 -92
  360. package/dist/core/proxy-hub-routes.js.map +0 -1
  361. package/dist/core/proxy-hub-server.d.ts +0 -59
  362. package/dist/core/proxy-hub-server.d.ts.map +0 -1
  363. package/dist/core/proxy-hub-server.js +0 -409
  364. package/dist/core/proxy-hub-server.js.map +0 -1
  365. package/dist/core/proxy-hub-service.d.ts +0 -97
  366. package/dist/core/proxy-hub-service.d.ts.map +0 -1
  367. package/dist/core/proxy-hub-service.js +0 -553
  368. package/dist/core/proxy-hub-service.js.map +0 -1
  369. package/dist/core/proxy-hub-store.d.ts +0 -28
  370. package/dist/core/proxy-hub-store.d.ts.map +0 -1
  371. package/dist/core/proxy-hub-store.js +0 -152
  372. package/dist/core/proxy-hub-store.js.map +0 -1
  373. package/dist/core/proxy-lifecycle.d.ts +0 -26
  374. package/dist/core/proxy-lifecycle.d.ts.map +0 -1
  375. package/dist/core/proxy-lifecycle.js +0 -33
  376. package/dist/core/proxy-lifecycle.js.map +0 -1
  377. package/dist/core/proxy-ports.d.ts +0 -50
  378. package/dist/core/proxy-ports.d.ts.map +0 -1
  379. package/dist/core/proxy-ports.js +0 -86
  380. package/dist/core/proxy-ports.js.map +0 -1
  381. package/dist/core/proxy-service.d.ts +0 -184
  382. package/dist/core/proxy-service.d.ts.map +0 -1
  383. package/dist/core/proxy-service.js +0 -860
  384. package/dist/core/proxy-service.js.map +0 -1
  385. package/dist/core/quota-guard-policy.d.ts +0 -8
  386. package/dist/core/quota-guard-policy.d.ts.map +0 -1
  387. package/dist/core/quota-guard-policy.js +0 -21
  388. package/dist/core/quota-guard-policy.js.map +0 -1
  389. package/dist/core/realign-proxy-clients.d.ts +0 -19
  390. package/dist/core/realign-proxy-clients.d.ts.map +0 -1
  391. package/dist/core/realign-proxy-clients.js +0 -40
  392. package/dist/core/realign-proxy-clients.js.map +0 -1
  393. package/dist/core/refs.d.ts +0 -84
  394. package/dist/core/refs.d.ts.map +0 -1
  395. package/dist/core/refs.js +0 -250
  396. package/dist/core/refs.js.map +0 -1
  397. package/dist/core/registry.d.ts +0 -46
  398. package/dist/core/registry.d.ts.map +0 -1
  399. package/dist/core/registry.js +0 -70
  400. package/dist/core/registry.js.map +0 -1
  401. package/dist/core/resolve-source.d.ts +0 -54
  402. package/dist/core/resolve-source.d.ts.map +0 -1
  403. package/dist/core/resolve-source.js +0 -148
  404. package/dist/core/resolve-source.js.map +0 -1
  405. package/dist/core/runtime-service.d.ts +0 -158
  406. package/dist/core/runtime-service.d.ts.map +0 -1
  407. package/dist/core/runtime-service.js +0 -422
  408. package/dist/core/runtime-service.js.map +0 -1
  409. package/dist/core/service.d.ts +0 -200
  410. package/dist/core/service.d.ts.map +0 -1
  411. package/dist/core/service.js +0 -643
  412. package/dist/core/service.js.map +0 -1
  413. package/dist/core/store-snapshot.d.ts +0 -10
  414. package/dist/core/store-snapshot.d.ts.map +0 -1
  415. package/dist/core/store-snapshot.js +0 -79
  416. package/dist/core/store-snapshot.js.map +0 -1
  417. package/dist/core/store.d.ts +0 -68
  418. package/dist/core/store.d.ts.map +0 -1
  419. package/dist/core/store.js +0 -159
  420. package/dist/core/store.js.map +0 -1
  421. package/dist/core/tray-runtime.d.ts +0 -15
  422. package/dist/core/tray-runtime.d.ts.map +0 -1
  423. package/dist/core/tray-runtime.js +0 -33
  424. package/dist/core/tray-runtime.js.map +0 -1
  425. package/dist/core/tray-settings-service.d.ts +0 -7
  426. package/dist/core/tray-settings-service.d.ts.map +0 -1
  427. package/dist/core/tray-settings-service.js +0 -24
  428. package/dist/core/tray-settings-service.js.map +0 -1
  429. package/dist/core/update.d.ts +0 -26
  430. package/dist/core/update.d.ts.map +0 -1
  431. package/dist/core/update.js +0 -128
  432. package/dist/core/update.js.map +0 -1
  433. package/dist/index.d.ts +0 -12
  434. package/dist/index.d.ts.map +0 -1
  435. package/dist/index.js +0 -7
  436. package/dist/network/egress/allowlist.d.ts +0 -2
  437. package/dist/network/egress/allowlist.d.ts.map +0 -1
  438. package/dist/network/egress/allowlist.js +0 -14
  439. package/dist/network/egress/allowlist.js.map +0 -1
  440. package/dist/network/egress/direct.d.ts +0 -17
  441. package/dist/network/egress/direct.d.ts.map +0 -1
  442. package/dist/network/egress/direct.js +0 -28
  443. package/dist/network/egress/direct.js.map +0 -1
  444. package/dist/network/egress/errors.d.ts +0 -4
  445. package/dist/network/egress/errors.d.ts.map +0 -1
  446. package/dist/network/egress/errors.js +0 -8
  447. package/dist/network/egress/errors.js.map +0 -1
  448. package/dist/network/egress/index.d.ts +0 -6
  449. package/dist/network/egress/index.d.ts.map +0 -1
  450. package/dist/network/egress/index.js +0 -11
  451. package/dist/network/egress/index.js.map +0 -1
  452. package/dist/network/egress/types.d.ts +0 -16
  453. package/dist/network/egress/types.d.ts.map +0 -1
  454. package/dist/presentation/client-name.d.ts +0 -14
  455. package/dist/presentation/client-name.d.ts.map +0 -1
  456. package/dist/presentation/client-name.js +0 -22
  457. package/dist/presentation/client-name.js.map +0 -1
  458. package/dist/presentation/layout.d.ts +0 -7
  459. package/dist/presentation/layout.d.ts.map +0 -1
  460. package/dist/presentation/layout.js +0 -10
  461. package/dist/presentation/layout.js.map +0 -1
  462. package/dist/providers/auth-fingerprint.d.ts +0 -56
  463. package/dist/providers/auth-fingerprint.d.ts.map +0 -1
  464. package/dist/providers/auth-fingerprint.js +0 -163
  465. package/dist/providers/auth-fingerprint.js.map +0 -1
  466. package/dist/providers/claude.d.ts +0 -43
  467. package/dist/providers/claude.d.ts.map +0 -1
  468. package/dist/providers/claude.js +0 -191
  469. package/dist/providers/claude.js.map +0 -1
  470. package/dist/providers/codex-identity.d.ts +0 -13
  471. package/dist/providers/codex-identity.d.ts.map +0 -1
  472. package/dist/providers/codex-identity.js +0 -69
  473. package/dist/providers/codex-identity.js.map +0 -1
  474. package/dist/providers/codex-refresh.d.ts +0 -30
  475. package/dist/providers/codex-refresh.d.ts.map +0 -1
  476. package/dist/providers/codex-refresh.js +0 -64
  477. package/dist/providers/codex-refresh.js.map +0 -1
  478. package/dist/providers/codex-usage.d.ts +0 -3
  479. package/dist/providers/codex-usage.d.ts.map +0 -1
  480. package/dist/providers/codex-usage.js +0 -42
  481. package/dist/providers/codex-usage.js.map +0 -1
  482. package/dist/providers/codex.d.ts +0 -61
  483. package/dist/providers/codex.d.ts.map +0 -1
  484. package/dist/providers/codex.js +0 -212
  485. package/dist/providers/codex.js.map +0 -1
  486. package/dist/providers/gemini-antigravity-oauth.d.ts +0 -83
  487. package/dist/providers/gemini-antigravity-oauth.d.ts.map +0 -1
  488. package/dist/providers/gemini-antigravity-oauth.js +0 -343
  489. package/dist/providers/gemini-antigravity-oauth.js.map +0 -1
  490. package/dist/providers/gemini-antigravity-state.d.ts +0 -35
  491. package/dist/providers/gemini-antigravity-state.d.ts.map +0 -1
  492. package/dist/providers/gemini-antigravity-state.js +0 -433
  493. package/dist/providers/gemini-antigravity-state.js.map +0 -1
  494. package/dist/providers/gemini-env.d.ts +0 -8
  495. package/dist/providers/gemini-env.d.ts.map +0 -1
  496. package/dist/providers/gemini-env.js +0 -78
  497. package/dist/providers/gemini-env.js.map +0 -1
  498. package/dist/providers/gemini-identity.d.ts +0 -2
  499. package/dist/providers/gemini-identity.d.ts.map +0 -1
  500. package/dist/providers/gemini-identity.js +0 -14
  501. package/dist/providers/gemini-identity.js.map +0 -1
  502. package/dist/providers/gemini-proxy/main.d.ts +0 -3
  503. package/dist/providers/gemini-proxy/main.d.ts.map +0 -1
  504. package/dist/providers/gemini-proxy/main.js +0 -176
  505. package/dist/providers/gemini-proxy/main.js.map +0 -1
  506. package/dist/providers/gemini-proxy/server.d.ts +0 -57
  507. package/dist/providers/gemini-proxy/server.d.ts.map +0 -1
  508. package/dist/providers/gemini-proxy/server.js +0 -1240
  509. package/dist/providers/gemini-proxy/server.js.map +0 -1
  510. package/dist/providers/gemini-proxy-entry.d.ts +0 -2
  511. package/dist/providers/gemini-proxy-entry.d.ts.map +0 -1
  512. package/dist/providers/gemini-proxy-entry.js +0 -16
  513. package/dist/providers/gemini-proxy-entry.js.map +0 -1
  514. package/dist/providers/gemini-proxy-lifecycle.d.ts +0 -11
  515. package/dist/providers/gemini-proxy-lifecycle.d.ts.map +0 -1
  516. package/dist/providers/gemini-proxy-lifecycle.js +0 -131
  517. package/dist/providers/gemini-proxy-lifecycle.js.map +0 -1
  518. package/dist/providers/gemini.d.ts +0 -137
  519. package/dist/providers/gemini.d.ts.map +0 -1
  520. package/dist/providers/gemini.js +0 -471
  521. package/dist/providers/gemini.js.map +0 -1
  522. package/dist/providers/grok-proxy/auth.d.ts +0 -27
  523. package/dist/providers/grok-proxy/auth.d.ts.map +0 -1
  524. package/dist/providers/grok-proxy/auth.js +0 -123
  525. package/dist/providers/grok-proxy/auth.js.map +0 -1
  526. package/dist/providers/grok-proxy/main.d.ts +0 -3
  527. package/dist/providers/grok-proxy/main.d.ts.map +0 -1
  528. package/dist/providers/grok-proxy/main.js +0 -111
  529. package/dist/providers/grok-proxy/main.js.map +0 -1
  530. package/dist/providers/grok-proxy/server.d.ts +0 -46
  531. package/dist/providers/grok-proxy/server.d.ts.map +0 -1
  532. package/dist/providers/grok-proxy/server.js +0 -595
  533. package/dist/providers/grok-proxy/server.js.map +0 -1
  534. package/dist/providers/grok.d.ts +0 -38
  535. package/dist/providers/grok.d.ts.map +0 -1
  536. package/dist/providers/grok.js +0 -250
  537. package/dist/providers/grok.js.map +0 -1
  538. package/dist/providers/index.d.ts +0 -14
  539. package/dist/providers/index.d.ts.map +0 -1
  540. package/dist/providers/index.js +0 -23
  541. package/dist/providers/index.js.map +0 -1
  542. package/dist/providers/kiro-secret-store.d.ts +0 -39
  543. package/dist/providers/kiro-secret-store.d.ts.map +0 -1
  544. package/dist/providers/kiro-secret-store.js +0 -168
  545. package/dist/providers/kiro-secret-store.js.map +0 -1
  546. package/dist/providers/kiro.d.ts +0 -50
  547. package/dist/providers/kiro.d.ts.map +0 -1
  548. package/dist/providers/kiro.js +0 -373
  549. package/dist/providers/kiro.js.map +0 -1
  550. package/dist/providers/model-policy.d.ts +0 -15
  551. package/dist/providers/model-policy.d.ts.map +0 -1
  552. package/dist/providers/model-policy.js +0 -26
  553. package/dist/providers/model-policy.js.map +0 -1
  554. package/dist/providers/opencode-auth.d.ts +0 -67
  555. package/dist/providers/opencode-auth.d.ts.map +0 -1
  556. package/dist/providers/opencode-auth.js +0 -146
  557. package/dist/providers/opencode-auth.js.map +0 -1
  558. package/dist/providers/opencode-cli-entry.d.ts +0 -36
  559. package/dist/providers/opencode-cli-entry.d.ts.map +0 -1
  560. package/dist/providers/opencode-cli-entry.js +0 -90
  561. package/dist/providers/opencode-cli-entry.js.map +0 -1
  562. package/dist/providers/opencode-proxy/abort.d.ts +0 -8
  563. package/dist/providers/opencode-proxy/abort.d.ts.map +0 -1
  564. package/dist/providers/opencode-proxy/abort.js +0 -42
  565. package/dist/providers/opencode-proxy/abort.js.map +0 -1
  566. package/dist/providers/opencode-proxy/anthropic-handler.d.ts +0 -4
  567. package/dist/providers/opencode-proxy/anthropic-handler.d.ts.map +0 -1
  568. package/dist/providers/opencode-proxy/anthropic-handler.js +0 -108
  569. package/dist/providers/opencode-proxy/anthropic-handler.js.map +0 -1
  570. package/dist/providers/opencode-proxy/auth.d.ts +0 -38
  571. package/dist/providers/opencode-proxy/auth.d.ts.map +0 -1
  572. package/dist/providers/opencode-proxy/auth.js +0 -128
  573. package/dist/providers/opencode-proxy/auth.js.map +0 -1
  574. package/dist/providers/opencode-proxy/body.d.ts +0 -9
  575. package/dist/providers/opencode-proxy/body.d.ts.map +0 -1
  576. package/dist/providers/opencode-proxy/body.js +0 -69
  577. package/dist/providers/opencode-proxy/body.js.map +0 -1
  578. package/dist/providers/opencode-proxy/catalog-handlers.d.ts +0 -7
  579. package/dist/providers/opencode-proxy/catalog-handlers.d.ts.map +0 -1
  580. package/dist/providers/opencode-proxy/catalog-handlers.js +0 -132
  581. package/dist/providers/opencode-proxy/catalog-handlers.js.map +0 -1
  582. package/dist/providers/opencode-proxy/catalog.d.ts +0 -41
  583. package/dist/providers/opencode-proxy/catalog.d.ts.map +0 -1
  584. package/dist/providers/opencode-proxy/catalog.js +0 -146
  585. package/dist/providers/opencode-proxy/catalog.js.map +0 -1
  586. package/dist/providers/opencode-proxy/cli.d.ts +0 -2
  587. package/dist/providers/opencode-proxy/cli.d.ts.map +0 -1
  588. package/dist/providers/opencode-proxy/cli.js +0 -162
  589. package/dist/providers/opencode-proxy/cli.js.map +0 -1
  590. package/dist/providers/opencode-proxy/constants.d.ts +0 -13
  591. package/dist/providers/opencode-proxy/constants.d.ts.map +0 -1
  592. package/dist/providers/opencode-proxy/constants.js +0 -15
  593. package/dist/providers/opencode-proxy/constants.js.map +0 -1
  594. package/dist/providers/opencode-proxy/context-budget.d.ts +0 -31
  595. package/dist/providers/opencode-proxy/context-budget.d.ts.map +0 -1
  596. package/dist/providers/opencode-proxy/context-budget.js +0 -165
  597. package/dist/providers/opencode-proxy/context-budget.js.map +0 -1
  598. package/dist/providers/opencode-proxy/errors.d.ts +0 -5
  599. package/dist/providers/opencode-proxy/errors.d.ts.map +0 -1
  600. package/dist/providers/opencode-proxy/errors.js +0 -45
  601. package/dist/providers/opencode-proxy/errors.js.map +0 -1
  602. package/dist/providers/opencode-proxy/forwarders.d.ts +0 -7
  603. package/dist/providers/opencode-proxy/forwarders.d.ts.map +0 -1
  604. package/dist/providers/opencode-proxy/forwarders.js +0 -214
  605. package/dist/providers/opencode-proxy/forwarders.js.map +0 -1
  606. package/dist/providers/opencode-proxy/http.d.ts +0 -11
  607. package/dist/providers/opencode-proxy/http.d.ts.map +0 -1
  608. package/dist/providers/opencode-proxy/http.js +0 -97
  609. package/dist/providers/opencode-proxy/http.js.map +0 -1
  610. package/dist/providers/opencode-proxy/models.d.ts +0 -42
  611. package/dist/providers/opencode-proxy/models.d.ts.map +0 -1
  612. package/dist/providers/opencode-proxy/models.js +0 -148
  613. package/dist/providers/opencode-proxy/models.js.map +0 -1
  614. package/dist/providers/opencode-proxy/openai-handler.d.ts +0 -5
  615. package/dist/providers/opencode-proxy/openai-handler.d.ts.map +0 -1
  616. package/dist/providers/opencode-proxy/openai-handler.js +0 -115
  617. package/dist/providers/opencode-proxy/openai-handler.js.map +0 -1
  618. package/dist/providers/opencode-proxy/router.d.ts +0 -4
  619. package/dist/providers/opencode-proxy/router.d.ts.map +0 -1
  620. package/dist/providers/opencode-proxy/router.js +0 -65
  621. package/dist/providers/opencode-proxy/router.js.map +0 -1
  622. package/dist/providers/opencode-proxy/runtime.d.ts +0 -23
  623. package/dist/providers/opencode-proxy/runtime.d.ts.map +0 -1
  624. package/dist/providers/opencode-proxy/runtime.js +0 -158
  625. package/dist/providers/opencode-proxy/runtime.js.map +0 -1
  626. package/dist/providers/opencode-proxy/server.d.ts +0 -13
  627. package/dist/providers/opencode-proxy/server.d.ts.map +0 -1
  628. package/dist/providers/opencode-proxy/server.js +0 -52
  629. package/dist/providers/opencode-proxy/server.js.map +0 -1
  630. package/dist/providers/opencode-proxy/stream.d.ts +0 -4
  631. package/dist/providers/opencode-proxy/stream.d.ts.map +0 -1
  632. package/dist/providers/opencode-proxy/stream.js +0 -71
  633. package/dist/providers/opencode-proxy/stream.js.map +0 -1
  634. package/dist/providers/opencode-proxy/translate-stream.d.ts +0 -3
  635. package/dist/providers/opencode-proxy/translate-stream.d.ts.map +0 -1
  636. package/dist/providers/opencode-proxy/translate-stream.js +0 -205
  637. package/dist/providers/opencode-proxy/translate-stream.js.map +0 -1
  638. package/dist/providers/opencode-proxy/translate.d.ts +0 -11
  639. package/dist/providers/opencode-proxy/translate.d.ts.map +0 -1
  640. package/dist/providers/opencode-proxy/translate.js +0 -250
  641. package/dist/providers/opencode-proxy/translate.js.map +0 -1
  642. package/dist/providers/opencode-proxy/types.d.ts +0 -110
  643. package/dist/providers/opencode-proxy/types.d.ts.map +0 -1
  644. package/dist/providers/opencode-proxy/types.js +0 -38
  645. package/dist/providers/opencode-proxy/types.js.map +0 -1
  646. package/dist/providers/opencode-proxy-lifecycle.d.ts +0 -11
  647. package/dist/providers/opencode-proxy-lifecycle.d.ts.map +0 -1
  648. package/dist/providers/opencode-proxy-lifecycle.js +0 -144
  649. package/dist/providers/opencode-proxy-lifecycle.js.map +0 -1
  650. package/dist/providers/opencode.d.ts +0 -40
  651. package/dist/providers/opencode.d.ts.map +0 -1
  652. package/dist/providers/opencode.js +0 -190
  653. package/dist/providers/opencode.js.map +0 -1
  654. package/dist/providers/protocol/anthropic-convert.d.ts +0 -12
  655. package/dist/providers/protocol/anthropic-convert.d.ts.map +0 -1
  656. package/dist/providers/protocol/anthropic-convert.js +0 -113
  657. package/dist/providers/protocol/anthropic-convert.js.map +0 -1
  658. package/dist/providers/protocol/anthropic-helpers.d.ts +0 -13
  659. package/dist/providers/protocol/anthropic-helpers.d.ts.map +0 -1
  660. package/dist/providers/protocol/anthropic-helpers.js +0 -179
  661. package/dist/providers/protocol/anthropic-helpers.js.map +0 -1
  662. package/dist/providers/protocol/anthropic-stream-reader.d.ts +0 -13
  663. package/dist/providers/protocol/anthropic-stream-reader.d.ts.map +0 -1
  664. package/dist/providers/protocol/anthropic-stream-reader.js +0 -46
  665. package/dist/providers/protocol/anthropic-stream-reader.js.map +0 -1
  666. package/dist/providers/protocol/anthropic-stream.d.ts +0 -7
  667. package/dist/providers/protocol/anthropic-stream.d.ts.map +0 -1
  668. package/dist/providers/protocol/anthropic-stream.js +0 -318
  669. package/dist/providers/protocol/anthropic-stream.js.map +0 -1
  670. package/dist/providers/protocol/anthropic-types.d.ts +0 -240
  671. package/dist/providers/protocol/anthropic-types.d.ts.map +0 -1
  672. package/dist/providers/protocol/anthropic.d.ts +0 -20
  673. package/dist/providers/protocol/anthropic.d.ts.map +0 -1
  674. package/dist/providers/protocol/gemini/translate-anthropic.d.ts +0 -15
  675. package/dist/providers/protocol/gemini/translate-anthropic.d.ts.map +0 -1
  676. package/dist/providers/protocol/gemini/translate-anthropic.js +0 -84
  677. package/dist/providers/protocol/gemini/translate-anthropic.js.map +0 -1
  678. package/dist/providers/protocol/gemini/translate-chat.d.ts +0 -5
  679. package/dist/providers/protocol/gemini/translate-chat.d.ts.map +0 -1
  680. package/dist/providers/protocol/gemini/translate-chat.js +0 -142
  681. package/dist/providers/protocol/gemini/translate-chat.js.map +0 -1
  682. package/dist/providers/protocol/gemini/translate-models.d.ts +0 -40
  683. package/dist/providers/protocol/gemini/translate-models.d.ts.map +0 -1
  684. package/dist/providers/protocol/gemini/translate-models.js +0 -186
  685. package/dist/providers/protocol/gemini/translate-models.js.map +0 -1
  686. package/dist/providers/protocol/gemini/translate-responses.d.ts +0 -6
  687. package/dist/providers/protocol/gemini/translate-responses.d.ts.map +0 -1
  688. package/dist/providers/protocol/gemini/translate-responses.js +0 -187
  689. package/dist/providers/protocol/gemini/translate-responses.js.map +0 -1
  690. package/dist/providers/protocol/gemini/translate-schema.d.ts +0 -9
  691. package/dist/providers/protocol/gemini/translate-schema.d.ts.map +0 -1
  692. package/dist/providers/protocol/gemini/translate-schema.js +0 -48
  693. package/dist/providers/protocol/gemini/translate-schema.js.map +0 -1
  694. package/dist/providers/protocol/gemini/translate-shared.d.ts +0 -8
  695. package/dist/providers/protocol/gemini/translate-shared.d.ts.map +0 -1
  696. package/dist/providers/protocol/gemini/translate-shared.js +0 -47
  697. package/dist/providers/protocol/gemini/translate-shared.js.map +0 -1
  698. package/dist/providers/protocol/gemini/translate-thinking.d.ts +0 -7
  699. package/dist/providers/protocol/gemini/translate-thinking.d.ts.map +0 -1
  700. package/dist/providers/protocol/gemini/translate-thinking.js +0 -65
  701. package/dist/providers/protocol/gemini/translate-thinking.js.map +0 -1
  702. package/dist/providers/protocol/gemini/translate-types.d.ts +0 -133
  703. package/dist/providers/protocol/gemini/translate-types.d.ts.map +0 -1
  704. package/dist/providers/protocol/gemini/translate.d.ts +0 -7
  705. package/dist/providers/protocol/gemini/translate.d.ts.map +0 -1
  706. package/dist/providers/protocol/json-schema.d.ts +0 -52
  707. package/dist/providers/protocol/json-schema.d.ts.map +0 -1
  708. package/dist/providers/protocol/json-schema.js +0 -189
  709. package/dist/providers/protocol/json-schema.js.map +0 -1
  710. package/dist/providers/protocol/token-estimate.d.ts +0 -15
  711. package/dist/providers/protocol/token-estimate.d.ts.map +0 -1
  712. package/dist/providers/protocol/token-estimate.js +0 -34
  713. package/dist/providers/protocol/token-estimate.js.map +0 -1
  714. package/dist/providers/proxy-hub-backend.d.ts +0 -4
  715. package/dist/providers/proxy-hub-backend.d.ts.map +0 -1
  716. package/dist/providers/proxy-hub-backend.js +0 -11
  717. package/dist/providers/proxy-hub-backend.js.map +0 -1
  718. package/dist/providers/proxy-process.d.ts +0 -35
  719. package/dist/providers/proxy-process.d.ts.map +0 -1
  720. package/dist/providers/proxy-process.js +0 -119
  721. package/dist/providers/proxy-process.js.map +0 -1
  722. package/dist/providers/proxy-shared.d.ts +0 -43
  723. package/dist/providers/proxy-shared.d.ts.map +0 -1
  724. package/dist/providers/proxy-shared.js +0 -128
  725. package/dist/providers/proxy-shared.js.map +0 -1
  726. package/dist/providers/quota-guard.d.ts +0 -49
  727. package/dist/providers/quota-guard.d.ts.map +0 -1
  728. package/dist/providers/quota-guard.js +0 -107
  729. package/dist/providers/quota-guard.js.map +0 -1
  730. package/dist/providers/reasoning.d.ts +0 -27
  731. package/dist/providers/reasoning.d.ts.map +0 -1
  732. package/dist/providers/reasoning.js +0 -61
  733. package/dist/providers/reasoning.js.map +0 -1
  734. package/dist/providers/upstream-policy.d.ts +0 -33
  735. package/dist/providers/upstream-policy.d.ts.map +0 -1
  736. package/dist/providers/upstream-policy.js +0 -97
  737. package/dist/providers/upstream-policy.js.map +0 -1
  738. package/dist/public-types.d.ts +0 -3
  739. package/dist/public-types.d.ts.map +0 -1
  740. package/dist/public.d.ts +0 -19
  741. package/dist/public.d.ts.map +0 -1
  742. package/dist/public.js +0 -16
  743. package/dist/public.js.map +0 -1
  744. package/dist/sources/account-adapters.d.ts +0 -64
  745. package/dist/sources/account-adapters.d.ts.map +0 -1
  746. package/dist/sources/account-adapters.js +0 -205
  747. package/dist/sources/account-adapters.js.map +0 -1
  748. package/dist/sources/gateway-adapters.d.ts +0 -26
  749. package/dist/sources/gateway-adapters.d.ts.map +0 -1
  750. package/dist/sources/gateway-adapters.js +0 -43
  751. package/dist/sources/gateway-adapters.js.map +0 -1
  752. package/dist/sources/kiro-proxy-bin.d.ts +0 -41
  753. package/dist/sources/kiro-proxy-bin.d.ts.map +0 -1
  754. package/dist/sources/kiro-proxy-bin.js +0 -140
  755. package/dist/sources/kiro-proxy-bin.js.map +0 -1
  756. package/dist/sources/proxy-hub-adapters.d.ts +0 -7
  757. package/dist/sources/proxy-hub-adapters.d.ts.map +0 -1
  758. package/dist/sources/proxy-hub-adapters.js +0 -26
  759. package/dist/sources/proxy-hub-adapters.js.map +0 -1
  760. package/dist/testing.d.ts +0 -9
  761. package/dist/testing.d.ts.map +0 -1
  762. package/dist/testing.js +0 -6
  763. package/dist/tray/AnyPickTray.swift +0 -3
  764. package/dist/tray/activity.d.ts +0 -18
  765. package/dist/tray/activity.d.ts.map +0 -1
  766. package/dist/tray/activity.js +0 -51
  767. package/dist/tray/activity.js.map +0 -1
  768. package/dist/tray/app-icons/icon-1024.png +0 -0
  769. package/dist/tray/app-icons/icon-128.png +0 -0
  770. package/dist/tray/app-icons/icon-16.png +0 -0
  771. package/dist/tray/app-icons/icon-256.png +0 -0
  772. package/dist/tray/app-icons/icon-32.png +0 -0
  773. package/dist/tray/app-icons/icon-512.png +0 -0
  774. package/dist/tray/app-icons/icon-64.png +0 -0
  775. package/dist/tray/icons/claude.svg +0 -1
  776. package/dist/tray/icons/googlegemini.svg +0 -1
  777. package/dist/tray/icons/grok.svg +0 -1
  778. package/dist/tray/icons/kiro.svg +0 -1
  779. package/dist/tray/icons/openai.svg +0 -1
  780. package/dist/tray/icons/opencode.svg +0 -1
  781. package/dist/tray/icons/openrouter.svg +0 -1
  782. package/dist/tray/model-role-actions.d.ts +0 -15
  783. package/dist/tray/model-role-actions.d.ts.map +0 -1
  784. package/dist/tray/model-role-actions.js +0 -41
  785. package/dist/tray/model-role-actions.js.map +0 -1
  786. package/dist/tray/native/AccountsPanel.swift +0 -434
  787. package/dist/tray/native/AppEntry.swift +0 -229
  788. package/dist/tray/native/MainWindow.swift +0 -300
  789. package/dist/tray/native/ManageFormChrome.swift +0 -332
  790. package/dist/tray/native/ManageForms.swift +0 -472
  791. package/dist/tray/native/ManagePanel.swift +0 -356
  792. package/dist/tray/native/Models.swift +0 -259
  793. package/dist/tray/native/ModelsEditor.swift +0 -390
  794. package/dist/tray/native/ModelsOverview.swift +0 -76
  795. package/dist/tray/native/ModelsPickers.swift +0 -273
  796. package/dist/tray/native/ModelsRoutePickers.swift +0 -718
  797. package/dist/tray/native/MonitorPanel.swift +0 -375
  798. package/dist/tray/native/ProxyPanel.swift +0 -326
  799. package/dist/tray/native/QuickActivityRow.swift +0 -40
  800. package/dist/tray/native/QuickNav.swift +0 -62
  801. package/dist/tray/native/QuickPanel.swift +0 -447
  802. package/dist/tray/native/QuickRouteRow.swift +0 -189
  803. package/dist/tray/native/QuickServiceRows.swift +0 -292
  804. package/dist/tray/native/RoutingIssues.swift +0 -293
  805. package/dist/tray/native/SettingsPanel.swift +0 -225
  806. package/dist/tray/native/SharedUI.swift +0 -681
  807. package/dist/tray/native/Store.swift +0 -540
  808. package/dist/tray/native/Theme.swift +0 -139
  809. package/dist/tray/native/TrayChrome.swift +0 -657
  810. package/dist/tray/native/TrayControls.swift +0 -475
  811. package/dist/tray/native/TrayPreferences.swift +0 -46
  812. package/dist/tray/native/sources.txt +0 -26
  813. package/dist/tray/native-sources.d.ts +0 -8
  814. package/dist/tray/native-sources.d.ts.map +0 -1
  815. package/dist/tray/native-sources.js +0 -19
  816. package/dist/tray/native-sources.js.map +0 -1
  817. package/dist/tray/protocol.d.ts +0 -79
  818. package/dist/tray/protocol.d.ts.map +0 -1
  819. package/dist/tray/protocol.js +0 -145
  820. package/dist/tray/protocol.js.map +0 -1
  821. package/dist/tray/settings.d.ts +0 -15
  822. package/dist/tray/settings.d.ts.map +0 -1
  823. package/dist/tray/settings.js +0 -72
  824. package/dist/tray/settings.js.map +0 -1
  825. package/dist/tray/snapshot-client-routes.d.ts +0 -11
  826. package/dist/tray/snapshot-client-routes.d.ts.map +0 -1
  827. package/dist/tray/snapshot-client-routes.js +0 -305
  828. package/dist/tray/snapshot-client-routes.js.map +0 -1
  829. package/dist/tray/snapshot-helpers.d.ts +0 -20
  830. package/dist/tray/snapshot-helpers.d.ts.map +0 -1
  831. package/dist/tray/snapshot-helpers.js +0 -74
  832. package/dist/tray/snapshot-helpers.js.map +0 -1
  833. package/dist/tray/snapshot-hub.d.ts +0 -7
  834. package/dist/tray/snapshot-hub.d.ts.map +0 -1
  835. package/dist/tray/snapshot-hub.js +0 -93
  836. package/dist/tray/snapshot-hub.js.map +0 -1
  837. package/dist/tray/snapshot-resources.d.ts +0 -19
  838. package/dist/tray/snapshot-resources.d.ts.map +0 -1
  839. package/dist/tray/snapshot-resources.js +0 -216
  840. package/dist/tray/snapshot-resources.js.map +0 -1
  841. package/dist/tray/snapshot-types.d.ts +0 -229
  842. package/dist/tray/snapshot-types.d.ts.map +0 -1
  843. package/dist/tray/snapshot-usage.d.ts +0 -9
  844. package/dist/tray/snapshot-usage.d.ts.map +0 -1
  845. package/dist/tray/snapshot-usage.js +0 -35
  846. package/dist/tray/snapshot-usage.js.map +0 -1
  847. package/dist/tray/snapshot.d.ts +0 -7
  848. package/dist/tray/snapshot.d.ts.map +0 -1
  849. package/dist/tray/snapshot.js +0 -48
  850. package/dist/tray/snapshot.js.map +0 -1
  851. package/dist/tray/supervisor-actions.d.ts +0 -19
  852. package/dist/tray/supervisor-actions.d.ts.map +0 -1
  853. package/dist/tray/supervisor-actions.js +0 -224
  854. package/dist/tray/supervisor-actions.js.map +0 -1
  855. package/dist/tray/supervisor-activity.d.ts +0 -5
  856. package/dist/tray/supervisor-activity.d.ts.map +0 -1
  857. package/dist/tray/supervisor-activity.js +0 -19
  858. package/dist/tray/supervisor-activity.js.map +0 -1
  859. package/dist/tray/supervisor-errors.d.ts +0 -9
  860. package/dist/tray/supervisor-errors.d.ts.map +0 -1
  861. package/dist/tray/supervisor-errors.js +0 -91
  862. package/dist/tray/supervisor-errors.js.map +0 -1
  863. package/dist/tray/supervisor-logs.d.ts +0 -6
  864. package/dist/tray/supervisor-logs.d.ts.map +0 -1
  865. package/dist/tray/supervisor-logs.js +0 -52
  866. package/dist/tray/supervisor-logs.js.map +0 -1
  867. package/dist/tray/supervisor-mutations.d.ts +0 -14
  868. package/dist/tray/supervisor-mutations.d.ts.map +0 -1
  869. package/dist/tray/supervisor-mutations.js +0 -218
  870. package/dist/tray/supervisor-mutations.js.map +0 -1
  871. package/dist/tray/supervisor-native.d.ts +0 -22
  872. package/dist/tray/supervisor-native.d.ts.map +0 -1
  873. package/dist/tray/supervisor-native.js +0 -227
  874. package/dist/tray/supervisor-native.js.map +0 -1
  875. package/dist/tray/supervisor-proxies.d.ts +0 -6
  876. package/dist/tray/supervisor-proxies.d.ts.map +0 -1
  877. package/dist/tray/supervisor-proxies.js +0 -37
  878. package/dist/tray/supervisor-proxies.js.map +0 -1
  879. package/dist/tray/supervisor-tauri.d.ts +0 -13
  880. package/dist/tray/supervisor-tauri.d.ts.map +0 -1
  881. package/dist/tray/supervisor-tauri.js +0 -36
  882. package/dist/tray/supervisor-tauri.js.map +0 -1
  883. package/dist/tray/supervisor.d.ts +0 -17
  884. package/dist/tray/supervisor.d.ts.map +0 -1
  885. package/dist/tray/supervisor.js +0 -372
  886. package/dist/tray/supervisor.js.map +0 -1
  887. package/dist/tray/terminal-launcher.d.ts +0 -12
  888. package/dist/tray/terminal-launcher.d.ts.map +0 -1
  889. package/dist/tray/terminal-launcher.js +0 -130
  890. package/dist/tray/terminal-launcher.js.map +0 -1
  891. package/dist/tui/actions/ensure-proxy-up.d.ts +0 -15
  892. package/dist/tui/actions/ensure-proxy-up.d.ts.map +0 -1
  893. package/dist/tui/actions/ensure-proxy-up.js +0 -41
  894. package/dist/tui/actions/ensure-proxy-up.js.map +0 -1
  895. package/dist/tui/actions/use-account-actions.d.ts +0 -35
  896. package/dist/tui/actions/use-account-actions.d.ts.map +0 -1
  897. package/dist/tui/actions/use-account-actions.js +0 -527
  898. package/dist/tui/actions/use-account-actions.js.map +0 -1
  899. package/dist/tui/actions/use-app-bindings.d.ts +0 -83
  900. package/dist/tui/actions/use-app-bindings.d.ts.map +0 -1
  901. package/dist/tui/actions/use-app-bindings.js +0 -472
  902. package/dist/tui/actions/use-app-bindings.js.map +0 -1
  903. package/dist/tui/actions/use-gateway-actions.d.ts +0 -45
  904. package/dist/tui/actions/use-gateway-actions.d.ts.map +0 -1
  905. package/dist/tui/actions/use-gateway-actions.js +0 -370
  906. package/dist/tui/actions/use-gateway-actions.js.map +0 -1
  907. package/dist/tui/actions/use-home-filter.d.ts +0 -24
  908. package/dist/tui/actions/use-home-filter.d.ts.map +0 -1
  909. package/dist/tui/actions/use-home-filter.js +0 -48
  910. package/dist/tui/actions/use-home-filter.js.map +0 -1
  911. package/dist/tui/actions/use-model-role-editor.d.ts +0 -44
  912. package/dist/tui/actions/use-model-role-editor.d.ts.map +0 -1
  913. package/dist/tui/actions/use-model-role-editor.js +0 -68
  914. package/dist/tui/actions/use-model-role-editor.js.map +0 -1
  915. package/dist/tui/actions/use-provider-filter.d.ts +0 -10
  916. package/dist/tui/actions/use-provider-filter.d.ts.map +0 -1
  917. package/dist/tui/actions/use-provider-filter.js +0 -22
  918. package/dist/tui/actions/use-provider-filter.js.map +0 -1
  919. package/dist/tui/actions/use-proxy-actions.d.ts +0 -31
  920. package/dist/tui/actions/use-proxy-actions.d.ts.map +0 -1
  921. package/dist/tui/actions/use-proxy-actions.js +0 -474
  922. package/dist/tui/actions/use-proxy-actions.js.map +0 -1
  923. package/dist/tui/actions/use-text-input-submit.d.ts +0 -16
  924. package/dist/tui/actions/use-text-input-submit.d.ts.map +0 -1
  925. package/dist/tui/actions/use-text-input-submit.js +0 -96
  926. package/dist/tui/actions/use-text-input-submit.js.map +0 -1
  927. package/dist/tui/actions/use-tray-runtime-actions.d.ts +0 -18
  928. package/dist/tui/actions/use-tray-runtime-actions.d.ts.map +0 -1
  929. package/dist/tui/actions/use-tray-runtime-actions.js +0 -78
  930. package/dist/tui/actions/use-tray-runtime-actions.js.map +0 -1
  931. package/dist/tui/app-ui-helpers.d.ts +0 -14
  932. package/dist/tui/app-ui-helpers.d.ts.map +0 -1
  933. package/dist/tui/app-ui-helpers.js +0 -48
  934. package/dist/tui/app-ui-helpers.js.map +0 -1
  935. package/dist/tui/app-ui.d.ts +0 -19
  936. package/dist/tui/app-ui.d.ts.map +0 -1
  937. package/dist/tui/app-ui.js +0 -98
  938. package/dist/tui/app-ui.js.map +0 -1
  939. package/dist/tui/components/chrome/header.d.ts +0 -39
  940. package/dist/tui/components/chrome/header.d.ts.map +0 -1
  941. package/dist/tui/components/chrome/header.js +0 -161
  942. package/dist/tui/components/chrome/header.js.map +0 -1
  943. package/dist/tui/components/chrome/inputs.d.ts +0 -34
  944. package/dist/tui/components/chrome/inputs.d.ts.map +0 -1
  945. package/dist/tui/components/chrome/inputs.js +0 -82
  946. package/dist/tui/components/chrome/inputs.js.map +0 -1
  947. package/dist/tui/components/chrome/layout.d.ts +0 -61
  948. package/dist/tui/components/chrome/layout.d.ts.map +0 -1
  949. package/dist/tui/components/chrome/layout.js +0 -119
  950. package/dist/tui/components/chrome/layout.js.map +0 -1
  951. package/dist/tui/components/chrome/legacy.d.ts +0 -84
  952. package/dist/tui/components/chrome/legacy.d.ts.map +0 -1
  953. package/dist/tui/components/chrome/legacy.js +0 -6
  954. package/dist/tui/components/chrome/rows.d.ts +0 -89
  955. package/dist/tui/components/chrome/rows.d.ts.map +0 -1
  956. package/dist/tui/components/chrome/rows.js +0 -151
  957. package/dist/tui/components/chrome/rows.js.map +0 -1
  958. package/dist/tui/components/chrome/status.d.ts +0 -50
  959. package/dist/tui/components/chrome/status.d.ts.map +0 -1
  960. package/dist/tui/components/chrome/status.js +0 -157
  961. package/dist/tui/components/chrome/status.js.map +0 -1
  962. package/dist/tui/components/chrome.d.ts +0 -7
  963. package/dist/tui/components/chrome.d.ts.map +0 -1
  964. package/dist/tui/components/chrome.js +0 -7
  965. package/dist/tui/components.d.ts +0 -26
  966. package/dist/tui/components.d.ts.map +0 -1
  967. package/dist/tui/components.js +0 -182
  968. package/dist/tui/components.js.map +0 -1
  969. package/dist/tui/model/anypick.d.ts +0 -106
  970. package/dist/tui/model/anypick.d.ts.map +0 -1
  971. package/dist/tui/model/anypick.js +0 -116
  972. package/dist/tui/model/anypick.js.map +0 -1
  973. package/dist/tui/model/bindings.d.ts +0 -39
  974. package/dist/tui/model/bindings.d.ts.map +0 -1
  975. package/dist/tui/model/bindings.js +0 -102
  976. package/dist/tui/model/bindings.js.map +0 -1
  977. package/dist/tui/model/detail.d.ts +0 -6
  978. package/dist/tui/model/detail.d.ts.map +0 -1
  979. package/dist/tui/model/detail.js +0 -85
  980. package/dist/tui/model/detail.js.map +0 -1
  981. package/dist/tui/model/gateway.d.ts +0 -46
  982. package/dist/tui/model/gateway.d.ts.map +0 -1
  983. package/dist/tui/model/gateway.js +0 -134
  984. package/dist/tui/model/gateway.js.map +0 -1
  985. package/dist/tui/model/home-format.d.ts +0 -52
  986. package/dist/tui/model/home-format.d.ts.map +0 -1
  987. package/dist/tui/model/home-format.js +0 -64
  988. package/dist/tui/model/home-format.js.map +0 -1
  989. package/dist/tui/model/home-load.d.ts +0 -8
  990. package/dist/tui/model/home-load.d.ts.map +0 -1
  991. package/dist/tui/model/home-load.js +0 -244
  992. package/dist/tui/model/home-load.js.map +0 -1
  993. package/dist/tui/model/identity.d.ts +0 -53
  994. package/dist/tui/model/identity.d.ts.map +0 -1
  995. package/dist/tui/model/identity.js +0 -176
  996. package/dist/tui/model/identity.js.map +0 -1
  997. package/dist/tui/model/line-editor.d.ts +0 -99
  998. package/dist/tui/model/line-editor.d.ts.map +0 -1
  999. package/dist/tui/model/line-editor.js +0 -186
  1000. package/dist/tui/model/line-editor.js.map +0 -1
  1001. package/dist/tui/model/names.d.ts +0 -28
  1002. package/dist/tui/model/names.d.ts.map +0 -1
  1003. package/dist/tui/model/names.js +0 -42
  1004. package/dist/tui/model/names.js.map +0 -1
  1005. package/dist/tui/model/pool.d.ts +0 -11
  1006. package/dist/tui/model/pool.d.ts.map +0 -1
  1007. package/dist/tui/model/pool.js +0 -115
  1008. package/dist/tui/model/pool.js.map +0 -1
  1009. package/dist/tui/model/provider-filter.d.ts +0 -14
  1010. package/dist/tui/model/provider-filter.d.ts.map +0 -1
  1011. package/dist/tui/model/provider-filter.js +0 -46
  1012. package/dist/tui/model/provider-filter.js.map +0 -1
  1013. package/dist/tui/model/proxy-hub.d.ts +0 -23
  1014. package/dist/tui/model/proxy-hub.d.ts.map +0 -1
  1015. package/dist/tui/model/proxy-hub.js +0 -69
  1016. package/dist/tui/model/proxy-hub.js.map +0 -1
  1017. package/dist/tui/model/proxy-labels.d.ts +0 -5
  1018. package/dist/tui/model/proxy-labels.d.ts.map +0 -1
  1019. package/dist/tui/model/proxy-labels.js +0 -18
  1020. package/dist/tui/model/proxy-labels.js.map +0 -1
  1021. package/dist/tui/model/proxy.d.ts +0 -15
  1022. package/dist/tui/model/proxy.d.ts.map +0 -1
  1023. package/dist/tui/model/proxy.js +0 -214
  1024. package/dist/tui/model/proxy.js.map +0 -1
  1025. package/dist/tui/model/root.d.ts +0 -20
  1026. package/dist/tui/model/root.d.ts.map +0 -1
  1027. package/dist/tui/model/root.js +0 -126
  1028. package/dist/tui/model/root.js.map +0 -1
  1029. package/dist/tui/model/route-builder.d.ts +0 -25
  1030. package/dist/tui/model/route-builder.d.ts.map +0 -1
  1031. package/dist/tui/model/route-builder.js +0 -199
  1032. package/dist/tui/model/route-builder.js.map +0 -1
  1033. package/dist/tui/model/screen.d.ts +0 -260
  1034. package/dist/tui/model/screen.d.ts.map +0 -1
  1035. package/dist/tui/model/types.d.ts +0 -179
  1036. package/dist/tui/model/types.d.ts.map +0 -1
  1037. package/dist/tui/model.d.ts +0 -18
  1038. package/dist/tui/model.d.ts.map +0 -1
  1039. package/dist/tui/model.js +0 -17
  1040. package/dist/tui/proxy-models-fetch.d.ts +0 -34
  1041. package/dist/tui/proxy-models-fetch.d.ts.map +0 -1
  1042. package/dist/tui/proxy-models-fetch.js +0 -87
  1043. package/dist/tui/proxy-models-fetch.js.map +0 -1
  1044. package/dist/tui/routes/account.d.ts +0 -4
  1045. package/dist/tui/routes/account.d.ts.map +0 -1
  1046. package/dist/tui/routes/account.js +0 -327
  1047. package/dist/tui/routes/account.js.map +0 -1
  1048. package/dist/tui/routes/apps.d.ts +0 -3
  1049. package/dist/tui/routes/apps.d.ts.map +0 -1
  1050. package/dist/tui/routes/apps.js +0 -296
  1051. package/dist/tui/routes/apps.js.map +0 -1
  1052. package/dist/tui/routes/common.d.ts +0 -4
  1053. package/dist/tui/routes/common.d.ts.map +0 -1
  1054. package/dist/tui/routes/common.js +0 -117
  1055. package/dist/tui/routes/common.js.map +0 -1
  1056. package/dist/tui/routes/context.d.ts +0 -43
  1057. package/dist/tui/routes/context.d.ts.map +0 -1
  1058. package/dist/tui/routes/gateway.d.ts +0 -3
  1059. package/dist/tui/routes/gateway.d.ts.map +0 -1
  1060. package/dist/tui/routes/gateway.js +0 -199
  1061. package/dist/tui/routes/gateway.js.map +0 -1
  1062. package/dist/tui/routes/proxy.d.ts +0 -3
  1063. package/dist/tui/routes/proxy.d.ts.map +0 -1
  1064. package/dist/tui/routes/proxy.js +0 -234
  1065. package/dist/tui/routes/proxy.js.map +0 -1
  1066. package/dist/tui/screens/account-detail.d.ts +0 -14
  1067. package/dist/tui/screens/account-detail.d.ts.map +0 -1
  1068. package/dist/tui/screens/account-detail.js +0 -98
  1069. package/dist/tui/screens/account-detail.js.map +0 -1
  1070. package/dist/tui/screens/accounts-home.d.ts +0 -42
  1071. package/dist/tui/screens/accounts-home.d.ts.map +0 -1
  1072. package/dist/tui/screens/accounts-home.js +0 -321
  1073. package/dist/tui/screens/accounts-home.js.map +0 -1
  1074. package/dist/tui/screens/add-account.d.ts +0 -70
  1075. package/dist/tui/screens/add-account.d.ts.map +0 -1
  1076. package/dist/tui/screens/add-account.js +0 -323
  1077. package/dist/tui/screens/add-account.js.map +0 -1
  1078. package/dist/tui/screens/anypick-home.d.ts +0 -39
  1079. package/dist/tui/screens/anypick-home.d.ts.map +0 -1
  1080. package/dist/tui/screens/anypick-home.js +0 -253
  1081. package/dist/tui/screens/anypick-home.js.map +0 -1
  1082. package/dist/tui/screens/anypick-preview.d.ts +0 -13
  1083. package/dist/tui/screens/anypick-preview.d.ts.map +0 -1
  1084. package/dist/tui/screens/anypick-preview.js +0 -49
  1085. package/dist/tui/screens/anypick-preview.js.map +0 -1
  1086. package/dist/tui/screens/app-route-preview.d.ts +0 -14
  1087. package/dist/tui/screens/app-route-preview.d.ts.map +0 -1
  1088. package/dist/tui/screens/app-route-preview.js +0 -35
  1089. package/dist/tui/screens/app-route-preview.js.map +0 -1
  1090. package/dist/tui/screens/app-route-source.d.ts +0 -15
  1091. package/dist/tui/screens/app-route-source.d.ts.map +0 -1
  1092. package/dist/tui/screens/app-route-source.js +0 -97
  1093. package/dist/tui/screens/app-route-source.js.map +0 -1
  1094. package/dist/tui/screens/apps-home.d.ts +0 -22
  1095. package/dist/tui/screens/apps-home.d.ts.map +0 -1
  1096. package/dist/tui/screens/apps-home.js +0 -111
  1097. package/dist/tui/screens/apps-home.js.map +0 -1
  1098. package/dist/tui/screens/confirm.d.ts +0 -19
  1099. package/dist/tui/screens/confirm.d.ts.map +0 -1
  1100. package/dist/tui/screens/confirm.js +0 -42
  1101. package/dist/tui/screens/confirm.js.map +0 -1
  1102. package/dist/tui/screens/credential-form.d.ts +0 -30
  1103. package/dist/tui/screens/credential-form.d.ts.map +0 -1
  1104. package/dist/tui/screens/credential-form.js +0 -241
  1105. package/dist/tui/screens/credential-form.js.map +0 -1
  1106. package/dist/tui/screens/gateway-connection-form.d.ts +0 -16
  1107. package/dist/tui/screens/gateway-connection-form.d.ts.map +0 -1
  1108. package/dist/tui/screens/gateway-connection-form.js +0 -127
  1109. package/dist/tui/screens/gateway-connection-form.js.map +0 -1
  1110. package/dist/tui/screens/gateway-pick-provider.d.ts +0 -19
  1111. package/dist/tui/screens/gateway-pick-provider.d.ts.map +0 -1
  1112. package/dist/tui/screens/gateway-pick-provider.js +0 -62
  1113. package/dist/tui/screens/gateway-pick-provider.js.map +0 -1
  1114. package/dist/tui/screens/gateways-home.d.ts +0 -38
  1115. package/dist/tui/screens/gateways-home.d.ts.map +0 -1
  1116. package/dist/tui/screens/gateways-home.js +0 -247
  1117. package/dist/tui/screens/gateways-home.js.map +0 -1
  1118. package/dist/tui/screens/health.d.ts +0 -16
  1119. package/dist/tui/screens/health.d.ts.map +0 -1
  1120. package/dist/tui/screens/health.js +0 -109
  1121. package/dist/tui/screens/health.js.map +0 -1
  1122. package/dist/tui/screens/help.d.ts +0 -10
  1123. package/dist/tui/screens/help.d.ts.map +0 -1
  1124. package/dist/tui/screens/help.js +0 -213
  1125. package/dist/tui/screens/help.js.map +0 -1
  1126. package/dist/tui/screens/manage-apps.d.ts +0 -29
  1127. package/dist/tui/screens/manage-apps.d.ts.map +0 -1
  1128. package/dist/tui/screens/manage-apps.js +0 -165
  1129. package/dist/tui/screens/manage-apps.js.map +0 -1
  1130. package/dist/tui/screens/proxy-board-helpers.d.ts +0 -9
  1131. package/dist/tui/screens/proxy-board-helpers.d.ts.map +0 -1
  1132. package/dist/tui/screens/proxy-board-helpers.js +0 -70
  1133. package/dist/tui/screens/proxy-board-helpers.js.map +0 -1
  1134. package/dist/tui/screens/proxy-board.d.ts +0 -43
  1135. package/dist/tui/screens/proxy-board.d.ts.map +0 -1
  1136. package/dist/tui/screens/proxy-board.js +0 -351
  1137. package/dist/tui/screens/proxy-board.js.map +0 -1
  1138. package/dist/tui/screens/proxy-hub.d.ts +0 -21
  1139. package/dist/tui/screens/proxy-hub.d.ts.map +0 -1
  1140. package/dist/tui/screens/proxy-hub.js +0 -150
  1141. package/dist/tui/screens/proxy-hub.js.map +0 -1
  1142. package/dist/tui/screens/proxy-models-utils.d.ts +0 -13
  1143. package/dist/tui/screens/proxy-models-utils.d.ts.map +0 -1
  1144. package/dist/tui/screens/proxy-models-utils.js +0 -53
  1145. package/dist/tui/screens/proxy-models-utils.js.map +0 -1
  1146. package/dist/tui/screens/proxy-models.d.ts +0 -65
  1147. package/dist/tui/screens/proxy-models.d.ts.map +0 -1
  1148. package/dist/tui/screens/proxy-models.js +0 -252
  1149. package/dist/tui/screens/proxy-models.js.map +0 -1
  1150. package/dist/tui/screens/proxy.d.ts +0 -26
  1151. package/dist/tui/screens/proxy.d.ts.map +0 -1
  1152. package/dist/tui/screens/text-input.d.ts +0 -18
  1153. package/dist/tui/screens/text-input.d.ts.map +0 -1
  1154. package/dist/tui/screens/text-input.js +0 -67
  1155. package/dist/tui/screens/text-input.js.map +0 -1
  1156. package/dist/tui/screens/tray-runtime.d.ts +0 -19
  1157. package/dist/tui/screens/tray-runtime.d.ts.map +0 -1
  1158. package/dist/tui/screens/tray-runtime.js +0 -108
  1159. package/dist/tui/screens/tray-runtime.js.map +0 -1
  1160. package/dist/tui/use-tui-nav.d.ts +0 -40
  1161. package/dist/tui/use-tui-nav.d.ts.map +0 -1
  1162. package/dist/tui/use-tui-nav.js +0 -256
  1163. package/dist/tui/use-tui-nav.js.map +0 -1
  1164. package/dist/tui/use-tui-shell.d.ts +0 -46
  1165. package/dist/tui/use-tui-shell.d.ts.map +0 -1
  1166. package/dist/tui/use-tui-shell.js +0 -95
  1167. package/dist/tui/use-tui-shell.js.map +0 -1
  1168. package/dist/types/account.d.ts +0 -410
  1169. package/dist/types/account.d.ts.map +0 -1
  1170. package/dist/types/account.js +0 -7
  1171. package/dist/types/account.js.map +0 -1
  1172. package/dist/types/bindings.d.ts +0 -300
  1173. package/dist/types/bindings.d.ts.map +0 -1
  1174. package/dist/types/catalog.d.ts +0 -165
  1175. package/dist/types/catalog.d.ts.map +0 -1
  1176. package/dist/types/clients.d.ts +0 -174
  1177. package/dist/types/clients.d.ts.map +0 -1
  1178. package/dist/types/clients.js +0 -11
  1179. package/dist/types/clients.js.map +0 -1
  1180. package/dist/types/plugins.d.ts +0 -89
  1181. package/dist/types/plugins.d.ts.map +0 -1
  1182. package/dist/types/plugins.js +0 -14
  1183. package/dist/types/plugins.js.map +0 -1
  1184. package/dist/types/proxy-hub.d.ts +0 -109
  1185. package/dist/types/proxy-hub.d.ts.map +0 -1
  1186. package/dist/types.d.ts +0 -7
  1187. package/dist/types.d.ts.map +0 -1
  1188. package/dist/types.js +0 -1
  1189. package/dist/utils/errors.d.ts +0 -61
  1190. package/dist/utils/errors.d.ts.map +0 -1
  1191. package/dist/utils/errors.js +0 -119
  1192. package/dist/utils/errors.js.map +0 -1
  1193. package/dist/utils/fs.d.ts +0 -39
  1194. package/dist/utils/fs.d.ts.map +0 -1
  1195. package/dist/utils/fs.js +0 -126
  1196. package/dist/utils/fs.js.map +0 -1
  1197. package/dist/utils/lock.d.ts +0 -33
  1198. package/dist/utils/lock.d.ts.map +0 -1
  1199. package/dist/utils/lock.js +0 -95
  1200. package/dist/utils/lock.js.map +0 -1
  1201. package/dist/utils/log.d.ts +0 -10
  1202. package/dist/utils/log.d.ts.map +0 -1
  1203. package/dist/utils/log.js +0 -21
  1204. package/dist/utils/log.js.map +0 -1
  1205. package/dist/utils/network.d.ts +0 -3
  1206. package/dist/utils/network.d.ts.map +0 -1
  1207. package/dist/utils/network.js +0 -13
  1208. package/dist/utils/network.js.map +0 -1
  1209. package/dist/utils/process/binary.d.ts +0 -14
  1210. package/dist/utils/process/binary.d.ts.map +0 -1
  1211. package/dist/utils/process/binary.js +0 -29
  1212. package/dist/utils/process/binary.js.map +0 -1
  1213. package/dist/utils/process/follow.d.ts +0 -2
  1214. package/dist/utils/process/follow.d.ts.map +0 -1
  1215. package/dist/utils/process/follow.js +0 -90
  1216. package/dist/utils/process/follow.js.map +0 -1
  1217. package/dist/utils/process/health.d.ts +0 -43
  1218. package/dist/utils/process/health.d.ts.map +0 -1
  1219. package/dist/utils/process/health.js +0 -132
  1220. package/dist/utils/process/health.js.map +0 -1
  1221. package/dist/utils/process/pid.d.ts +0 -95
  1222. package/dist/utils/process/pid.d.ts.map +0 -1
  1223. package/dist/utils/process/pid.js +0 -243
  1224. package/dist/utils/process/pid.js.map +0 -1
  1225. package/dist/utils/process.d.ts +0 -5
  1226. package/dist/utils/process.d.ts.map +0 -1
  1227. package/dist/utils/process.js +0 -5
  1228. package/dist/utils/slug.d.ts +0 -18
  1229. package/dist/utils/slug.d.ts.map +0 -1
  1230. package/dist/utils/slug.js +0 -42
  1231. package/dist/utils/slug.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs.js","names":[],"sources":["../../src/utils/fs.ts"],"sourcesContent":["import { copyFile, mkdir, open, readdir, readFile, rename, rm, stat } from 'node:fs/promises';\nimport { dirname, join } from 'node:path';\nimport { homedir } from 'node:os';\nimport { existsSync } from 'node:fs';\nimport { randomUUID } from 'node:crypto';\nimport { AnyPickError } from './errors';\n\n/** Expand ~ and normalize a path. */\nexport function expandHome(path: string): string {\n if (path === '~') {\n return homedir();\n }\n if (path.startsWith('~/') || path.startsWith('~\\\\')) {\n return join(homedir(), path.slice(2));\n }\n return path;\n}\n\nexport async function pathExists(path: string): Promise<boolean> {\n try {\n await stat(path);\n return true;\n } catch {\n return false;\n }\n}\n\nexport async function ensureDir(path: string): Promise<void> {\n // AnyPick stores credentials, snapshots, and proxy logs below this tree.\n // New directories are owner-only even under a permissive umask.\n await mkdir(path, { recursive: true, mode: 0o700 });\n}\n\nexport async function readJsonFile<T>(path: string): Promise<T> {\n const raw = await readFile(path, 'utf8');\n return JSON.parse(raw) as T;\n}\n\n/**\n * Read a JSON file and decode through a versioned record decoder (DATA-02).\n * The decoder validates the shape and rejects corrupt/future-version data\n * with a structured error carrying the file path (no secret values).\n */\nexport async function readAndDecodeJsonFile<T>(\n path: string,\n decoder: (v: unknown, key: string) => { ok: true; value: T } | { ok: false; error: string },\n): Promise<T> {\n const raw = await readFile(path, 'utf8');\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch {\n throw new Error(`Corrupt JSON in ${path}`);\n }\n const result = decoder(parsed, path);\n if (result.ok) {\n return result.value;\n }\n throw new Error(`Corrupt record in ${path}: ${result.error}`);\n}\n\nexport async function writeJsonFile(path: string, data: unknown, mode = 0o600): Promise<void> {\n await writeTextFile(path, `${JSON.stringify(data, null, 2)}\\n`, mode);\n}\n\n/**\n * Copy a single file, creating parent dirs. Preserves mode when possible.\n * Returns false if source is missing.\n */\nexport async function copyFileSafe(src: string, dest: string, mode = 0o600): Promise<boolean> {\n if (!(await pathExists(src))) {\n return false;\n }\n await ensureDir(dirname(dest));\n const tmp = `${dest}.${randomUUID()}.tmp`;\n try {\n await copyFile(src, tmp);\n const { chmod } = await import('node:fs/promises');\n await chmod(tmp, mode);\n const handle = await open(tmp, 'r');\n try {\n await handle.sync();\n } finally {\n await handle.close();\n }\n await rename(tmp, dest);\n } catch (err) {\n await rm(tmp, { force: true }).catch(() => {});\n throw err;\n }\n return true;\n}\n\n/**\n * Write text atomically with restrictive permissions.\n */\nexport async function writeTextFile(path: string, content: string, mode = 0o600): Promise<void> {\n await ensureDir(dirname(path));\n const tmp = `${path}.${randomUUID()}.tmp`;\n let handle: Awaited<ReturnType<typeof open>> | undefined;\n try {\n handle = await open(tmp, 'wx', mode);\n await handle.writeFile(content, { encoding: 'utf8' });\n await handle.sync();\n await handle.close();\n handle = undefined;\n await rename(tmp, path);\n } catch (err) {\n await handle?.close().catch(() => {});\n await rm(tmp, { force: true }).catch(() => {});\n throw err;\n }\n}\n\n/**\n * Copy live file into snapshot, or throw a clear error if missing.\n */\nexport async function backupRequiredFile(\n livePath: string,\n destPath: string,\n label: string,\n): Promise<void> {\n const ok = await copyFileSafe(livePath, destPath);\n if (!ok) {\n throw new AnyPickError(`No live ${label} found at ${livePath}. Log in first, then save.`, {\n code: 'NO_LIVE_AUTH',\n suggestions: [`Sign in with the official tool, then try again.`],\n });\n }\n}\n\n/**\n * Restore a snapshot file to a live path (required).\n */\nexport async function restoreRequiredFile(\n srcPath: string,\n livePath: string,\n label: string,\n): Promise<void> {\n if (!(await pathExists(srcPath))) {\n throw new Error(`Snapshot is missing ${label}: ${srcPath}`);\n }\n await copyFileSafe(srcPath, livePath, 0o600);\n}\n\nexport async function listSubdirs(dir: string): Promise<string[]> {\n if (!(await pathExists(dir))) {\n return [];\n }\n const entries = await readdir(dir, { withFileTypes: true });\n return entries\n .filter((e) => e.isDirectory())\n .map((e) => e.name)\n .toSorted();\n}\n\nexport async function removePath(path: string): Promise<void> {\n if (existsSync(path)) {\n await rm(path, { recursive: true, force: true });\n }\n}\n\nexport async function emptyDir(path: string): Promise<void> {\n await removePath(path);\n await ensureDir(path);\n}\n"],"mappings":";;;;;;;;AAQA,SAAgB,WAAW,MAAsB;CAC/C,IAAI,SAAS,KACX,OAAO,QAAQ;CAEjB,IAAI,KAAK,WAAW,IAAI,KAAK,KAAK,WAAW,KAAK,GAChD,OAAO,KAAK,QAAQ,GAAG,KAAK,MAAM,CAAC,CAAC;CAEtC,OAAO;AACT;AAEA,eAAsB,WAAW,MAAgC;CAC/D,IAAI;EACF,MAAM,KAAK,IAAI;EACf,OAAO;CACT,QAAQ;EACN,OAAO;CACT;AACF;AAEA,eAAsB,UAAU,MAA6B;CAG3D,MAAM,MAAM,MAAM;EAAE,WAAW;EAAM,MAAM;CAAM,CAAC;AACpD;AAEA,eAAsB,aAAgB,MAA0B;CAC9D,MAAM,MAAM,MAAM,SAAS,MAAM,MAAM;CACvC,OAAO,KAAK,MAAM,GAAG;AACvB;;;;;;AAOA,eAAsB,sBACpB,MACA,SACY;CACZ,MAAM,MAAM,MAAM,SAAS,MAAM,MAAM;CACvC,IAAI;CACJ,IAAI;EACF,SAAS,KAAK,MAAM,GAAG;CACzB,QAAQ;EACN,MAAM,IAAI,MAAM,mBAAmB,MAAM;CAC3C;CACA,MAAM,SAAS,QAAQ,QAAQ,IAAI;CACnC,IAAI,OAAO,IACT,OAAO,OAAO;CAEhB,MAAM,IAAI,MAAM,qBAAqB,KAAK,IAAI,OAAO,OAAO;AAC9D;AAEA,eAAsB,cAAc,MAAc,MAAe,OAAO,KAAsB;CAC5F,MAAM,cAAc,MAAM,GAAG,KAAK,UAAU,MAAM,MAAM,CAAC,EAAE,KAAK,IAAI;AACtE;;;;;AAMA,eAAsB,aAAa,KAAa,MAAc,OAAO,KAAyB;CAC5F,IAAI,CAAE,MAAM,WAAW,GAAG,GACxB,OAAO;CAET,MAAM,UAAU,QAAQ,IAAI,CAAC;CAC7B,MAAM,MAAM,GAAG,KAAK,GAAG,WAAW,EAAE;CACpC,IAAI;EACF,MAAM,SAAS,KAAK,GAAG;EACvB,MAAM,EAAE,UAAU,MAAM,OAAO;EAC/B,MAAM,MAAM,KAAK,IAAI;EACrB,MAAM,SAAS,MAAM,KAAK,KAAK,GAAG;EAClC,IAAI;GACF,MAAM,OAAO,KAAK;EACpB,UAAU;GACR,MAAM,OAAO,MAAM;EACrB;EACA,MAAM,OAAO,KAAK,IAAI;CACxB,SAAS,KAAK;EACZ,MAAM,GAAG,KAAK,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;EAC7C,MAAM;CACR;CACA,OAAO;AACT;;;;AAKA,eAAsB,cAAc,MAAc,SAAiB,OAAO,KAAsB;CAC9F,MAAM,UAAU,QAAQ,IAAI,CAAC;CAC7B,MAAM,MAAM,GAAG,KAAK,GAAG,WAAW,EAAE;CACpC,IAAI;CACJ,IAAI;EACF,SAAS,MAAM,KAAK,KAAK,MAAM,IAAI;EACnC,MAAM,OAAO,UAAU,SAAS,EAAE,UAAU,OAAO,CAAC;EACpD,MAAM,OAAO,KAAK;EAClB,MAAM,OAAO,MAAM;EACnB,SAAS,KAAA;EACT,MAAM,OAAO,KAAK,IAAI;CACxB,SAAS,KAAK;EACZ,MAAM,QAAQ,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;EACpC,MAAM,GAAG,KAAK,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;EAC7C,MAAM;CACR;AACF;;;;AAKA,eAAsB,mBACpB,UACA,UACA,OACe;CAEf,IAAI,CAAC,MADY,aAAa,UAAU,QAAQ,GAE9C,MAAM,IAAI,aAAa,WAAW,MAAM,YAAY,SAAS,6BAA6B;EACxF,MAAM;EACN,aAAa,CAAC,iDAAiD;CACjE,CAAC;AAEL;;;;AAKA,eAAsB,oBACpB,SACA,UACA,OACe;CACf,IAAI,CAAE,MAAM,WAAW,OAAO,GAC5B,MAAM,IAAI,MAAM,uBAAuB,MAAM,IAAI,SAAS;CAE5D,MAAM,aAAa,SAAS,UAAU,GAAK;AAC7C;AAEA,eAAsB,YAAY,KAAgC;CAChE,IAAI,CAAE,MAAM,WAAW,GAAG,GACxB,OAAO,CAAC;CAGV,QAAO,MADe,QAAQ,KAAK,EAAE,eAAe,KAAK,CAAC,EAAA,CAEvD,QAAQ,MAAM,EAAE,YAAY,CAAC,CAAC,CAC9B,KAAK,MAAM,EAAE,IAAI,CAAC,CAClB,SAAS;AACd;AAEA,eAAsB,WAAW,MAA6B;CAC5D,IAAI,WAAW,IAAI,GACjB,MAAM,GAAG,MAAM;EAAE,WAAW;EAAM,OAAO;CAAK,CAAC;AAEnD"}
@@ -1,33 +0,0 @@
1
- /**
2
- * Scoped file locks for concurrent mutations (spec §23.3).
3
- *
4
- * Lock file content: `{ "pid": number, "startedAt": string }`
5
- * Stale locks (dead owner PID) are stolen after a brief wait.
6
- */
7
- export interface LockInfo {
8
- pid: number;
9
- startedAt: string;
10
- /** Random ownership nonce prevents PID-reuse ABA on release. */
11
- ownerId?: string;
12
- }
13
- export interface WithFileLockOptions {
14
- /** Max wait for another holder (ms). Default 5000. */
15
- timeoutMs?: number;
16
- /** Poll interval while waiting (ms). Default 25. */
17
- pollMs?: number;
18
- /** Human label for errors. */
19
- resource?: string;
20
- }
21
- export declare function readLockInfo(lockPath: string): Promise<LockInfo | null>;
22
- /** True when lock file is absent or owner process is dead. */
23
- export declare function isLockStale(lockPath: string): Promise<boolean>;
24
- /**
25
- * Acquire an exclusive lock via O_EXCL create, run fn, release.
26
- * Retries while another live process holds the lock.
27
- */
28
- export declare function withFileLock<T>(lockPath: string, fn: () => Promise<T>, opts?: WithFileLockOptions): Promise<T>;
29
- /**
30
- * Atomically write a file under an exclusive lock sibling (`path.lock`).
31
- */
32
- export declare function writeFileLocked(path: string, content: string, mode?: number): Promise<void>;
33
- //# sourceMappingURL=lock.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../src/utils/lock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAe7E;AAED,8DAA8D;AAC9D,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAYpE;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAClC,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,CAAC,CAAC,CAiEZ;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,SAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAYhG"}
@@ -1,95 +0,0 @@
1
- import { ExitCode, anypickError } from "./errors.js";
2
- import { isProcessRunning } from "./process/pid.js";
3
- import { dirname } from "node:path";
4
- import { mkdir, open, readFile, rm } from "node:fs/promises";
5
- import { randomUUID } from "node:crypto";
6
- //#region src/utils/lock.ts
7
- /**
8
- * Scoped file locks for concurrent mutations (spec §23.3).
9
- *
10
- * Lock file content: `{ "pid": number, "startedAt": string }`
11
- * Stale locks (dead owner PID) are stolen after a brief wait.
12
- */
13
- function sleep(ms) {
14
- return new Promise((r) => setTimeout(r, ms));
15
- }
16
- async function readLockInfo(lockPath) {
17
- try {
18
- const raw = await readFile(lockPath, "utf8");
19
- const data = JSON.parse(raw);
20
- if (typeof data.pid === "number" && data.pid > 0) return {
21
- pid: data.pid,
22
- startedAt: typeof data.startedAt === "string" ? data.startedAt : "",
23
- ownerId: typeof data.ownerId === "string" ? data.ownerId : void 0
24
- };
25
- return null;
26
- } catch {
27
- return null;
28
- }
29
- }
30
- /** True when lock file is absent or owner process is dead. */
31
- async function isLockStale(lockPath) {
32
- const info = await readLockInfo(lockPath);
33
- if (!info) try {
34
- await readFile(lockPath);
35
- return true;
36
- } catch {
37
- return true;
38
- }
39
- return !isProcessRunning(info.pid);
40
- }
41
- /**
42
- * Acquire an exclusive lock via O_EXCL create, run fn, release.
43
- * Retries while another live process holds the lock.
44
- */
45
- async function withFileLock(lockPath, fn, opts = {}) {
46
- const timeoutMs = opts.timeoutMs ?? 5e3;
47
- const pollMs = opts.pollMs ?? 25;
48
- const resource = opts.resource ?? lockPath;
49
- const deadline = Date.now() + timeoutMs;
50
- await mkdir(dirname(lockPath), {
51
- recursive: true,
52
- mode: 448
53
- });
54
- const ownerId = randomUUID();
55
- while (true) try {
56
- const handle = await open(lockPath, "wx", 384);
57
- const info = {
58
- pid: process.pid,
59
- startedAt: (/* @__PURE__ */ new Date()).toISOString(),
60
- ownerId
61
- };
62
- try {
63
- await handle.writeFile(JSON.stringify(info) + "\n", { encoding: "utf8" });
64
- } finally {
65
- await handle.close();
66
- }
67
- break;
68
- } catch (err) {
69
- if ((err && typeof err === "object" && "code" in err ? String(err.code) : "") !== "EEXIST") throw err;
70
- const info = await readLockInfo(lockPath);
71
- if (info && !isProcessRunning(info.pid)) {
72
- await rm(lockPath, { force: true });
73
- continue;
74
- }
75
- if (Date.now() >= deadline) throw anypickError(`Resource locked: ${resource}` + (info ? ` (held by pid ${info.pid})` : "") + ". Retry after the other anypick process finishes.", "STATE_CONFLICT", {
76
- exitCode: ExitCode.CAPABILITY_CONFLICT,
77
- details: {
78
- lockPath,
79
- ownerPid: info?.pid
80
- }
81
- });
82
- await sleep(pollMs);
83
- }
84
- try {
85
- return await fn();
86
- } finally {
87
- try {
88
- if ((await readLockInfo(lockPath))?.ownerId === ownerId) await rm(lockPath, { force: true });
89
- } catch {}
90
- }
91
- }
92
- //#endregion
93
- export { isLockStale, readLockInfo, withFileLock };
94
-
95
- //# sourceMappingURL=lock.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lock.js","names":[],"sources":["../../src/utils/lock.ts"],"sourcesContent":["/**\n * Scoped file locks for concurrent mutations (spec §23.3).\n *\n * Lock file content: `{ \"pid\": number, \"startedAt\": string }`\n * Stale locks (dead owner PID) are stolen after a brief wait.\n */\n\nimport { mkdir, open, readFile, rename, rm, writeFile } from 'node:fs/promises';\nimport { dirname } from 'node:path';\nimport { randomUUID } from 'node:crypto';\nimport { isProcessRunning } from './process';\nimport { anypickError, ExitCode } from './errors';\n\nexport interface LockInfo {\n pid: number;\n startedAt: string;\n /** Random ownership nonce prevents PID-reuse ABA on release. */\n ownerId?: string;\n}\n\nexport interface WithFileLockOptions {\n /** Max wait for another holder (ms). Default 5000. */\n timeoutMs?: number;\n /** Poll interval while waiting (ms). Default 25. */\n pollMs?: number;\n /** Human label for errors. */\n resource?: string;\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((r) => setTimeout(r, ms));\n}\n\nexport async function readLockInfo(lockPath: string): Promise<LockInfo | null> {\n try {\n const raw = await readFile(lockPath, 'utf8');\n const data = JSON.parse(raw) as Partial<LockInfo>;\n if (typeof data.pid === 'number' && data.pid > 0) {\n return {\n pid: data.pid,\n startedAt: typeof data.startedAt === 'string' ? data.startedAt : '',\n ownerId: typeof data.ownerId === 'string' ? data.ownerId : undefined,\n };\n }\n return null;\n } catch {\n return null;\n }\n}\n\n/** True when lock file is absent or owner process is dead. */\nexport async function isLockStale(lockPath: string): Promise<boolean> {\n const info = await readLockInfo(lockPath);\n if (!info) {\n // corrupt or unreadable — treat as stale so doctor can delete\n try {\n await readFile(lockPath);\n return true;\n } catch {\n return true; // missing\n }\n }\n return !isProcessRunning(info.pid);\n}\n\n/**\n * Acquire an exclusive lock via O_EXCL create, run fn, release.\n * Retries while another live process holds the lock.\n */\nexport async function withFileLock<T>(\n lockPath: string,\n fn: () => Promise<T>,\n opts: WithFileLockOptions = {},\n): Promise<T> {\n const timeoutMs = opts.timeoutMs ?? 5000;\n const pollMs = opts.pollMs ?? 25;\n const resource = opts.resource ?? lockPath;\n const deadline = Date.now() + timeoutMs;\n\n await mkdir(dirname(lockPath), { recursive: true, mode: 0o700 });\n const ownerId = randomUUID();\n\n while (true) {\n try {\n const handle = await open(lockPath, 'wx', 0o600);\n const info: LockInfo = {\n pid: process.pid,\n startedAt: new Date().toISOString(),\n ownerId,\n };\n try {\n await handle.writeFile(JSON.stringify(info) + '\\n', { encoding: 'utf8' });\n } finally {\n await handle.close();\n }\n break;\n } catch (err) {\n const code = err && typeof err === 'object' && 'code' in err ? String(err.code) : '';\n if (code !== 'EEXIST') {\n throw err;\n }\n\n const info = await readLockInfo(lockPath);\n if (info && !isProcessRunning(info.pid)) {\n // Stale — remove and retry\n await rm(lockPath, { force: true });\n continue;\n }\n\n if (Date.now() >= deadline) {\n throw anypickError(\n `Resource locked: ${resource}` +\n (info ? ` (held by pid ${info.pid})` : '') +\n '. Retry after the other anypick process finishes.',\n 'STATE_CONFLICT',\n {\n exitCode: ExitCode.CAPABILITY_CONFLICT,\n details: { lockPath, ownerPid: info?.pid },\n },\n );\n }\n await sleep(pollMs);\n }\n }\n\n try {\n return await fn();\n } finally {\n try {\n const info = await readLockInfo(lockPath);\n // Only release if we still own it\n if (info?.ownerId === ownerId) {\n await rm(lockPath, { force: true });\n }\n } catch {\n // best-effort\n }\n }\n}\n\n/**\n * Atomically write a file under an exclusive lock sibling (`path.lock`).\n */\nexport async function writeFileLocked(path: string, content: string, mode = 0o600): Promise<void> {\n await withFileLock(`${path}.lock`, async () => {\n await mkdir(dirname(path), { recursive: true, mode: 0o700 });\n const tmp = `${path}.${randomUUID()}.tmp`;\n try {\n await writeFile(tmp, content, { mode, flag: 'wx' });\n await rename(tmp, path);\n } catch (err) {\n await rm(tmp, { force: true }).catch(() => {});\n throw err;\n }\n });\n}\n"],"mappings":";;;;;;;;;;;;AA6BA,SAAS,MAAM,IAA2B;CACxC,OAAO,IAAI,SAAS,MAAM,WAAW,GAAG,EAAE,CAAC;AAC7C;AAEA,eAAsB,aAAa,UAA4C;CAC7E,IAAI;EACF,MAAM,MAAM,MAAM,SAAS,UAAU,MAAM;EAC3C,MAAM,OAAO,KAAK,MAAM,GAAG;EAC3B,IAAI,OAAO,KAAK,QAAQ,YAAY,KAAK,MAAM,GAC7C,OAAO;GACL,KAAK,KAAK;GACV,WAAW,OAAO,KAAK,cAAc,WAAW,KAAK,YAAY;GACjE,SAAS,OAAO,KAAK,YAAY,WAAW,KAAK,UAAU,KAAA;EAC7D;EAEF,OAAO;CACT,QAAQ;EACN,OAAO;CACT;AACF;;AAGA,eAAsB,YAAY,UAAoC;CACpE,MAAM,OAAO,MAAM,aAAa,QAAQ;CACxC,IAAI,CAAC,MAEH,IAAI;EACF,MAAM,SAAS,QAAQ;EACvB,OAAO;CACT,QAAQ;EACN,OAAO;CACT;CAEF,OAAO,CAAC,iBAAiB,KAAK,GAAG;AACnC;;;;;AAMA,eAAsB,aACpB,UACA,IACA,OAA4B,CAAC,GACjB;CACZ,MAAM,YAAY,KAAK,aAAa;CACpC,MAAM,SAAS,KAAK,UAAU;CAC9B,MAAM,WAAW,KAAK,YAAY;CAClC,MAAM,WAAW,KAAK,IAAI,IAAI;CAE9B,MAAM,MAAM,QAAQ,QAAQ,GAAG;EAAE,WAAW;EAAM,MAAM;CAAM,CAAC;CAC/D,MAAM,UAAU,WAAW;CAE3B,OAAO,MACL,IAAI;EACF,MAAM,SAAS,MAAM,KAAK,UAAU,MAAM,GAAK;EAC/C,MAAM,OAAiB;GACrB,KAAK,QAAQ;GACb,4BAAW,IAAI,KAAK,EAAA,CAAE,YAAY;GAClC;EACF;EACA,IAAI;GACF,MAAM,OAAO,UAAU,KAAK,UAAU,IAAI,IAAI,MAAM,EAAE,UAAU,OAAO,CAAC;EAC1E,UAAU;GACR,MAAM,OAAO,MAAM;EACrB;EACA;CACF,SAAS,KAAK;EAEZ,KADa,OAAO,OAAO,QAAQ,YAAY,UAAU,MAAM,OAAO,IAAI,IAAI,IAAI,QACrE,UACX,MAAM;EAGR,MAAM,OAAO,MAAM,aAAa,QAAQ;EACxC,IAAI,QAAQ,CAAC,iBAAiB,KAAK,GAAG,GAAG;GAEvC,MAAM,GAAG,UAAU,EAAE,OAAO,KAAK,CAAC;GAClC;EACF;EAEA,IAAI,KAAK,IAAI,KAAK,UAChB,MAAM,aACJ,oBAAoB,cACjB,OAAO,iBAAiB,KAAK,IAAI,KAAK,MACvC,qDACF,kBACA;GACE,UAAU,SAAS;GACnB,SAAS;IAAE;IAAU,UAAU,MAAM;GAAI;EAC3C,CACF;EAEF,MAAM,MAAM,MAAM;CACpB;CAGF,IAAI;EACF,OAAO,MAAM,GAAG;CAClB,UAAU;EACR,IAAI;GAGF,KAAI,MAFe,aAAa,QAAQ,EAAA,EAE9B,YAAY,SACpB,MAAM,GAAG,UAAU,EAAE,OAAO,KAAK,CAAC;EAEtC,QAAQ,CAER;CACF;AACF"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Low-noise diagnostic logging for internal failures that are best-effort
3
- * (startup recovery, lease reaping, cleanup). These are intentionally not
4
- * thrown — the operation is optional — but swallowing them silently hides
5
- * exactly the partial-state conditions this tool exists to catch, so we log
6
- * them to stderr behind ANYPICK_DEBUG instead of discarding them.
7
- */
8
- /** Log an internal/best-effort failure to stderr (no-op unless ANYPICK_DEBUG). */
9
- export declare function logInternalError(label: string, err: unknown): void;
10
- //# sourceMappingURL=log.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/utils/log.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CAMlE"}
package/dist/utils/log.js DELETED
@@ -1,21 +0,0 @@
1
- //#region src/utils/log.ts
2
- /**
3
- * Low-noise diagnostic logging for internal failures that are best-effort
4
- * (startup recovery, lease reaping, cleanup). These are intentionally not
5
- * thrown — the operation is optional — but swallowing them silently hides
6
- * exactly the partial-state conditions this tool exists to catch, so we log
7
- * them to stderr behind ANYPICK_DEBUG instead of discarding them.
8
- */
9
- function debugEnabled() {
10
- return process.env.ANYPICK_DEBUG === "1" || process.env.ANYPICK_DEBUG === "true";
11
- }
12
- /** Log an internal/best-effort failure to stderr (no-op unless ANYPICK_DEBUG). */
13
- function logInternalError(label, err) {
14
- if (!debugEnabled()) return;
15
- const message = err instanceof Error ? err.stack ?? err.message : String(err);
16
- process.stderr.write(`[anypick:debug] ${label}: ${message}\n`);
17
- }
18
- //#endregion
19
- export { logInternalError };
20
-
21
- //# sourceMappingURL=log.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"log.js","names":[],"sources":["../../src/utils/log.ts"],"sourcesContent":["/**\n * Low-noise diagnostic logging for internal failures that are best-effort\n * (startup recovery, lease reaping, cleanup). These are intentionally not\n * thrown — the operation is optional — but swallowing them silently hides\n * exactly the partial-state conditions this tool exists to catch, so we log\n * them to stderr behind ANYPICK_DEBUG instead of discarding them.\n */\n\nfunction debugEnabled(): boolean {\n return process.env.ANYPICK_DEBUG === '1' || process.env.ANYPICK_DEBUG === 'true';\n}\n\n/** Log an internal/best-effort failure to stderr (no-op unless ANYPICK_DEBUG). */\nexport function logInternalError(label: string, err: unknown): void {\n if (!debugEnabled()) {\n return;\n }\n const message = err instanceof Error ? (err.stack ?? err.message) : String(err);\n process.stderr.write(`[anypick:debug] ${label}: ${message}\\n`);\n}\n"],"mappings":";;;;;;;;AAQA,SAAS,eAAwB;CAC/B,OAAO,QAAQ,IAAI,kBAAkB,OAAO,QAAQ,IAAI,kBAAkB;AAC5E;;AAGA,SAAgB,iBAAiB,OAAe,KAAoB;CAClE,IAAI,CAAC,aAAa,GAChB;CAEF,MAAM,UAAU,eAAe,QAAS,IAAI,SAAS,IAAI,UAAW,OAAO,GAAG;CAC9E,QAAQ,OAAO,MAAM,mBAAmB,MAAM,IAAI,QAAQ,GAAG;AAC/D"}
@@ -1,3 +0,0 @@
1
- export declare function isLoopbackHost(host: string): boolean;
2
- export declare function assertLoopbackHost(host: string): void;
3
- //# sourceMappingURL=network.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/utils/network.ts"],"names":[],"mappings":"AAEA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMpD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAOrD"}
@@ -1,13 +0,0 @@
1
- import { AnyPickError } from "./errors.js";
2
- //#region src/utils/network.ts
3
- function isLoopbackHost(host) {
4
- const value = host.trim().toLowerCase().replace(/^\[|\]$/g, "");
5
- return value === "127.0.0.1" || value === "::1" || value === "localhost";
6
- }
7
- function assertLoopbackHost(host) {
8
- if (!isLoopbackHost(host)) throw new AnyPickError(`Proxy host must be loopback-only (127.0.0.1, ::1, or localhost), got "${host}".`, "PROXY_UNSAFE_HOST");
9
- }
10
- //#endregion
11
- export { assertLoopbackHost, isLoopbackHost };
12
-
13
- //# sourceMappingURL=network.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"network.js","names":[],"sources":["../../src/utils/network.ts"],"sourcesContent":["import { AnyPickError } from './errors';\n\nexport function isLoopbackHost(host: string): boolean {\n const value = host\n .trim()\n .toLowerCase()\n .replace(/^\\[|\\]$/g, '');\n return value === '127.0.0.1' || value === '::1' || value === 'localhost';\n}\n\nexport function assertLoopbackHost(host: string): void {\n if (!isLoopbackHost(host)) {\n throw new AnyPickError(\n `Proxy host must be loopback-only (127.0.0.1, ::1, or localhost), got \"${host}\".`,\n 'PROXY_UNSAFE_HOST',\n );\n }\n}\n"],"mappings":";;AAEA,SAAgB,eAAe,MAAuB;CACpD,MAAM,QAAQ,KACX,KAAK,CAAC,CACN,YAAY,CAAC,CACb,QAAQ,YAAY,EAAE;CACzB,OAAO,UAAU,eAAe,UAAU,SAAS,UAAU;AAC/D;AAEA,SAAgB,mBAAmB,MAAoB;CACrD,IAAI,CAAC,eAAe,IAAI,GACtB,MAAM,IAAI,aACR,yEAAyE,KAAK,KAC9E,mBACF;AAEJ"}
@@ -1,14 +0,0 @@
1
- export declare function resolveBinary(names: string[], extraPaths?: string[]): Promise<string | null>;
2
- /**
3
- * Locate an executable on PATH (and common locations). No hardcoded developer homes.
4
- * Returns absolute path or null.
5
- */
6
- export declare function whichExecutable(name: string): string | null;
7
- /**
8
- * Tail a file like `tail -f`: emits each new line via onLine.
9
- * Polls every 200ms (reliable across macOS/Linux/Windows and immune to the
10
- * missed-event races fs.watchFile can hit when an external process appends
11
- * rapidly). A read-position cursor ensures we only emit appended content
12
- * (survives rotation/truncation). Resolves when signal aborts.
13
- */
14
- //# sourceMappingURL=binary.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../../../src/utils/process/binary.ts"],"names":[],"mappings":"AAEA,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,GAAE,MAAM,EAAO,GACxB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+BxB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAqC3D;AASD;;;;;;GAMG"}
@@ -1,29 +0,0 @@
1
- import "node:fs";
2
- //#region src/utils/process/binary.ts
3
- async function resolveBinary(names, extraPaths = []) {
4
- const { access, constants } = await import("node:fs/promises");
5
- const dirs = (process.env.PATH ?? "").split(process.platform === "win32" ? ";" : ":");
6
- const candidates = [...extraPaths];
7
- for (const name of names) if (name.includes("/") || name.includes("\\")) candidates.push(name);
8
- else for (const dir of dirs) {
9
- if (!dir) continue;
10
- candidates.push(`${dir}/${name}`);
11
- if (process.platform === "win32") candidates.push(`${dir}\\${name}.cmd`, `${dir}\\${name}.exe`);
12
- }
13
- for (const c of candidates) try {
14
- await access(c, constants.X_OK);
15
- return c;
16
- } catch {}
17
- return null;
18
- }
19
- /**
20
- * Tail a file like `tail -f`: emits each new line via onLine.
21
- * Polls every 200ms (reliable across macOS/Linux/Windows and immune to the
22
- * missed-event races fs.watchFile can hit when an external process appends
23
- * rapidly). A read-position cursor ensures we only emit appended content
24
- * (survives rotation/truncation). Resolves when signal aborts.
25
- */
26
- //#endregion
27
- export { resolveBinary };
28
-
29
- //# sourceMappingURL=binary.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"binary.js","names":[],"sources":["../../../src/utils/process/binary.ts"],"sourcesContent":["import { existsSync } from 'node:fs';\n\nexport async function resolveBinary(\n names: string[],\n extraPaths: string[] = [],\n): Promise<string | null> {\n const { access, constants } = await import('node:fs/promises');\n const pathEnv = process.env.PATH ?? '';\n const dirs = pathEnv.split(process.platform === 'win32' ? ';' : ':');\n\n const candidates: string[] = [...extraPaths];\n for (const name of names) {\n if (name.includes('/') || name.includes('\\\\')) {\n candidates.push(name);\n } else {\n for (const dir of dirs) {\n if (!dir) {\n continue;\n }\n candidates.push(`${dir}/${name}`);\n if (process.platform === 'win32') {\n candidates.push(`${dir}\\\\${name}.cmd`, `${dir}\\\\${name}.exe`);\n }\n }\n }\n }\n\n for (const c of candidates) {\n try {\n await access(c, constants.X_OK);\n return c;\n } catch {\n // try next\n }\n }\n return null;\n}\n\n/**\n * Locate an executable on PATH (and common locations). No hardcoded developer homes.\n * Returns absolute path or null.\n */\nexport function whichExecutable(name: string): string | null {\n if (!name || name.includes('/') || name.includes('\\\\')) {\n // Absolute/relative path — check existence only\n try {\n if (existsSync(name)) {\n return name;\n }\n } catch {\n return null;\n }\n return null;\n }\n const pathEnv = process.env.PATH ?? '';\n const sep = process.platform === 'win32' ? ';' : ':';\n const exts =\n process.platform === 'win32'\n ? (process.env.PATHEXT ?? '.EXE;.CMD;.BAT').split(';').filter(Boolean)\n : [''];\n for (const dir of pathEnv.split(sep)) {\n if (!dir) {\n continue;\n }\n for (const ext of exts) {\n const candidate = joinPath(\n dir,\n name + (ext && !name.toUpperCase().endsWith(ext.toUpperCase()) ? ext : ''),\n );\n try {\n if (existsSync(candidate)) {\n return candidate;\n }\n } catch {\n // continue\n }\n }\n }\n return null;\n}\n\nfunction joinPath(a: string, b: string): string {\n if (a.endsWith('/') || a.endsWith('\\\\')) {\n return a + b;\n }\n return a + (process.platform === 'win32' ? '\\\\' : '/') + b;\n}\n\n/**\n * Tail a file like `tail -f`: emits each new line via onLine.\n * Polls every 200ms (reliable across macOS/Linux/Windows and immune to the\n * missed-event races fs.watchFile can hit when an external process appends\n * rapidly). A read-position cursor ensures we only emit appended content\n * (survives rotation/truncation). Resolves when signal aborts.\n */\n"],"mappings":";;AAEA,eAAsB,cACpB,OACA,aAAuB,CAAC,GACA;CACxB,MAAM,EAAE,QAAQ,cAAc,MAAM,OAAO;CAE3C,MAAM,QADU,QAAQ,IAAI,QAAQ,GAAA,CACf,MAAM,QAAQ,aAAa,UAAU,MAAM,GAAG;CAEnE,MAAM,aAAuB,CAAC,GAAG,UAAU;CAC3C,KAAK,MAAM,QAAQ,OACjB,IAAI,KAAK,SAAS,GAAG,KAAK,KAAK,SAAS,IAAI,GAC1C,WAAW,KAAK,IAAI;MAEpB,KAAK,MAAM,OAAO,MAAM;EACtB,IAAI,CAAC,KACH;EAEF,WAAW,KAAK,GAAG,IAAI,GAAG,MAAM;EAChC,IAAI,QAAQ,aAAa,SACvB,WAAW,KAAK,GAAG,IAAI,IAAI,KAAK,OAAO,GAAG,IAAI,IAAI,KAAK,KAAK;CAEhE;CAIJ,KAAK,MAAM,KAAK,YACd,IAAI;EACF,MAAM,OAAO,GAAG,UAAU,IAAI;EAC9B,OAAO;CACT,QAAQ,CAER;CAEF,OAAO;AACT"}
@@ -1,2 +0,0 @@
1
- export declare function followFile(path: string, onLine: (line: string) => void, signal?: AbortSignal): Promise<void>;
2
- //# sourceMappingURL=follow.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"follow.d.ts","sourceRoot":"","sources":["../../../src/utils/process/follow.ts"],"names":[],"mappings":"AAeA,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAmGf"}
@@ -1,90 +0,0 @@
1
- import { open, stat } from "node:fs/promises";
2
- //#region src/utils/process/follow.ts
3
- function identityOf(file) {
4
- return {
5
- dev: file.dev,
6
- ino: file.ino
7
- };
8
- }
9
- function sameFile(a, b) {
10
- return a?.dev === b.dev && a.ino === b.ino;
11
- }
12
- async function followFile(path, onLine, signal) {
13
- if (signal?.aborted) return;
14
- let cursor = 0;
15
- let buffer = "";
16
- let stopped = false;
17
- let decoder = new TextDecoder();
18
- let identity;
19
- let reading = false;
20
- const flush = (text) => {
21
- buffer += text;
22
- let idx;
23
- while ((idx = buffer.indexOf("\n")) >= 0) {
24
- const line = buffer.slice(0, idx).replace(/\r$/, "");
25
- buffer = buffer.slice(idx + 1);
26
- if (line.length > 0) onLine(line);
27
- }
28
- };
29
- const readFrom = async () => {
30
- if (stopped || reading) return;
31
- reading = true;
32
- try {
33
- const current = await stat(path);
34
- const currentIdentity = identityOf(current);
35
- if (!sameFile(identity, currentIdentity) || current.size < cursor) {
36
- cursor = 0;
37
- buffer = "";
38
- decoder = new TextDecoder();
39
- }
40
- identity = currentIdentity;
41
- const unread = current.size - cursor;
42
- if (unread > 0) {
43
- const handle = await open(path, "r");
44
- try {
45
- const appended = Buffer.allocUnsafe(unread);
46
- const { bytesRead } = await handle.read(appended, 0, unread, cursor);
47
- cursor += bytesRead;
48
- flush(decoder.decode(appended.subarray(0, bytesRead), { stream: true }));
49
- } finally {
50
- await handle.close();
51
- }
52
- }
53
- } catch {} finally {
54
- reading = false;
55
- }
56
- };
57
- try {
58
- const s = await stat(path);
59
- cursor = s.size;
60
- identity = identityOf(s);
61
- } catch {
62
- cursor = 0;
63
- }
64
- return new Promise((resolve) => {
65
- let timer;
66
- const onAbort = () => {
67
- if (stopped) return;
68
- stopped = true;
69
- if (timer) clearInterval(timer);
70
- signal?.removeEventListener("abort", onAbort);
71
- resolve();
72
- };
73
- signal?.addEventListener("abort", onAbort);
74
- if (signal?.aborted) {
75
- onAbort();
76
- return;
77
- }
78
- timer = setInterval(() => {
79
- if (stopped) {
80
- clearInterval(timer);
81
- return;
82
- }
83
- readFrom();
84
- }, 200);
85
- });
86
- }
87
- //#endregion
88
- export { followFile };
89
-
90
- //# sourceMappingURL=follow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"follow.js","names":[],"sources":["../../../src/utils/process/follow.ts"],"sourcesContent":["import { open, stat } from 'node:fs/promises';\n\ninterface FileIdentity {\n dev: number;\n ino: number;\n}\n\nfunction identityOf(file: { dev: number; ino: number }): FileIdentity {\n return { dev: file.dev, ino: file.ino };\n}\n\nfunction sameFile(a: FileIdentity | undefined, b: FileIdentity): boolean {\n return a?.dev === b.dev && a.ino === b.ino;\n}\n\nexport async function followFile(\n path: string,\n onLine: (line: string) => void,\n signal?: AbortSignal,\n): Promise<void> {\n if (signal?.aborted) {\n return;\n }\n\n let cursor = 0;\n let buffer = '';\n let stopped = false;\n let decoder = new TextDecoder();\n let identity: FileIdentity | undefined;\n let reading = false;\n\n const flush = (text: string) => {\n buffer += text;\n let idx: number;\n while ((idx = buffer.indexOf('\\n')) >= 0) {\n const line = buffer.slice(0, idx).replace(/\\r$/, '');\n buffer = buffer.slice(idx + 1);\n if (line.length > 0) {\n onLine(line);\n }\n }\n };\n\n const readFrom = async () => {\n if (stopped || reading) {\n return;\n }\n reading = true;\n try {\n const current = await stat(path);\n const currentIdentity = identityOf(current);\n if (!sameFile(identity, currentIdentity) || current.size < cursor) {\n // A renamed replacement can be longer than its predecessor, so size\n // alone is not enough. Reset both byte and UTF-8 decoder state.\n cursor = 0;\n buffer = '';\n decoder = new TextDecoder();\n }\n identity = currentIdentity;\n const unread = current.size - cursor;\n if (unread > 0) {\n // Read only the appended range. A proxy log can run for days; polling\n // must be proportional to new bytes, not the lifetime file size.\n const handle = await open(path, 'r');\n try {\n const appended = Buffer.allocUnsafe(unread);\n const { bytesRead } = await handle.read(appended, 0, unread, cursor);\n cursor += bytesRead;\n flush(decoder.decode(appended.subarray(0, bytesRead), { stream: true }));\n } finally {\n await handle.close();\n }\n }\n } catch {\n // file not present yet — keep cursor, wait for next poll\n } finally {\n reading = false;\n }\n };\n\n // Seed cursor at end of current file so we only emit *new* lines.\n try {\n const s = await stat(path);\n cursor = s.size;\n identity = identityOf(s);\n } catch {\n cursor = 0;\n }\n\n return new Promise<void>((resolve) => {\n let timer: ReturnType<typeof setInterval> | undefined;\n const onAbort = () => {\n if (stopped) {\n return;\n }\n stopped = true;\n if (timer) {\n clearInterval(timer);\n }\n signal?.removeEventListener('abort', onAbort);\n resolve();\n };\n signal?.addEventListener('abort', onAbort);\n if (signal?.aborted) {\n onAbort();\n return;\n }\n // Poll every 200ms — reliable across macOS/Linux and immune to the\n // missed-event races that fs.watchFile can hit when an external process\n // (the proxy) appends rapidly.\n timer = setInterval(() => {\n if (stopped) {\n clearInterval(timer);\n return;\n }\n void readFrom();\n }, 200);\n });\n}\n"],"mappings":";;AAOA,SAAS,WAAW,MAAkD;CACpE,OAAO;EAAE,KAAK,KAAK;EAAK,KAAK,KAAK;CAAI;AACxC;AAEA,SAAS,SAAS,GAA6B,GAA0B;CACvE,OAAO,GAAG,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE;AACzC;AAEA,eAAsB,WACpB,MACA,QACA,QACe;CACf,IAAI,QAAQ,SACV;CAGF,IAAI,SAAS;CACb,IAAI,SAAS;CACb,IAAI,UAAU;CACd,IAAI,UAAU,IAAI,YAAY;CAC9B,IAAI;CACJ,IAAI,UAAU;CAEd,MAAM,SAAS,SAAiB;EAC9B,UAAU;EACV,IAAI;EACJ,QAAQ,MAAM,OAAO,QAAQ,IAAI,MAAM,GAAG;GACxC,MAAM,OAAO,OAAO,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,OAAO,EAAE;GACnD,SAAS,OAAO,MAAM,MAAM,CAAC;GAC7B,IAAI,KAAK,SAAS,GAChB,OAAO,IAAI;EAEf;CACF;CAEA,MAAM,WAAW,YAAY;EAC3B,IAAI,WAAW,SACb;EAEF,UAAU;EACV,IAAI;GACF,MAAM,UAAU,MAAM,KAAK,IAAI;GAC/B,MAAM,kBAAkB,WAAW,OAAO;GAC1C,IAAI,CAAC,SAAS,UAAU,eAAe,KAAK,QAAQ,OAAO,QAAQ;IAGjE,SAAS;IACT,SAAS;IACT,UAAU,IAAI,YAAY;GAC5B;GACA,WAAW;GACX,MAAM,SAAS,QAAQ,OAAO;GAC9B,IAAI,SAAS,GAAG;IAGd,MAAM,SAAS,MAAM,KAAK,MAAM,GAAG;IACnC,IAAI;KACF,MAAM,WAAW,OAAO,YAAY,MAAM;KAC1C,MAAM,EAAE,cAAc,MAAM,OAAO,KAAK,UAAU,GAAG,QAAQ,MAAM;KACnE,UAAU;KACV,MAAM,QAAQ,OAAO,SAAS,SAAS,GAAG,SAAS,GAAG,EAAE,QAAQ,KAAK,CAAC,CAAC;IACzE,UAAU;KACR,MAAM,OAAO,MAAM;IACrB;GACF;EACF,QAAQ,CAER,UAAU;GACR,UAAU;EACZ;CACF;CAGA,IAAI;EACF,MAAM,IAAI,MAAM,KAAK,IAAI;EACzB,SAAS,EAAE;EACX,WAAW,WAAW,CAAC;CACzB,QAAQ;EACN,SAAS;CACX;CAEA,OAAO,IAAI,SAAe,YAAY;EACpC,IAAI;EACJ,MAAM,gBAAgB;GACpB,IAAI,SACF;GAEF,UAAU;GACV,IAAI,OACF,cAAc,KAAK;GAErB,QAAQ,oBAAoB,SAAS,OAAO;GAC5C,QAAQ;EACV;EACA,QAAQ,iBAAiB,SAAS,OAAO;EACzC,IAAI,QAAQ,SAAS;GACnB,QAAQ;GACR;EACF;EAIA,QAAQ,kBAAkB;GACxB,IAAI,SAAS;IACX,cAAc,KAAK;IACnB;GACF;GACA,SAAc;EAChB,GAAG,GAAG;CACR,CAAC;AACH"}
@@ -1,43 +0,0 @@
1
- export interface VerifyHealthOptions {
2
- timeoutMs?: number;
3
- intervalMs?: number;
4
- /** Require this exact instance id echoed by the health endpoint (PROC-01). */
5
- expectInstanceId?: string;
6
- /** When set, the check fails if this pid is no longer alive. */
7
- requirePid?: number;
8
- }
9
- /**
10
- * Poll a health endpoint and (optionally) verify the child's identity by
11
- * matching the instance id it echoes. A mismatch means the PID is alive but
12
- * belongs to a different process — we must NOT treat it as owned (PROC-01).
13
- *
14
- * The endpoint should respond with JSON containing `{ instanceId }`. When
15
- * `expectInstanceId` is set, only a matching echo counts as ready.
16
- */
17
- export declare function verifyProcessHealth(endpoint: string, opts?: VerifyHealthOptions): Promise<boolean>;
18
- /**
19
- * True if nothing is currently listening on host:port.
20
- * Uses a temporary bind probe (same as OS EADDRINUSE check).
21
- */
22
- export declare function isListenPortFree(port: number, host?: string): Promise<boolean>;
23
- /** Poll until port is free or timeout. */
24
- export declare function waitForPortFree(port: number, host?: string, timeoutMs?: number): Promise<boolean>;
25
- export declare function waitForHttp(endpoint: string, opts?: {
26
- timeoutMs?: number;
27
- intervalMs?: number;
28
- /** When set, HTTP ready only counts if this pid is still alive (avoids EADDRINUSE ghost). */
29
- requirePid?: number;
30
- /** When set, the endpoint must echo this exact instance id to count as ready. */
31
- expectInstanceId?: string;
32
- }): Promise<boolean>;
33
- export declare function sleep(ms: number): Promise<void>;
34
- /**
35
- * Best-effort PIDs listening on host:port (loopback proxies).
36
- * Used to re-attach a pid record after a stale file left a live hub orphaned.
37
- * Returns [] when lsof/ss is unavailable or nothing is listening.
38
- */
39
- export declare function listenPidsOnPort(port: number, host?: string): Promise<number[]>;
40
- /**
41
- * Resolve a binary from PATH (and optional extra candidates).
42
- */
43
- //# sourceMappingURL=health.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../src/utils/process/health.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,OAAO,CAAC,CAgClB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBzF;AAED,0CAA0C;AAC1C,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,IAAI,SAAc,EAClB,SAAS,SAAO,GACf,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE;IACJ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6FAA6F;IAC7F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACtB,GACL,OAAO,CAAC,OAAO,CAAC,CAsClB;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAwC1F;AAED;;GAEG"}
@@ -1,132 +0,0 @@
1
- import { isProcessRunning } from "./pid.js";
2
- //#region src/utils/process/health.ts
3
- /**
4
- * Poll a health endpoint and (optionally) verify the child's identity by
5
- * matching the instance id it echoes. A mismatch means the PID is alive but
6
- * belongs to a different process — we must NOT treat it as owned (PROC-01).
7
- *
8
- * The endpoint should respond with JSON containing `{ instanceId }`. When
9
- * `expectInstanceId` is set, only a matching echo counts as ready.
10
- */
11
- async function verifyProcessHealth(endpoint, opts = {}) {
12
- const timeoutMs = opts.timeoutMs ?? 5e3;
13
- const intervalMs = opts.intervalMs ?? 100;
14
- const start = Date.now();
15
- while (Date.now() - start < timeoutMs) {
16
- if (opts.requirePid != null && !isProcessRunning(opts.requirePid)) return false;
17
- try {
18
- const res = await fetch(endpoint, {
19
- method: "GET",
20
- signal: AbortSignal.timeout(500),
21
- headers: { accept: "application/json" }
22
- });
23
- if (!res.ok) {
24
- await sleep(intervalMs);
25
- continue;
26
- }
27
- if (opts.expectInstanceId == null) return true;
28
- if ((await res.json()).instanceId === opts.expectInstanceId) return true;
29
- return false;
30
- } catch {
31
- await sleep(intervalMs);
32
- }
33
- }
34
- return false;
35
- }
36
- /**
37
- * True if nothing is currently listening on host:port.
38
- * Uses a temporary bind probe (same as OS EADDRINUSE check).
39
- */
40
- async function isListenPortFree(port, host = "127.0.0.1") {
41
- if (port === 0) return true;
42
- const net = await import("node:net");
43
- return new Promise((resolve) => {
44
- const server = net.createServer();
45
- server.unref();
46
- server.once("error", () => resolve(false));
47
- server.once("listening", () => {
48
- server.close(() => resolve(true));
49
- });
50
- try {
51
- server.listen(port, host);
52
- } catch {
53
- resolve(false);
54
- }
55
- });
56
- }
57
- async function waitForHttp(endpoint, opts = {}) {
58
- const timeoutMs = opts.timeoutMs ?? 5e3;
59
- const intervalMs = opts.intervalMs ?? 100;
60
- const start = Date.now();
61
- while (Date.now() - start < timeoutMs) {
62
- if (opts.requirePid != null && !isProcessRunning(opts.requirePid)) return false;
63
- try {
64
- const res = await fetch(endpoint, {
65
- method: "GET",
66
- signal: AbortSignal.timeout(500),
67
- headers: { accept: "application/json" }
68
- });
69
- if (opts.requirePid != null && !isProcessRunning(opts.requirePid)) return false;
70
- if (opts.expectInstanceId != null) {
71
- let echoedId;
72
- try {
73
- echoedId = (await res.clone().json()).instanceId;
74
- } catch {
75
- echoedId = void 0;
76
- }
77
- if (echoedId !== opts.expectInstanceId) return false;
78
- }
79
- return true;
80
- } catch {
81
- await sleep(intervalMs);
82
- }
83
- }
84
- return false;
85
- }
86
- function sleep(ms) {
87
- return new Promise((r) => setTimeout(r, ms));
88
- }
89
- /**
90
- * Best-effort PIDs listening on host:port (loopback proxies).
91
- * Used to re-attach a pid record after a stale file left a live hub orphaned.
92
- * Returns [] when lsof/ss is unavailable or nothing is listening.
93
- */
94
- async function listenPidsOnPort(port, host = "127.0.0.1") {
95
- if (!Number.isInteger(port) || port <= 0) return [];
96
- const { execFile } = await import("node:child_process");
97
- const { promisify } = await import("node:util");
98
- const execFileAsync = promisify(execFile);
99
- try {
100
- const { stdout } = await execFileAsync("lsof", [
101
- "-nP",
102
- `-iTCP@${host}:${port}`,
103
- "-sTCP:LISTEN",
104
- "-t"
105
- ], {
106
- timeout: 2e3,
107
- encoding: "utf8"
108
- });
109
- return [...new Set(stdout.split(/\r?\n/u).map((line) => Number.parseInt(line.trim(), 10)).filter((pid) => Number.isInteger(pid) && pid > 0 && isProcessRunning(pid)))];
110
- } catch {}
111
- try {
112
- const { stdout } = await execFileAsync("ss", ["-lptn", `sport = :${port}`], {
113
- timeout: 2e3,
114
- encoding: "utf8"
115
- });
116
- const pids = [];
117
- for (const match of stdout.matchAll(/pid=(\d+)/gu)) {
118
- const pid = Number.parseInt(match[1] ?? "", 10);
119
- if (Number.isInteger(pid) && pid > 0 && isProcessRunning(pid)) pids.push(pid);
120
- }
121
- return [...new Set(pids)];
122
- } catch {
123
- return [];
124
- }
125
- }
126
- /**
127
- * Resolve a binary from PATH (and optional extra candidates).
128
- */
129
- //#endregion
130
- export { isListenPortFree, listenPidsOnPort, sleep, verifyProcessHealth, waitForHttp };
131
-
132
- //# sourceMappingURL=health.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"health.js","names":[],"sources":["../../../src/utils/process/health.ts"],"sourcesContent":["import { isProcessRunning } from './pid';\n\nexport interface VerifyHealthOptions {\n timeoutMs?: number;\n intervalMs?: number;\n /** Require this exact instance id echoed by the health endpoint (PROC-01). */\n expectInstanceId?: string;\n /** When set, the check fails if this pid is no longer alive. */\n requirePid?: number;\n}\n\n/**\n * Poll a health endpoint and (optionally) verify the child's identity by\n * matching the instance id it echoes. A mismatch means the PID is alive but\n * belongs to a different process — we must NOT treat it as owned (PROC-01).\n *\n * The endpoint should respond with JSON containing `{ instanceId }`. When\n * `expectInstanceId` is set, only a matching echo counts as ready.\n */\nexport async function verifyProcessHealth(\n endpoint: string,\n opts: VerifyHealthOptions = {},\n): Promise<boolean> {\n const timeoutMs = opts.timeoutMs ?? 5000;\n const intervalMs = opts.intervalMs ?? 100;\n const start = Date.now();\n while (Date.now() - start < timeoutMs) {\n if (opts.requirePid != null && !isProcessRunning(opts.requirePid)) {\n return false;\n }\n try {\n const res = await fetch(endpoint, {\n method: 'GET',\n signal: AbortSignal.timeout(500),\n headers: { accept: 'application/json' },\n });\n if (!res.ok) {\n await sleep(intervalMs);\n continue;\n }\n if (opts.expectInstanceId == null) {\n return true;\n }\n const body = (await res.json()) as { instanceId?: unknown };\n if (body.instanceId === opts.expectInstanceId) {\n return true;\n }\n // Alive but wrong identity → fail closed, do not retry-loop forever.\n return false;\n } catch {\n await sleep(intervalMs);\n }\n }\n return false;\n}\n\n/**\n * True if nothing is currently listening on host:port.\n * Uses a temporary bind probe (same as OS EADDRINUSE check).\n */\nexport async function isListenPortFree(port: number, host = '127.0.0.1'): Promise<boolean> {\n if (port === 0) {\n return true;\n }\n const net = await import('node:net');\n return new Promise((resolve) => {\n const server = net.createServer();\n server.unref();\n server.once('error', () => resolve(false));\n server.once('listening', () => {\n server.close(() => resolve(true));\n });\n try {\n server.listen(port, host);\n } catch {\n resolve(false);\n }\n });\n}\n\n/** Poll until port is free or timeout. */\nexport async function waitForPortFree(\n port: number,\n host = '127.0.0.1',\n timeoutMs = 3000,\n): Promise<boolean> {\n if (port === 0) {\n return true;\n }\n const start = Date.now();\n while (Date.now() - start < timeoutMs) {\n if (await isListenPortFree(port, host)) {\n return true;\n }\n await sleep(50);\n }\n return isListenPortFree(port, host);\n}\n\nexport async function waitForHttp(\n endpoint: string,\n opts: {\n timeoutMs?: number;\n intervalMs?: number;\n /** When set, HTTP ready only counts if this pid is still alive (avoids EADDRINUSE ghost). */\n requirePid?: number;\n /** When set, the endpoint must echo this exact instance id to count as ready. */\n expectInstanceId?: string;\n } = {},\n): Promise<boolean> {\n const timeoutMs = opts.timeoutMs ?? 5000;\n const intervalMs = opts.intervalMs ?? 100;\n const start = Date.now();\n while (Date.now() - start < timeoutMs) {\n if (opts.requirePid != null && !isProcessRunning(opts.requirePid)) {\n return false;\n }\n try {\n const res = await fetch(endpoint, {\n method: 'GET',\n signal: AbortSignal.timeout(500),\n headers: { accept: 'application/json' },\n });\n // Any HTTP response means the server is up (even 404).\n void res;\n if (opts.requirePid != null && !isProcessRunning(opts.requirePid)) {\n return false;\n }\n // Identity gate (PROC-01): a live but wrong-identity process is not ours.\n if (opts.expectInstanceId != null) {\n let echoedId: unknown;\n try {\n const body = (await res.clone().json()) as { instanceId?: unknown };\n echoedId = body.instanceId;\n } catch {\n echoedId = undefined;\n }\n if (echoedId !== opts.expectInstanceId) {\n return false;\n }\n }\n return true;\n } catch {\n await sleep(intervalMs);\n }\n }\n return false;\n}\n\nexport function sleep(ms: number): Promise<void> {\n return new Promise((r) => setTimeout(r, ms));\n}\n\n/**\n * Best-effort PIDs listening on host:port (loopback proxies).\n * Used to re-attach a pid record after a stale file left a live hub orphaned.\n * Returns [] when lsof/ss is unavailable or nothing is listening.\n */\nexport async function listenPidsOnPort(port: number, host = '127.0.0.1'): Promise<number[]> {\n if (!Number.isInteger(port) || port <= 0) {\n return [];\n }\n const { execFile } = await import('node:child_process');\n const { promisify } = await import('node:util');\n const execFileAsync = promisify(execFile);\n try {\n const { stdout } = await execFileAsync(\n 'lsof',\n ['-nP', `-iTCP@${host}:${port}`, '-sTCP:LISTEN', '-t'],\n { timeout: 2000, encoding: 'utf8' },\n );\n return [\n ...new Set(\n stdout\n .split(/\\r?\\n/u)\n .map((line) => Number.parseInt(line.trim(), 10))\n .filter((pid) => Number.isInteger(pid) && pid > 0 && isProcessRunning(pid)),\n ),\n ];\n } catch {\n // Fall through — try ss on Linux if lsof is missing.\n }\n try {\n const { stdout } = await execFileAsync('ss', ['-lptn', `sport = :${port}`], {\n timeout: 2000,\n encoding: 'utf8',\n });\n const pids: number[] = [];\n for (const match of stdout.matchAll(/pid=(\\d+)/gu)) {\n const pid = Number.parseInt(match[1] ?? '', 10);\n if (Number.isInteger(pid) && pid > 0 && isProcessRunning(pid)) {\n pids.push(pid);\n }\n }\n return [...new Set(pids)];\n } catch {\n return [];\n }\n}\n\n/**\n * Resolve a binary from PATH (and optional extra candidates).\n */\n"],"mappings":";;;;;;;;;;AAmBA,eAAsB,oBACpB,UACA,OAA4B,CAAC,GACX;CAClB,MAAM,YAAY,KAAK,aAAa;CACpC,MAAM,aAAa,KAAK,cAAc;CACtC,MAAM,QAAQ,KAAK,IAAI;CACvB,OAAO,KAAK,IAAI,IAAI,QAAQ,WAAW;EACrC,IAAI,KAAK,cAAc,QAAQ,CAAC,iBAAiB,KAAK,UAAU,GAC9D,OAAO;EAET,IAAI;GACF,MAAM,MAAM,MAAM,MAAM,UAAU;IAChC,QAAQ;IACR,QAAQ,YAAY,QAAQ,GAAG;IAC/B,SAAS,EAAE,QAAQ,mBAAmB;GACxC,CAAC;GACD,IAAI,CAAC,IAAI,IAAI;IACX,MAAM,MAAM,UAAU;IACtB;GACF;GACA,IAAI,KAAK,oBAAoB,MAC3B,OAAO;GAGT,KAAI,MADgB,IAAI,KAAK,EAAA,CACpB,eAAe,KAAK,kBAC3B,OAAO;GAGT,OAAO;EACT,QAAQ;GACN,MAAM,MAAM,UAAU;EACxB;CACF;CACA,OAAO;AACT;;;;;AAMA,eAAsB,iBAAiB,MAAc,OAAO,aAA+B;CACzF,IAAI,SAAS,GACX,OAAO;CAET,MAAM,MAAM,MAAM,OAAO;CACzB,OAAO,IAAI,SAAS,YAAY;EAC9B,MAAM,SAAS,IAAI,aAAa;EAChC,OAAO,MAAM;EACb,OAAO,KAAK,eAAe,QAAQ,KAAK,CAAC;EACzC,OAAO,KAAK,mBAAmB;GAC7B,OAAO,YAAY,QAAQ,IAAI,CAAC;EAClC,CAAC;EACD,IAAI;GACF,OAAO,OAAO,MAAM,IAAI;EAC1B,QAAQ;GACN,QAAQ,KAAK;EACf;CACF,CAAC;AACH;AAqBA,eAAsB,YACpB,UACA,OAOI,CAAC,GACa;CAClB,MAAM,YAAY,KAAK,aAAa;CACpC,MAAM,aAAa,KAAK,cAAc;CACtC,MAAM,QAAQ,KAAK,IAAI;CACvB,OAAO,KAAK,IAAI,IAAI,QAAQ,WAAW;EACrC,IAAI,KAAK,cAAc,QAAQ,CAAC,iBAAiB,KAAK,UAAU,GAC9D,OAAO;EAET,IAAI;GACF,MAAM,MAAM,MAAM,MAAM,UAAU;IAChC,QAAQ;IACR,QAAQ,YAAY,QAAQ,GAAG;IAC/B,SAAS,EAAE,QAAQ,mBAAmB;GACxC,CAAC;GAGD,IAAI,KAAK,cAAc,QAAQ,CAAC,iBAAiB,KAAK,UAAU,GAC9D,OAAO;GAGT,IAAI,KAAK,oBAAoB,MAAM;IACjC,IAAI;IACJ,IAAI;KAEF,YAAW,MADS,IAAI,MAAM,CAAC,CAAC,KAAK,EAAA,CACrB;IAClB,QAAQ;KACN,WAAW,KAAA;IACb;IACA,IAAI,aAAa,KAAK,kBACpB,OAAO;GAEX;GACA,OAAO;EACT,QAAQ;GACN,MAAM,MAAM,UAAU;EACxB;CACF;CACA,OAAO;AACT;AAEA,SAAgB,MAAM,IAA2B;CAC/C,OAAO,IAAI,SAAS,MAAM,WAAW,GAAG,EAAE,CAAC;AAC7C;;;;;;AAOA,eAAsB,iBAAiB,MAAc,OAAO,aAAgC;CAC1F,IAAI,CAAC,OAAO,UAAU,IAAI,KAAK,QAAQ,GACrC,OAAO,CAAC;CAEV,MAAM,EAAE,aAAa,MAAM,OAAO;CAClC,MAAM,EAAE,cAAc,MAAM,OAAO;CACnC,MAAM,gBAAgB,UAAU,QAAQ;CACxC,IAAI;EACF,MAAM,EAAE,WAAW,MAAM,cACvB,QACA;GAAC;GAAO,SAAS,KAAK,GAAG;GAAQ;GAAgB;EAAI,GACrD;GAAE,SAAS;GAAM,UAAU;EAAO,CACpC;EACA,OAAO,CACL,GAAG,IAAI,IACL,OACG,MAAM,QAAQ,CAAC,CACf,KAAK,SAAS,OAAO,SAAS,KAAK,KAAK,GAAG,EAAE,CAAC,CAAC,CAC/C,QAAQ,QAAQ,OAAO,UAAU,GAAG,KAAK,MAAM,KAAK,iBAAiB,GAAG,CAAC,CAC9E,CACF;CACF,QAAQ,CAER;CACA,IAAI;EACF,MAAM,EAAE,WAAW,MAAM,cAAc,MAAM,CAAC,SAAS,YAAY,MAAM,GAAG;GAC1E,SAAS;GACT,UAAU;EACZ,CAAC;EACD,MAAM,OAAiB,CAAC;EACxB,KAAK,MAAM,SAAS,OAAO,SAAS,aAAa,GAAG;GAClD,MAAM,MAAM,OAAO,SAAS,MAAM,MAAM,IAAI,EAAE;GAC9C,IAAI,OAAO,UAAU,GAAG,KAAK,MAAM,KAAK,iBAAiB,GAAG,GAC1D,KAAK,KAAK,GAAG;EAEjB;EACA,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC;CAC1B,QAAQ;EACN,OAAO,CAAC;CACV;AACF"}