anypick 1.0.0 → 1.1.1

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,1240 +0,0 @@
1
- import { writeJsonFile } from "../../utils/fs.js";
2
- import { assertLoopbackHost } from "../../utils/network.js";
3
- import { withFileLock } from "../../utils/lock.js";
4
- import { QuotaGuard } from "../quota-guard.js";
5
- import { readGeminiApiKeyFromEnvFile } from "../gemini-env.js";
6
- import { loadAntigravityOAuthCredentials } from "../gemini-antigravity-oauth.js";
7
- import { compareGeminiModelIds, resolveGeminiModel } from "../protocol/gemini/translate-models.js";
8
- import { reasoningFromAnthropic, reasoningFromOpenAI } from "../reasoning.js";
9
- import { geminiToOpenAI, openAIToGemini } from "../protocol/gemini/translate-chat.js";
10
- import { geminiToOpenAIResponses, openAIResponsesToGemini } from "../protocol/gemini/translate-responses.js";
11
- import { anthropicToGemini, geminiToAnthropic } from "../protocol/gemini/translate-anthropic.js";
12
- import { normalizeLocalApiUrl, readBody, requireProxyAuth } from "../proxy-shared.js";
13
- import { CooldownRegistry, classifyUpstreamFailure, isCredentialQuotaFailure } from "../upstream-policy.js";
14
- import "../gemini.js";
15
- import { join } from "node:path";
16
- import { readFile } from "node:fs/promises";
17
- import { randomUUID } from "node:crypto";
18
- import { createServer } from "node:http";
19
- //#region src/providers/gemini-proxy/server.ts
20
- /**
21
- * Dual-protocol reverse proxy: OpenAI + Anthropic → Google Gemini API.
22
- *
23
- * Codex OPENAI_BASE_URL → POST /v1/responses (and chat/completions)
24
- * Claude ANTHROPIC_BASE_URL → POST /v1/messages
25
- *
26
- * Auth: GEMINI_API_KEY (or GOOGLE_API_KEY) from snapshot .env / live path.
27
- * Upstream: generativelanguage.googleapis.com (generateContent).
28
- */
29
- var COMPAT_LABEL = "OpenAI + Anthropic → Gemini API";
30
- var DEFAULT_UPSTREAM = "https://generativelanguage.googleapis.com";
31
- var CODE_ASSIST_UPSTREAM = "https://cloudcode-pa.googleapis.com";
32
- var ANTIGRAVITY_CODE_ASSIST_UPSTREAM = "https://daily-cloudcode-pa.googleapis.com";
33
- var OAUTH_CLIENT_ID = "681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com";
34
- var OAUTH_CLIENT_SECRET = "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";
35
- var ANTIGRAVITY_OAUTH_CLIENT_ID = "1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com";
36
- var ANTIGRAVITY_OAUTH_CLIENT_SECRET = "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";
37
- var MODEL_CATALOG_TTL_MS = 10 * 6e4;
38
- var MODEL_CATALOG_FAILURE_TTL_MS = 6e4;
39
- function isAuthEntitlementRejection(error) {
40
- const message = error instanceof Error ? error.message : String(error);
41
- return /(?:HTTP\s*)?\b(?:401|403)\b|unauthorized|forbidden|permission denied/i.test(message);
42
- }
43
- function reasoningIntentToModelEffort(intent) {
44
- if (intent.budgetTokens != null) return;
45
- if (intent.enabled === false) return "minimal";
46
- return intent.effort ?? (intent.enabled === true ? "medium" : void 0);
47
- }
48
- function createGeminiProxyServer(opts) {
49
- assertLoopbackHost(opts.host);
50
- const upstream = (opts.upstream ?? DEFAULT_UPSTREAM).replace(/\/$/, "");
51
- const oauthSource = opts.oauthSource ?? "auto";
52
- const proxyToken = opts.token ?? process.env.ANYPICK_PROXY_TOKEN ?? "";
53
- const oauthProfile = (source) => source === "antigravity" ? {
54
- clientId: process.env.ANTIGRAVITY_OAUTH_CLIENT_ID?.trim() || ANTIGRAVITY_OAUTH_CLIENT_ID,
55
- clientSecret: process.env.ANTIGRAVITY_OAUTH_CLIENT_SECRET?.trim() || ANTIGRAVITY_OAUTH_CLIENT_SECRET,
56
- ideType: "ANTIGRAVITY",
57
- userAgent: "antigravity/hub/2.3.1 (aidev_client)"
58
- } : {
59
- clientId: OAUTH_CLIENT_ID,
60
- clientSecret: OAUTH_CLIENT_SECRET,
61
- ideType: "GEMINI_CLI"
62
- };
63
- const codeAssistBase = (source) => (opts.codeAssistUpstream ?? (source === "antigravity" ? ANTIGRAVITY_CODE_ASSIST_UPSTREAM : CODE_ASSIST_UPSTREAM)).replace(/\/$/, "");
64
- const log = opts.log ?? (opts.quiet ? () => {} : (line) => process.stderr.write(`${line}\n`));
65
- /** Ordered API keys; Quota Guard may promote a healthy pool account. */
66
- let keyRing = [];
67
- const oauthStates = /* @__PURE__ */ new Map();
68
- const oauthRefreshInflight = /* @__PURE__ */ new Map();
69
- const modelCatalogs = /* @__PURE__ */ new Map();
70
- const modelCatalogInflight = /* @__PURE__ */ new Map();
71
- const modelCatalogFailures = /* @__PURE__ */ new Map();
72
- /**
73
- * Keep a proven auto-auth route sticky for this process. Without this, every
74
- * model-list poll starts at Gemini CLI again even after its account returned
75
- * 401/403 and Antigravity served the request successfully.
76
- */
77
- let autoActiveRoute;
78
- const proxySessionId = randomUUID();
79
- const cooldowns = new CooldownRegistry();
80
- const quotaGuard = new QuotaGuard(opts.quotaGuard ?? {
81
- enabled: false,
82
- cooldownMs: 60 * 6e4
83
- });
84
- const server = createServer((req, res) => {
85
- handle(req, res);
86
- });
87
- async function loadKeyRing() {
88
- if (opts.apiKey?.trim()) return [{ key: opts.apiKey.trim() }];
89
- if (keyRing.length) return keyRing;
90
- const dirs = opts.authDirs && opts.authDirs.length > 0 ? opts.authDirs : [opts.authDir];
91
- const keys = [];
92
- for (const [index, dir] of dirs.entries()) {
93
- const k = await readGeminiApiKeyFromEnvFile(dir.endsWith(".env") ? dir : join(dir, ".env"));
94
- if (k && !keys.some((candidate) => candidate.key === k)) keys.push({
95
- key: k,
96
- accountName: opts.authAccountNames?.[index]
97
- });
98
- }
99
- if (keys.length === 0) {
100
- const envKey = process.env.GEMINI_API_KEY?.trim() || process.env.GOOGLE_API_KEY?.trim();
101
- if (envKey) keys.push({ key: envKey });
102
- }
103
- if (keys.length === 0) throw new Error(`No GEMINI_API_KEY in auth dir(s). Save an API-key Gemini login, or set GEMINI_API_KEY.`);
104
- keyRing = keys;
105
- return keys;
106
- }
107
- async function currentKey() {
108
- const keys = await loadKeyRing();
109
- return (await quotaGuard.ordered(keys))[0] ?? keys[0];
110
- }
111
- function oauthState(source) {
112
- const existing = oauthStates.get(source);
113
- if (existing) return existing;
114
- const created = { project: opts.oauthProject };
115
- oauthStates.set(source, created);
116
- return created;
117
- }
118
- async function loadOAuthCredentials(source) {
119
- const state = oauthState(source);
120
- if (state.credentials !== void 0) return state.credentials;
121
- if (source === "antigravity") {
122
- state.credentials = await loadAntigravityOAuthCredentials(opts.antigravityOAuthFile);
123
- return state.credentials;
124
- }
125
- const file = join(opts.authDir, "oauth_creds.json");
126
- try {
127
- const parsed = JSON.parse(await readFile(file, "utf8"));
128
- state.credentials = parsed.refresh_token || parsed.access_token ? parsed : null;
129
- } catch {
130
- state.credentials = null;
131
- }
132
- return state.credentials;
133
- }
134
- /** Respect the Gemini CLI's selected auth mode; a stale .env must not beat OAuth. */
135
- async function geminiCliRoute() {
136
- const credentials = await loadOAuthCredentials("gemini-cli");
137
- if (credentials && !opts.apiKey) try {
138
- const raw = await readFile(join(opts.authDir, "auth-settings.json"), "utf8");
139
- if (JSON.parse(raw).security?.auth?.selectedType === "oauth-personal") return "gemini-cli";
140
- } catch {
141
- return "gemini-cli";
142
- }
143
- try {
144
- await currentKey();
145
- return "api-key";
146
- } catch {
147
- if (credentials) return "gemini-cli";
148
- throw new Error("No usable Gemini CLI OAuth or API-key credential was found.");
149
- }
150
- }
151
- function activateAutoRoute(route, reason) {
152
- if (oauthSource !== "auto" || autoActiveRoute === route) return;
153
- autoActiveRoute = route;
154
- log(` auth auto: active route=${route} (${reason})`);
155
- }
156
- function resetAutoRoute(route, reason) {
157
- if (oauthSource !== "auto" || autoActiveRoute !== route) return;
158
- autoActiveRoute = void 0;
159
- log(` auth auto: reset route=${route} (${reason})`);
160
- }
161
- async function authRoutes(includeAntigravity) {
162
- if (oauthSource === "gemini-cli") return [await geminiCliRoute()];
163
- if (oauthSource === "antigravity") {
164
- if (!await loadOAuthCredentials("antigravity")) throw new Error("No Antigravity OAuth credentials found in the OS keychain.");
165
- return ["antigravity"];
166
- }
167
- if (autoActiveRoute === "antigravity") try {
168
- if (await loadOAuthCredentials("antigravity")) return ["antigravity"];
169
- resetAutoRoute("antigravity", "credentials unavailable");
170
- } catch (err) {
171
- resetAutoRoute("antigravity", err instanceof Error ? err.message : "credentials unavailable");
172
- }
173
- const routes = [];
174
- try {
175
- routes.push(await geminiCliRoute());
176
- } catch (err) {
177
- log(` auth auto: Gemini CLI unavailable (${err instanceof Error ? err.message : String(err)})`);
178
- }
179
- if (includeAntigravity) {
180
- if (opts.codeAssistUpstream && !opts.antigravityOAuthFile) {
181
- if (routes.length === 0) throw new Error("Antigravity auto-discovery is disabled for a custom Code Assist endpoint; provide antigravityOAuthFile.");
182
- return [...new Set(routes)];
183
- }
184
- try {
185
- if (await loadOAuthCredentials("antigravity")) routes.push("antigravity");
186
- } catch (err) {
187
- log(` auth auto: Antigravity unavailable (${err instanceof Error ? err.message : String(err)})`);
188
- }
189
- }
190
- if (routes.length === 0 && !includeAntigravity) return authRoutes(true);
191
- if (routes.length === 0) throw new Error("No usable Gemini CLI or Antigravity credential was found.");
192
- return [...new Set(routes)];
193
- }
194
- async function currentOAuthToken(source) {
195
- const credentials = await loadOAuthCredentials(source);
196
- if (!credentials) throw new Error(source === "antigravity" ? "No Antigravity OAuth credentials found in the OS keychain." : "No Gemini OAuth credentials found in oauth_creds.json.");
197
- if (!(!credentials.expiry_date || credentials.expiry_date < Date.now() + 6e4) && credentials.access_token) return credentials.access_token;
198
- if (!credentials.refresh_token) throw new Error("Gemini OAuth access token expired and no refresh token is available.");
199
- const existing = oauthRefreshInflight.get(source);
200
- if (existing) return existing;
201
- const refresh = refreshOAuthToken(source, credentials).finally(() => {
202
- oauthRefreshInflight.delete(source);
203
- });
204
- oauthRefreshInflight.set(source, refresh);
205
- return refresh;
206
- }
207
- async function refreshOAuthToken(source, initial) {
208
- const refresh = async (credentials) => {
209
- if (!credentials.refresh_token) throw new Error("Gemini OAuth access token expired and no refresh token is available.");
210
- const state = oauthState(source);
211
- const response = await fetch("https://oauth2.googleapis.com/token", {
212
- method: "POST",
213
- headers: { "content-type": "application/x-www-form-urlencoded" },
214
- body: new URLSearchParams({
215
- client_id: oauthProfile(source).clientId,
216
- client_secret: oauthProfile(source).clientSecret,
217
- refresh_token: credentials.refresh_token,
218
- grant_type: "refresh_token"
219
- }),
220
- signal: AbortSignal.timeout(3e4)
221
- });
222
- const body = await response.json().catch(() => ({}));
223
- if (!response.ok || !body.access_token) throw new GeminiUpstreamError(response.status || 401, response.headers, body.error_description || body.error || "Gemini OAuth refresh failed");
224
- const refreshed = {
225
- ...credentials,
226
- access_token: body.access_token,
227
- token_type: body.token_type ?? credentials.token_type ?? "Bearer",
228
- expiry_date: Date.now() + (body.expires_in ?? 3600) * 1e3
229
- };
230
- state.credentials = refreshed;
231
- if (source === "gemini-cli") await writeJsonFile(join(opts.authDir, "oauth_creds.json"), refreshed, 384);
232
- return refreshed.access_token;
233
- };
234
- if (source !== "gemini-cli") return refresh(initial);
235
- const authPath = join(opts.authDir, "oauth_creds.json");
236
- return withFileLock(`${authPath}.refresh.lock`, async () => {
237
- const state = oauthState(source);
238
- state.credentials = void 0;
239
- const latest = await loadOAuthCredentials(source);
240
- if (!latest) throw new Error("No Gemini OAuth credentials found in oauth_creds.json.");
241
- if (!(!latest.expiry_date || latest.expiry_date < Date.now() + 6e4) && latest.access_token) return latest.access_token;
242
- if (!latest.refresh_token) throw new Error("Gemini OAuth access token expired and no refresh token is available.");
243
- return refresh(latest);
244
- }, { resource: `Gemini OAuth refresh ${authPath}` });
245
- }
246
- async function resolveOAuthProject(source, token) {
247
- const state = oauthState(source);
248
- const profile = oauthProfile(source);
249
- if (state.project) return state.project;
250
- const response = await fetch(`${codeAssistBase(source)}/v1internal:loadCodeAssist`, {
251
- method: "POST",
252
- headers: {
253
- authorization: `Bearer ${token}`,
254
- "content-type": "application/json",
255
- ...profile.userAgent ? { "user-agent": profile.userAgent } : {}
256
- },
257
- body: JSON.stringify({ metadata: profile.ideType === "ANTIGRAVITY" ? { ideType: profile.ideType } : {
258
- ideType: profile.ideType,
259
- platform: process.platform === "darwin" ? "DARWIN_ARM64" : "PLATFORM_UNSPECIFIED",
260
- pluginType: "GEMINI"
261
- } }),
262
- signal: AbortSignal.timeout(3e4)
263
- });
264
- const body = await response.json().catch(() => ({}));
265
- if (!response.ok) throw new GeminiUpstreamError(response.status, response.headers, body.error?.message ?? `Code Assist loadCodeAssist HTTP ${response.status}`);
266
- state.project = body.cloudaicompanionProject || void 0;
267
- log(` OAuth ${source} tier=${body.currentTier?.id ?? "unknown"} project=${state.project ?? "managed"}`);
268
- return state.project;
269
- }
270
- async function refreshModelCatalog(route) {
271
- const existing = modelCatalogInflight.get(route);
272
- if (existing) return existing;
273
- const inflight = (async () => {
274
- let catalog;
275
- if (route !== "api-key") {
276
- const token = await currentOAuthToken(route);
277
- const project = await resolveOAuthProject(route, token);
278
- const profile = oauthProfile(route);
279
- catalog = await listGeminiModelsFromCodeAssist(codeAssistBase(route), token, project, log, profile.userAgent);
280
- } else catalog = { models: (await listGeminiModelsFromGoogle(upstream, (await currentKey()).key, log)).map((id) => ({ id })) };
281
- catalog = {
282
- ...catalog,
283
- models: catalog.models.toSorted((a, b) => compareGeminiModelIds(a.id, b.id))
284
- };
285
- modelCatalogs.set(route, {
286
- value: catalog,
287
- fetchedAt: Date.now()
288
- });
289
- modelCatalogFailures.delete(route);
290
- log(` list models ← ${catalog.models.length} auth=${route}`);
291
- return catalog;
292
- })().catch((error) => {
293
- modelCatalogFailures.set(route, {
294
- error,
295
- fetchedAt: Date.now()
296
- });
297
- resetAutoRoute(route, "model catalog unavailable");
298
- throw error;
299
- }).finally(() => {
300
- modelCatalogInflight.delete(route);
301
- });
302
- modelCatalogInflight.set(route, inflight);
303
- return inflight;
304
- }
305
- async function liveModelCatalog(route) {
306
- const cached = modelCatalogs.get(route);
307
- if (cached && Date.now() - cached.fetchedAt < MODEL_CATALOG_TTL_MS) return cached.value;
308
- const failed = modelCatalogFailures.get(route);
309
- if (failed && Date.now() - failed.fetchedAt < MODEL_CATALOG_FAILURE_TTL_MS) throw failed.error;
310
- return refreshModelCatalog(route);
311
- }
312
- async function resolveRequestModel(requested, effort) {
313
- const primaryRoutes = await authRoutes(false);
314
- let passthrough;
315
- let lastError;
316
- let primaryEntitlementRejected = false;
317
- for (const route of primaryRoutes) try {
318
- const catalog = await liveModelCatalog(route);
319
- const resolution = resolveGeminiModel(requested, catalog, effort);
320
- if (isCatalogResolution(resolution, catalog)) return {
321
- ...resolution,
322
- route
323
- };
324
- passthrough ??= {
325
- ...resolution,
326
- route
327
- };
328
- } catch (err) {
329
- lastError = err;
330
- if (route !== "antigravity" && isAuthEntitlementRejection(err)) primaryEntitlementRejected = true;
331
- const resolution = resolveGeminiModel(requested, [], effort);
332
- if (resolution.id) passthrough ??= {
333
- ...resolution,
334
- route
335
- };
336
- }
337
- if (oauthSource === "auto" && !opts.apiKey) {
338
- const fallbackRoutes = (await authRoutes(true)).filter((route) => !primaryRoutes.includes(route));
339
- for (const route of fallbackRoutes) try {
340
- const catalog = await liveModelCatalog(route);
341
- const resolution = resolveGeminiModel(requested, catalog, effort);
342
- if (route === "antigravity" && primaryEntitlementRejected) activateAutoRoute(route, "Gemini CLI entitlement rejected");
343
- if (isCatalogResolution(resolution, catalog)) {
344
- log(` auth auto: ${requested ?? "(default)"} resolved via ${route}`);
345
- return {
346
- ...resolution,
347
- route
348
- };
349
- }
350
- if (primaryEntitlementRejected && resolution.id) passthrough = {
351
- ...resolution,
352
- route
353
- };
354
- else passthrough ??= {
355
- ...resolution,
356
- route
357
- };
358
- } catch (err) {
359
- lastError = err;
360
- }
361
- }
362
- if (passthrough?.id) {
363
- if (lastError) log(` model catalog unavailable; forwarding ${passthrough.id} unchanged (${lastError instanceof Error ? lastError.message : String(lastError)})`);
364
- return passthrough;
365
- }
366
- throw lastError ?? /* @__PURE__ */ new Error("No model could be discovered for the available credentials.");
367
- }
368
- async function handle(req, res) {
369
- const path = normalizeLocalApiUrl(req.url ?? "/").split("?")[0] ?? "/";
370
- const method = req.method ?? "GET";
371
- if (!checkCors(req, res)) return;
372
- if (method === "OPTIONS") {
373
- res.writeHead(204);
374
- res.end();
375
- return;
376
- }
377
- if ((method === "GET" || method === "HEAD") && (path === "/" || path === "/health")) {
378
- json(res, 200, {
379
- ok: true,
380
- service: "anypick-gemini-proxy",
381
- compatibility: COMPAT_LABEL,
382
- instanceId: process.env.ANYPICK_INSTANCE_ID ?? null,
383
- auth: "ok",
384
- clients: {
385
- codex: "OPENAI_BASE_URL → /v1/responses",
386
- claude: "ANTHROPIC_BASE_URL → /v1/messages"
387
- },
388
- endpoints: {
389
- openai: [
390
- "/v1/chat/completions",
391
- "/v1/responses",
392
- "/v1/models"
393
- ],
394
- anthropic: ["/v1/messages"]
395
- },
396
- oauthSource,
397
- upstream
398
- });
399
- return;
400
- }
401
- if (method === "GET" && path === "/v1/models") {
402
- if (!requireProxyAuth(req, res, proxyToken)) return;
403
- await handleListModels(res);
404
- return;
405
- }
406
- if (method === "POST" && path === "/v1/chat/completions") {
407
- if (!requireProxyAuth(req, res, proxyToken)) return;
408
- await handleOpenAI(req, res);
409
- return;
410
- }
411
- if (method === "POST" && path === "/v1/responses") {
412
- if (!requireProxyAuth(req, res, proxyToken)) return;
413
- await handleResponses(req, res);
414
- return;
415
- }
416
- if (method === "POST" && path === "/v1/messages") {
417
- if (!requireProxyAuth(req, res, proxyToken)) return;
418
- await handleAnthropic(req, res);
419
- return;
420
- }
421
- json(res, 404, { error: {
422
- message: `Not found: ${path}. Codex: /v1/responses · Claude: /v1/messages`,
423
- type: "not_found_error"
424
- } });
425
- }
426
- /** List only models discovered for the active API-key/OAuth account. */
427
- async function handleListModels(res) {
428
- try {
429
- const routes = await authRoutes(oauthSource === "auto" && !opts.apiKey);
430
- const discovered = [];
431
- let lastError;
432
- let primaryEntitlementRejected = false;
433
- for (const route of routes) try {
434
- const catalog = await liveModelCatalog(route);
435
- discovered.push({
436
- route,
437
- catalog
438
- });
439
- if (route === "antigravity" && primaryEntitlementRejected) activateAutoRoute(route, "Gemini CLI entitlement rejected");
440
- } catch (err) {
441
- lastError = err;
442
- if (route !== "antigravity" && isAuthEntitlementRejection(err)) primaryEntitlementRejected = true;
443
- log(` list models auth=${route} failed; trying next source`);
444
- }
445
- if (discovered.length === 0) throw lastError ?? /* @__PURE__ */ new Error("No auth source returned a Gemini model catalog.");
446
- const models = /* @__PURE__ */ new Map();
447
- for (const { route, catalog } of discovered) for (const descriptor of catalog.models) if (!models.has(descriptor.id)) models.set(descriptor.id, {
448
- descriptor,
449
- route
450
- });
451
- json(res, 200, {
452
- object: "list",
453
- data: [...models.values()].map(({ descriptor, route }) => {
454
- const value = {
455
- id: descriptor.id,
456
- object: "model",
457
- owned_by: route === "api-key" ? "google" : "google-code-assist"
458
- };
459
- if (descriptor.displayName) value.display_name = descriptor.displayName;
460
- return value;
461
- })
462
- });
463
- } catch (err) {
464
- const msg = err instanceof Error ? err.message : String(err);
465
- log(` list models ✗ ${msg}`);
466
- json(res, 502, { error: {
467
- message: `Failed to list Gemini models from Google: ${msg}`,
468
- type: "proxy_error"
469
- } });
470
- }
471
- }
472
- async function handleOpenAI(req, res) {
473
- log("POST /v1/chat/completions → Gemini");
474
- try {
475
- const raw = await readBody(req);
476
- let body;
477
- try {
478
- body = JSON.parse(raw.toString("utf8") || "{}");
479
- } catch {
480
- json(res, 400, { error: {
481
- message: "Invalid JSON body",
482
- type: "invalid_request_error"
483
- } });
484
- return;
485
- }
486
- const modelEffort = reasoningIntentToModelEffort(reasoningFromOpenAI(body));
487
- const resolution = await resolveRequestModel(body.model, modelEffort);
488
- if (!resolution.id) {
489
- json(res, 400, { error: {
490
- message: "model is required and no model could be discovered for this account",
491
- type: "invalid_request_error"
492
- } });
493
- return;
494
- }
495
- const model = resolution.id;
496
- if (resolution.remapped) log(` model ${body.model ?? "(empty)"} → ${model} (${resolution.reason ?? "catalog"}${modelEffort ? `, effort=${modelEffort}` : ""})`);
497
- const geminiBody = openAIToGemini(body, model);
498
- if (body.stream) {
499
- const result = await callGeminiWithAutoFallback(body.model, resolution, geminiBody, false, modelEffort);
500
- const responseModel = result.resolution.id;
501
- const openai = geminiToOpenAI(result.response, responseModel);
502
- if (openai.error) {
503
- json(res, 502, openai);
504
- return;
505
- }
506
- res.writeHead(200, {
507
- "content-type": "text/event-stream; charset=utf-8",
508
- "cache-control": "no-cache",
509
- connection: "keep-alive"
510
- });
511
- const content = openai.choices?.[0]?.message?.content ?? "";
512
- const reasoning = openai.choices?.[0]?.message?.reasoning_content ?? "";
513
- if (reasoning) res.write(`data: ${JSON.stringify({
514
- id: openai.id,
515
- object: "chat.completion.chunk",
516
- model: responseModel,
517
- choices: [{
518
- index: 0,
519
- delta: {
520
- role: "assistant",
521
- reasoning_content: reasoning
522
- },
523
- finish_reason: null
524
- }]
525
- })}\n\n`);
526
- res.write(`data: ${JSON.stringify({
527
- id: openai.id,
528
- object: "chat.completion.chunk",
529
- model: responseModel,
530
- choices: [{
531
- index: 0,
532
- delta: {
533
- role: "assistant",
534
- content
535
- },
536
- finish_reason: null
537
- }]
538
- })}\n\n`);
539
- res.write(`data: ${JSON.stringify({
540
- id: openai.id,
541
- object: "chat.completion.chunk",
542
- model: responseModel,
543
- choices: [{
544
- index: 0,
545
- delta: {},
546
- finish_reason: "stop"
547
- }]
548
- })}\n\n`);
549
- res.write("data: [DONE]\n\n");
550
- res.end();
551
- return;
552
- }
553
- const result = await callGeminiWithAutoFallback(body.model, resolution, geminiBody, false, modelEffort);
554
- const openai = geminiToOpenAI(result.response, result.resolution.id);
555
- if (openai.error) {
556
- json(res, 502, openai);
557
- return;
558
- }
559
- json(res, 200, openai);
560
- } catch (err) {
561
- const msg = err instanceof Error ? err.message : String(err);
562
- log(` ✗ ${msg}`);
563
- writeGeminiError(res, err, msg);
564
- }
565
- }
566
- async function handleAnthropic(req, res) {
567
- log("POST /v1/messages → Gemini");
568
- try {
569
- const raw = await readBody(req);
570
- let body;
571
- try {
572
- body = JSON.parse(raw.toString("utf8") || "{}");
573
- } catch {
574
- json(res, 400, {
575
- type: "error",
576
- error: {
577
- type: "invalid_request_error",
578
- message: "Invalid JSON body"
579
- }
580
- });
581
- return;
582
- }
583
- if (!body.model) {
584
- json(res, 400, {
585
- type: "error",
586
- error: {
587
- type: "invalid_request_error",
588
- message: "model is required"
589
- }
590
- });
591
- return;
592
- }
593
- if (body.max_tokens == null) body.max_tokens = 4096;
594
- const modelEffort = reasoningIntentToModelEffort(reasoningFromAnthropic(body));
595
- const resolution = await resolveRequestModel(body.model, modelEffort);
596
- if (!resolution.id) {
597
- json(res, 400, {
598
- type: "error",
599
- error: {
600
- type: "invalid_request_error",
601
- message: "No matching Gemini model is available for this account."
602
- }
603
- });
604
- return;
605
- }
606
- if (resolution.remapped) log(` model ${body.model} → ${resolution.id} (${resolution.reason ?? "catalog"}${modelEffort ? `, effort=${modelEffort}` : ""})`);
607
- const { gemini } = anthropicToGemini(body, resolution.id);
608
- const result = await callGeminiWithAutoFallback(body.model, resolution, gemini, false, modelEffort);
609
- const responseModel = result.resolution.id;
610
- const anthropic = geminiToAnthropic(result.response, responseModel);
611
- if ("type" in anthropic && anthropic.type === "error") {
612
- json(res, 502, anthropic);
613
- return;
614
- }
615
- if (body.stream) {
616
- const msg = anthropic;
617
- res.writeHead(200, {
618
- "content-type": "text/event-stream; charset=utf-8",
619
- "cache-control": "no-cache",
620
- connection: "keep-alive"
621
- });
622
- writeSse(res, "message_start", {
623
- type: "message_start",
624
- message: {
625
- id: msg.id ?? `msg_${Date.now()}`,
626
- type: "message",
627
- role: "assistant",
628
- model: responseModel,
629
- content: [],
630
- stop_reason: null,
631
- stop_sequence: null,
632
- usage: {
633
- input_tokens: msg.usage?.input_tokens ?? 0,
634
- output_tokens: 0
635
- }
636
- }
637
- });
638
- msg.content.forEach((block, index) => {
639
- if (block.type === "thinking") {
640
- writeSse(res, "content_block_start", {
641
- type: "content_block_start",
642
- index,
643
- content_block: {
644
- type: "thinking",
645
- thinking: "",
646
- signature: ""
647
- }
648
- });
649
- if (block.thinking) writeSse(res, "content_block_delta", {
650
- type: "content_block_delta",
651
- index,
652
- delta: {
653
- type: "thinking_delta",
654
- thinking: block.thinking
655
- }
656
- });
657
- if (block.signature) writeSse(res, "content_block_delta", {
658
- type: "content_block_delta",
659
- index,
660
- delta: {
661
- type: "signature_delta",
662
- signature: block.signature
663
- }
664
- });
665
- } else if (block.type === "tool_use") {
666
- writeSse(res, "content_block_start", {
667
- type: "content_block_start",
668
- index,
669
- content_block: {
670
- type: "tool_use",
671
- id: block.id,
672
- name: block.name,
673
- input: {},
674
- ...block.thought_signature ? { thought_signature: block.thought_signature } : {}
675
- }
676
- });
677
- writeSse(res, "content_block_delta", {
678
- type: "content_block_delta",
679
- index,
680
- delta: {
681
- type: "input_json_delta",
682
- partial_json: JSON.stringify(block.input ?? {})
683
- }
684
- });
685
- } else if (block.type === "redacted_thinking") writeSse(res, "content_block_start", {
686
- type: "content_block_start",
687
- index,
688
- content_block: block
689
- });
690
- else {
691
- writeSse(res, "content_block_start", {
692
- type: "content_block_start",
693
- index,
694
- content_block: {
695
- type: "text",
696
- text: ""
697
- }
698
- });
699
- if (block.text) writeSse(res, "content_block_delta", {
700
- type: "content_block_delta",
701
- index,
702
- delta: {
703
- type: "text_delta",
704
- text: block.text
705
- }
706
- });
707
- }
708
- writeSse(res, "content_block_stop", {
709
- type: "content_block_stop",
710
- index
711
- });
712
- });
713
- writeSse(res, "message_delta", {
714
- type: "message_delta",
715
- delta: {
716
- stop_reason: msg.stop_reason,
717
- stop_sequence: msg.stop_sequence
718
- },
719
- usage: { output_tokens: msg.usage?.output_tokens ?? 0 }
720
- });
721
- writeSse(res, "message_stop", { type: "message_stop" });
722
- res.end();
723
- return;
724
- }
725
- json(res, 200, anthropic);
726
- } catch (err) {
727
- const msg = err instanceof Error ? err.message : String(err);
728
- log(` ✗ ${msg}`);
729
- writeGeminiError(res, err, msg, true);
730
- }
731
- }
732
- async function handleResponses(req, res) {
733
- log("POST /v1/responses → Gemini");
734
- try {
735
- const raw = await readBody(req);
736
- let body;
737
- try {
738
- body = JSON.parse(raw.toString("utf8") || "{}");
739
- } catch {
740
- json(res, 400, { error: {
741
- message: "Invalid JSON body",
742
- type: "invalid_request_error"
743
- } });
744
- return;
745
- }
746
- const modelEffort = reasoningIntentToModelEffort(reasoningFromOpenAI(body));
747
- const resolution = await resolveRequestModel(body.model, modelEffort);
748
- if (!resolution.id) {
749
- json(res, 400, { error: {
750
- message: "model is required and no model could be discovered for this account",
751
- type: "invalid_request_error"
752
- } });
753
- return;
754
- }
755
- if (resolution.remapped) log(` model ${body.model ?? "(empty)"} → ${resolution.id} (${resolution.reason ?? "catalog"}${modelEffort ? `, effort=${modelEffort}` : ""})`);
756
- const geminiBody = openAIResponsesToGemini(body, resolution.id);
757
- const result = await callGeminiWithAutoFallback(body.model, resolution, geminiBody, false, modelEffort);
758
- const response = geminiToOpenAIResponses(result.response, result.resolution.id);
759
- if (body.stream) {
760
- writeOpenAIResponsesStream(res, response);
761
- return;
762
- }
763
- json(res, 200, response);
764
- } catch (err) {
765
- const msg = err instanceof Error ? err.message : String(err);
766
- log(` ✗ ${msg}`);
767
- writeGeminiError(res, err, msg);
768
- }
769
- }
770
- async function callGeminiWithAutoFallback(requested, resolution, body, stream, effort) {
771
- try {
772
- return {
773
- response: await callGemini(resolution.route, resolution.id, body, stream),
774
- resolution
775
- };
776
- } catch (err) {
777
- if (resolution.route === "antigravity" && err instanceof GeminiUpstreamError && [
778
- 401,
779
- 403,
780
- 404
781
- ].includes(err.status)) resetAutoRoute("antigravity", `upstream returned ${err.status}`);
782
- if (!(oauthSource === "auto" && !opts.apiKey && resolution.route !== "antigravity" && err instanceof GeminiUpstreamError && [
783
- 401,
784
- 403,
785
- 404
786
- ].includes(err.status))) throw err;
787
- if (!(await authRoutes(true)).includes("antigravity")) throw err;
788
- let fallback;
789
- try {
790
- fallback = {
791
- ...resolveGeminiModel(requested, await liveModelCatalog("antigravity"), effort),
792
- route: "antigravity"
793
- };
794
- } catch {
795
- fallback = {
796
- ...resolveGeminiModel(requested, [], effort),
797
- route: "antigravity"
798
- };
799
- }
800
- if (!fallback.id) throw err;
801
- log(` auth auto: ${resolution.route} returned ${err.status}; retrying ${requested ?? resolution.id} via antigravity as ${fallback.id}`);
802
- const response = await callGemini(fallback.route, fallback.id, body, stream);
803
- if ([401, 403].includes(err.status)) activateAutoRoute("antigravity", `Gemini CLI returned ${err.status}`);
804
- return {
805
- response,
806
- resolution: fallback
807
- };
808
- }
809
- }
810
- async function callGemini(route, model, body, stream) {
811
- const action = stream ? "streamGenerateContent" : "generateContent";
812
- const keyMode = route === "api-key";
813
- const upstreamModel = model;
814
- const apiKeyCandidates = keyMode ? await quotaGuard.ordered(await loadKeyRing()) : [];
815
- const oauthToken = keyMode ? void 0 : await currentOAuthToken(route);
816
- const target = keyMode ? `${upstream}/v1beta/models/${encodeURIComponent(upstreamModel)}:${action}` : `${codeAssistBase(route)}/v1internal:${action}`;
817
- const routeKey = `gemini:${route}:${upstreamModel}`;
818
- const cooling = cooldowns.remainingMs(routeKey);
819
- if (cooling > 0) throw new GeminiUpstreamError(429, new Headers({ "retry-after": String(Math.ceil(cooling / 1e3)) }), "Gemini route is cooling down after a rate limit.");
820
- const thinking = body.generationConfig?.thinkingConfig;
821
- const thinkingLog = thinking?.thinkingLevel ? ` thinking=${thinking.thinkingLevel.toLowerCase()}` : thinking?.thinkingBudget != null ? ` thinkingBudget=${thinking.thinkingBudget}` : "";
822
- log(` → Gemini ${upstreamModel} ${action} auth=${route}${thinkingLog}`);
823
- const requestBody = keyMode ? body : {
824
- model: upstreamModel,
825
- project: await resolveOAuthProject(route, oauthToken),
826
- user_prompt_id: randomUUID(),
827
- request: {
828
- ...body,
829
- session_id: proxySessionId
830
- }
831
- };
832
- const candidates = keyMode ? apiKeyCandidates : [void 0];
833
- let lastQuotaError;
834
- for (const [index, candidate] of candidates.entries()) {
835
- const token = candidate?.key ?? oauthToken;
836
- let upstreamRes;
837
- try {
838
- upstreamRes = await fetch(target, {
839
- method: "POST",
840
- headers: {
841
- "content-type": "application/json",
842
- ...keyMode ? { "x-goog-api-key": token } : {
843
- authorization: `Bearer ${token}`,
844
- ...oauthProfile(route).userAgent ? { "user-agent": oauthProfile(route).userAgent } : {}
845
- }
846
- },
847
- body: JSON.stringify(requestBody),
848
- signal: AbortSignal.timeout(6e5),
849
- redirect: "manual"
850
- });
851
- } catch (err) {
852
- throw new GeminiUpstreamError(502, void 0, `Gemini network error: ${err instanceof Error ? err.message : String(err)}`);
853
- }
854
- const text = await upstreamRes.text();
855
- log(` ← ${upstreamRes.status}`);
856
- if (!upstreamRes.ok) {
857
- const failure = classifyUpstreamFailure(upstreamRes.status, upstreamRes.headers, text);
858
- const credentialQuota = isCredentialQuotaFailure(upstreamRes.status, upstreamRes.headers, text);
859
- if (failure.retryAfterMs && !credentialQuota) cooldowns.set(routeKey, failure.retryAfterMs);
860
- const upstreamError = new GeminiUpstreamError(upstreamRes.status, upstreamRes.headers, extractGeminiErrorMessage(text, upstreamRes.status), text);
861
- const next = candidates[index + 1];
862
- if (keyMode && quotaGuard.enabled && next && credentialQuota) {
863
- await quotaGuard.exhausted(candidate?.accountName, next.accountName, failure.retryAfterMs);
864
- log(` quota guard: ${candidate?.accountName ?? "current key"} cooling; retrying pool member`);
865
- lastQuotaError = upstreamError;
866
- continue;
867
- }
868
- if (!keyMode && upstreamRes.status === 404) {
869
- modelCatalogs.delete(route);
870
- modelCatalogFailures.delete(route);
871
- }
872
- throw upstreamError;
873
- }
874
- await quotaGuard.activate(candidate?.accountName);
875
- try {
876
- const parsed = JSON.parse(text);
877
- return keyMode ? parsed : parsed.response ?? parsed;
878
- } catch {
879
- throw new GeminiUpstreamError(502, upstreamRes.headers, `Gemini returned non-JSON response: ${text.slice(0, 300)}`, text);
880
- }
881
- }
882
- throw lastQuotaError ?? new GeminiUpstreamError(503, void 0, "No eligible pool account.");
883
- }
884
- return server;
885
- }
886
- async function listenGeminiProxy(opts) {
887
- const server = createGeminiProxyServer(opts);
888
- await new Promise((resolve, reject) => {
889
- server.once("error", reject);
890
- server.listen(opts.port, opts.host, () => resolve());
891
- });
892
- const addr = server.address();
893
- const port = addr && typeof addr === "object" ? addr.port : opts.port;
894
- return {
895
- endpoint: `http://${opts.host}:${port}`,
896
- server
897
- };
898
- }
899
- function checkCors(req, res) {
900
- const origin = req.headers.origin;
901
- if (origin) try {
902
- const parsed = new URL(origin);
903
- if (!((parsed.hostname === "localhost" || parsed.hostname === "127.0.0.1" || parsed.hostname === "[::1]") && (parsed.protocol === "http:" || parsed.protocol === "https:"))) {
904
- json(res, 403, { error: {
905
- type: "forbidden_origin",
906
- message: "Only loopback browser origins are allowed."
907
- } });
908
- return false;
909
- }
910
- res.setHeader("access-control-allow-origin", origin);
911
- res.setHeader("vary", "Origin");
912
- } catch {
913
- json(res, 403, { error: {
914
- type: "forbidden_origin",
915
- message: "Invalid browser origin."
916
- } });
917
- return false;
918
- }
919
- res.setHeader("access-control-allow-methods", "GET,POST,OPTIONS");
920
- res.setHeader("access-control-allow-headers", "content-type,authorization,x-api-key,anthropic-version,anthropic-beta");
921
- return true;
922
- }
923
- function json(res, status, body) {
924
- const payload = Buffer.from(JSON.stringify(body), "utf8");
925
- res.writeHead(status, {
926
- "content-type": "application/json; charset=utf-8",
927
- "content-length": payload.byteLength
928
- });
929
- res.end(payload);
930
- }
931
- function writeSse(res, event, data) {
932
- res.write(`event: ${event}\ndata: ${JSON.stringify(data)}\n\n`);
933
- }
934
- /** Emit the minimal complete Responses SSE lifecycle consumed by Codex. */
935
- function writeOpenAIResponsesStream(res, response) {
936
- res.writeHead(200, {
937
- "content-type": "text/event-stream; charset=utf-8",
938
- "cache-control": "no-cache, no-transform",
939
- connection: "keep-alive"
940
- });
941
- let sequence = 0;
942
- const emit = (type, payload) => {
943
- writeSse(res, type, {
944
- type,
945
- sequence_number: sequence++,
946
- ...payload
947
- });
948
- };
949
- const inProgressResponse = {
950
- ...response,
951
- status: "in_progress",
952
- output: [],
953
- usage: null
954
- };
955
- emit("response.created", { response: inProgressResponse });
956
- emit("response.in_progress", { response: inProgressResponse });
957
- response.output.forEach((item, outputIndex) => {
958
- const addedItem = {
959
- ...item,
960
- status: "in_progress"
961
- };
962
- if (item.type === "reasoning") addedItem.summary = [];
963
- else if (item.type === "message") addedItem.content = [];
964
- else if (item.type === "function_call") addedItem.arguments = "";
965
- emit("response.output_item.added", {
966
- output_index: outputIndex,
967
- item: addedItem
968
- });
969
- if (item.type === "reasoning") (item.summary ?? []).forEach((part, summaryIndex) => {
970
- emit("response.reasoning_summary_part.added", {
971
- item_id: item.id,
972
- output_index: outputIndex,
973
- summary_index: summaryIndex,
974
- part: {
975
- type: "summary_text",
976
- text: ""
977
- }
978
- });
979
- if (part.text) emit("response.reasoning_summary_text.delta", {
980
- item_id: item.id,
981
- output_index: outputIndex,
982
- summary_index: summaryIndex,
983
- delta: part.text
984
- });
985
- emit("response.reasoning_summary_text.done", {
986
- item_id: item.id,
987
- output_index: outputIndex,
988
- summary_index: summaryIndex,
989
- text: part.text
990
- });
991
- emit("response.reasoning_summary_part.done", {
992
- item_id: item.id,
993
- output_index: outputIndex,
994
- summary_index: summaryIndex,
995
- part
996
- });
997
- });
998
- else if (item.type === "message") (item.content ?? []).forEach((part, contentIndex) => {
999
- const emptyPart = {
1000
- ...part,
1001
- text: ""
1002
- };
1003
- emit("response.content_part.added", {
1004
- item_id: item.id,
1005
- output_index: outputIndex,
1006
- content_index: contentIndex,
1007
- part: emptyPart
1008
- });
1009
- if (part.text) emit("response.output_text.delta", {
1010
- item_id: item.id,
1011
- output_index: outputIndex,
1012
- content_index: contentIndex,
1013
- delta: part.text,
1014
- logprobs: []
1015
- });
1016
- emit("response.output_text.done", {
1017
- item_id: item.id,
1018
- output_index: outputIndex,
1019
- content_index: contentIndex,
1020
- text: part.text,
1021
- logprobs: []
1022
- });
1023
- emit("response.content_part.done", {
1024
- item_id: item.id,
1025
- output_index: outputIndex,
1026
- content_index: contentIndex,
1027
- part
1028
- });
1029
- });
1030
- else if (item.type === "function_call") {
1031
- if (item.arguments) emit("response.function_call_arguments.delta", {
1032
- item_id: item.id,
1033
- output_index: outputIndex,
1034
- delta: item.arguments
1035
- });
1036
- emit("response.function_call_arguments.done", {
1037
- item_id: item.id,
1038
- output_index: outputIndex,
1039
- arguments: item.arguments ?? ""
1040
- });
1041
- }
1042
- emit("response.output_item.done", {
1043
- output_index: outputIndex,
1044
- item
1045
- });
1046
- });
1047
- emit("response.completed", { response });
1048
- res.end();
1049
- }
1050
- var GeminiUpstreamError = class extends Error {
1051
- status;
1052
- headers;
1053
- body;
1054
- constructor(status, headers, message = "Gemini upstream error", body) {
1055
- super(message);
1056
- this.status = status;
1057
- this.headers = headers;
1058
- this.body = body;
1059
- this.name = "GeminiUpstreamError";
1060
- }
1061
- };
1062
- function extractGeminiErrorMessage(body, status) {
1063
- try {
1064
- const parsed = JSON.parse(body);
1065
- return parsed.error?.message ?? parsed.message ?? `Gemini upstream returned HTTP ${status}`;
1066
- } catch {
1067
- return body.slice(0, 500) || `Gemini upstream returned HTTP ${status}`;
1068
- }
1069
- }
1070
- function writeGeminiError(res, err, fallback, anthropic = false) {
1071
- if (err instanceof GeminiUpstreamError) {
1072
- const retryAfter = err.headers?.get("retry-after");
1073
- const body = anthropic ? {
1074
- type: "error",
1075
- error: {
1076
- type: err.status === 429 ? "rate_limit_error" : "api_error",
1077
- message: err.message
1078
- }
1079
- } : { error: {
1080
- type: err.status === 429 ? "rate_limit_error" : "api_error",
1081
- message: err.message
1082
- } };
1083
- const payload = JSON.stringify(body);
1084
- res.writeHead(err.status, {
1085
- "content-type": "application/json; charset=utf-8",
1086
- "content-length": Buffer.byteLength(payload),
1087
- ...retryAfter ? { "retry-after": retryAfter } : {}
1088
- });
1089
- res.end(payload);
1090
- return;
1091
- }
1092
- json(res, 502, anthropic ? {
1093
- type: "error",
1094
- error: {
1095
- message: fallback,
1096
- type: "proxy_error"
1097
- }
1098
- } : { error: {
1099
- message: fallback,
1100
- type: "proxy_error"
1101
- } });
1102
- }
1103
- /**
1104
- * Page through Google Generative Language ListModels.
1105
- * Returns bare ids (no `models/` prefix) that support generateContent.
1106
- */
1107
- async function listGeminiModelsFromGoogle(upstream, apiKey, log = () => {}) {
1108
- const base = upstream.replace(/\/$/, "");
1109
- const ids = [];
1110
- const seen = /* @__PURE__ */ new Set();
1111
- let pageToken;
1112
- let pages = 0;
1113
- const maxPages = 20;
1114
- do {
1115
- const url = new URL(`${base}/v1beta/models`);
1116
- url.searchParams.set("key", apiKey);
1117
- url.searchParams.set("pageSize", "100");
1118
- if (pageToken) url.searchParams.set("pageToken", pageToken);
1119
- const upstreamRes = await fetch(url.toString(), {
1120
- method: "GET",
1121
- headers: {
1122
- "x-goog-api-key": apiKey,
1123
- accept: "application/json"
1124
- },
1125
- signal: AbortSignal.timeout(12e3)
1126
- });
1127
- if (!upstreamRes.ok) {
1128
- const text = await upstreamRes.text().catch(() => "");
1129
- throw new Error(`Google ListModels HTTP ${upstreamRes.status}${text ? `: ${text.slice(0, 200)}` : ""}`);
1130
- }
1131
- const body = await upstreamRes.json();
1132
- for (const m of body.models ?? []) {
1133
- const name = m.name ?? "";
1134
- const id = name.startsWith("models/") ? name.slice(7) : name;
1135
- if (!id) continue;
1136
- const methods = m.supportedGenerationMethods ?? [];
1137
- if (methods.length && !methods.includes("generateContent")) continue;
1138
- if (seen.has(id)) continue;
1139
- seen.add(id);
1140
- ids.push(id);
1141
- }
1142
- pageToken = body.nextPageToken?.trim() || void 0;
1143
- pages += 1;
1144
- } while (pageToken && pages < maxPages);
1145
- if (pages > 1) log(` list models pages=${pages}`);
1146
- return ids;
1147
- }
1148
- /** Discover the account-scoped catalog exposed by Code Assist. */
1149
- async function listGeminiModelsFromCodeAssist(upstream, accessToken, project, log = () => {}, userAgent) {
1150
- const base = upstream.replace(/\/$/, "");
1151
- const headers = {
1152
- authorization: `Bearer ${accessToken}`,
1153
- "content-type": "application/json",
1154
- accept: "application/json",
1155
- ...userAgent ? { "user-agent": userAgent } : {}
1156
- };
1157
- const response = await fetch(`${base}/v1internal:fetchAvailableModels`, {
1158
- method: "POST",
1159
- headers,
1160
- body: JSON.stringify({ project: project ?? "" }),
1161
- signal: AbortSignal.timeout(3e4)
1162
- });
1163
- const text = await response.text();
1164
- if (response.ok) {
1165
- let body;
1166
- try {
1167
- body = JSON.parse(text);
1168
- } catch {
1169
- throw new Error(`Code Assist returned non-JSON model metadata: ${text.slice(0, 200)}`);
1170
- }
1171
- const catalog = parseCodeAssistModelCatalog(body);
1172
- log(` Code Assist fetchAvailableModels models=${catalog.models.length}`);
1173
- return catalog;
1174
- }
1175
- log(` Code Assist fetchAvailableModels HTTP ${response.status}; using quota metadata`);
1176
- return listGeminiModelsFromCodeAssistQuota(base, project, headers, text);
1177
- }
1178
- function parseCodeAssistModelCatalog(body) {
1179
- const models = [];
1180
- for (const [rawId, details] of Object.entries(body.models ?? {})) {
1181
- const id = bareModelId(rawId);
1182
- if (!id || details.disabled === true) continue;
1183
- const knownNonGeminiProvider = typeof details.apiProvider === "string" && details.apiProvider !== "API_PROVIDER_GOOGLE_GEMINI";
1184
- const knownNonGoogleModel = typeof details.modelProvider === "string" && details.modelProvider !== "MODEL_PROVIDER_GOOGLE";
1185
- if (knownNonGeminiProvider || knownNonGoogleModel) continue;
1186
- models.push({
1187
- id,
1188
- ...typeof details.displayName === "string" ? { displayName: details.displayName } : {},
1189
- ...details.recommended === true ? { recommended: true } : {}
1190
- });
1191
- }
1192
- const available = new Set(models.map((model) => model.id));
1193
- const preferredModelIds = (body.agentModelSorts ?? []).flatMap((sort) => sort.groups ?? []).flatMap((group) => group.modelIds ?? []).filter((id) => typeof id === "string").map(bareModelId).filter((id) => available.has(id));
1194
- const defaultModelId = typeof body.defaultAgentModelId === "string" ? bareModelId(body.defaultAgentModelId) : void 0;
1195
- return {
1196
- models,
1197
- ...defaultModelId && available.has(defaultModelId) ? { defaultModelId } : {},
1198
- ...preferredModelIds.length ? { preferredModelIds: [...new Set(preferredModelIds)] } : {}
1199
- };
1200
- }
1201
- async function listGeminiModelsFromCodeAssistQuota(base, project, headers, catalogError) {
1202
- const response = await fetch(`${base}/v1internal:retrieveUserQuota`, {
1203
- method: "POST",
1204
- headers,
1205
- body: JSON.stringify({
1206
- project: project ?? "",
1207
- userAgent: "anypick-gemini-proxy"
1208
- }),
1209
- signal: AbortSignal.timeout(3e4)
1210
- });
1211
- const text = await response.text();
1212
- if (!response.ok) throw new Error(`Code Assist model discovery failed: fetchAvailableModels ${catalogError.slice(0, 120)}; retrieveUserQuota HTTP ${response.status}${text ? `: ${text.slice(0, 200)}` : ""}`);
1213
- let body;
1214
- try {
1215
- body = JSON.parse(text);
1216
- } catch {
1217
- throw new Error(`Code Assist returned non-JSON model metadata: ${text.slice(0, 200)}`);
1218
- }
1219
- const models = [];
1220
- const add = (value) => {
1221
- if (typeof value !== "string") return;
1222
- const id = bareModelId(value);
1223
- if (id && !models.some((model) => model.id === id)) models.push({ id });
1224
- };
1225
- for (const bucket of body.buckets ?? []) add(bucket.modelId);
1226
- for (const model of body.models ?? []) if (typeof model === "string") add(model);
1227
- else add(model.id ?? model.name);
1228
- return { models };
1229
- }
1230
- function bareModelId(value) {
1231
- const trimmed = value.trim();
1232
- return trimmed.startsWith("models/") ? trimmed.slice(7) : trimmed;
1233
- }
1234
- function isCatalogResolution(resolution, catalog) {
1235
- return Boolean(resolution.id && catalog.models.some((model) => model.id === resolution.id));
1236
- }
1237
- //#endregion
1238
- export { createGeminiProxyServer, listGeminiModelsFromCodeAssist, listGeminiModelsFromGoogle, listenGeminiProxy };
1239
-
1240
- //# sourceMappingURL=server.js.map