@antseed/cli 0.1.179 → 0.1.181

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 (678) hide show
  1. package/README.md +5 -3
  2. package/dist/buyer-identities/store.d.ts +39 -2
  3. package/dist/buyer-identities/store.d.ts.map +1 -1
  4. package/dist/buyer-identities/store.js +99 -10
  5. package/dist/buyer-identities/store.js.map +1 -1
  6. package/dist/cli/commands/apps/index.js +8 -8
  7. package/dist/cli/commands/buyer/identity.d.ts +3 -1
  8. package/dist/cli/commands/buyer/identity.d.ts.map +1 -1
  9. package/dist/cli/commands/buyer/identity.js +55 -8
  10. package/dist/cli/commands/buyer/identity.js.map +1 -1
  11. package/dist/cli/commands/buyer/identity.test.d.ts +2 -0
  12. package/dist/cli/commands/buyer/identity.test.d.ts.map +1 -0
  13. package/dist/cli/commands/buyer/identity.test.js +168 -0
  14. package/dist/cli/commands/buyer/identity.test.js.map +1 -0
  15. package/dist/cli/commands/buyer/set-authorized-wallet.d.ts +10 -0
  16. package/dist/cli/commands/buyer/set-authorized-wallet.d.ts.map +1 -1
  17. package/dist/cli/commands/buyer/set-authorized-wallet.js +26 -4
  18. package/dist/cli/commands/buyer/set-authorized-wallet.js.map +1 -1
  19. package/dist/cli/commands/buyer/set-authorized-wallet.test.js +37 -2
  20. package/dist/cli/commands/buyer/set-authorized-wallet.test.js.map +1 -1
  21. package/dist/cli/commands/buyer/start.d.ts +15 -0
  22. package/dist/cli/commands/buyer/start.d.ts.map +1 -1
  23. package/dist/cli/commands/buyer/start.js +158 -49
  24. package/dist/cli/commands/buyer/start.js.map +1 -1
  25. package/dist/cli/commands/buyer/start.test.js +16 -1
  26. package/dist/cli/commands/buyer/start.test.js.map +1 -1
  27. package/dist/cli/commands/chat.d.ts +3 -0
  28. package/dist/cli/commands/chat.d.ts.map +1 -0
  29. package/dist/cli/commands/chat.js +189 -0
  30. package/dist/cli/commands/chat.js.map +1 -0
  31. package/dist/cli/commands/gateway/activity.d.ts +15 -0
  32. package/dist/cli/commands/gateway/activity.d.ts.map +1 -0
  33. package/dist/cli/commands/gateway/activity.js +233 -0
  34. package/dist/cli/commands/gateway/activity.js.map +1 -0
  35. package/dist/cli/commands/gateway/admin-token.d.ts +3 -0
  36. package/dist/cli/commands/gateway/admin-token.d.ts.map +1 -0
  37. package/dist/cli/commands/gateway/admin-token.js +90 -0
  38. package/dist/cli/commands/gateway/admin-token.js.map +1 -0
  39. package/dist/cli/commands/gateway/console-link.d.ts +20 -0
  40. package/dist/cli/commands/gateway/console-link.d.ts.map +1 -0
  41. package/dist/cli/commands/gateway/console-link.js +92 -0
  42. package/dist/cli/commands/gateway/console-link.js.map +1 -0
  43. package/dist/cli/commands/gateway/gateway-commands.test.d.ts +2 -0
  44. package/dist/cli/commands/gateway/gateway-commands.test.d.ts.map +1 -0
  45. package/dist/cli/commands/gateway/gateway-commands.test.js +230 -0
  46. package/dist/cli/commands/gateway/gateway-commands.test.js.map +1 -0
  47. package/dist/cli/commands/gateway/gateway-console-commands.test.d.ts +2 -0
  48. package/dist/cli/commands/gateway/gateway-console-commands.test.d.ts.map +1 -0
  49. package/dist/cli/commands/gateway/gateway-console-commands.test.js +373 -0
  50. package/dist/cli/commands/gateway/gateway-console-commands.test.js.map +1 -0
  51. package/dist/cli/commands/gateway/index.d.ts +8 -0
  52. package/dist/cli/commands/gateway/index.d.ts.map +1 -1
  53. package/dist/cli/commands/gateway/index.js +93 -14
  54. package/dist/cli/commands/gateway/index.js.map +1 -1
  55. package/dist/cli/commands/gateway/key.d.ts +4 -0
  56. package/dist/cli/commands/gateway/key.d.ts.map +1 -1
  57. package/dist/cli/commands/gateway/key.js +297 -182
  58. package/dist/cli/commands/gateway/key.js.map +1 -1
  59. package/dist/cli/commands/gateway/member.d.ts +3 -0
  60. package/dist/cli/commands/gateway/member.d.ts.map +1 -0
  61. package/dist/cli/commands/gateway/member.js +302 -0
  62. package/dist/cli/commands/gateway/member.js.map +1 -0
  63. package/dist/cli/commands/gateway/migrate.d.ts +18 -0
  64. package/dist/cli/commands/gateway/migrate.d.ts.map +1 -0
  65. package/dist/cli/commands/gateway/migrate.js +158 -0
  66. package/dist/cli/commands/gateway/migrate.js.map +1 -0
  67. package/dist/cli/commands/gateway/operator.d.ts +11 -0
  68. package/dist/cli/commands/gateway/operator.d.ts.map +1 -0
  69. package/dist/cli/commands/gateway/operator.js +199 -0
  70. package/dist/cli/commands/gateway/operator.js.map +1 -0
  71. package/dist/cli/commands/gateway/operator.test.d.ts +2 -0
  72. package/dist/cli/commands/gateway/operator.test.d.ts.map +1 -0
  73. package/dist/cli/commands/gateway/operator.test.js +151 -0
  74. package/dist/cli/commands/gateway/operator.test.js.map +1 -0
  75. package/dist/cli/commands/gateway/peer-list.d.ts +3 -0
  76. package/dist/cli/commands/gateway/peer-list.d.ts.map +1 -0
  77. package/dist/cli/commands/gateway/peer-list.js +107 -0
  78. package/dist/cli/commands/gateway/peer-list.js.map +1 -0
  79. package/dist/cli/commands/gateway/policy-options.d.ts +23 -0
  80. package/dist/cli/commands/gateway/policy-options.d.ts.map +1 -0
  81. package/dist/cli/commands/gateway/policy-options.js +156 -0
  82. package/dist/cli/commands/gateway/policy-options.js.map +1 -0
  83. package/dist/cli/commands/gateway/preset.d.ts +3 -0
  84. package/dist/cli/commands/gateway/preset.d.ts.map +1 -0
  85. package/dist/cli/commands/gateway/preset.js +181 -0
  86. package/dist/cli/commands/gateway/preset.js.map +1 -0
  87. package/dist/cli/commands/gateway/routing.d.ts +3 -0
  88. package/dist/cli/commands/gateway/routing.d.ts.map +1 -0
  89. package/dist/cli/commands/gateway/routing.js +110 -0
  90. package/dist/cli/commands/gateway/routing.js.map +1 -0
  91. package/dist/cli/commands/gateway/settings.d.ts +4 -0
  92. package/dist/cli/commands/gateway/settings.d.ts.map +1 -0
  93. package/dist/cli/commands/gateway/settings.js +314 -0
  94. package/dist/cli/commands/gateway/settings.js.map +1 -0
  95. package/dist/cli/commands/gateway/shared.d.ts +55 -6
  96. package/dist/cli/commands/gateway/shared.d.ts.map +1 -1
  97. package/dist/cli/commands/gateway/shared.js +206 -26
  98. package/dist/cli/commands/gateway/shared.js.map +1 -1
  99. package/dist/cli/commands/gateway/workspace.d.ts +3 -0
  100. package/dist/cli/commands/gateway/workspace.d.ts.map +1 -0
  101. package/dist/cli/commands/gateway/workspace.js +250 -0
  102. package/dist/cli/commands/gateway/workspace.js.map +1 -0
  103. package/dist/cli/commands/network/bootstrap.js +1 -1
  104. package/dist/cli/commands/seller/setup.js +1 -1
  105. package/dist/cli/commands/seller/start.d.ts.map +1 -1
  106. package/dist/cli/commands/seller/start.js +1 -2
  107. package/dist/cli/commands/seller/start.js.map +1 -1
  108. package/dist/cli/commands/system-proxy/index.js +1 -1
  109. package/dist/cli/commands/tunnel/start.d.ts.map +1 -1
  110. package/dist/cli/commands/tunnel/start.js +23 -5
  111. package/dist/cli/commands/tunnel/start.js.map +1 -1
  112. package/dist/cli/commands/wrapped-tools.js +8 -8
  113. package/dist/cli/commands/wrapped-tools.test.js +5 -5
  114. package/dist/cli/index.js +12 -44
  115. package/dist/cli/index.js.map +1 -1
  116. package/dist/cli/program.d.ts +4 -0
  117. package/dist/cli/program.d.ts.map +1 -0
  118. package/dist/cli/program.js +49 -0
  119. package/dist/cli/program.js.map +1 -0
  120. package/dist/cli/program.test.d.ts +2 -0
  121. package/dist/cli/program.test.d.ts.map +1 -0
  122. package/dist/cli/program.test.js +38 -0
  123. package/dist/cli/program.test.js.map +1 -0
  124. package/dist/cli/prompt-hidden.d.ts +3 -0
  125. package/dist/cli/prompt-hidden.d.ts.map +1 -0
  126. package/dist/cli/prompt-hidden.js +38 -0
  127. package/dist/cli/prompt-hidden.js.map +1 -0
  128. package/dist/cli/wallet-passphrase.d.ts +48 -0
  129. package/dist/cli/wallet-passphrase.d.ts.map +1 -0
  130. package/dist/cli/wallet-passphrase.js +119 -0
  131. package/dist/cli/wallet-passphrase.js.map +1 -0
  132. package/dist/cli/wallet-passphrase.test.d.ts +2 -0
  133. package/dist/cli/wallet-passphrase.test.d.ts.map +1 -0
  134. package/dist/cli/wallet-passphrase.test.js +79 -0
  135. package/dist/cli/wallet-passphrase.test.js.map +1 -0
  136. package/dist/config/defaults.d.ts.map +1 -1
  137. package/dist/config/defaults.js +0 -1
  138. package/dist/config/defaults.js.map +1 -1
  139. package/dist/config/effective.d.ts +12 -0
  140. package/dist/config/effective.d.ts.map +1 -1
  141. package/dist/config/effective.js +39 -6
  142. package/dist/config/effective.js.map +1 -1
  143. package/dist/config/effective.test.js +9 -1
  144. package/dist/config/effective.test.js.map +1 -1
  145. package/dist/config/loader.d.ts +6 -0
  146. package/dist/config/loader.d.ts.map +1 -1
  147. package/dist/config/loader.js +12 -0
  148. package/dist/config/loader.js.map +1 -1
  149. package/dist/config/loader.test.js +7 -1
  150. package/dist/config/loader.test.js.map +1 -1
  151. package/dist/config/types.d.ts +14 -2
  152. package/dist/config/types.d.ts.map +1 -1
  153. package/dist/config/validation.d.ts.map +1 -1
  154. package/dist/config/validation.js +19 -0
  155. package/dist/config/validation.js.map +1 -1
  156. package/dist/gateway/accounting.d.ts +33 -3
  157. package/dist/gateway/accounting.d.ts.map +1 -1
  158. package/dist/gateway/accounting.js +86 -7
  159. package/dist/gateway/accounting.js.map +1 -1
  160. package/dist/gateway/admission-benchmark.test.d.ts +2 -0
  161. package/dist/gateway/admission-benchmark.test.d.ts.map +1 -0
  162. package/dist/gateway/admission-benchmark.test.js +75 -0
  163. package/dist/gateway/admission-benchmark.test.js.map +1 -0
  164. package/dist/gateway/auth/auth.test.d.ts +4 -0
  165. package/dist/gateway/auth/auth.test.d.ts.map +1 -0
  166. package/dist/gateway/auth/auth.test.js +337 -0
  167. package/dist/gateway/auth/auth.test.js.map +1 -0
  168. package/dist/gateway/auth/credentials.test.d.ts +2 -0
  169. package/dist/gateway/auth/credentials.test.d.ts.map +1 -0
  170. package/dist/gateway/auth/credentials.test.js +132 -0
  171. package/dist/gateway/auth/credentials.test.js.map +1 -0
  172. package/dist/gateway/auth/db.d.ts +156 -0
  173. package/dist/gateway/auth/db.d.ts.map +1 -0
  174. package/dist/gateway/auth/db.js +390 -0
  175. package/dist/gateway/auth/db.js.map +1 -0
  176. package/dist/gateway/auth/hardening.test.d.ts +2 -0
  177. package/dist/gateway/auth/hardening.test.d.ts.map +1 -0
  178. package/dist/gateway/auth/hardening.test.js +155 -0
  179. package/dist/gateway/auth/hardening.test.js.map +1 -0
  180. package/dist/gateway/auth/http.d.ts +53 -0
  181. package/dist/gateway/auth/http.d.ts.map +1 -0
  182. package/dist/gateway/auth/http.js +165 -0
  183. package/dist/gateway/auth/http.js.map +1 -0
  184. package/dist/gateway/auth/index.d.ts +26 -0
  185. package/dist/gateway/auth/index.d.ts.map +1 -0
  186. package/dist/gateway/auth/index.js +1014 -0
  187. package/dist/gateway/auth/index.js.map +1 -0
  188. package/dist/gateway/auth/oidc.d.ts +57 -0
  189. package/dist/gateway/auth/oidc.d.ts.map +1 -0
  190. package/dist/gateway/auth/oidc.js +159 -0
  191. package/dist/gateway/auth/oidc.js.map +1 -0
  192. package/dist/gateway/auth/oidc.test.d.ts +2 -0
  193. package/dist/gateway/auth/oidc.test.d.ts.map +1 -0
  194. package/dist/gateway/auth/oidc.test.js +223 -0
  195. package/dist/gateway/auth/oidc.test.js.map +1 -0
  196. package/dist/gateway/auth/reauth.test.d.ts +2 -0
  197. package/dist/gateway/auth/reauth.test.d.ts.map +1 -0
  198. package/dist/gateway/auth/reauth.test.js +108 -0
  199. package/dist/gateway/auth/reauth.test.js.map +1 -0
  200. package/dist/gateway/auth/store-integration.test.d.ts +2 -0
  201. package/dist/gateway/auth/store-integration.test.d.ts.map +1 -0
  202. package/dist/gateway/auth/store-integration.test.js +100 -0
  203. package/dist/gateway/auth/store-integration.test.js.map +1 -0
  204. package/dist/gateway/auth/test-helpers.d.ts +167 -0
  205. package/dist/gateway/auth/test-helpers.d.ts.map +1 -0
  206. package/dist/gateway/auth/test-helpers.js +368 -0
  207. package/dist/gateway/auth/test-helpers.js.map +1 -0
  208. package/dist/gateway/auth/types.d.ts +145 -0
  209. package/dist/gateway/auth/types.d.ts.map +1 -0
  210. package/dist/gateway/auth/types.js +2 -0
  211. package/dist/gateway/auth/types.js.map +1 -0
  212. package/dist/gateway/auth/wallet.d.ts +15 -0
  213. package/dist/gateway/auth/wallet.d.ts.map +1 -0
  214. package/dist/gateway/auth/wallet.js +43 -0
  215. package/dist/gateway/auth/wallet.js.map +1 -0
  216. package/dist/gateway/bundle.d.ts +127 -0
  217. package/dist/gateway/bundle.d.ts.map +1 -0
  218. package/dist/gateway/bundle.js +604 -0
  219. package/dist/gateway/bundle.js.map +1 -0
  220. package/dist/gateway/bundle.test.d.ts +2 -0
  221. package/dist/gateway/bundle.test.d.ts.map +1 -0
  222. package/dist/gateway/bundle.test.js +277 -0
  223. package/dist/gateway/bundle.test.js.map +1 -0
  224. package/dist/gateway/buyer-control.d.ts +33 -0
  225. package/dist/gateway/buyer-control.d.ts.map +1 -0
  226. package/dist/gateway/buyer-control.js +93 -0
  227. package/dist/gateway/buyer-control.js.map +1 -0
  228. package/dist/gateway/buyer-policy-probe.d.ts +41 -0
  229. package/dist/gateway/buyer-policy-probe.d.ts.map +1 -0
  230. package/dist/gateway/buyer-policy-probe.js +99 -0
  231. package/dist/gateway/buyer-policy-probe.js.map +1 -0
  232. package/dist/gateway/buyer-policy-probe.test.d.ts +2 -0
  233. package/dist/gateway/buyer-policy-probe.test.d.ts.map +1 -0
  234. package/dist/gateway/buyer-policy-probe.test.js +128 -0
  235. package/dist/gateway/buyer-policy-probe.test.js.map +1 -0
  236. package/dist/gateway/buyer-process.d.ts +30 -0
  237. package/dist/gateway/buyer-process.d.ts.map +1 -0
  238. package/dist/gateway/buyer-process.js +101 -0
  239. package/dist/gateway/buyer-process.js.map +1 -0
  240. package/dist/gateway/buyer-process.test.d.ts +2 -0
  241. package/dist/gateway/buyer-process.test.d.ts.map +1 -0
  242. package/dist/gateway/buyer-process.test.js +112 -0
  243. package/dist/gateway/buyer-process.test.js.map +1 -0
  244. package/dist/gateway/chat/routes.d.ts +45 -0
  245. package/dist/gateway/chat/routes.d.ts.map +1 -0
  246. package/dist/gateway/chat/routes.js +439 -0
  247. package/dist/gateway/chat/routes.js.map +1 -0
  248. package/dist/gateway/chat/routes.test.d.ts +2 -0
  249. package/dist/gateway/chat/routes.test.d.ts.map +1 -0
  250. package/dist/gateway/chat/routes.test.js +304 -0
  251. package/dist/gateway/chat/routes.test.js.map +1 -0
  252. package/dist/gateway/chat/tools.d.ts +35 -0
  253. package/dist/gateway/chat/tools.d.ts.map +1 -0
  254. package/dist/gateway/chat/tools.js +347 -0
  255. package/dist/gateway/chat/tools.js.map +1 -0
  256. package/dist/gateway/chat/tools.test.d.ts +2 -0
  257. package/dist/gateway/chat/tools.test.d.ts.map +1 -0
  258. package/dist/gateway/chat/tools.test.js +136 -0
  259. package/dist/gateway/chat/tools.test.js.map +1 -0
  260. package/dist/gateway/console-api/access.d.ts +52 -0
  261. package/dist/gateway/console-api/access.d.ts.map +1 -0
  262. package/dist/gateway/console-api/access.js +171 -0
  263. package/dist/gateway/console-api/access.js.map +1 -0
  264. package/dist/gateway/console-api/deps.d.ts +52 -0
  265. package/dist/gateway/console-api/deps.d.ts.map +1 -0
  266. package/dist/gateway/console-api/deps.js +2 -0
  267. package/dist/gateway/console-api/deps.js.map +1 -0
  268. package/dist/gateway/console-api/handlers/admin-tokens.d.ts +8 -0
  269. package/dist/gateway/console-api/handlers/admin-tokens.d.ts.map +1 -0
  270. package/dist/gateway/console-api/handlers/admin-tokens.js +48 -0
  271. package/dist/gateway/console-api/handlers/admin-tokens.js.map +1 -0
  272. package/dist/gateway/console-api/handlers/audit.d.ts +8 -0
  273. package/dist/gateway/console-api/handlers/audit.d.ts.map +1 -0
  274. package/dist/gateway/console-api/handlers/audit.js +19 -0
  275. package/dist/gateway/console-api/handlers/audit.js.map +1 -0
  276. package/dist/gateway/console-api/handlers/audit.test.d.ts +2 -0
  277. package/dist/gateway/console-api/handlers/audit.test.d.ts.map +1 -0
  278. package/dist/gateway/console-api/handlers/audit.test.js +241 -0
  279. package/dist/gateway/console-api/handlers/audit.test.js.map +1 -0
  280. package/dist/gateway/console-api/handlers/data-settings.test.d.ts +2 -0
  281. package/dist/gateway/console-api/handlers/data-settings.test.d.ts.map +1 -0
  282. package/dist/gateway/console-api/handlers/data-settings.test.js +264 -0
  283. package/dist/gateway/console-api/handlers/data-settings.test.js.map +1 -0
  284. package/dist/gateway/console-api/handlers/index.d.ts +4 -0
  285. package/dist/gateway/console-api/handlers/index.d.ts.map +1 -0
  286. package/dist/gateway/console-api/handlers/index.js +24 -0
  287. package/dist/gateway/console-api/handlers/index.js.map +1 -0
  288. package/dist/gateway/console-api/handlers/keys.d.ts +13 -0
  289. package/dist/gateway/console-api/handlers/keys.d.ts.map +1 -0
  290. package/dist/gateway/console-api/handlers/keys.js +128 -0
  291. package/dist/gateway/console-api/handlers/keys.js.map +1 -0
  292. package/dist/gateway/console-api/handlers/keys.test.d.ts +2 -0
  293. package/dist/gateway/console-api/handlers/keys.test.d.ts.map +1 -0
  294. package/dist/gateway/console-api/handlers/keys.test.js +166 -0
  295. package/dist/gateway/console-api/handlers/keys.test.js.map +1 -0
  296. package/dist/gateway/console-api/handlers/network-buyer.d.ts +22 -0
  297. package/dist/gateway/console-api/handlers/network-buyer.d.ts.map +1 -0
  298. package/dist/gateway/console-api/handlers/network-buyer.js +39 -0
  299. package/dist/gateway/console-api/handlers/network-buyer.js.map +1 -0
  300. package/dist/gateway/console-api/handlers/network-mapping.d.ts +33 -0
  301. package/dist/gateway/console-api/handlers/network-mapping.d.ts.map +1 -0
  302. package/dist/gateway/console-api/handlers/network-mapping.js +219 -0
  303. package/dist/gateway/console-api/handlers/network-mapping.js.map +1 -0
  304. package/dist/gateway/console-api/handlers/network-test-helpers.d.ts +35 -0
  305. package/dist/gateway/console-api/handlers/network-test-helpers.d.ts.map +1 -0
  306. package/dist/gateway/console-api/handlers/network-test-helpers.js +121 -0
  307. package/dist/gateway/console-api/handlers/network-test-helpers.js.map +1 -0
  308. package/dist/gateway/console-api/handlers/network.d.ts +15 -0
  309. package/dist/gateway/console-api/handlers/network.d.ts.map +1 -0
  310. package/dist/gateway/console-api/handlers/network.js +57 -0
  311. package/dist/gateway/console-api/handlers/network.js.map +1 -0
  312. package/dist/gateway/console-api/handlers/network.test.d.ts +2 -0
  313. package/dist/gateway/console-api/handlers/network.test.d.ts.map +1 -0
  314. package/dist/gateway/console-api/handlers/network.test.js +383 -0
  315. package/dist/gateway/console-api/handlers/network.test.js.map +1 -0
  316. package/dist/gateway/console-api/handlers/org.d.ts +10 -0
  317. package/dist/gateway/console-api/handlers/org.d.ts.map +1 -0
  318. package/dist/gateway/console-api/handlers/org.js +150 -0
  319. package/dist/gateway/console-api/handlers/org.js.map +1 -0
  320. package/dist/gateway/console-api/handlers/peer-lists.d.ts +5 -0
  321. package/dist/gateway/console-api/handlers/peer-lists.d.ts.map +1 -0
  322. package/dist/gateway/console-api/handlers/peer-lists.js +43 -0
  323. package/dist/gateway/console-api/handlers/peer-lists.js.map +1 -0
  324. package/dist/gateway/console-api/handlers/presets.d.ts +9 -0
  325. package/dist/gateway/console-api/handlers/presets.d.ts.map +1 -0
  326. package/dist/gateway/console-api/handlers/presets.js +79 -0
  327. package/dist/gateway/console-api/handlers/presets.js.map +1 -0
  328. package/dist/gateway/console-api/handlers/routing.d.ts +5 -0
  329. package/dist/gateway/console-api/handlers/routing.d.ts.map +1 -0
  330. package/dist/gateway/console-api/handlers/routing.js +20 -0
  331. package/dist/gateway/console-api/handlers/routing.js.map +1 -0
  332. package/dist/gateway/console-api/handlers/settings.d.ts +10 -0
  333. package/dist/gateway/console-api/handlers/settings.d.ts.map +1 -0
  334. package/dist/gateway/console-api/handlers/settings.js +38 -0
  335. package/dist/gateway/console-api/handlers/settings.js.map +1 -0
  336. package/dist/gateway/console-api/handlers/status.d.ts +9 -0
  337. package/dist/gateway/console-api/handlers/status.d.ts.map +1 -0
  338. package/dist/gateway/console-api/handlers/status.js +47 -0
  339. package/dist/gateway/console-api/handlers/status.js.map +1 -0
  340. package/dist/gateway/console-api/handlers/status.test.d.ts +2 -0
  341. package/dist/gateway/console-api/handlers/status.test.d.ts.map +1 -0
  342. package/dist/gateway/console-api/handlers/status.test.js +82 -0
  343. package/dist/gateway/console-api/handlers/status.test.js.map +1 -0
  344. package/dist/gateway/console-api/handlers/usage.d.ts +10 -0
  345. package/dist/gateway/console-api/handlers/usage.d.ts.map +1 -0
  346. package/dist/gateway/console-api/handlers/usage.js +68 -0
  347. package/dist/gateway/console-api/handlers/usage.js.map +1 -0
  348. package/dist/gateway/console-api/handlers/wallet-card-link.d.ts +29 -0
  349. package/dist/gateway/console-api/handlers/wallet-card-link.d.ts.map +1 -0
  350. package/dist/gateway/console-api/handlers/wallet-card-link.js +46 -0
  351. package/dist/gateway/console-api/handlers/wallet-card-link.js.map +1 -0
  352. package/dist/gateway/console-api/handlers/wallet-chain.d.ts +26 -0
  353. package/dist/gateway/console-api/handlers/wallet-chain.d.ts.map +1 -0
  354. package/dist/gateway/console-api/handlers/wallet-chain.js +80 -0
  355. package/dist/gateway/console-api/handlers/wallet-chain.js.map +1 -0
  356. package/dist/gateway/console-api/handlers/wallet-mapping.d.ts +45 -0
  357. package/dist/gateway/console-api/handlers/wallet-mapping.d.ts.map +1 -0
  358. package/dist/gateway/console-api/handlers/wallet-mapping.js +202 -0
  359. package/dist/gateway/console-api/handlers/wallet-mapping.js.map +1 -0
  360. package/dist/gateway/console-api/handlers/wallet-operator.d.ts +41 -0
  361. package/dist/gateway/console-api/handlers/wallet-operator.d.ts.map +1 -0
  362. package/dist/gateway/console-api/handlers/wallet-operator.js +198 -0
  363. package/dist/gateway/console-api/handlers/wallet-operator.js.map +1 -0
  364. package/dist/gateway/console-api/handlers/wallet-operator.test.d.ts +2 -0
  365. package/dist/gateway/console-api/handlers/wallet-operator.test.d.ts.map +1 -0
  366. package/dist/gateway/console-api/handlers/wallet-operator.test.js +195 -0
  367. package/dist/gateway/console-api/handlers/wallet-operator.test.js.map +1 -0
  368. package/dist/gateway/console-api/handlers/wallet.d.ts +61 -0
  369. package/dist/gateway/console-api/handlers/wallet.d.ts.map +1 -0
  370. package/dist/gateway/console-api/handlers/wallet.js +221 -0
  371. package/dist/gateway/console-api/handlers/wallet.js.map +1 -0
  372. package/dist/gateway/console-api/handlers/wallet.test.d.ts +2 -0
  373. package/dist/gateway/console-api/handlers/wallet.test.d.ts.map +1 -0
  374. package/dist/gateway/console-api/handlers/wallet.test.js +581 -0
  375. package/dist/gateway/console-api/handlers/wallet.test.js.map +1 -0
  376. package/dist/gateway/console-api/handlers/workspaces.d.ts +12 -0
  377. package/dist/gateway/console-api/handlers/workspaces.d.ts.map +1 -0
  378. package/dist/gateway/console-api/handlers/workspaces.js +96 -0
  379. package/dist/gateway/console-api/handlers/workspaces.js.map +1 -0
  380. package/dist/gateway/console-api/operator-types.d.ts +68 -0
  381. package/dist/gateway/console-api/operator-types.d.ts.map +1 -0
  382. package/dist/gateway/console-api/operator-types.js +21 -0
  383. package/dist/gateway/console-api/operator-types.js.map +1 -0
  384. package/dist/gateway/console-api/router.d.ts +97 -0
  385. package/dist/gateway/console-api/router.d.ts.map +1 -0
  386. package/dist/gateway/console-api/router.js +69 -0
  387. package/dist/gateway/console-api/router.js.map +1 -0
  388. package/dist/gateway/console-api/routes.test.d.ts +2 -0
  389. package/dist/gateway/console-api/routes.test.d.ts.map +1 -0
  390. package/dist/gateway/console-api/routes.test.js +331 -0
  391. package/dist/gateway/console-api/routes.test.js.map +1 -0
  392. package/dist/gateway/console-api/serialize.d.ts +33 -0
  393. package/dist/gateway/console-api/serialize.d.ts.map +1 -0
  394. package/dist/gateway/console-api/serialize.js +179 -0
  395. package/dist/gateway/console-api/serialize.js.map +1 -0
  396. package/dist/gateway/console-api/server.d.ts +38 -0
  397. package/dist/gateway/console-api/server.d.ts.map +1 -0
  398. package/dist/gateway/console-api/server.js +308 -0
  399. package/dist/gateway/console-api/server.js.map +1 -0
  400. package/dist/gateway/console-api/server.test.d.ts +2 -0
  401. package/dist/gateway/console-api/server.test.d.ts.map +1 -0
  402. package/dist/gateway/console-api/server.test.js +149 -0
  403. package/dist/gateway/console-api/server.test.js.map +1 -0
  404. package/dist/gateway/console-api/test-support.d.ts +59 -0
  405. package/dist/gateway/console-api/test-support.d.ts.map +1 -0
  406. package/dist/gateway/console-api/test-support.js +120 -0
  407. package/dist/gateway/console-api/test-support.js.map +1 -0
  408. package/dist/gateway/console-api/types.d.ts +779 -0
  409. package/dist/gateway/console-api/types.d.ts.map +1 -0
  410. package/dist/gateway/console-api/types.js +6 -0
  411. package/dist/gateway/console-api/types.js.map +1 -0
  412. package/dist/gateway/console-location.d.ts +21 -0
  413. package/dist/gateway/console-location.d.ts.map +1 -0
  414. package/dist/gateway/console-location.js +41 -0
  415. package/dist/gateway/console-location.js.map +1 -0
  416. package/dist/gateway/console-recovery.d.ts +34 -0
  417. package/dist/gateway/console-recovery.d.ts.map +1 -0
  418. package/dist/gateway/console-recovery.js +94 -0
  419. package/dist/gateway/console-recovery.js.map +1 -0
  420. package/dist/gateway/console-recovery.test.d.ts +2 -0
  421. package/dist/gateway/console-recovery.test.d.ts.map +1 -0
  422. package/dist/gateway/console-recovery.test.js +106 -0
  423. package/dist/gateway/console-recovery.test.js.map +1 -0
  424. package/dist/gateway/console.d.ts +18 -0
  425. package/dist/gateway/console.d.ts.map +1 -0
  426. package/dist/gateway/console.js +101 -0
  427. package/dist/gateway/console.js.map +1 -0
  428. package/dist/gateway/console.test.d.ts +2 -0
  429. package/dist/gateway/console.test.d.ts.map +1 -0
  430. package/dist/gateway/console.test.js +165 -0
  431. package/dist/gateway/console.test.js.map +1 -0
  432. package/dist/gateway/errors.d.ts +3 -0
  433. package/dist/gateway/errors.d.ts.map +1 -0
  434. package/dist/gateway/errors.js +5 -0
  435. package/dist/gateway/errors.js.map +1 -0
  436. package/dist/gateway/exposure.d.ts +33 -0
  437. package/dist/gateway/exposure.d.ts.map +1 -0
  438. package/dist/gateway/exposure.js +146 -0
  439. package/dist/gateway/exposure.js.map +1 -0
  440. package/dist/gateway/exposure.test.d.ts +2 -0
  441. package/dist/gateway/exposure.test.d.ts.map +1 -0
  442. package/dist/gateway/exposure.test.js +93 -0
  443. package/dist/gateway/exposure.test.js.map +1 -0
  444. package/dist/gateway/gateway-policy.test.d.ts +2 -0
  445. package/dist/gateway/gateway-policy.test.d.ts.map +1 -0
  446. package/dist/gateway/gateway-policy.test.js +404 -0
  447. package/dist/gateway/gateway-policy.test.js.map +1 -0
  448. package/dist/gateway/gateway.test.js +47 -25
  449. package/dist/gateway/gateway.test.js.map +1 -1
  450. package/dist/gateway/keys.d.ts +2 -0
  451. package/dist/gateway/keys.d.ts.map +1 -1
  452. package/dist/gateway/keys.js +2 -0
  453. package/dist/gateway/keys.js.map +1 -1
  454. package/dist/gateway/limits.d.ts +32 -8
  455. package/dist/gateway/limits.d.ts.map +1 -1
  456. package/dist/gateway/limits.js +27 -11
  457. package/dist/gateway/limits.js.map +1 -1
  458. package/dist/gateway/observability.d.ts +51 -0
  459. package/dist/gateway/observability.d.ts.map +1 -0
  460. package/dist/gateway/observability.js +136 -0
  461. package/dist/gateway/observability.js.map +1 -0
  462. package/dist/gateway/policy-resolver.d.ts +73 -0
  463. package/dist/gateway/policy-resolver.d.ts.map +1 -0
  464. package/dist/gateway/policy-resolver.js +142 -0
  465. package/dist/gateway/policy-resolver.js.map +1 -0
  466. package/dist/gateway/policy-resolver.test.d.ts +2 -0
  467. package/dist/gateway/policy-resolver.test.d.ts.map +1 -0
  468. package/dist/gateway/policy-resolver.test.js +273 -0
  469. package/dist/gateway/policy-resolver.test.js.map +1 -0
  470. package/dist/gateway/request-errors.test.d.ts +2 -0
  471. package/dist/gateway/request-errors.test.d.ts.map +1 -0
  472. package/dist/gateway/request-errors.test.js +108 -0
  473. package/dist/gateway/request-errors.test.js.map +1 -0
  474. package/dist/gateway/request-shaping.d.ts +25 -0
  475. package/dist/gateway/request-shaping.d.ts.map +1 -0
  476. package/dist/gateway/request-shaping.js +66 -0
  477. package/dist/gateway/request-shaping.js.map +1 -0
  478. package/dist/gateway/response-usage.d.ts +35 -0
  479. package/dist/gateway/response-usage.d.ts.map +1 -0
  480. package/dist/gateway/response-usage.js +167 -0
  481. package/dist/gateway/response-usage.js.map +1 -0
  482. package/dist/gateway/response-usage.test.d.ts +2 -0
  483. package/dist/gateway/response-usage.test.d.ts.map +1 -0
  484. package/dist/gateway/response-usage.test.js +78 -0
  485. package/dist/gateway/response-usage.test.js.map +1 -0
  486. package/dist/gateway/runtime.d.ts +25 -0
  487. package/dist/gateway/runtime.d.ts.map +1 -1
  488. package/dist/gateway/runtime.js +39 -19
  489. package/dist/gateway/runtime.js.map +1 -1
  490. package/dist/gateway/server.d.ts +68 -2
  491. package/dist/gateway/server.d.ts.map +1 -1
  492. package/dist/gateway/server.js +532 -116
  493. package/dist/gateway/server.js.map +1 -1
  494. package/dist/gateway/services/audit.d.ts +16 -0
  495. package/dist/gateway/services/audit.d.ts.map +1 -0
  496. package/dist/gateway/services/audit.js +18 -0
  497. package/dist/gateway/services/audit.js.map +1 -0
  498. package/dist/gateway/services/context.d.ts +66 -0
  499. package/dist/gateway/services/context.d.ts.map +1 -0
  500. package/dist/gateway/services/context.js +52 -0
  501. package/dist/gateway/services/context.js.map +1 -0
  502. package/dist/gateway/services/keys.d.ts +78 -0
  503. package/dist/gateway/services/keys.d.ts.map +1 -0
  504. package/dist/gateway/services/keys.js +232 -0
  505. package/dist/gateway/services/keys.js.map +1 -0
  506. package/dist/gateway/services/members.d.ts +72 -0
  507. package/dist/gateway/services/members.d.ts.map +1 -0
  508. package/dist/gateway/services/members.js +161 -0
  509. package/dist/gateway/services/members.js.map +1 -0
  510. package/dist/gateway/services/network.d.ts +36 -0
  511. package/dist/gateway/services/network.d.ts.map +1 -0
  512. package/dist/gateway/services/network.js +147 -0
  513. package/dist/gateway/services/network.js.map +1 -0
  514. package/dist/gateway/services/operator.d.ts +98 -0
  515. package/dist/gateway/services/operator.d.ts.map +1 -0
  516. package/dist/gateway/services/operator.js +170 -0
  517. package/dist/gateway/services/operator.js.map +1 -0
  518. package/dist/gateway/services/operator.test.d.ts +2 -0
  519. package/dist/gateway/services/operator.test.d.ts.map +1 -0
  520. package/dist/gateway/services/operator.test.js +184 -0
  521. package/dist/gateway/services/operator.test.js.map +1 -0
  522. package/dist/gateway/services/peer-lists.d.ts +20 -0
  523. package/dist/gateway/services/peer-lists.d.ts.map +1 -0
  524. package/dist/gateway/services/peer-lists.js +134 -0
  525. package/dist/gateway/services/peer-lists.js.map +1 -0
  526. package/dist/gateway/services/presets.d.ts +34 -0
  527. package/dist/gateway/services/presets.d.ts.map +1 -0
  528. package/dist/gateway/services/presets.js +134 -0
  529. package/dist/gateway/services/presets.js.map +1 -0
  530. package/dist/gateway/services/routing.d.ts +13 -0
  531. package/dist/gateway/services/routing.d.ts.map +1 -0
  532. package/dist/gateway/services/routing.js +18 -0
  533. package/dist/gateway/services/routing.js.map +1 -0
  534. package/dist/gateway/services/services.test.d.ts +2 -0
  535. package/dist/gateway/services/services.test.d.ts.map +1 -0
  536. package/dist/gateway/services/services.test.js +476 -0
  537. package/dist/gateway/services/services.test.js.map +1 -0
  538. package/dist/gateway/services/settings.d.ts +68 -0
  539. package/dist/gateway/services/settings.d.ts.map +1 -0
  540. package/dist/gateway/services/settings.js +580 -0
  541. package/dist/gateway/services/settings.js.map +1 -0
  542. package/dist/gateway/services/tokens.d.ts +29 -0
  543. package/dist/gateway/services/tokens.d.ts.map +1 -0
  544. package/dist/gateway/services/tokens.js +48 -0
  545. package/dist/gateway/services/tokens.js.map +1 -0
  546. package/dist/gateway/services/usage.d.ts +55 -0
  547. package/dist/gateway/services/usage.d.ts.map +1 -0
  548. package/dist/gateway/services/usage.js +225 -0
  549. package/dist/gateway/services/usage.js.map +1 -0
  550. package/dist/gateway/services/wallet-address-env.test.d.ts +2 -0
  551. package/dist/gateway/services/wallet-address-env.test.d.ts.map +1 -0
  552. package/dist/gateway/services/wallet-address-env.test.js +119 -0
  553. package/dist/gateway/services/wallet-address-env.test.js.map +1 -0
  554. package/dist/gateway/services/wallet-address.d.ts +40 -0
  555. package/dist/gateway/services/wallet-address.d.ts.map +1 -0
  556. package/dist/gateway/services/wallet-address.js +116 -0
  557. package/dist/gateway/services/wallet-address.js.map +1 -0
  558. package/dist/gateway/services/wallet-address.test.d.ts +2 -0
  559. package/dist/gateway/services/wallet-address.test.d.ts.map +1 -0
  560. package/dist/gateway/services/wallet-address.test.js +84 -0
  561. package/dist/gateway/services/wallet-address.test.js.map +1 -0
  562. package/dist/gateway/services/workspaces.d.ts +75 -0
  563. package/dist/gateway/services/workspaces.d.ts.map +1 -0
  564. package/dist/gateway/services/workspaces.js +228 -0
  565. package/dist/gateway/services/workspaces.js.map +1 -0
  566. package/dist/gateway/spend-durability.test.d.ts +2 -0
  567. package/dist/gateway/spend-durability.test.d.ts.map +1 -0
  568. package/dist/gateway/spend-durability.test.js +330 -0
  569. package/dist/gateway/spend-durability.test.js.map +1 -0
  570. package/dist/gateway/spend-feed.d.ts +11 -1
  571. package/dist/gateway/spend-feed.d.ts.map +1 -1
  572. package/dist/gateway/spend-feed.js +17 -4
  573. package/dist/gateway/spend-feed.js.map +1 -1
  574. package/dist/gateway/spend-feed.test.d.ts +2 -0
  575. package/dist/gateway/spend-feed.test.d.ts.map +1 -0
  576. package/dist/gateway/spend-feed.test.js +34 -0
  577. package/dist/gateway/spend-feed.test.js.map +1 -0
  578. package/dist/gateway/store-data.test.d.ts +2 -0
  579. package/dist/gateway/store-data.test.d.ts.map +1 -0
  580. package/dist/gateway/store-data.test.js +346 -0
  581. package/dist/gateway/store-data.test.js.map +1 -0
  582. package/dist/gateway/store-migrations.d.ts +6 -0
  583. package/dist/gateway/store-migrations.d.ts.map +1 -0
  584. package/dist/gateway/store-migrations.js +301 -0
  585. package/dist/gateway/store-migrations.js.map +1 -0
  586. package/dist/gateway/store.d.ts +595 -10
  587. package/dist/gateway/store.d.ts.map +1 -1
  588. package/dist/gateway/store.js +1242 -120
  589. package/dist/gateway/store.js.map +1 -1
  590. package/dist/gateway/store.test.d.ts +2 -0
  591. package/dist/gateway/store.test.d.ts.map +1 -0
  592. package/dist/gateway/store.test.js +185 -0
  593. package/dist/gateway/store.test.js.map +1 -0
  594. package/dist/proxy/buyer-chain-reader.d.ts +68 -0
  595. package/dist/proxy/buyer-chain-reader.d.ts.map +1 -0
  596. package/dist/proxy/buyer-chain-reader.js +152 -0
  597. package/dist/proxy/buyer-chain-reader.js.map +1 -0
  598. package/dist/proxy/buyer-chain-reader.test.d.ts +2 -0
  599. package/dist/proxy/buyer-chain-reader.test.d.ts.map +1 -0
  600. package/dist/proxy/buyer-chain-reader.test.js +102 -0
  601. package/dist/proxy/buyer-chain-reader.test.js.map +1 -0
  602. package/dist/proxy/buyer-proxy.d.ts +169 -3
  603. package/dist/proxy/buyer-proxy.d.ts.map +1 -1
  604. package/dist/proxy/buyer-proxy.js +873 -117
  605. package/dist/proxy/buyer-proxy.js.map +1 -1
  606. package/dist/proxy/buyer-proxy.test.js +31 -0
  607. package/dist/proxy/buyer-proxy.test.js.map +1 -1
  608. package/dist/proxy/chain-read-cache.d.ts +47 -0
  609. package/dist/proxy/chain-read-cache.d.ts.map +1 -0
  610. package/dist/proxy/chain-read-cache.js +110 -0
  611. package/dist/proxy/chain-read-cache.js.map +1 -0
  612. package/dist/proxy/chain-read-cache.test.d.ts +2 -0
  613. package/dist/proxy/chain-read-cache.test.d.ts.map +1 -0
  614. package/dist/proxy/chain-read-cache.test.js +75 -0
  615. package/dist/proxy/chain-read-cache.test.js.map +1 -0
  616. package/dist/proxy/chain-rpc-test-support.d.ts +31 -0
  617. package/dist/proxy/chain-rpc-test-support.d.ts.map +1 -0
  618. package/dist/proxy/chain-rpc-test-support.js +136 -0
  619. package/dist/proxy/chain-rpc-test-support.js.map +1 -0
  620. package/dist/proxy/chain-rpc.d.ts +121 -0
  621. package/dist/proxy/chain-rpc.d.ts.map +1 -0
  622. package/dist/proxy/chain-rpc.js +420 -0
  623. package/dist/proxy/chain-rpc.js.map +1 -0
  624. package/dist/proxy/chain-rpc.test.d.ts +2 -0
  625. package/dist/proxy/chain-rpc.test.d.ts.map +1 -0
  626. package/dist/proxy/chain-rpc.test.js +180 -0
  627. package/dist/proxy/chain-rpc.test.js.map +1 -0
  628. package/dist/proxy/deposit-watch-hub.d.ts +47 -0
  629. package/dist/proxy/deposit-watch-hub.d.ts.map +1 -0
  630. package/dist/proxy/deposit-watch-hub.js +111 -0
  631. package/dist/proxy/deposit-watch-hub.js.map +1 -0
  632. package/dist/proxy/deposit-watch-hub.test.d.ts +2 -0
  633. package/dist/proxy/deposit-watch-hub.test.d.ts.map +1 -0
  634. package/dist/proxy/deposit-watch-hub.test.js +133 -0
  635. package/dist/proxy/deposit-watch-hub.test.js.map +1 -0
  636. package/dist/proxy/deposit-watcher.d.ts +44 -4
  637. package/dist/proxy/deposit-watcher.d.ts.map +1 -1
  638. package/dist/proxy/deposit-watcher.js +76 -11
  639. package/dist/proxy/deposit-watcher.js.map +1 -1
  640. package/dist/proxy/deposit-watcher.test.js +54 -1
  641. package/dist/proxy/deposit-watcher.test.js.map +1 -1
  642. package/dist/proxy/gateway-policy.test.d.ts +2 -0
  643. package/dist/proxy/gateway-policy.test.d.ts.map +1 -0
  644. package/dist/proxy/gateway-policy.test.js +576 -0
  645. package/dist/proxy/gateway-policy.test.js.map +1 -0
  646. package/dist/proxy/network-models.d.ts +2 -0
  647. package/dist/proxy/network-models.d.ts.map +1 -1
  648. package/dist/proxy/network-models.js +3 -1
  649. package/dist/proxy/network-models.js.map +1 -1
  650. package/dist/proxy/route-policy.d.ts +97 -0
  651. package/dist/proxy/route-policy.d.ts.map +1 -0
  652. package/dist/proxy/route-policy.js +230 -0
  653. package/dist/proxy/route-policy.js.map +1 -0
  654. package/dist/proxy/route-policy.test.d.ts +2 -0
  655. package/dist/proxy/route-policy.test.d.ts.map +1 -0
  656. package/dist/proxy/route-policy.test.js +120 -0
  657. package/dist/proxy/route-policy.test.js.map +1 -0
  658. package/dist/proxy/spend-attribution.d.ts +41 -10
  659. package/dist/proxy/spend-attribution.d.ts.map +1 -1
  660. package/dist/proxy/spend-attribution.js +133 -37
  661. package/dist/proxy/spend-attribution.js.map +1 -1
  662. package/dist/proxy/tee-control.d.ts +3 -1
  663. package/dist/proxy/tee-control.d.ts.map +1 -1
  664. package/dist/proxy/tee-control.js +5 -3
  665. package/dist/proxy/tee-control.js.map +1 -1
  666. package/dist/proxy/telemetry.d.ts +2 -1
  667. package/dist/proxy/telemetry.d.ts.map +1 -1
  668. package/dist/proxy/telemetry.js +10 -5
  669. package/dist/proxy/telemetry.js.map +1 -1
  670. package/dist/routing-policy/policy.d.ts +149 -0
  671. package/dist/routing-policy/policy.d.ts.map +1 -0
  672. package/dist/routing-policy/policy.js +450 -0
  673. package/dist/routing-policy/policy.js.map +1 -0
  674. package/dist/routing-policy/policy.test.d.ts +2 -0
  675. package/dist/routing-policy/policy.test.d.ts.map +1 -0
  676. package/dist/routing-policy/policy.test.js +134 -0
  677. package/dist/routing-policy/policy.test.js.map +1 -0
  678. package/package.json +15 -7
