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,163 +0,0 @@
1
- import { pathExists, readJsonFile } from "../utils/fs.js";
2
- import { listAuthEntries } from "./opencode-auth.js";
3
- import { join } from "node:path";
4
- import { readFile } from "node:fs/promises";
5
- import { homedir } from "node:os";
6
- import { createHash } from "node:crypto";
7
- //#region src/providers/auth-fingerprint.ts
8
- /**
9
- * Stable fingerprints for "is this saved login currently live?"
10
- *
11
- * Email/display identity is not reliable:
12
- * - Codex: two saved logins can share an email; account_id is the truth.
13
- * - OpenCode: multi-provider API bags — identity strings drift; key material must match.
14
- */
15
- /** Live auth.json path for a known provider (mirrors each Provider class). */
16
- function liveAuthPath(providerId, home = homedir()) {
17
- switch (providerId) {
18
- case "codex": return process.env.CODEX_AUTH_PATH ?? join(home, ".codex", "auth.json");
19
- case "opencode":
20
- if (process.env.OPENCODE_AUTH_PATH) return process.env.OPENCODE_AUTH_PATH;
21
- if (process.env.OPENCODE_DATA_DIR) return join(process.env.OPENCODE_DATA_DIR, "auth.json");
22
- return join(process.env.XDG_DATA_HOME ?? join(home, ".local", "share"), "opencode", "auth.json");
23
- case "grok": return process.env.GROK_AUTH_PATH ?? join(home, ".grok", "auth.json");
24
- default: return null;
25
- }
26
- }
27
- async function fingerprintLiveAuth(providerId, home = homedir()) {
28
- const path = liveAuthPath(providerId, home);
29
- if (!path) return null;
30
- return fingerprintAuthFile(providerId, path);
31
- }
32
- function sha8(s) {
33
- return createHash("sha256").update(s).digest("hex").slice(0, 12);
34
- }
35
- /**
36
- * Codex ~/.codex/auth.json → fingerprint of the *current session material*.
37
- *
38
- * Prefer refresh_token (unique per login session) over account_id.
39
- * Matching only on account_id marks every saved copy of the same ChatGPT
40
- * account as ● live (e.g. "live" + "vicen" with the same email).
41
- */
42
- function fingerprintCodexAuth(data) {
43
- const tokens = data.tokens;
44
- if (tokens && typeof tokens === "object") {
45
- const t = tokens;
46
- if (typeof t.refresh_token === "string" && t.refresh_token.trim()) {
47
- const acct = typeof t.account_id === "string" && t.account_id.trim() ? t.account_id.trim() : "";
48
- return acct ? `codex:rt:${sha8(t.refresh_token.trim())}:acct:${acct}` : `codex:rt:${sha8(t.refresh_token.trim())}`;
49
- }
50
- if (typeof t.access_token === "string" && t.access_token.trim()) return `codex:at:${sha8(t.access_token.trim())}`;
51
- if (typeof t.account_id === "string" && t.account_id.trim()) return `codex:acct:${t.account_id.trim()}`;
52
- }
53
- if (typeof data.OPENAI_API_KEY === "string" && data.OPENAI_API_KEY.trim()) return `codex:key:${sha8(data.OPENAI_API_KEY.trim())}`;
54
- if (typeof data.token === "string" && data.token.trim()) return `codex:tok:${sha8(data.token.trim())}`;
55
- if (typeof data.email === "string" && data.email.trim()) return `codex:email:${data.email.trim().toLowerCase()}`;
56
- return null;
57
- }
58
- /**
59
- * Grok rotates its access key and expiry during normal refreshes. The refresh
60
- * token identifies the durable login, so comparing the whole session JSON
61
- * would turn a healthy active account into false drift.
62
- */
63
- function fingerprintGrokAuth(data) {
64
- const parts = Object.values(data).filter((entry) => Boolean(entry) && typeof entry === "object").flatMap((session) => {
65
- if (typeof session.refresh_token === "string" && session.refresh_token.trim()) return `rt:${sha8(session.refresh_token.trim())}`;
66
- if (typeof session.key === "string" && session.key.trim()) return `key:${sha8(session.key.trim())}`;
67
- return [];
68
- }).toSorted();
69
- return parts.length > 0 ? `grok:${parts.join("|")}` : null;
70
- }
71
- /** OpenCode auth.json → stable bag fingerprint (sorted provider:type:material). */
72
- function fingerprintOpenCodeAuth(data) {
73
- const entries = listAuthEntries(data);
74
- if (entries.length === 0) return null;
75
- const parts = [];
76
- for (const { provider, entry } of entries) if (entry.type === "api" && entry.key) parts.push(`${provider}:api:${sha8(entry.key)}`);
77
- else if (entry.type === "oauth") if (entry.accountId) parts.push(`${provider}:oauth:acct:${entry.accountId}`);
78
- else if (entry.refresh) parts.push(`${provider}:oauth:rt:${sha8(entry.refresh)}`);
79
- else if (entry.access) parts.push(`${provider}:oauth:at:${sha8(entry.access)}`);
80
- else parts.push(`${provider}:oauth`);
81
- else if (entry.type === "wellknown" && entry.token) parts.push(`${provider}:wk:${sha8(entry.token)}`);
82
- else parts.push(`${provider}:${entry.type}`);
83
- parts.sort();
84
- return `opencode:${parts.join("|")}`;
85
- }
86
- /**
87
- * Generic JSON auth fingerprint for unknown providers: hash of stable JSON.
88
- * Prefer provider-specific fingerprints when available.
89
- */
90
- function fingerprintJsonAuth(data) {
91
- if (data == null || typeof data !== "object") return null;
92
- try {
93
- return `json:${sha8(JSON.stringify(data))}`;
94
- } catch {
95
- return null;
96
- }
97
- }
98
- function fingerprintAuthData(providerId, data) {
99
- if (providerId === "codex") return fingerprintCodexAuth(data);
100
- if (providerId === "opencode") return fingerprintOpenCodeAuth(data);
101
- if (providerId === "grok") return fingerprintGrokAuth(data) ?? fingerprintJsonAuth(data);
102
- if (typeof data.token === "string" && data.token.trim()) return `${providerId}:tok:${sha8(data.token.trim())}`;
103
- if (typeof data.email === "string" && data.email.trim()) return `${providerId}:email:${data.email.trim().toLowerCase()}`;
104
- return fingerprintJsonAuth(data);
105
- }
106
- async function fingerprintAuthFile(providerId, authPath) {
107
- if (!await pathExists(authPath)) return null;
108
- try {
109
- return fingerprintAuthData(providerId, await readJsonFile(authPath));
110
- } catch {
111
- return null;
112
- }
113
- }
114
- /** Snapshot dir → fingerprint (auth.json). */
115
- async function fingerprintSnapshot(providerId, snapshotDir) {
116
- return fingerprintAuthFile(providerId, join(snapshotDir, "auth.json"));
117
- }
118
- /**
119
- * Default "is this snapshot the live login?" using stable material fingerprints.
120
- * Providers that need richer file layouts implement their own
121
- * `snapshotMatchesLive`; everyone else delegates here.
122
- */
123
- async function snapshotMatchesLiveDefault(providerId, snapshotDir) {
124
- if (providerId === "codex") {
125
- const live = await fingerprintLiveAuth("codex");
126
- if (!live) return false;
127
- const snap = await fingerprintSnapshot("codex", snapshotDir);
128
- return snap != null && snap === live;
129
- }
130
- const live = await fingerprintLiveAuth(providerId);
131
- if (!live) return false;
132
- const snap = await fingerprintSnapshot(providerId, snapshotDir);
133
- return snap != null && snap === live;
134
- }
135
- /**
136
- * Compare a set of named auth files between a live location and a snapshot dir.
137
- * Used by providers (e.g. Kiro) whose live auth lives outside the standard
138
- * auth.json convention. Returns true only if every present live file has an
139
- * identical counterpart in the snapshot (and vice-versa for present files).
140
- */
141
- async function snapshotMatchesLiveByFiles(liveFiles) {
142
- let any = false;
143
- for (const { livePath, snapshotPath } of liveFiles) {
144
- const [live, snap] = await Promise.all([fileFingerprint(livePath), fileFingerprint(snapshotPath)]);
145
- if (live == null && snap == null) continue;
146
- if (live == null || snap == null || live !== snap) return false;
147
- any = true;
148
- }
149
- return any;
150
- }
151
- async function fileFingerprint(p) {
152
- if (!await pathExists(p)) return null;
153
- try {
154
- const buf = await readFile(p);
155
- return createHash("sha256").update(buf).digest("hex").slice(0, 16);
156
- } catch {
157
- return null;
158
- }
159
- }
160
- //#endregion
161
- export { fingerprintAuthData, fingerprintAuthFile, fingerprintCodexAuth, fingerprintGrokAuth, fingerprintJsonAuth, fingerprintLiveAuth, fingerprintOpenCodeAuth, fingerprintSnapshot, liveAuthPath, snapshotMatchesLiveByFiles, snapshotMatchesLiveDefault };
162
-
163
- //# sourceMappingURL=auth-fingerprint.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-fingerprint.js","names":[],"sources":["../../src/providers/auth-fingerprint.ts"],"sourcesContent":["/**\n * Stable fingerprints for \"is this saved login currently live?\"\n *\n * Email/display identity is not reliable:\n * - Codex: two saved logins can share an email; account_id is the truth.\n * - OpenCode: multi-provider API bags — identity strings drift; key material must match.\n */\n\nimport { createHash } from 'node:crypto';\nimport { readFile } from 'node:fs/promises';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport { pathExists, readJsonFile } from '../utils/fs';\nimport { listAuthEntries } from './opencode-auth';\n\n/** Live auth.json path for a known provider (mirrors each Provider class). */\nexport function liveAuthPath(providerId: string, home = homedir()): string | null {\n switch (providerId) {\n case 'codex':\n return process.env.CODEX_AUTH_PATH ?? join(home, '.codex', 'auth.json');\n case 'opencode': {\n if (process.env.OPENCODE_AUTH_PATH) {\n return process.env.OPENCODE_AUTH_PATH;\n }\n if (process.env.OPENCODE_DATA_DIR) {\n return join(process.env.OPENCODE_DATA_DIR, 'auth.json');\n }\n const xdg = process.env.XDG_DATA_HOME ?? join(home, '.local', 'share');\n return join(xdg, 'opencode', 'auth.json');\n }\n case 'grok':\n return process.env.GROK_AUTH_PATH ?? join(home, '.grok', 'auth.json');\n default:\n return null;\n }\n}\n\nexport async function fingerprintLiveAuth(\n providerId: string,\n home = homedir(),\n): Promise<string | null> {\n const path = liveAuthPath(providerId, home);\n if (!path) {\n return null;\n }\n return fingerprintAuthFile(providerId, path);\n}\n\nfunction sha8(s: string): string {\n return createHash('sha256').update(s).digest('hex').slice(0, 12);\n}\n\n/**\n * Codex ~/.codex/auth.json → fingerprint of the *current session material*.\n *\n * Prefer refresh_token (unique per login session) over account_id.\n * Matching only on account_id marks every saved copy of the same ChatGPT\n * account as ● live (e.g. \"live\" + \"vicen\" with the same email).\n */\nexport function fingerprintCodexAuth(data: Record<string, unknown>): string | null {\n const tokens = data.tokens;\n if (tokens && typeof tokens === 'object') {\n const t = tokens as Record<string, unknown>;\n // Session material first — exact live match\n if (typeof t.refresh_token === 'string' && t.refresh_token.trim()) {\n const acct =\n typeof t.account_id === 'string' && t.account_id.trim() ? t.account_id.trim() : '';\n return acct\n ? `codex:rt:${sha8(t.refresh_token.trim())}:acct:${acct}`\n : `codex:rt:${sha8(t.refresh_token.trim())}`;\n }\n if (typeof t.access_token === 'string' && t.access_token.trim()) {\n return `codex:at:${sha8(t.access_token.trim())}`;\n }\n // Last resort: account only (cannot distinguish two snapshots of same user)\n if (typeof t.account_id === 'string' && t.account_id.trim()) {\n return `codex:acct:${t.account_id.trim()}`;\n }\n }\n if (typeof data.OPENAI_API_KEY === 'string' && data.OPENAI_API_KEY.trim()) {\n return `codex:key:${sha8(data.OPENAI_API_KEY.trim())}`;\n }\n // Test / FakeProvider shapes: { email, token }\n if (typeof data.token === 'string' && data.token.trim()) {\n return `codex:tok:${sha8(data.token.trim())}`;\n }\n if (typeof data.email === 'string' && data.email.trim()) {\n return `codex:email:${data.email.trim().toLowerCase()}`;\n }\n return null;\n}\n\n/**\n * Grok rotates its access key and expiry during normal refreshes. The refresh\n * token identifies the durable login, so comparing the whole session JSON\n * would turn a healthy active account into false drift.\n */\nexport function fingerprintGrokAuth(data: Record<string, unknown>): string | null {\n const parts = Object.values(data)\n .filter(\n (entry): entry is Record<string, unknown> => Boolean(entry) && typeof entry === 'object',\n )\n .flatMap((session) => {\n if (typeof session.refresh_token === 'string' && session.refresh_token.trim()) {\n return `rt:${sha8(session.refresh_token.trim())}`;\n }\n if (typeof session.key === 'string' && session.key.trim()) {\n return `key:${sha8(session.key.trim())}`;\n }\n return [];\n })\n .toSorted();\n return parts.length > 0 ? `grok:${parts.join('|')}` : null;\n}\n\n/** OpenCode auth.json → stable bag fingerprint (sorted provider:type:material). */\nexport function fingerprintOpenCodeAuth(data: Record<string, unknown>): string | null {\n const entries = listAuthEntries(data);\n if (entries.length === 0) {\n return null;\n }\n const parts: string[] = [];\n for (const { provider, entry } of entries) {\n if (entry.type === 'api' && entry.key) {\n parts.push(`${provider}:api:${sha8(entry.key)}`);\n } else if (entry.type === 'oauth') {\n if (entry.accountId) {\n parts.push(`${provider}:oauth:acct:${entry.accountId}`);\n } else if (entry.refresh) {\n parts.push(`${provider}:oauth:rt:${sha8(entry.refresh)}`);\n } else if (entry.access) {\n parts.push(`${provider}:oauth:at:${sha8(entry.access)}`);\n } else {\n parts.push(`${provider}:oauth`);\n }\n } else if (entry.type === 'wellknown' && entry.token) {\n parts.push(`${provider}:wk:${sha8(entry.token)}`);\n } else {\n parts.push(`${provider}:${entry.type}`);\n }\n }\n parts.sort();\n return `opencode:${parts.join('|')}`;\n}\n\n/**\n * Generic JSON auth fingerprint for unknown providers: hash of stable JSON.\n * Prefer provider-specific fingerprints when available.\n */\nexport function fingerprintJsonAuth(data: unknown): string | null {\n if (data == null || typeof data !== 'object') {\n return null;\n }\n try {\n return `json:${sha8(JSON.stringify(data))}`;\n } catch {\n return null;\n }\n}\n\nexport function fingerprintAuthData(\n providerId: string,\n data: Record<string, unknown>,\n): string | null {\n if (providerId === 'codex') {\n return fingerprintCodexAuth(data);\n }\n if (providerId === 'opencode') {\n return fingerprintOpenCodeAuth(data);\n }\n if (providerId === 'grok') {\n return fingerprintGrokAuth(data) ?? fingerprintJsonAuth(data);\n }\n // Grok / fakes / others: prefer known fields then full JSON\n if (typeof data.token === 'string' && data.token.trim()) {\n return `${providerId}:tok:${sha8(data.token.trim())}`;\n }\n if (typeof data.email === 'string' && data.email.trim()) {\n return `${providerId}:email:${data.email.trim().toLowerCase()}`;\n }\n return fingerprintJsonAuth(data);\n}\n\nexport async function fingerprintAuthFile(\n providerId: string,\n authPath: string,\n): Promise<string | null> {\n if (!(await pathExists(authPath))) {\n return null;\n }\n try {\n const data = await readJsonFile<Record<string, unknown>>(authPath);\n return fingerprintAuthData(providerId, data);\n } catch {\n return null;\n }\n}\n\n/** Snapshot dir → fingerprint (auth.json). */\nexport async function fingerprintSnapshot(\n providerId: string,\n snapshotDir: string,\n): Promise<string | null> {\n return fingerprintAuthFile(providerId, join(snapshotDir, 'auth.json'));\n}\n\n/** Extract ChatGPT account_id from a codex auth.json object or snapshot. */\nexport function codexAccountIdFromAuth(data: Record<string, unknown>): string | null {\n const tokens = data.tokens;\n if (tokens && typeof tokens === 'object') {\n const id = (tokens as Record<string, unknown>).account_id;\n if (typeof id === 'string' && id.trim()) {\n return id.trim();\n }\n }\n return null;\n}\n\nexport async function codexAccountIdFromSnapshot(snapshotDir: string): Promise<string | null> {\n const path = join(snapshotDir, 'auth.json');\n if (!(await pathExists(path))) {\n return null;\n }\n try {\n const data = await readJsonFile<Record<string, unknown>>(path);\n return codexAccountIdFromAuth(data);\n } catch {\n return null;\n }\n}\n\n/**\n * Default \"is this snapshot the live login?\" using stable material fingerprints.\n * Providers that need richer file layouts implement their own\n * `snapshotMatchesLive`; everyone else delegates here.\n */\nexport async function snapshotMatchesLiveDefault(\n providerId: string,\n snapshotDir: string,\n): Promise<boolean> {\n if (providerId === 'codex') {\n const live = await fingerprintLiveAuth('codex');\n if (!live) {\n return false;\n }\n const snap = await fingerprintSnapshot('codex', snapshotDir);\n return snap != null && snap === live;\n }\n const live = await fingerprintLiveAuth(providerId);\n if (!live) {\n return false;\n }\n const snap = await fingerprintSnapshot(providerId, snapshotDir);\n return snap != null && snap === live;\n}\n\n/**\n * Compare a set of named auth files between a live location and a snapshot dir.\n * Used by providers (e.g. Kiro) whose live auth lives outside the standard\n * auth.json convention. Returns true only if every present live file has an\n * identical counterpart in the snapshot (and vice-versa for present files).\n */\nexport async function snapshotMatchesLiveByFiles(\n liveFiles: { name: string; livePath: string; snapshotPath: string }[],\n): Promise<boolean> {\n let any = false;\n for (const { livePath, snapshotPath } of liveFiles) {\n const [live, snap] = await Promise.all([\n fileFingerprint(livePath),\n fileFingerprint(snapshotPath),\n ]);\n if (live == null && snap == null) {\n continue;\n }\n if (live == null || snap == null || live !== snap) {\n return false;\n }\n any = true;\n }\n return any;\n}\n\nasync function fileFingerprint(p: string): Promise<string | null> {\n if (!(await pathExists(p))) {\n return null;\n }\n try {\n const buf = await readFile(p);\n return createHash('sha256').update(buf).digest('hex').slice(0, 16);\n } catch {\n return null;\n }\n}\n"],"mappings":"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"}
@@ -1,43 +0,0 @@
1
- import type { Account, LiveAuthStatus, Provider, SnapshotMeta, SourceAdapter } from '../types.js';
2
- export interface ClaudeCredentialStore {
3
- read(): Promise<{
4
- account: string;
5
- credential: string;
6
- } | null>;
7
- write(account: string, credential: string): Promise<void>;
8
- clear(account: string): Promise<void>;
9
- }
10
- interface ClaudeProviderOptions {
11
- credentialStore?: ClaudeCredentialStore;
12
- isOwnerRunning?: () => Promise<boolean>;
13
- }
14
- /**
15
- * Claude Code keeps OAuth/API credentials in macOS Keychain and falls back to
16
- * ~/.claude/.credentials.json on file-backed platforms. This store mirrors
17
- * those two authorities without ever putting the secret in process argv.
18
- */
19
- export declare function createClaudeCredentialStore(home?: string): ClaudeCredentialStore;
20
- export declare class ClaudeProvider implements Provider {
21
- readonly id = "claude";
22
- readonly name = "Anthropic Claude Code";
23
- readonly shortName = "Claude";
24
- readonly description = "Manages Claude Code native login credentials";
25
- private readonly credentials;
26
- private readonly isOwnerRunning;
27
- constructor(home?: string, opts?: ClaudeProviderOptions);
28
- sourceAdapter(account: Account): SourceAdapter;
29
- detectLive(): Promise<LiveAuthStatus>;
30
- backup(destDir: string): Promise<SnapshotMeta>;
31
- preflightRestore(_srcDir: string): Promise<void>;
32
- restoreOwnerStatus(_srcDir: string): Promise<{
33
- name: string;
34
- running: boolean;
35
- }>;
36
- restore(srcDir: string): Promise<void>;
37
- clearLive(): Promise<void>;
38
- describeSnapshot(srcDir: string): Promise<SnapshotMeta>;
39
- snapshotMatchesLive(srcDir: string): Promise<boolean>;
40
- }
41
- export declare const claudeProvider: ClaudeProvider;
42
- export {};
43
- //# sourceMappingURL=claude.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/providers/claude.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAiB/F,MAAM,WAAW,qBAAqB;IACpC,IAAI,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAChE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,UAAU,qBAAqB;IAC7B,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACzC;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,SAAY,GAAG,qBAAqB,CA2DnF;AAED,qBAAa,cAAe,YAAW,QAAQ;IAC7C,QAAQ,CAAC,EAAE,YAAY;IACvB,QAAQ,CAAC,IAAI,2BAA2B;IACxC,QAAQ,CAAC,SAAS,YAAY;IAC9B,QAAQ,CAAC,WAAW,kDAAkD;IAEtE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwB;IACpD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyB;IAExD,YAAY,IAAI,SAAY,EAAE,IAAI,GAAE,qBAA0B,EAG7D;IAED,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CAE7C;IAEK,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC,CAU1C;IAEK,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAenD;IAEK,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOrD;IAEK,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAErF;IAEK,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3C;IAEK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAK/B;IAEK,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAG5D;IAEK,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAY1D;CACF;AAkFD,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
@@ -1,191 +0,0 @@
1
- import { AnyPickError } from "../utils/errors.js";
2
- import { pathExists, readJsonFile, writeJsonFile, writeTextFile } from "../utils/fs.js";
3
- import { claudeAccountAdapter } from "../sources/account-adapters.js";
4
- import { join } from "node:path";
5
- import { readFile, rm } from "node:fs/promises";
6
- import { homedir, userInfo } from "node:os";
7
- import { createHash } from "node:crypto";
8
- import { execFile } from "node:child_process";
9
- import { promisify } from "node:util";
10
- //#region src/providers/claude.ts
11
- var execFileAsync = promisify(execFile);
12
- var SECURITY_BIN = "/usr/bin/security";
13
- var SECURITY_TIMEOUT_MS = 5e3;
14
- var CLAUDE_KEYCHAIN_SERVICE = "Claude Code-credentials";
15
- var SNAPSHOT_FILE = "credentials.json";
16
- /**
17
- * Claude Code keeps OAuth/API credentials in macOS Keychain and falls back to
18
- * ~/.claude/.credentials.json on file-backed platforms. This store mirrors
19
- * those two authorities without ever putting the secret in process argv.
20
- */
21
- function createClaudeCredentialStore(home = homedir()) {
22
- const account = userInfo().username;
23
- const file = process.env.ANYPICK_CLAUDE_CREDENTIALS_PATH ?? join(home, ".claude", ".credentials.json");
24
- if (!(process.platform === "darwin" && process.env.ANYPICK_CLAUDE_NO_KEYCHAIN !== "1")) return {
25
- async read() {
26
- if (!await pathExists(file)) return null;
27
- const credential = await readFile(file, "utf8");
28
- return credential.trim() ? {
29
- account,
30
- credential
31
- } : null;
32
- },
33
- async write(_account, credential) {
34
- await writeTextFile(file, credential.endsWith("\n") ? credential : `${credential}\n`, 384);
35
- },
36
- async clear() {
37
- await rm(file, { force: true });
38
- }
39
- };
40
- return {
41
- async read() {
42
- try {
43
- const { stdout } = await execFileAsync(SECURITY_BIN, [
44
- "find-generic-password",
45
- "-s",
46
- CLAUDE_KEYCHAIN_SERVICE,
47
- "-a",
48
- account,
49
- "-w"
50
- ], {
51
- encoding: "utf8",
52
- timeout: SECURITY_TIMEOUT_MS,
53
- maxBuffer: 1024 * 1024
54
- });
55
- const credential = stdout.trim();
56
- return credential ? {
57
- account,
58
- credential
59
- } : null;
60
- } catch {
61
- return null;
62
- }
63
- },
64
- async write(keychainAccount, credential) {
65
- const hex = Buffer.from(credential, "utf8").toString("hex");
66
- await securityStdin(`add-generic-password -U -s ${quoteSecurityArgument(CLAUDE_KEYCHAIN_SERVICE)} -a ${quoteSecurityArgument(keychainAccount)} -X ${hex}\n`);
67
- },
68
- async clear(keychainAccount) {
69
- await securityStdin(`delete-generic-password -s ${quoteSecurityArgument(CLAUDE_KEYCHAIN_SERVICE)} -a ${quoteSecurityArgument(keychainAccount)}\n`);
70
- }
71
- };
72
- }
73
- var ClaudeProvider = class {
74
- id = "claude";
75
- name = "Anthropic Claude Code";
76
- shortName = "Claude";
77
- description = "Manages Claude Code native login credentials";
78
- credentials;
79
- isOwnerRunning;
80
- constructor(home = homedir(), opts = {}) {
81
- this.credentials = opts.credentialStore ?? createClaudeCredentialStore(home);
82
- this.isOwnerRunning = opts.isOwnerRunning ?? claudeCodeApplicationRunning;
83
- }
84
- sourceAdapter(account) {
85
- return claudeAccountAdapter(account);
86
- }
87
- async detectLive() {
88
- const current = await this.credentials.read();
89
- if (!current) return { present: false };
90
- return {
91
- present: true,
92
- identity: claudeCredentialIdentity(current.credential),
93
- details: "Claude Code secure credential store"
94
- };
95
- }
96
- async backup(destDir) {
97
- const current = await this.credentials.read();
98
- if (!current) throw new AnyPickError("No signed-in Claude Code account was found.", "NO_LIVE_AUTH");
99
- await writeJsonFile(join(destDir, SNAPSHOT_FILE), {
100
- version: 1,
101
- account: current.account,
102
- credential: current.credential
103
- }, 384);
104
- return { identity: claudeCredentialIdentity(current.credential) };
105
- }
106
- async preflightRestore(_srcDir) {
107
- if (await this.isOwnerRunning()) throw new AnyPickError("Claude Code is still running.", {
108
- code: "RESTORE_OWNER_RUNNING",
109
- suggestions: ["Quit Claude Code completely, then retry the account switch."]
110
- });
111
- }
112
- async restoreOwnerStatus(_srcDir) {
113
- return {
114
- name: "Claude Code",
115
- running: await this.isOwnerRunning()
116
- };
117
- }
118
- async restore(srcDir) {
119
- const snapshot = await readClaudeSnapshot(srcDir);
120
- await this.credentials.write(snapshot.account, snapshot.credential);
121
- }
122
- async clearLive() {
123
- const current = await this.credentials.read();
124
- if (current) await this.credentials.clear(current.account);
125
- }
126
- async describeSnapshot(srcDir) {
127
- const snapshot = await readClaudeSnapshot(srcDir).catch(() => null);
128
- return snapshot ? { identity: claudeCredentialIdentity(snapshot.credential) } : {};
129
- }
130
- async snapshotMatchesLive(srcDir) {
131
- const [current, snapshot] = await Promise.all([this.credentials.read().catch(() => null), readClaudeSnapshot(srcDir).catch(() => null)]);
132
- if (!current || !snapshot) return false;
133
- return claudeCredentialFingerprint(current.credential) === claudeCredentialFingerprint(snapshot.credential);
134
- }
135
- };
136
- async function readClaudeSnapshot(srcDir) {
137
- const snapshot = await readJsonFile(join(srcDir, SNAPSHOT_FILE));
138
- if (snapshot.version !== 1 || typeof snapshot.account !== "string" || !snapshot.account || typeof snapshot.credential !== "string" || !snapshot.credential) throw new Error("Claude Code credential snapshot is invalid.");
139
- return snapshot;
140
- }
141
- function claudeCredentialIdentity(raw) {
142
- try {
143
- const root = JSON.parse(raw);
144
- const oauth = root.claudeAiOauth;
145
- for (const candidate of [root.email, oauth?.email]) if (typeof candidate === "string" && candidate.trim()) return candidate.trim();
146
- const plan = oauth?.subscriptionType;
147
- return typeof plan === "string" && plan.trim() ? `Claude ${plan.trim()}` : void 0;
148
- } catch {
149
- return;
150
- }
151
- }
152
- function claudeCredentialFingerprint(raw) {
153
- let stable = raw;
154
- try {
155
- const oauth = JSON.parse(raw).claudeAiOauth;
156
- const refresh = oauth?.refreshToken ?? oauth?.refresh_token;
157
- if (typeof refresh === "string" && refresh.trim()) stable = refresh.trim();
158
- } catch {}
159
- return createHash("sha256").update(stable).digest("hex");
160
- }
161
- async function claudeCodeApplicationRunning() {
162
- if (process.platform !== "darwin") return false;
163
- try {
164
- const { stdout } = await execFileAsync("/bin/ps", ["-axo", "comm="], {
165
- encoding: "utf8",
166
- maxBuffer: 8 * 1024 * 1024
167
- });
168
- return stdout.split(/\r?\n/gu).some((line) => {
169
- const executable = line.trim();
170
- return executable === "claude" || executable.endsWith("/Claude.app/Contents/MacOS/Claude");
171
- });
172
- } catch {
173
- return false;
174
- }
175
- }
176
- function quoteSecurityArgument(value) {
177
- return `'${value.replaceAll("\\", "\\\\").replaceAll("'", "'\\\\''")}'`;
178
- }
179
- function securityStdin(command) {
180
- return new Promise((resolve, reject) => {
181
- execFile(SECURITY_BIN, ["-i"], { timeout: SECURITY_TIMEOUT_MS }, (err) => {
182
- if (err) reject(/* @__PURE__ */ new Error("macOS Keychain rejected the Claude Code credential update."));
183
- else resolve();
184
- }).stdin?.end(command);
185
- });
186
- }
187
- var claudeProvider = new ClaudeProvider();
188
- //#endregion
189
- export { ClaudeProvider, claudeProvider, createClaudeCredentialStore };
190
-
191
- //# sourceMappingURL=claude.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude.js","names":[],"sources":["../../src/providers/claude.ts"],"sourcesContent":["import { createHash } from 'node:crypto';\nimport { execFile } from 'node:child_process';\nimport { homedir, userInfo } from 'node:os';\nimport { join } from 'node:path';\nimport { promisify } from 'node:util';\nimport { readFile, rm } from 'node:fs/promises';\nimport type { Account, LiveAuthStatus, Provider, SnapshotMeta, SourceAdapter } from '../types';\nimport { claudeAccountAdapter } from '../sources/account-adapters';\nimport { AnyPickError } from '../utils/errors';\nimport { pathExists, readJsonFile, writeJsonFile, writeTextFile } from '../utils/fs';\n\nconst execFileAsync = promisify(execFile);\nconst SECURITY_BIN = '/usr/bin/security';\nconst SECURITY_TIMEOUT_MS = 5_000;\nconst CLAUDE_KEYCHAIN_SERVICE = 'Claude Code-credentials';\nconst SNAPSHOT_FILE = 'credentials.json';\n\ninterface ClaudeCredentialSnapshot {\n version: 1;\n account: string;\n credential: string;\n}\n\nexport interface ClaudeCredentialStore {\n read(): Promise<{ account: string; credential: string } | null>;\n write(account: string, credential: string): Promise<void>;\n clear(account: string): Promise<void>;\n}\n\ninterface ClaudeProviderOptions {\n credentialStore?: ClaudeCredentialStore;\n isOwnerRunning?: () => Promise<boolean>;\n}\n\n/**\n * Claude Code keeps OAuth/API credentials in macOS Keychain and falls back to\n * ~/.claude/.credentials.json on file-backed platforms. This store mirrors\n * those two authorities without ever putting the secret in process argv.\n */\nexport function createClaudeCredentialStore(home = homedir()): ClaudeCredentialStore {\n const account = userInfo().username;\n const file =\n process.env.ANYPICK_CLAUDE_CREDENTIALS_PATH ?? join(home, '.claude', '.credentials.json');\n const useKeychain =\n process.platform === 'darwin' && process.env.ANYPICK_CLAUDE_NO_KEYCHAIN !== '1';\n\n if (!useKeychain) {\n return {\n async read() {\n if (!(await pathExists(file))) {\n return null;\n }\n const credential = await readFile(file, 'utf8');\n return credential.trim() ? { account, credential } : null;\n },\n async write(_account, credential) {\n await writeTextFile(\n file,\n credential.endsWith('\\n') ? credential : `${credential}\\n`,\n 0o600,\n );\n },\n async clear() {\n await rm(file, { force: true });\n },\n };\n }\n\n return {\n async read() {\n try {\n const { stdout } = await execFileAsync(\n SECURITY_BIN,\n ['find-generic-password', '-s', CLAUDE_KEYCHAIN_SERVICE, '-a', account, '-w'],\n { encoding: 'utf8', timeout: SECURITY_TIMEOUT_MS, maxBuffer: 1024 * 1024 },\n );\n const credential = stdout.trim();\n return credential ? { account, credential } : null;\n } catch {\n return null;\n }\n },\n async write(keychainAccount, credential) {\n const hex = Buffer.from(credential, 'utf8').toString('hex');\n await securityStdin(\n `add-generic-password -U -s ${quoteSecurityArgument(CLAUDE_KEYCHAIN_SERVICE)} -a ${quoteSecurityArgument(\n keychainAccount,\n )} -X ${hex}\\n`,\n );\n },\n async clear(keychainAccount) {\n await securityStdin(\n `delete-generic-password -s ${quoteSecurityArgument(CLAUDE_KEYCHAIN_SERVICE)} -a ${quoteSecurityArgument(\n keychainAccount,\n )}\\n`,\n );\n },\n };\n}\n\nexport class ClaudeProvider implements Provider {\n readonly id = 'claude';\n readonly name = 'Anthropic Claude Code';\n readonly shortName = 'Claude';\n readonly description = 'Manages Claude Code native login credentials';\n\n private readonly credentials: ClaudeCredentialStore;\n private readonly isOwnerRunning: () => Promise<boolean>;\n\n constructor(home = homedir(), opts: ClaudeProviderOptions = {}) {\n this.credentials = opts.credentialStore ?? createClaudeCredentialStore(home);\n this.isOwnerRunning = opts.isOwnerRunning ?? claudeCodeApplicationRunning;\n }\n\n sourceAdapter(account: Account): SourceAdapter {\n return claudeAccountAdapter(account);\n }\n\n async detectLive(): Promise<LiveAuthStatus> {\n const current = await this.credentials.read();\n if (!current) {\n return { present: false };\n }\n return {\n present: true,\n identity: claudeCredentialIdentity(current.credential),\n details: 'Claude Code secure credential store',\n };\n }\n\n async backup(destDir: string): Promise<SnapshotMeta> {\n const current = await this.credentials.read();\n if (!current) {\n throw new AnyPickError('No signed-in Claude Code account was found.', 'NO_LIVE_AUTH');\n }\n await writeJsonFile(\n join(destDir, SNAPSHOT_FILE),\n {\n version: 1,\n account: current.account,\n credential: current.credential,\n } satisfies ClaudeCredentialSnapshot,\n 0o600,\n );\n return { identity: claudeCredentialIdentity(current.credential) };\n }\n\n async preflightRestore(_srcDir: string): Promise<void> {\n if (await this.isOwnerRunning()) {\n throw new AnyPickError('Claude Code is still running.', {\n code: 'RESTORE_OWNER_RUNNING',\n suggestions: ['Quit Claude Code completely, then retry the account switch.'],\n });\n }\n }\n\n async restoreOwnerStatus(_srcDir: string): Promise<{ name: string; running: boolean }> {\n return { name: 'Claude Code', running: await this.isOwnerRunning() };\n }\n\n async restore(srcDir: string): Promise<void> {\n const snapshot = await readClaudeSnapshot(srcDir);\n await this.credentials.write(snapshot.account, snapshot.credential);\n }\n\n async clearLive(): Promise<void> {\n const current = await this.credentials.read();\n if (current) {\n await this.credentials.clear(current.account);\n }\n }\n\n async describeSnapshot(srcDir: string): Promise<SnapshotMeta> {\n const snapshot = await readClaudeSnapshot(srcDir).catch(() => null);\n return snapshot ? { identity: claudeCredentialIdentity(snapshot.credential) } : {};\n }\n\n async snapshotMatchesLive(srcDir: string): Promise<boolean> {\n const [current, snapshot] = await Promise.all([\n this.credentials.read().catch(() => null),\n readClaudeSnapshot(srcDir).catch(() => null),\n ]);\n if (!current || !snapshot) {\n return false;\n }\n return (\n claudeCredentialFingerprint(current.credential) ===\n claudeCredentialFingerprint(snapshot.credential)\n );\n }\n}\n\nasync function readClaudeSnapshot(srcDir: string): Promise<ClaudeCredentialSnapshot> {\n const snapshot = await readJsonFile<ClaudeCredentialSnapshot>(join(srcDir, SNAPSHOT_FILE));\n if (\n snapshot.version !== 1 ||\n typeof snapshot.account !== 'string' ||\n !snapshot.account ||\n typeof snapshot.credential !== 'string' ||\n !snapshot.credential\n ) {\n throw new Error('Claude Code credential snapshot is invalid.');\n }\n return snapshot;\n}\n\nfunction claudeCredentialIdentity(raw: string): string | undefined {\n try {\n const root = JSON.parse(raw) as Record<string, unknown>;\n const oauth = root.claudeAiOauth as Record<string, unknown> | undefined;\n for (const candidate of [root.email, oauth?.email]) {\n if (typeof candidate === 'string' && candidate.trim()) {\n return candidate.trim();\n }\n }\n const plan = oauth?.subscriptionType;\n return typeof plan === 'string' && plan.trim() ? `Claude ${plan.trim()}` : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction claudeCredentialFingerprint(raw: string): string {\n let stable = raw;\n try {\n const root = JSON.parse(raw) as Record<string, unknown>;\n const oauth = root.claudeAiOauth as Record<string, unknown> | undefined;\n const refresh = oauth?.refreshToken ?? oauth?.refresh_token;\n if (typeof refresh === 'string' && refresh.trim()) {\n stable = refresh.trim();\n }\n } catch {\n // A future credential envelope is still safely comparable as opaque text.\n }\n return createHash('sha256').update(stable).digest('hex');\n}\n\nasync function claudeCodeApplicationRunning(): Promise<boolean> {\n if (process.platform !== 'darwin') {\n return false;\n }\n try {\n const { stdout } = await execFileAsync('/bin/ps', ['-axo', 'comm='], {\n encoding: 'utf8',\n maxBuffer: 8 * 1024 * 1024,\n });\n return stdout.split(/\\r?\\n/gu).some((line) => {\n const executable = line.trim();\n return executable === 'claude' || executable.endsWith('/Claude.app/Contents/MacOS/Claude');\n });\n } catch {\n return false;\n }\n}\n\nfunction quoteSecurityArgument(value: string): string {\n return `'${value.replaceAll('\\\\', '\\\\\\\\').replaceAll(\"'\", \"'\\\\\\\\''\")}'`;\n}\n\nfunction securityStdin(command: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const child = execFile(SECURITY_BIN, ['-i'], { timeout: SECURITY_TIMEOUT_MS }, (err) => {\n if (err) {\n reject(new Error('macOS Keychain rejected the Claude Code credential update.'));\n } else {\n resolve();\n }\n });\n child.stdin?.end(command);\n });\n}\n\nexport const claudeProvider = new ClaudeProvider();\n"],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- export declare function hasCodexAuth(data: Record<string, unknown>): boolean;
2
- export declare function codexAccountId(data: Record<string, unknown>): string | undefined;
3
- /**
4
- * Best-effort identity for display.
5
- *
6
- * Codex CLI writes ~/.codex/auth.json with either:
7
- * - ChatGPT OAuth: `tokens.{id_token,access_token,refresh_token,account_id}` + auth_mode
8
- * - API key: `OPENAI_API_KEY` string
9
- *
10
- * Email lives on id_token.email or access_token["https://api.openai.com/profile"].email.
11
- */
12
- export declare function extractCodexIdentity(data: Record<string, unknown>): string | undefined;
13
- //# sourceMappingURL=codex-identity.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-identity.d.ts","sourceRoot":"","sources":["../../src/providers/codex-identity.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAUnE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAShF;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CA8BtF"}
@@ -1,69 +0,0 @@
1
- //#region src/providers/codex-identity.ts
2
- function hasCodexAuth(data) {
3
- if (typeof data.OPENAI_API_KEY === "string" && data.OPENAI_API_KEY.trim()) return true;
4
- const tokens = data.tokens;
5
- if (tokens && typeof tokens === "object") {
6
- const t = tokens;
7
- return Boolean(t.access_token || t.refresh_token || t.id_token);
8
- }
9
- return false;
10
- }
11
- function codexAccountId(data) {
12
- const tokens = data.tokens;
13
- if (tokens && typeof tokens === "object") {
14
- const id = tokens.account_id;
15
- if (typeof id === "string" && id.trim()) return id.trim();
16
- }
17
- }
18
- /**
19
- * Best-effort identity for display.
20
- *
21
- * Codex CLI writes ~/.codex/auth.json with either:
22
- * - ChatGPT OAuth: `tokens.{id_token,access_token,refresh_token,account_id}` + auth_mode
23
- * - API key: `OPENAI_API_KEY` string
24
- *
25
- * Email lives on id_token.email or access_token["https://api.openai.com/profile"].email.
26
- */
27
- function extractCodexIdentity(data) {
28
- const tokens = data.tokens;
29
- if (tokens && typeof tokens === "object") {
30
- const t = tokens;
31
- const fromId = claimsFromJwt(typeof t.id_token === "string" ? t.id_token : null);
32
- const fromAccess = claimsFromJwt(typeof t.access_token === "string" ? t.access_token : null);
33
- const email = stringClaim(fromId, "email") ?? stringClaim(fromAccess, "email") ?? nestedEmail(fromAccess, "https://api.openai.com/profile") ?? nestedEmail(fromId, "https://api.openai.com/profile");
34
- if (email) return email;
35
- const name = stringClaim(fromId, "name") ?? stringClaim(fromAccess, "name");
36
- if (name) return name;
37
- if (typeof t.account_id === "string" && t.account_id) return `chatgpt:${t.account_id.slice(0, 8)}`;
38
- }
39
- if (typeof data.OPENAI_API_KEY === "string" && data.OPENAI_API_KEY.trim()) return "API key";
40
- }
41
- function claimsFromJwt(token) {
42
- if (!token) return null;
43
- try {
44
- const parts = token.split(".");
45
- if (parts.length < 2 || !parts[1]) return null;
46
- let b64 = parts[1].replace(/-/g, "+").replace(/_/g, "/");
47
- const pad = b64.length % 4;
48
- if (pad) b64 += "=".repeat(4 - pad);
49
- return JSON.parse(Buffer.from(b64, "base64").toString("utf8"));
50
- } catch {
51
- return null;
52
- }
53
- }
54
- function stringClaim(claims, key) {
55
- if (!claims) return;
56
- const v = claims[key];
57
- return typeof v === "string" && v.trim() ? v.trim() : void 0;
58
- }
59
- function nestedEmail(claims, key) {
60
- if (!claims) return;
61
- const nest = claims[key];
62
- if (!nest || typeof nest !== "object") return;
63
- const email = nest.email;
64
- return typeof email === "string" && email.trim() ? email.trim() : void 0;
65
- }
66
- //#endregion
67
- export { codexAccountId, extractCodexIdentity, hasCodexAuth };
68
-
69
- //# sourceMappingURL=codex-identity.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-identity.js","names":[],"sources":["../../src/providers/codex-identity.ts"],"sourcesContent":["export function hasCodexAuth(data: Record<string, unknown>): boolean {\n if (typeof data.OPENAI_API_KEY === 'string' && data.OPENAI_API_KEY.trim()) {\n return true;\n }\n const tokens = data.tokens;\n if (tokens && typeof tokens === 'object') {\n const t = tokens as Record<string, unknown>;\n return Boolean(t.access_token || t.refresh_token || t.id_token);\n }\n return false;\n}\n\nexport function codexAccountId(data: Record<string, unknown>): string | undefined {\n const tokens = data.tokens;\n if (tokens && typeof tokens === 'object') {\n const id = (tokens as Record<string, unknown>).account_id;\n if (typeof id === 'string' && id.trim()) {\n return id.trim();\n }\n }\n return undefined;\n}\n\n/**\n * Best-effort identity for display.\n *\n * Codex CLI writes ~/.codex/auth.json with either:\n * - ChatGPT OAuth: `tokens.{id_token,access_token,refresh_token,account_id}` + auth_mode\n * - API key: `OPENAI_API_KEY` string\n *\n * Email lives on id_token.email or access_token[\"https://api.openai.com/profile\"].email.\n */\nexport function extractCodexIdentity(data: Record<string, unknown>): string | undefined {\n const tokens = data.tokens;\n if (tokens && typeof tokens === 'object') {\n const t = tokens as Record<string, unknown>;\n const fromId = claimsFromJwt(typeof t.id_token === 'string' ? t.id_token : null);\n const fromAccess = claimsFromJwt(typeof t.access_token === 'string' ? t.access_token : null);\n\n const email =\n stringClaim(fromId, 'email') ??\n stringClaim(fromAccess, 'email') ??\n nestedEmail(fromAccess, 'https://api.openai.com/profile') ??\n nestedEmail(fromId, 'https://api.openai.com/profile');\n if (email) {\n return email;\n }\n\n const name = stringClaim(fromId, 'name') ?? stringClaim(fromAccess, 'name');\n if (name) {\n return name;\n }\n\n if (typeof t.account_id === 'string' && t.account_id) {\n return `chatgpt:${t.account_id.slice(0, 8)}`;\n }\n }\n\n if (typeof data.OPENAI_API_KEY === 'string' && data.OPENAI_API_KEY.trim()) {\n return 'API key';\n }\n return undefined;\n}\n\nfunction claimsFromJwt(token: string | null): Record<string, unknown> | null {\n if (!token) {\n return null;\n }\n try {\n const parts = token.split('.');\n if (parts.length < 2 || !parts[1]) {\n return null;\n }\n // Accept base64url or standard base64 (with/without padding).\n let b64 = parts[1].replace(/-/g, '+').replace(/_/g, '/');\n const pad = b64.length % 4;\n if (pad) {\n b64 += '='.repeat(4 - pad);\n }\n return JSON.parse(Buffer.from(b64, 'base64').toString('utf8')) as Record<string, unknown>;\n } catch {\n return null;\n }\n}\n\nfunction stringClaim(claims: Record<string, unknown> | null, key: string): string | undefined {\n if (!claims) {\n return undefined;\n }\n const v = claims[key];\n return typeof v === 'string' && v.trim() ? v.trim() : undefined;\n}\n\nfunction nestedEmail(claims: Record<string, unknown> | null, key: string): string | undefined {\n if (!claims) {\n return undefined;\n }\n const nest = claims[key];\n if (!nest || typeof nest !== 'object') {\n return undefined;\n }\n const email = (nest as Record<string, unknown>).email;\n return typeof email === 'string' && email.trim() ? email.trim() : undefined;\n}\n"],"mappings":";AAAA,SAAgB,aAAa,MAAwC;CACnE,IAAI,OAAO,KAAK,mBAAmB,YAAY,KAAK,eAAe,KAAK,GACtE,OAAO;CAET,MAAM,SAAS,KAAK;CACpB,IAAI,UAAU,OAAO,WAAW,UAAU;EACxC,MAAM,IAAI;EACV,OAAO,QAAQ,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,QAAQ;CAChE;CACA,OAAO;AACT;AAEA,SAAgB,eAAe,MAAmD;CAChF,MAAM,SAAS,KAAK;CACpB,IAAI,UAAU,OAAO,WAAW,UAAU;EACxC,MAAM,KAAM,OAAmC;EAC/C,IAAI,OAAO,OAAO,YAAY,GAAG,KAAK,GACpC,OAAO,GAAG,KAAK;CAEnB;AAEF;;;;;;;;;;AAWA,SAAgB,qBAAqB,MAAmD;CACtF,MAAM,SAAS,KAAK;CACpB,IAAI,UAAU,OAAO,WAAW,UAAU;EACxC,MAAM,IAAI;EACV,MAAM,SAAS,cAAc,OAAO,EAAE,aAAa,WAAW,EAAE,WAAW,IAAI;EAC/E,MAAM,aAAa,cAAc,OAAO,EAAE,iBAAiB,WAAW,EAAE,eAAe,IAAI;EAE3F,MAAM,QACJ,YAAY,QAAQ,OAAO,KAC3B,YAAY,YAAY,OAAO,KAC/B,YAAY,YAAY,gCAAgC,KACxD,YAAY,QAAQ,gCAAgC;EACtD,IAAI,OACF,OAAO;EAGT,MAAM,OAAO,YAAY,QAAQ,MAAM,KAAK,YAAY,YAAY,MAAM;EAC1E,IAAI,MACF,OAAO;EAGT,IAAI,OAAO,EAAE,eAAe,YAAY,EAAE,YACxC,OAAO,WAAW,EAAE,WAAW,MAAM,GAAG,CAAC;CAE7C;CAEA,IAAI,OAAO,KAAK,mBAAmB,YAAY,KAAK,eAAe,KAAK,GACtE,OAAO;AAGX;AAEA,SAAS,cAAc,OAAsD;CAC3E,IAAI,CAAC,OACH,OAAO;CAET,IAAI;EACF,MAAM,QAAQ,MAAM,MAAM,GAAG;EAC7B,IAAI,MAAM,SAAS,KAAK,CAAC,MAAM,IAC7B,OAAO;EAGT,IAAI,MAAM,MAAM,EAAE,CAAC,QAAQ,MAAM,GAAG,CAAC,CAAC,QAAQ,MAAM,GAAG;EACvD,MAAM,MAAM,IAAI,SAAS;EACzB,IAAI,KACF,OAAO,IAAI,OAAO,IAAI,GAAG;EAE3B,OAAO,KAAK,MAAM,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC;CAC/D,QAAQ;EACN,OAAO;CACT;AACF;AAEA,SAAS,YAAY,QAAwC,KAAiC;CAC5F,IAAI,CAAC,QACH;CAEF,MAAM,IAAI,OAAO;CACjB,OAAO,OAAO,MAAM,YAAY,EAAE,KAAK,IAAI,EAAE,KAAK,IAAI,KAAA;AACxD;AAEA,SAAS,YAAY,QAAwC,KAAiC;CAC5F,IAAI,CAAC,QACH;CAEF,MAAM,OAAO,OAAO;CACpB,IAAI,CAAC,QAAQ,OAAO,SAAS,UAC3B;CAEF,MAAM,QAAS,KAAiC;CAChD,OAAO,OAAO,UAAU,YAAY,MAAM,KAAK,IAAI,MAAM,KAAK,IAAI,KAAA;AACpE"}
@@ -1,30 +0,0 @@
1
- /**
2
- * ChatGPT / Codex OAuth token refresh (no browser).
3
- *
4
- * Endpoint + client_id match the official Codex CLI binary
5
- * (https://auth.openai.com/oauth/token, app_EMoamEEZ73f0CkXaXp7hrann).
6
- */
7
- export declare const CODEX_OAUTH_TOKEN_URL: string;
8
- export declare const CODEX_OAUTH_CLIENT_ID = "app_EMoamEEZ73f0CkXaXp7hrann";
9
- export interface CodexAuthFile {
10
- auth_mode?: string;
11
- OPENAI_API_KEY?: string | null;
12
- tokens?: {
13
- id_token?: string;
14
- access_token?: string;
15
- refresh_token?: string;
16
- account_id?: string;
17
- [key: string]: unknown;
18
- };
19
- last_refresh?: string;
20
- [key: string]: unknown;
21
- }
22
- export interface CodexRefreshResult {
23
- auth: CodexAuthFile;
24
- identity?: string;
25
- }
26
- /**
27
- * Refresh Codex ChatGPT OAuth tokens in-memory from an auth.json object.
28
- */
29
- export declare function refreshCodexAuth(auth: CodexAuthFile, fetchFn?: typeof fetch): Promise<CodexRefreshResult>;
30
- //# sourceMappingURL=codex-refresh.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-refresh.d.ts","sourceRoot":"","sources":["../../src/providers/codex-refresh.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,qBAAqB,QAC6D,CAAC;AAEhG,eAAO,MAAM,qBAAqB,iCAAiC,CAAC;AAEpE,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,MAAM,CAAC,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,aAAa,EACnB,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,kBAAkB,CAAC,CAqD7B"}