@@ -0,0 +1,373 @@
1
+ import assert from 'node:assert/strict';
2
+ import { mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
3
+ import { tmpdir } from 'node:os';
4
+ import { join } from 'node:path';
5
+ import test, { after, afterEach, before, beforeEach, describe } from 'node:test';
6
+ import { Command } from 'commander';
7
+ import { AuthDb } from '../../../gateway/auth/db.js';
8
+ import { startFakeBuyer } from '../../../gateway/console-api/handlers/network-test-helpers.js';
9
+ import { addActiveMember } from '../../../gateway/console-api/test-support.js';
10
+ import { GatewayStore } from '../../../gateway/store.js';
11
+ import { decodePolicyHeader, GATEWAY_CONTROL_HEADER, GATEWAY_CONTROL_SECRET_FILE, ROUTING_POLICY_HEADER } from '../../../routing-policy/policy.js';
12
+ import { followRequests } from './activity.js';
13
+ import { registerGatewayCommands } from './index.js';
14
+ import { gatewayCliRuntime } from './shared.js';
15
+ // Never ask a buyer that may be running on this machine; tests that need one inject it.
16
+ gatewayCliRuntime.buyerAddresses = async () => null;
17
+ const PEER_A = 'aa'.repeat(20);
18
+ const PEER_B = 'bb'.repeat(20);
19
+ let dataDir;
20
+ let configPath;
21
+ let buyer;
22
+ let restarts = 0;
23
+ async function run(...args) {
24
+ const program = new Command();
25
+ program.exitOverride().option('--data-dir <path>').option('--config <path>');
26
+ registerGatewayCommands(program);
27
+ const lines = [];
28
+ const original = console.log;
29
+ console.log = (...parts) => { lines.push(parts.map(String).join(' ')); };
30
+ try {
31
+ await program.parseAsync(['node', 'antseed', '--data-dir', dataDir, '--config', configPath, 'gateway', ...args]);
32
+ }
33
+ finally {
34
+ console.log = original;
35
+ }
36
+ return lines.join('\n');
37
+ }
38
+ async function runJson(...args) {
39
+ return JSON.parse(await run(...args, '--json'));
40
+ }
41
+ function withStore(fn) {
42
+ const store = new GatewayStore(dataDir);
43
+ try {
44
+ return fn(store);
45
+ }
46
+ finally {
47
+ store.close();
48
+ }
49
+ }
50
+ function activeMember(label, orgRole = 'member') {
51
+ return withStore((store) => addActiveMember(store, label, { orgRole, email: `${label.toLowerCase()}@example.test` }));
52
+ }
53
+ function auditActions(action) {
54
+ return withStore((store) => store.listAudit({ ...(action ? { action } : {}), limit: 500 }).entries.map((entry) => entry.action));
55
+ }
56
+ before(async () => {
57
+ buyer = await startFakeBuyer({
58
+ 'GET /_antseed/peers': () => ({
59
+ body: {
60
+ ok: true,
61
+ peers: [
62
+ { peerId: PEER_A, displayName: 'Seller A', providers: ['p'], capabilities: ['verifier.antseed-verifier'], trust: { score: 72 }, providerPricing: { p: { defaults: { inputUsdPerMillion: 1, outputUsdPerMillion: 2 }, services: { 'open-model-a': {} } } } },
63
+ { peerId: PEER_B, displayName: 'Seller B', providers: ['p'], providerPricing: { p: { defaults: { inputUsdPerMillion: 3, outputUsdPerMillion: 4 }, services: { 'open-model-b': {} } } } },
64
+ ],
65
+ },
66
+ }),
67
+ 'GET /_antseed/route-preview': (request) => ({
68
+ body: {
69
+ model: new URL(request.url, 'http://x').searchParams.get('model'),
70
+ candidates: [
71
+ { peerId: PEER_A, displayName: null, rank: 1, eligible: true, reasons: ['cheapest'], inputUsdPerMillion: 1, outputUsdPerMillion: 2, trustScore: 72 },
72
+ { peerId: PEER_B, displayName: null, rank: null, eligible: false, reasons: ['below min trust'], inputUsdPerMillion: 3, outputUsdPerMillion: 4, trustScore: 10 },
73
+ ],
74
+ },
75
+ }),
76
+ 'GET /_antseed/balances': () => ({ body: { available: '0', reserved: '0', walletUsdc: '0' } }),
77
+ 'POST /_antseed/restart': () => {
78
+ restarts += 1;
79
+ return { status: 202, body: { ok: true } };
80
+ },
81
+ });
82
+ });
83
+ after(async () => {
84
+ await buyer.close();
85
+ });
86
+ beforeEach(() => {
87
+ dataDir = mkdtempSync(join(tmpdir(), 'antseed-gateway-console-cli-'));
88
+ configPath = join(dataDir, 'config.json');
89
+ writeFileSync(configPath, `${JSON.stringify({ buyer: { proxyPort: buyer.port } }, null, 2)}\n`);
90
+ });
91
+ afterEach(() => {
92
+ rmSync(dataDir, { recursive: true, force: true });
93
+ });
94
+ describe('gateway workspace (console parity)', () => {
95
+ test('show, update, policy, members and delete', async () => {
96
+ const created = await runJson('workspace', 'create', '--name', 'Lab', '--identity', 'default');
97
+ const bob = activeMember('Bob');
98
+ const updated = await runJson('workspace', 'update', 'Lab', '--name', 'Lab 2', '--weekly-limit', '40');
99
+ assert.equal(updated.name, 'Lab 2');
100
+ assert.equal(updated.limitsUsd['weekly'], '40.000000');
101
+ await assert.rejects(run('workspace', 'update', 'Lab 2'), /Nothing to change/);
102
+ await run('workspace', 'policy', 'set', 'Lab 2', '--layer', 'org', '--min-trust', '30');
103
+ await run('workspace', 'policy', 'set', 'Lab 2', '--allow-model', 'open-model-a', '--sort', 'price');
104
+ const policy = await runJson('workspace', 'policy', 'show', 'Lab 2');
105
+ assert.deepEqual(policy.orgRoutingPolicy, { minTrustScore: 30 });
106
+ assert.deepEqual(policy.routingPolicy, { allowedModels: ['open-model-a'], sort: 'price' });
107
+ assert.equal(policy.effective['minTrustScore'], 30);
108
+ // Asking for less trust than the org policy requires is narrowed.
109
+ await assert.rejects(run('workspace', 'policy', 'set', 'Lab 2', '--min-trust', '10'), /--accept-narrowed/);
110
+ await run('workspace', 'policy', 'set', 'Lab 2', '--min-trust', '10', '--merge', '--accept-narrowed');
111
+ await run('workspace', 'policy', 'clear', 'Lab 2', '--layer', 'org');
112
+ withStore((store) => {
113
+ const record = store.getWorkspace(created.id);
114
+ assert.equal(record.orgRoutingPolicy, null);
115
+ assert.deepEqual(record.routingPolicy, { allowedModels: ['open-model-a'], sort: 'price', minTrustScore: 10 });
116
+ });
117
+ await run('workspace', 'member', 'add', 'Lab 2', 'bob@example.test');
118
+ await run('workspace', 'member', 'role', 'Lab 2', bob.id, 'admin');
119
+ assert.deepEqual(await runJson('workspace', 'member', 'list', 'Lab 2'), [{ memberId: bob.id, label: 'Bob', email: 'bob@example.test', status: 'active', role: 'admin' }]);
120
+ assert.match(await run('workspace', 'show', 'Lab 2'), /Bob <bob@example.test>\s+admin/);
121
+ await run('key', 'create', '--label', 'bob-key', '--workspace', 'Lab 2', '--owner', bob.id);
122
+ await assert.rejects(run('workspace', 'delete', 'Lab 2', '--buyer-port', String(buyer.port)), /Revoke this workspace's keys first/);
123
+ assert.match(await run('workspace', 'member', 'remove', 'Lab 2', bob.id), /revoked 1 key/);
124
+ await run('workspace', 'delete', 'Lab 2');
125
+ withStore((store) => assert.equal(store.getWorkspace(created.id), null));
126
+ await assert.rejects(run('workspace', 'delete', 'Default'), /Default workspace cannot be deleted/);
127
+ assert.ok(auditActions('workspace').includes('workspace.delete'));
128
+ });
129
+ });
130
+ describe('gateway member (console parity)', () => {
131
+ test('show, update, policy, credentials and invites', async () => {
132
+ const carol = activeMember('Carol', 'admin');
133
+ activeMember('Owner', 'owner');
134
+ const shown = await runJson('member', 'show', 'carol@example.test');
135
+ assert.equal(shown.id, carol.id);
136
+ const updated = await runJson('member', 'update', carol.id, '--role', 'member', '--max-keys', '2', '--monthly-limit', '20');
137
+ assert.equal(updated.orgRole, 'member');
138
+ assert.equal(updated.maxKeys, 2);
139
+ assert.equal(updated.limitsUsd['monthly'], '20.000000');
140
+ await assert.rejects(run('member', 'update', carol.id, '--max-keys', 'lots'), /--max-keys/);
141
+ await run('member', 'policy', 'set', carol.id, '--require-tee', '--max-input-price', '2.5');
142
+ withStore((store) => assert.deepEqual(store.getMember(carol.id).routingPolicy, { requireTee: true, maxInputUsdPerMillion: 2.5 }));
143
+ assert.match(await run('member', 'policy', 'show', carol.id), /Require TEE: yes/);
144
+ await run('member', 'policy', 'clear', carol.id);
145
+ withStore((store) => assert.equal(store.getMember(carol.id).routingPolicy, null));
146
+ const credentialId = withStore((store) => {
147
+ const db = new AuthDb(store.database, () => Date.now());
148
+ db.addCredential(carol.id, { kind: 'wallet', label: 'Main wallet', address: `0x${'cd'.repeat(20)}` });
149
+ const second = db.addCredential(carol.id, { kind: 'wallet', label: 'Backup', address: `0x${'ef'.repeat(20)}` });
150
+ db.createSession({ kind: 'member', memberId: carol.id }, { userAgent: null, ip: '127.0.0.1' });
151
+ return second.id;
152
+ });
153
+ const listed = await runJson('member', 'credentials', 'list', carol.id);
154
+ assert.deepEqual(listed.map((entry) => entry.label).sort(), ['Backup', 'Main wallet']);
155
+ await run('member', 'credentials', 'remove', carol.id, credentialId);
156
+ withStore((store) => {
157
+ const sessions = store.database.prepare('SELECT COUNT(*) AS count FROM auth_sessions WHERE member_id = ?').get(carol.id);
158
+ assert.equal(sessions.count, 0);
159
+ });
160
+ const remaining = listed.find((entry) => entry.id !== credentialId).id;
161
+ await assert.rejects(run('member', 'credentials', 'remove', carol.id, remaining), /--allow-last/);
162
+ await run('member', 'credentials', 'remove', carol.id, remaining, '--allow-last');
163
+ assert.deepEqual(await runJson('member', 'credentials', 'list', carol.id), []);
164
+ const invite = await runJson('member', 'invite', '--label', 'Dana');
165
+ assert.deepEqual((await runJson('member', 'invites')).map((entry) => entry.id), [invite.id]);
166
+ await run('member', 'cancel-invite', invite.id);
167
+ assert.deepEqual(await runJson('member', 'invites'), []);
168
+ assert.deepEqual(auditActions('member').filter((action) => action !== 'member.update'), ['member.credential_remove', 'member.credential_remove']);
169
+ });
170
+ });
171
+ describe('gateway key (console parity)', () => {
172
+ test('update both layers, rotate, and set policies with narrowing and empty-allow checks', async () => {
173
+ const key = await runJson('key', 'create', '--label', 'svc', '--daily-limit', '10');
174
+ const updated = await runJson('key', 'update', key.id, '--label', 'svc-2', '--owner-daily-limit', '4', '--expires-in-days', '3');
175
+ assert.equal(updated.label, 'svc-2');
176
+ assert.equal(updated.ownerLimitsUsd['daily'], '4.000000');
177
+ assert.equal(updated.effectiveLimitsUsd['daily'], '4.000000');
178
+ assert.ok(updated.expiresAt);
179
+ await assert.rejects(run('key', 'update', key.id, '--owner-daily-limit', '50'), /--accept-narrowed/);
180
+ await run('key', 'update', key.id, '--no-expiry', '--owner-daily-limit', 'none');
181
+ withStore((store) => {
182
+ const record = store.getKey(key.id);
183
+ assert.equal(record.expiresAt, null);
184
+ assert.equal(record.ownerLimits.daily, null);
185
+ });
186
+ const rotated = await runJson('key', 'rotate', key.id);
187
+ assert.notEqual(rotated.apiKey, key.apiKey);
188
+ withStore((store) => {
189
+ assert.equal(store.findKeyBySecret(key.apiKey), null);
190
+ assert.equal(store.findKeyBySecret(rotated.apiKey)?.id, key.id);
191
+ });
192
+ await run('peer-list', 'create', '--name', 'Trusted', '--peer', PEER_A);
193
+ await run('key', 'policy', 'set', key.id, '--allow-list', 'Trusted', '--block-peer', PEER_B);
194
+ await assert.rejects(run('key', 'policy', 'set', key.id, '--layer', 'owner', '--allow-peer', PEER_B), /--confirm-empty/);
195
+ await assert.rejects(run('key', 'policy', 'set', key.id, '--layer', 'owner', '--allow-peer', PEER_B, '--confirm-empty'), /--accept-narrowed/);
196
+ await run('key', 'policy', 'set', key.id, '--layer', 'owner', '--allow-peer', PEER_A, '--sort', 'latency');
197
+ const policy = await runJson('key', 'policy', 'show', key.id);
198
+ assert.equal(policy.routingPolicy['allowedPeerLists'].length, 1);
199
+ assert.deepEqual(policy.ownerRoutingPolicy, { allowedPeerIds: [PEER_A], sort: 'latency' });
200
+ assert.deepEqual(policy.effective['allowedPeerIds'], [PEER_A]);
201
+ const policyFile = join(dataDir, 'policy.json');
202
+ writeFileSync(policyFile, JSON.stringify({ allowedModels: ['open-model-a'], minTrustScore: 20 }));
203
+ await run('key', 'policy', 'set', key.id, '--file', policyFile);
204
+ withStore((store) => assert.deepEqual(store.getKey(key.id).routingPolicy, { allowedModels: ['open-model-a'], minTrustScore: 20 }));
205
+ writeFileSync(policyFile, JSON.stringify({ minTrustScore: 'high' }));
206
+ await assert.rejects(run('key', 'policy', 'set', key.id, '--file', policyFile), /not a valid routing policy/);
207
+ await run('key', 'policy', 'clear', key.id, '--layer', 'owner');
208
+ withStore((store) => assert.equal(store.getKey(key.id).ownerRoutingPolicy, null));
209
+ assert.match(await run('key', 'show', key.id), /Owner routing policy:.*\n.*no restrictions/);
210
+ assert.deepEqual(auditActions('key.rotate'), ['key.rotate']);
211
+ });
212
+ });
213
+ describe('gateway routing', () => {
214
+ test('default policy show/set/clear and a route preview through the buyer', async () => {
215
+ await run('routing', 'set', '--min-trust', '50', '--allow-model', 'open-model-a');
216
+ assert.deepEqual(await runJson('routing', 'show'), { allowedModels: ['open-model-a'], minTrustScore: 50 });
217
+ await assert.rejects(run('routing', 'set', '--allow-peer', PEER_A, '--file', '/nonexistent/policy.json'), /Could not read/);
218
+ const preview = await runJson('routing', 'preview', '--model', 'open-model-a');
219
+ assert.equal(preview.modelAllowed, true);
220
+ assert.equal(preview.candidates[0].displayName, 'Seller A');
221
+ const sent = buyer.requests.filter((request) => request.url.startsWith('/_antseed/route-preview')).at(-1);
222
+ const secret = readFileSync(join(dataDir, GATEWAY_CONTROL_SECRET_FILE), 'utf8').trim();
223
+ assert.equal(sent.headers[GATEWAY_CONTROL_HEADER], secret);
224
+ assert.deepEqual(decodePolicyHeader(String(sent.headers[ROUTING_POLICY_HEADER])), { allowedModels: ['open-model-a'], minTrustScore: 50 });
225
+ const table = await run('routing', 'preview', '--model', 'open-model-a', '--all');
226
+ assert.match(table, /below min trust/);
227
+ assert.match(await run('routing', 'preview', '--model', 'closed-model'), /not allowed/);
228
+ const key = await runJson('key', 'create', '--label', 'k');
229
+ const resolved = await runJson('routing', 'show', '--key', key.id);
230
+ assert.deepEqual(resolved.sources.map((source) => source.level), ['buyer', 'gateway', 'workspace-org', 'workspace', 'key', 'key-owner']);
231
+ await run('routing', 'clear');
232
+ assert.deepEqual(await runJson('routing', 'show'), {});
233
+ });
234
+ });
235
+ describe('gateway peer-list and preset', () => {
236
+ test('peer list CRUD with add/remove and the empty-allow guard', async () => {
237
+ const list = await runJson('peer-list', 'create', '--name', 'Fast', '--peer', `0x${PEER_A}`, '--description', 'low latency');
238
+ assert.deepEqual(list.peerIds, [PEER_A]);
239
+ await run('peer-list', 'add', 'Fast', PEER_B);
240
+ assert.deepEqual((await runJson('peer-list', 'show', 'fast')).peerIds, [PEER_A, PEER_B]);
241
+ await run('routing', 'set', '--allow-list', 'Fast');
242
+ await run('peer-list', 'remove', 'Fast', PEER_A);
243
+ await assert.rejects(run('peer-list', 'remove', 'Fast', PEER_B), /--confirm-empty/);
244
+ await assert.rejects(run('peer-list', 'delete', 'Fast'), /gateway default/);
245
+ await run('peer-list', 'update', 'Fast', '--name', 'Faster', '--peers', `${PEER_A},${PEER_B}`);
246
+ assert.deepEqual((await runJson('peer-list', 'list')).map((entry) => [entry.name, entry.peerIds.length]), [['Faster', 2]]);
247
+ await run('peer-list', 'delete', 'Faster', '--confirm-empty');
248
+ assert.deepEqual(await runJson('peer-list', 'list'), []);
249
+ });
250
+ test('preset CRUD', async () => {
251
+ await run('workspace', 'create', '--name', 'Team', '--identity', 'default');
252
+ const promptFile = join(dataDir, 'prompt.txt');
253
+ writeFileSync(promptFile, 'Answer briefly.\n');
254
+ // A workspace preset may come first; an org-wide one with its slug then wins, and a new one may not shadow it.
255
+ await run('preset', 'create', '--slug', 'brief', '--name', 'Team brief', '--model', 'open-model-b', '--workspace', 'Team');
256
+ const preset = await runJson('preset', 'create', '--slug', 'brief', '--name', 'Brief', '--model', 'open-model-a', '--param', 'temperature=0.1', '--param', 'stop=END', '--system-prompt-file', promptFile, '--require-tee');
257
+ assert.deepEqual(preset.params, { temperature: 0.1, stop: 'END' });
258
+ assert.equal(preset.systemPrompt, 'Answer briefly.');
259
+ assert.deepEqual(preset.routingPolicy, { requireTee: true });
260
+ assert.equal(preset.workspaceId, null);
261
+ await assert.rejects(run('preset', 'create', '--slug', 'brief', '--name', 'x', '--model', 'm'), /already exists/);
262
+ await assert.rejects(run('preset', 'create', '--slug', 'brief', '--name', 'x', '--model', 'm', '--workspace', 'Team'), /already/);
263
+ await assert.rejects(run('preset', 'show', 'brief'), /Several presets/);
264
+ assert.equal((await runJson('preset', 'show', 'brief', '--workspace', 'org')).id, preset.id);
265
+ const updated = await runJson('preset', 'update', preset.id, '--model', 'open-model-c', '--clear-policy', '--param', 'temperature=0.3', '--merge');
266
+ assert.equal(updated.model, 'open-model-c');
267
+ assert.equal(updated.routingPolicy, null);
268
+ assert.deepEqual(updated.params, { temperature: 0.3, stop: 'END' });
269
+ assert.equal((await runJson('preset', 'list', '--workspace', 'Team')).length, 2);
270
+ await run('preset', 'delete', preset.id);
271
+ assert.deepEqual((await runJson('preset', 'list')).map((entry) => entry.name), ['Team brief']);
272
+ });
273
+ });
274
+ describe('gateway usage, logs, export and audit', () => {
275
+ function seed() {
276
+ return withStore((store) => {
277
+ const { key } = store.createKey({ label: 'usage-key', limits: { daily: null, monthly: null, total: null }, expiresAt: null });
278
+ const now = Date.now();
279
+ for (let index = 0; index < 4; index += 1) {
280
+ const tag = `gw_test_${index}`;
281
+ store.startRequest({ tag, keyId: key.id, buyerIdentity: 'default', method: 'POST', path: '/v1/chat/completions', model: index < 3 ? 'open-model-a' : 'open-model-b', startedAt: now - (10 - index) * 1000, endUser: null });
282
+ store.finishRequest(tag, { status: index === 1 ? 502 : 200, buyerRequestId: null, ...(index === 1 ? { error: { code: 'seller_failed', message: 'upstream' } } : {}) });
283
+ }
284
+ store.recordRequestContent('gw_test_0', { requestBody: '{"q":1}', responseBody: '{"a":1}' });
285
+ return key.id;
286
+ });
287
+ }
288
+ test('usage groups, log pages and filters, request detail, CSV export, audit filters', async () => {
289
+ const keyId = seed();
290
+ const usage = await runJson('usage', '--group-by', 'model', '--key', keyId);
291
+ assert.equal(usage.totals.requests, 4);
292
+ assert.equal(usage.totals.failedRequests, 1);
293
+ assert.deepEqual(usage.groups.map((group) => [group.group, group.requests]).sort(), [['open-model-a', 3], ['open-model-b', 1]]);
294
+ await assert.rejects(run('usage', '--group-by', 'colour'), /groupBy must be one of/);
295
+ const page = await runJson('logs', '--limit', '2');
296
+ assert.deepEqual(page.requests.map((row) => row.tag), ['gw_test_3', 'gw_test_2']);
297
+ const next = await runJson('logs', '--limit', '2', '--before', page.nextBefore);
298
+ assert.deepEqual(next.requests.map((row) => row.tag), ['gw_test_1', 'gw_test_0']);
299
+ const failed = await runJson('logs', 'list', '--status', 'error');
300
+ assert.deepEqual(failed.requests.map((row) => row.tag), ['gw_test_1']);
301
+ assert.match(await run('logs', '--search', 'seller_failed'), /gw_test_1/);
302
+ const detail = await runJson('logs', 'show', 'gw_test_0');
303
+ assert.equal(detail.requestBody, '{"q":1}');
304
+ await assert.rejects(run('logs', 'show', 'gw_missing'), /Request not found/);
305
+ const output = join(dataDir, 'usage.csv');
306
+ await run('export', '--csv', '--model', 'open-model-a', '--output', output);
307
+ const lines = readFileSync(output, 'utf8').trim().split('\r\n');
308
+ assert.equal(lines.length, 4);
309
+ assert.match(lines[0], /^tag,startedAt,finishedAt,keyId/);
310
+ await assert.rejects(run('export', '--csv', '--output', join(dataDir, 'missing', 'usage.csv')), /ENOENT/);
311
+ await run('routing', 'set', '--min-trust', '5');
312
+ const audit = await runJson('audit', '--action', 'routing');
313
+ assert.deepEqual(audit.entries.map((entry) => [entry.action, entry.actor.kind]), [['routing.default.update', 'cli']]);
314
+ await assert.rejects(run('audit', '--limit', '1000'), /limit must be between/);
315
+ });
316
+ test('following the log prints finished requests once, oldest first', async () => {
317
+ const keyId = seed();
318
+ const store = new GatewayStore(dataDir);
319
+ try {
320
+ const seen = [];
321
+ const controller = new AbortController();
322
+ const since = Date.now() - 60_000;
323
+ const following = followRequests(store, { keyIds: null }, { intervalMs: 10, signal: controller.signal, since, onEntry: (entry) => seen.push(entry.tag) });
324
+ await new Promise((resolve) => setTimeout(resolve, 40));
325
+ store.startRequest({ tag: 'gw_live', keyId, buyerIdentity: 'default', method: 'POST', path: '/v1/x', model: 'm', startedAt: Date.now(), endUser: null });
326
+ await new Promise((resolve) => setTimeout(resolve, 40));
327
+ assert.ok(!seen.includes('gw_live'), 'in-flight requests wait until they finish');
328
+ store.finishRequest('gw_live', { status: 200, buyerRequestId: null });
329
+ await new Promise((resolve) => setTimeout(resolve, 40));
330
+ controller.abort();
331
+ await following;
332
+ assert.deepEqual(seen, ['gw_test_0', 'gw_test_1', 'gw_test_2', 'gw_test_3', 'gw_live']);
333
+ }
334
+ finally {
335
+ store.close();
336
+ }
337
+ });
338
+ });
339
+ describe('gateway settings and peers', () => {
340
+ test('show, set-observability and set-buyer (restarting the buyer)', async () => {
341
+ const shown = await runJson('settings', 'show');
342
+ assert.equal(shown.buyer.proxyPort, buyer.port);
343
+ assert.equal(shown.observability.otlpEndpoint, null);
344
+ await run('settings', 'set-observability', '--otlp-endpoint', 'https://otel.example.test/v1/traces', '--otlp-header', 'authorization=Bearer abc', '--retention-days', '14');
345
+ const masked = await runJson('settings', 'show');
346
+ assert.deepEqual(masked.observability.otlpHeaders, { authorization: '••••' });
347
+ assert.equal(masked.observability.retentionDays, 14);
348
+ const revealed = await runJson('settings', 'show', '--reveal');
349
+ assert.deepEqual(revealed.observability.otlpHeaders, { authorization: 'Bearer abc' });
350
+ // Saved header values never follow the export to another origin.
351
+ await assert.rejects(run('settings', 'set-observability', '--otlp-endpoint', 'https://elsewhere.example.test/v1/traces'), /give its headers again/);
352
+ await run('settings', 'set-observability', '--log-content', 'on');
353
+ assert.deepEqual(auditActions('settings.observability'), ['settings.observability.update', 'settings.observability.update']);
354
+ const before = restarts;
355
+ const result = await runJson('settings', 'set-buyer', '--max-input-price', '3', '--min-reputation', '25');
356
+ assert.equal(result.restartRequired, false);
357
+ assert.equal(result.buyer.minPeerReputation, 25);
358
+ assert.equal(result.buyer.maxPricing.inputUsdPerMillion, 3);
359
+ assert.equal(restarts, before + 1);
360
+ const config = JSON.parse(readFileSync(configPath, 'utf8'));
361
+ assert.equal(config.buyer['proxyPort'], buyer.port);
362
+ await assert.rejects(run('settings', 'set-buyer', '--min-reputation', '150'), /--min-reputation/);
363
+ });
364
+ test('peers lists the buyer\'s sellers, filtered by model', async () => {
365
+ const peers = await runJson('peers');
366
+ assert.deepEqual(peers.map((peer) => peer.peerId), [PEER_A, PEER_B]);
367
+ const filtered = await runJson('peers', '--model', 'open-model-b');
368
+ assert.deepEqual(filtered.map((peer) => peer.peerId), [PEER_B]);
369
+ assert.match(await run('peers'), /Seller A/);
370
+ await assert.rejects(run('peers', '--buyer-port', '1'), /buyer is not reachable/);
371
+ });
372
+ });
373
+ //# sourceMappingURL=gateway-console-commands.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-console-commands.test.js","sourceRoot":"","sources":["../../../../src/cli/commands/gateway/gateway-console-commands.test.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,11 @@
1
1
  import type { Command } from 'commander';
2
+ import { type GatewayRuntime } from '../../../gateway/runtime.js';
3
+ /**
4
+ * Console URL; shared by `gateway start` and `tunnel start`. The owner setup
5
+ * link is never printed here, since service output ends up in the journal
6
+ * where anyone with log access could claim the console with it; only
7
+ * `antseed gateway console-link` prints one, on demand.
8
+ */
9
+ export declare function printConsoleInfo(runtime: GatewayRuntime, consoleUrl: string, log?: (line: string) => void): void;
2
10
  export declare function registerGatewayCommands(program: Command): void;
3
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/gateway/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASxC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmC9D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/gateway/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKxC,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAkBtF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAkB,GAAG,IAAI,CAM7H;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6F9D"}
@@ -1,43 +1,122 @@
1
1
  import chalk from 'chalk';
2
+ import { loadConfig } from '../../../config/loader.js';
3
+ import { gatewayConsole, normalizePublicUrl } from '../../../gateway/console.js';
4
+ import { detectExposure, detectHostFacts, unencryptedWalletWarning } from '../../../gateway/exposure.js';
2
5
  import { startGatewayRuntime } from '../../../gateway/runtime.js';
3
6
  import { setupShutdownHandler } from '../../shutdown.js';
7
+ import { walletPassphraseForStart } from '../../wallet-passphrase.js';
4
8
  import { getGlobalOptions } from '../types.js';
5
9
  import { parsePositiveInteger } from '../parse-positive-integer.js';
10
+ import { registerGatewayActivityCommands } from './activity.js';
11
+ import { registerGatewayAdminTokenCommands } from './admin-token.js';
12
+ import { registerGatewayConsoleLinkCommand } from './console-link.js';
6
13
  import { registerGatewayKeyCommands } from './key.js';
7
- import { DEFAULT_GATEWAY_PORT, topupConfig } from './shared.js';
14
+ import { registerGatewayMemberCommands } from './member.js';
15
+ import { registerGatewayMigrateCommands } from './migrate.js';
16
+ import { registerGatewayPeerListCommands } from './peer-list.js';
17
+ import { registerGatewayPresetCommands } from './preset.js';
18
+ import { registerGatewayRoutingCommands } from './routing.js';
19
+ import { registerGatewayPeersCommand, registerGatewaySettingsCommands } from './settings.js';
20
+ import { DEFAULT_GATEWAY_PORT, startGatewayBuyer, topupConfig } from './shared.js';
21
+ import { registerGatewayWorkspaceCommands } from './workspace.js';
22
+ /**
23
+ * Console URL; shared by `gateway start` and `tunnel start`. The owner setup
24
+ * link is never printed here, since service output ends up in the journal
25
+ * where anyone with log access could claim the console with it; only
26
+ * `antseed gateway console-link` prints one, on demand.
27
+ */
28
+ export function printConsoleInfo(runtime, consoleUrl, log = console.log) {
29
+ if (!runtime.console)
30
+ return;
31
+ log(`${chalk.bold('Console:')} ${consoleUrl}`);
32
+ if (!runtime.store.isSetupComplete()) {
33
+ log(chalk.dim('The console has no owner yet. Get a one-time setup link with `antseed gateway console-link`.'));
34
+ }
35
+ }
8
36
  export function registerGatewayCommands(program) {
9
37
  const gateway = program
10
38
  .command('gateway')
11
- .description('Serve the buyer API to multiple users with per-key spend limits and usage');
39
+ .description('Serve the buyer API to multiple users with per-key spend limits and usage, and a management console');
12
40
  gateway.command('start')
13
- .description('Run the API-key gateway locally (use `antseed tunnel start` to publish it)')
41
+ .description('Run the API-key gateway and its console locally (use `antseed tunnel start` to publish it)')
14
42
  .option('--port <number>', 'gateway listen port', parsePositiveInteger, DEFAULT_GATEWAY_PORT)
15
43
  .option('--host <host>', 'listen address; use 0.0.0.0 to serve your LAN', '127.0.0.1')
16
- .option('--buyer-port <number>', 'port of the running buyer (default: buyer.proxyPort from config)', parsePositiveInteger)
44
+ .option('--buyer-port <number>', 'port of the buyer (default: buyer.proxyPort from config)', parsePositiveInteger)
45
+ .option('--no-buyer', 'do not start a buyer; use one you run yourself on the buyer port')
46
+ .option('--public-url <url>', 'origin the console is reached at, e.g. https://llm.example.com (env: ANTSEED_GATEWAY_PUBLIC_URL); needed for passkeys and single sign-on off this machine')
47
+ .option('--no-console', 'serve only the API, without the /console management console')
17
48
  .option('--x402-facilitator <url>', 'accept x402 top-ups of key wallets, settled by this facilitator: a URL, "cdp" or "payai" (env: ANTSEED_X402_FACILITATOR_URL)')
18
49
  .option('--topup-min-usd <usd>', 'smallest top-up accepted (default: 2)')
19
50
  .option('--topup-max-usd <usd>', 'largest top-up accepted (default: 500)')
20
51
  .action(async (options) => {
21
52
  const topup = topupConfig(options);
22
53
  const globalOptions = getGlobalOptions(gateway);
23
- const runtime = await startGatewayRuntime({
24
- dataDir: globalOptions.dataDir,
25
- configPath: globalOptions.config,
26
- listenPort: options.port,
27
- listenHost: options.host,
28
- ...(options.buyerPort ? { buyerPort: options.buyerPort } : {}),
29
- ...(topup ? { topup } : {}),
30
- onLog: (message) => process.stderr.write(`[gateway] ${message}\n`),
31
- });
54
+ const publicUrl = normalizePublicUrl(options.publicUrl ?? process.env['ANTSEED_GATEWAY_PUBLIC_URL']);
55
+ const log = (message) => { process.stderr.write(`[gateway] ${message}\n`); };
56
+ // Read (or asked on the terminal for encrypted keys) up front, so an unreadable
57
+ // ANTSEED_PASSPHRASE_FILE stops the start before anything runs; the buyer it starts inherits it.
58
+ const passphraseSet = await walletPassphraseForStart(globalOptions.dataDir) !== null;
59
+ const buyerPort = options.buyerPort ?? (await loadConfig(globalOptions.config)).buyer.proxyPort;
60
+ const buyer = options.buyer ? await startGatewayBuyer(buyerPort, globalOptions, log) : null;
61
+ let runtime;
62
+ try {
63
+ runtime = await startGatewayRuntime({
64
+ dataDir: globalOptions.dataDir,
65
+ configPath: globalOptions.config,
66
+ listenPort: options.port,
67
+ listenHost: options.host,
68
+ buyerPort,
69
+ ...(topup ? { topup } : {}),
70
+ ...(options.console
71
+ ? {
72
+ createConsole: gatewayConsole({
73
+ dataDir: globalOptions.dataDir,
74
+ configPath: globalOptions.config,
75
+ publicUrl,
76
+ log,
77
+ // Only when every request reaches the gateway through Cloudflare, which sets CF-Connecting-IP.
78
+ trustCloudflareHeaders: process.env['ANTSEED_TRUST_CLOUDFLARE_HEADERS'] === '1',
79
+ }),
80
+ }
81
+ : {}),
82
+ onLog: log,
83
+ });
84
+ }
85
+ catch (error) {
86
+ await buyer?.stop();
87
+ throw error;
88
+ }
32
89
  console.log(chalk.green(`API-key gateway listening on http://${options.host}:${runtime.port}/v1`));
33
- console.log(chalk.dim(`${runtime.store.countActiveKeys()} active key(s). Manage them with \`antseed gateway key …\`.`));
90
+ console.log(chalk.dim(`${runtime.store.countActiveKeys()} active key(s). Manage them in the console or with \`antseed gateway key …\`.`));
91
+ printConsoleInfo(runtime, `${publicUrl ?? `http://localhost:${runtime.port}`}/console`);
34
92
  if (topup)
35
93
  console.log(chalk.dim(`x402 top-ups: POST /v1/key/topup, settled by ${topup.facilitatorUrl}`));
94
+ const exposure = detectExposure({ publicUrl, listenHost: options.host, host: detectHostFacts() });
95
+ if (exposure.mode === 'local') {
96
+ console.log(chalk.dim('Only this computer can reach this gateway. To serve a team, move it to a server: antseed gateway export --out antseed-gateway.bundle'));
97
+ }
98
+ else if (exposure.mode === 'lan') {
99
+ console.log(chalk.dim('No public URL: only your network can reach this gateway, over plain HTTP. To serve a team, move it to a server: antseed gateway export --out antseed-gateway.bundle'));
100
+ }
101
+ const walletWarning = await unencryptedWalletWarning(globalOptions.dataDir, passphraseSet);
102
+ if (walletWarning)
103
+ console.log(chalk.yellow(walletWarning));
36
104
  setupShutdownHandler(async () => {
37
105
  await runtime.stop();
38
106
  console.log(chalk.dim('API-key gateway stopped.'));
39
107
  });
40
108
  });
41
109
  registerGatewayKeyCommands(gateway);
110
+ registerGatewayConsoleLinkCommand(gateway);
111
+ registerGatewayMemberCommands(gateway);
112
+ registerGatewayWorkspaceCommands(gateway);
113
+ registerGatewayAdminTokenCommands(gateway);
114
+ registerGatewayRoutingCommands(gateway);
115
+ registerGatewayPeerListCommands(gateway);
116
+ registerGatewayPresetCommands(gateway);
117
+ registerGatewayActivityCommands(gateway);
118
+ registerGatewaySettingsCommands(gateway);
119
+ registerGatewayPeersCommand(gateway);
120
+ registerGatewayMigrateCommands(gateway);
42
121
  }
43
122
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/commands/gateway/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE/D,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,MAAM,OAAO,GAAG,OAAO;SACpB,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,2EAA2E,CAAC,CAAA;IAE3F,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;SACrB,WAAW,CAAC,4EAA4E,CAAC;SACzF,MAAM,CAAC,iBAAiB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,oBAAoB,CAAC;SAC5F,MAAM,CAAC,eAAe,EAAE,+CAA+C,EAAE,WAAW,CAAC;SACrF,MAAM,CAAC,uBAAuB,EAAE,kEAAkE,EAAE,oBAAoB,CAAC;SACzH,MAAM,CAAC,0BAA0B,EAAE,8HAA8H,CAAC;SAClK,MAAM,CAAC,uBAAuB,EAAE,uCAAuC,CAAC;SACxE,MAAM,CAAC,uBAAuB,EAAE,wCAAwC,CAAC;SACzE,MAAM,CAAC,KAAK,EAAE,OAAiI,EAAE,EAAE;QAClJ,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;QAClC,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;QAC/C,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;YACxC,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,UAAU,EAAE,aAAa,CAAC,MAAM;YAChC,UAAU,EAAE,OAAO,CAAC,IAAI;YACxB,UAAU,EAAE,OAAO,CAAC,IAAI;YACxB,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,OAAO,IAAI,CAAC;SACnE,CAAC,CAAA;QACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uCAAuC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAA;QAClG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,6DAA6D,CAAC,CAAC,CAAA;QACvH,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gDAAgD,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAA;QACzG,oBAAoB,CAAC,KAAK,IAAI,EAAE;YAC9B,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;YACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAA;QACpD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEJ,0BAA0B,CAAC,OAAO,CAAC,CAAA;AACrC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/commands/gateway/index.ts"],"names":[],"mappings":"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"}