@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,195 @@
1
+ import assert from 'node:assert/strict';
2
+ import { test } from 'node:test';
3
+ import { Wallet, verifyTypedData } from 'ethers';
4
+ import { makeDepositsDomain, SET_OPERATOR_TYPES } from '@antseed/node';
5
+ import { ConsoleRouter } from '../router.js';
6
+ import { call, fakeDeps, fakeRequireWorkspaceAccess, memberPrincipal, rejectsWith } from './network-test-helpers.js';
7
+ import { registerOperatorRoutes } from './wallet-operator.js';
8
+ // Obvious fakes only.
9
+ const TEAM_WALLET = new Wallet(`0x${'22'.repeat(32)}`);
10
+ const OWNER_WALLET = `0x${'0a'.repeat(20)}`;
11
+ const ALI_WALLET = `0x${'0b'.repeat(20)}`;
12
+ const STRANGER = `0x${'0c'.repeat(20)}`;
13
+ const NOW = 1_700_000_000_000;
14
+ const DAY = 24 * 60 * 60_000;
15
+ const CHAIN = {
16
+ chainId: 'base-mainnet',
17
+ evmChainId: 8453,
18
+ rpcUrl: 'https://rpc.example.test',
19
+ depositsContractAddress: `0x${'d1'.repeat(20)}`,
20
+ usdcContractAddress: `0x${'a1'.repeat(20)}`,
21
+ };
22
+ const MEMBERS = {
23
+ m_owner: { id: 'm_owner', label: 'Owner', orgRole: 'owner', status: 'active' },
24
+ m_ali: { id: 'm_ali', label: 'Ali', orgRole: 'admin', status: 'active' },
25
+ m_sam: { id: 'm_sam', label: 'Sam', orgRole: 'member', status: 'active' },
26
+ };
27
+ const owner = memberPrincipal('m_owner', {}, 'owner');
28
+ const ali = memberPrincipal('m_ali', {}, 'admin');
29
+ const sam = memberPrincipal('m_sam', { ws_team: 'member' });
30
+ function fixture(chain, extra = {}) {
31
+ const audits = [];
32
+ const reads = { operator: 0, nonce: 0 };
33
+ let now = NOW;
34
+ const store = {
35
+ getWorkspace: (id) => (id === 'ws_team' ? { id, buyerIdentity: 'team-a', walletAddress: TEAM_WALLET.address } : null),
36
+ getMember: (id) => MEMBERS[id] ?? null,
37
+ listWorkspaces: () => [{ id: 'ws_team', buyerIdentity: 'team-a' }, { id: 'ws_other', buyerIdentity: 'other' }],
38
+ memberWorkspaceRoles: (memberId) => new Map(memberId === 'm_sam' ? [['ws_team', 'member']] : []),
39
+ getKey: () => null,
40
+ getAdminToken: () => null,
41
+ recordAudit: (entry) => { audits.push(entry); },
42
+ };
43
+ const router = new ConsoleRouter();
44
+ registerOperatorRoutes(router, fakeDeps(store, () => now), {
45
+ access: fakeRequireWorkspaceAccess,
46
+ loadWallet: async (name) => (name === 'team-a' ? TEAM_WALLET : null),
47
+ walletAddress: async () => TEAM_WALLET.address,
48
+ resolveChain: async () => CHAIN,
49
+ readOperator: async () => { reads.operator += 1; return chain.operator; },
50
+ operatorNonce: async () => { reads.nonce += 1; return chain.nonce; },
51
+ sessionSignIn: (sessionId) => (sessionId === 'session-m_owner' ? { authenticatedAt: now - 60_000, credentialId: 'cred_passkey' } : null),
52
+ memberWallets: (memberId) => (memberId === 'm_owner'
53
+ ? { wallets: [{ id: 'cred_owner_wallet', address: OWNER_WALLET, createdAt: NOW - 2 * DAY }, { id: 'cred_new', address: STRANGER.replace('0c', '0d'), createdAt: NOW - 3_600_000 }], total: 3 }
54
+ : { wallets: [], total: 0 }),
55
+ walletOwner: (address) => {
56
+ if (address.toLowerCase() === OWNER_WALLET)
57
+ return { memberId: 'm_owner', label: 'Owner' };
58
+ if (address.toLowerCase() === ALI_WALLET)
59
+ return { memberId: 'm_ali', label: 'Ali' };
60
+ return null;
61
+ },
62
+ ...extra,
63
+ });
64
+ return { router, audits, reads, chain, advance: (ms) => { now += ms; } };
65
+ }
66
+ const get = (router, who = owner, query = '') => call(router, 'GET', `/workspaces/ws_team/wallet/operator${query}`, who);
67
+ test('no operator: the owner may authorize, with each wallet\'s 24 h eligibility; others read only', async () => {
68
+ const { router } = fixture({ operator: null, nonce: 0n });
69
+ const state = await get(router);
70
+ assert.equal(state.relation, 'none');
71
+ assert.equal(state.operator, null);
72
+ assert.equal(state.buyer, TEAM_WALLET.address);
73
+ assert.equal(state.canAuthorize, true);
74
+ assert.deepEqual(state.eligibleWallets.map((entry) => entry.eligibleAt), [NOW - DAY, NOW - 3_600_000 + DAY]);
75
+ const asMember = await get(router, sam);
76
+ assert.equal(asMember.canAuthorize, false);
77
+ assert.deepEqual(asMember.eligibleWallets, []);
78
+ const asAdmin = await get(router, ali);
79
+ assert.equal(asAdmin.canAuthorize, false);
80
+ });
81
+ test('operator states relative to the viewer: yours, another member\'s, unknown, self', async () => {
82
+ const yours = await get(fixture({ operator: OWNER_WALLET, nonce: 1n }).router);
83
+ assert.equal(yours.relation, 'yours');
84
+ assert.equal(yours.canAuthorize, false);
85
+ assert.equal(yours.operator?.toLowerCase(), OWNER_WALLET);
86
+ const { router: aliRouter } = fixture({ operator: ALI_WALLET, nonce: 1n });
87
+ const seenByOwner = await get(aliRouter);
88
+ assert.equal(seenByOwner.relation, 'member');
89
+ assert.equal(seenByOwner.memberLabel, 'Ali');
90
+ const seenByAli = await get(aliRouter, ali);
91
+ assert.equal(seenByAli.relation, 'yours');
92
+ // Plain members learn it is a member's wallet, not whose.
93
+ const seenBySam = await get(aliRouter, sam);
94
+ assert.equal(seenBySam.relation, 'member');
95
+ assert.equal(seenBySam.memberLabel, null);
96
+ const unknown = await get(fixture({ operator: STRANGER, nonce: 1n }).router);
97
+ assert.equal(unknown.relation, 'unknown');
98
+ assert.equal(unknown.memberLabel, null);
99
+ const self = await get(fixture({ operator: TEAM_WALLET.address.toLowerCase(), nonce: 1n }).router);
100
+ assert.equal(self.relation, 'self');
101
+ // The zero address reads as no operator.
102
+ assert.equal((await get(fixture({ operator: `0x${'0'.repeat(40)}`, nonce: 2n }).router)).relation, 'none');
103
+ });
104
+ test('operator reads are cached; fresh=1 and sync re-read at most every 3 s', async () => {
105
+ const f = fixture({ operator: null, nonce: 0n });
106
+ await get(f.router);
107
+ await get(f.router, sam);
108
+ assert.equal(f.reads.operator, 1);
109
+ await get(f.router, owner, '?fresh=1');
110
+ assert.equal(f.reads.operator, 1, 'a fresh read right after a read reuses it');
111
+ f.advance(3_000);
112
+ await get(f.router, owner, '?fresh=1');
113
+ assert.equal(f.reads.operator, 2);
114
+ f.advance(30_000);
115
+ await get(f.router);
116
+ assert.equal(f.reads.operator, 2, 'within the 60 s TTL');
117
+ f.advance(31_000);
118
+ await get(f.router);
119
+ assert.equal(f.reads.operator, 3);
120
+ });
121
+ test('sync after a transaction audits a change the chain confirms', async () => {
122
+ const f = fixture({ operator: null, nonce: 0n });
123
+ await get(f.router);
124
+ f.chain.operator = OWNER_WALLET;
125
+ f.advance(5_000);
126
+ const txHash = `0x${'ef'.repeat(32)}`;
127
+ const state = await call(f.router, 'POST', '/workspaces/ws_team/wallet/operator/sync', sam, { txHash });
128
+ assert.equal(state.relation, 'member');
129
+ assert.deepEqual(f.audits.map((entry) => entry.action), ['wallet.operator.changed']);
130
+ assert.equal(f.audits[0].details?.['before'], null);
131
+ assert.equal((f.audits[0].details?.['after']).toLowerCase(), OWNER_WALLET);
132
+ assert.equal(f.audits[0].details?.['txHash'], txHash);
133
+ // Nothing changed: nothing audited; a bogus hash is dropped.
134
+ f.advance(5_000);
135
+ await call(f.router, 'POST', '/workspaces/ws_team/wallet/operator/sync', sam, { txHash: 'nope' });
136
+ assert.equal(f.audits.length, 1);
137
+ // Cleared on chain (transferOperator to the zero address).
138
+ f.chain.operator = `0x${'0'.repeat(40)}`;
139
+ f.advance(5_000);
140
+ const cleared = await call(f.router, 'POST', '/workspaces/ws_team/wallet/operator/sync', owner, {});
141
+ assert.equal(cleared.relation, 'none');
142
+ assert.equal(f.audits.at(-1).details?.['after'], null);
143
+ });
144
+ test('outsiders cannot read the operator; chain failures are 502', async () => {
145
+ const { router } = fixture({ operator: null, nonce: 0n });
146
+ await rejectsWith(get(router, memberPrincipal('m_sam', {})), 403, 'forbidden');
147
+ const broken = fixture({ operator: null, nonce: 0n }, { readOperator: async () => { throw new Error('rpc down'); } });
148
+ await rejectsWith(get(broken.router), 502, 'chain_unavailable');
149
+ });
150
+ test('operator-auth reads the operator and the nonce live, right before each signature', async () => {
151
+ const f = fixture({ operator: null, nonce: 4n });
152
+ await get(f.router); // warms the display cache; signing must not use it
153
+ const first = await call(f.router, 'POST', '/workspaces/ws_team/wallet/operator-auth', owner, { operator: OWNER_WALLET });
154
+ assert.equal(first.nonce, '4');
155
+ assert.equal(first.chainId, 8453);
156
+ assert.equal(first.depositsContract?.toLowerCase(), CHAIN.depositsContractAddress);
157
+ assert.equal(first.operator?.toLowerCase(), OWNER_WALLET);
158
+ const signer = verifyTypedData(makeDepositsDomain(8453, CHAIN.depositsContractAddress), SET_OPERATOR_TYPES, { operator: OWNER_WALLET, nonce: 4n }, first.signature);
159
+ assert.equal(signer, TEAM_WALLET.address);
160
+ // The nonce moved on chain (e.g. an operator was set and cleared meanwhile).
161
+ f.chain.nonce = 6n;
162
+ const second = await call(f.router, 'POST', '/workspaces/ws_team/wallet/operator-auth', owner, { operator: OWNER_WALLET });
163
+ assert.equal(second.nonce, '6');
164
+ assert.equal(f.reads.operator, 3);
165
+ assert.equal(f.reads.nonce, 2);
166
+ });
167
+ test('operator-auth refuses a wallet that already has an operator, without signing', async () => {
168
+ const f = fixture({ operator: ALI_WALLET, nonce: 1n });
169
+ await rejectsWith(call(f.router, 'POST', '/workspaces/ws_team/wallet/operator-auth', owner, { operator: OWNER_WALLET }), 409, 'operator_already_set');
170
+ assert.equal(f.reads.nonce, 1, 'the nonce is read with the operator, but nothing is signed');
171
+ assert.deepEqual(f.audits.map((entry) => entry.action), ['wallet.operator_auth.denied']);
172
+ assert.equal(f.audits[0].details?.['code'], 'operator_already_set');
173
+ });
174
+ test('operator-auth keeps the 24 h rule for a newly added wallet', async () => {
175
+ const f = fixture({ operator: null, nonce: 0n });
176
+ await rejectsWith(call(f.router, 'POST', '/workspaces/ws_team/wallet/operator-auth', owner, { operator: STRANGER.replace('0c', '0d') }), 403, 'operator_too_new');
177
+ await rejectsWith(call(f.router, 'POST', '/workspaces/ws_team/wallet/operator-auth', owner, { operator: STRANGER }), 403, 'operator_not_yours');
178
+ await rejectsWith(call(f.router, 'POST', '/workspaces/ws_team/wallet/operator-auth', ali, { operator: ALI_WALLET }), 403, 'forbidden');
179
+ assert.equal(f.reads.nonce, 0);
180
+ });
181
+ test('GET /wallet/operators summarizes every workspace the caller can open, null where unreadable', async () => {
182
+ const { router } = fixture({ operator: null, nonce: 0n }, {
183
+ walletAddress: async (name) => { if (name === 'other')
184
+ throw new Error('no key'); return TEAM_WALLET.address; },
185
+ });
186
+ assert.deepEqual(await call(router, 'GET', '/wallet/operators', owner), [
187
+ { workspaceId: 'ws_team', operator: null, relation: 'none', canAuthorize: true },
188
+ { workspaceId: 'ws_other', operator: null, relation: null, canAuthorize: false },
189
+ ]);
190
+ // A plain member sees only the workspaces they belong to, and cannot authorize.
191
+ assert.deepEqual(await call(router, 'GET', '/wallet/operators', sam), [
192
+ { workspaceId: 'ws_team', operator: null, relation: 'none', canAuthorize: false },
193
+ ]);
194
+ });
195
+ //# sourceMappingURL=wallet-operator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-operator.test.js","sourceRoot":"","sources":["../../../../src/gateway/console-api/handlers/wallet-operator.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Workspace wallets: balances, card funding links, the deposit watcher,
3
+ * payment channels and buyer rewards, plus the chain the browser signs
4
+ * operator actions (claim, withdraw, deposit) against.
5
+ */
6
+ import { type AntsChainConfig, type RewardsView } from '@antseed/ants';
7
+ import type { AbstractSigner } from 'ethers';
8
+ import { requireWorkspaceAccess } from '../access.js';
9
+ import type { ConsoleDeps } from '../deps.js';
10
+ import { type ConsoleRouter } from '../router.js';
11
+ import type { WalletOwner } from '../../services/operator.js';
12
+ import { type BuyerAddressBook } from '../../services/wallet-address.js';
13
+ import { type BuyerClient } from './network-buyer.js';
14
+ import { type ChannelChainState } from './wallet-mapping.js';
15
+ export interface SigningWallet {
16
+ address: string;
17
+ signMessage(message: string): Promise<string>;
18
+ /** EIP-712 signing (ethers wallets have it); needed for operator authorizations. */
19
+ signTypedData?: AbstractSigner['signTypedData'];
20
+ }
21
+ /** Seams for tests; production uses the defaults. */
22
+ export interface WalletRouteOverrides {
23
+ buyer?: BuyerClient;
24
+ requireWorkspaceAccess?: typeof requireWorkspaceAccess;
25
+ /** The buyer identity's wallet, able to sign; null when it has no readable key. */
26
+ loadWallet?: (name: string) => Promise<SigningWallet | null>;
27
+ /** The identity's address as the running buyer pays, without loading a signer; null when unknown. */
28
+ walletAddress?: (name: string) => Promise<string | null>;
29
+ /** The running buyer's identity → address; defaults to `deps.buyerAddresses`. */
30
+ buyerAddresses?: BuyerAddressBook;
31
+ resolveChain?: () => Promise<AntsChainConfig>;
32
+ /** Buyer rewards, with the legacy epochs a claim may name (`legacyEpochs`, empty when unknown). */
33
+ readRewards?: (chain: AntsChainConfig, address: string) => Promise<RewardsView & {
34
+ legacyEpochs?: number[];
35
+ }>;
36
+ /** On-chain records of these channels (AntseedChannels); ids that could not be read are left out. */
37
+ readChannelStates?: (chain: AntsChainConfig, channelIds: string[]) => Promise<Map<string, ChannelChainState>>;
38
+ payBaseUrl?: () => string;
39
+ /** The buyer's current AntseedDeposits operator nonce (live read). */
40
+ operatorNonce?: (chain: AntsChainConfig, buyer: string) => Promise<bigint>;
41
+ /** The buyer's current AntseedDeposits operator, null when none (live read). */
42
+ readOperator?: (chain: AntsChainConfig, buyer: string) => Promise<string | null>;
43
+ /** The member who signs in with a wallet address; defaults to auth's credentials table. */
44
+ walletOwner?: (address: string) => WalletOwner | null;
45
+ /** When a console session's sign-in happened and with which credential; defaults to auth's session table. */
46
+ sessionSignIn?: (sessionId: string) => {
47
+ authenticatedAt: number;
48
+ credentialId: string | null;
49
+ } | null;
50
+ /** A member's wallet credentials (lower-case addresses, when added) and credential count; defaults to auth's credentials table. */
51
+ memberWallets?: (memberId: string) => {
52
+ wallets: Array<{
53
+ id: string;
54
+ address: string;
55
+ createdAt: number;
56
+ }>;
57
+ total: number;
58
+ };
59
+ }
60
+ export declare function registerWalletRoutes(router: ConsoleRouter, deps: ConsoleDeps, overrides?: WalletRouteOverrides): void;
61
+ //# sourceMappingURL=wallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../../../src/gateway/console-api/handlers/wallet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,221 @@
1
+ /**
2
+ * Workspace wallets: balances, card funding links, the deposit watcher,
3
+ * payment channels and buyer rewards, plus the chain the browser signs
4
+ * operator actions (claim, withdraw, deposit) against.
5
+ */
6
+ import { resolveAntsChain } from '@antseed/ants';
7
+ import { DEFAULT_BUYER_IDENTITY } from '@antseed/node';
8
+ import { createHash } from 'node:crypto';
9
+ import { loadBuyerSigningIdentity } from '../../../buyer-identities/store.js';
10
+ import { ChainReadCache } from '../../../proxy/chain-read-cache.js';
11
+ import { memberWalletCredentials, sessionSignIn } from '../../auth/db.js';
12
+ import { errorMessage } from '../../errors.js';
13
+ import { audit, requireOrgAdmin, requireWorkspaceAccess } from '../access.js';
14
+ import { ConsoleError } from '../router.js';
15
+ import { assertSignerMatchesBuyer, resolveIdentityAddress, syncWalletCache } from '../../services/wallet-address.js';
16
+ import { buyerJson, defaultBuyerClient, optionalBuyerJson, withIdentity } from './network-buyer.js';
17
+ import { antseedPayBaseUrl, buildCardLink, CARD_PROVIDERS } from './wallet-card-link.js';
18
+ import { applyChannelChainState, chainInfo, mapBalances, mapChannels, mapDepositWatch, mapRewards, record } from './wallet-mapping.js';
19
+ import { createRewardsReader, readChannelStates as readChannelStatesOnChain, REWARDS_TTL_MS } from './wallet-chain.js';
20
+ import { registerOperatorRoutes } from './wallet-operator.js';
21
+ /** Channel states are re-read from the chain at most this often for the same set of channels. */
22
+ const CHANNELS_TTL_MS = 30_000;
23
+ /** Rows the buyer still counts as open; the chain may say otherwise. */
24
+ const OPEN_CHANNEL_STATUSES = new Set(['active', 'open', 'closing', 'withdrawable']);
25
+ /** After a failed rewards read, the chain is not asked again for this long (the last value is served, marked stale). */
26
+ const REWARDS_ERROR_RETRY_MS = 30_000;
27
+ /** One rewards reader per process: one ANTS context and provider per chain. */
28
+ const sharedRewardsReader = createRewardsReader();
29
+ /** The same key the buyer loads for the identity (ANTSEED_IDENTITY_HEX for the default one, then the identity files). */
30
+ async function loadSigningWallet(dataDir, name) {
31
+ return (await loadBuyerSigningIdentity(dataDir, name))?.wallet ?? null;
32
+ }
33
+ function rejectionReason(result) {
34
+ if (typeof result['reason'] === 'string')
35
+ return result['reason'];
36
+ if (typeof result['code'] === 'string')
37
+ return result['code'];
38
+ return 'no reason given';
39
+ }
40
+ export function registerWalletRoutes(router, deps, overrides = {}) {
41
+ const buyer = overrides.buyer ?? defaultBuyerClient(deps);
42
+ const access = overrides.requireWorkspaceAccess ?? requireWorkspaceAccess;
43
+ const addressBook = overrides.buyerAddresses ?? deps.buyerAddresses ?? null;
44
+ const loadKey = overrides.loadWallet ?? ((name) => loadSigningWallet(deps.dataDir, name));
45
+ // Every signature goes through here: a key that is not the wallet the buyer pays from is refused.
46
+ const loadWallet = async (name) => {
47
+ const wallet = await loadKey(name);
48
+ if (wallet)
49
+ await assertSignerMatchesBuyer(addressBook, name, wallet.address);
50
+ return wallet;
51
+ };
52
+ // Live first (the running buyer), then the key on disk; never the cached workspace column.
53
+ const walletAddress = overrides.walletAddress ?? (async (name) => (await resolveIdentityAddress(deps.dataDir, addressBook, name)).address);
54
+ const resolveChain = overrides.resolveChain ?? (() => resolveAntsChain(deps.configPath));
55
+ const readRewards = overrides.readRewards ?? sharedRewardsReader;
56
+ const readChannelStates = overrides.readChannelStates ?? readChannelStatesOnChain;
57
+ const payBaseUrl = overrides.payBaseUrl ?? (() => antseedPayBaseUrl());
58
+ const signInOf = overrides.sessionSignIn ?? ((sessionId) => sessionSignIn(deps.store.database, sessionId));
59
+ const memberWallets = overrides.memberWallets ?? ((memberId) => memberWalletCredentials(deps.store.database, memberId));
60
+ // One cache for the chain reads this router makes itself: rewards (`rewards:<address>`), the operator (`operator:<address>`) and channel states (`channels:<ids hash>`).
61
+ const chainCache = new ChainReadCache({ now: deps.now, errorRetryMs: REWARDS_ERROR_RETRY_MS });
62
+ const workspace = (request, minRole = 'member') => {
63
+ const id = request.params['id'] ?? '';
64
+ access(deps.store, request.principal, id, minRole);
65
+ const found = deps.store.getWorkspace(id);
66
+ if (!found)
67
+ throw new ConsoleError(404, 'not_found', 'Workspace not found.');
68
+ return { buyerIdentity: found.buyerIdentity || DEFAULT_BUYER_IDENTITY, record: found };
69
+ };
70
+ /** The buyer reported this address for the workspace: correct the display cache if it differs. */
71
+ const noteLiveAddress = (ws, address) => {
72
+ syncWalletCache(deps.store, ws.record, { address, source: 'live' }, (message) => deps.log(`console: WARNING ${message}`));
73
+ };
74
+ const addressOf = async (ws) => {
75
+ if (!overrides.walletAddress) {
76
+ const resolved = await resolveIdentityAddress(deps.dataDir, addressBook, ws.buyerIdentity).catch(() => null);
77
+ if (resolved?.address && resolved.source === 'live')
78
+ noteLiveAddress(ws, resolved.address);
79
+ return resolved?.address ?? null;
80
+ }
81
+ return walletAddress(ws.buyerIdentity).catch(() => null);
82
+ };
83
+ /** The identity's signing wallet; a key that cannot be read is a 409. */
84
+ const workspaceSigner = async (ws) => {
85
+ try {
86
+ return await loadWallet(ws.buyerIdentity);
87
+ }
88
+ catch (err) {
89
+ if (err instanceof ConsoleError)
90
+ throw err;
91
+ throw new ConsoleError(409, 'wallet_unavailable', `The wallet's key cannot be read: ${errorMessage(err)}`);
92
+ }
93
+ };
94
+ const depositStatus = async (ws, address) => {
95
+ // The identity param is ignored by buyers that expose only the default watcher.
96
+ const body = await optionalBuyerJson(buyer, withIdentity('/_antseed/deposits/status', ws.buyerIdentity));
97
+ return body ? mapDepositWatch(body, address) : { mode: 'off', status: 'buyer-unreachable', lastTxHash: null, event: null };
98
+ };
99
+ router.add('GET', '/workspaces/:id/wallet', async (request) => {
100
+ const ws = workspace(request);
101
+ // `fresh=1` (after a transaction) asks the buyer to re-read the chain; it rate-limits that per wallet.
102
+ const fresh = request.query.get('fresh') === '1';
103
+ const raw = await buyerJson(buyer, withIdentity(`/_antseed/balances${fresh ? '?fresh=1' : ''}`, ws.buyerIdentity));
104
+ const balances = mapBalances(raw);
105
+ if (balances.address)
106
+ noteLiveAddress(ws, balances.address);
107
+ const address = balances.address || await addressOf(ws) || '';
108
+ return {
109
+ buyerIdentity: ws.buyerIdentity, ...balances, address, deposit: await depositStatus(ws, address || null),
110
+ // Last known values: the chain is unreachable or rate limiting right now.
111
+ ...(raw['stale'] === true ? { stale: true } : {}),
112
+ };
113
+ });
114
+ router.add('POST', '/workspaces/:id/wallet/card-link', async (request) => {
115
+ const ws = workspace(request);
116
+ const body = record(request.body);
117
+ const provider = body['provider'];
118
+ if (!CARD_PROVIDERS.includes(provider))
119
+ throw new ConsoleError(400, 'invalid_provider', 'provider must be "crossmint" or "stripe".');
120
+ const wallet = await workspaceSigner(ws);
121
+ if (!wallet)
122
+ throw new ConsoleError(409, 'wallet_unavailable', `Buyer identity "${ws.buyerIdentity}" has no wallet key on this gateway.`);
123
+ try {
124
+ return { url: await buildCardLink({ baseUrl: payBaseUrl(), wallet, amountUsd: body['amountUsd'], provider }) };
125
+ }
126
+ catch (err) {
127
+ throw new ConsoleError(400, 'invalid_amount', errorMessage(err));
128
+ }
129
+ });
130
+ router.add('POST', '/workspaces/:id/wallet/watch', async (request) => {
131
+ const ws = workspace(request);
132
+ const mode = record(request.body)['mode'];
133
+ if (mode !== 'active' && mode !== 'background')
134
+ throw new ConsoleError(400, 'invalid_mode', 'mode must be "active" or "background".');
135
+ const address = await addressOf(ws);
136
+ // Only the watcher the buyer exposes can be driven; refuse rather than promote another wallet's.
137
+ const current = await depositStatus(ws, address);
138
+ if (current.status === 'not-watched') {
139
+ throw new ConsoleError(409, 'watch_unavailable', 'The buyer exposes a deposit watcher for its default wallet only; this wallet is swept automatically in the background.');
140
+ }
141
+ const result = await buyerJson(buyer, '/_antseed/deposits/watch', { method: 'POST', body: { mode, identity: ws.buyerIdentity } });
142
+ return mapDepositWatch({ watcher: true, status: result['status'] }, address);
143
+ });
144
+ registerOperatorRoutes(router, deps, {
145
+ access,
146
+ loadWallet,
147
+ walletAddress,
148
+ resolveChain,
149
+ ...(overrides.operatorNonce ? { operatorNonce: overrides.operatorNonce } : {}),
150
+ ...(overrides.readOperator ? { readOperator: overrides.readOperator } : {}),
151
+ ...(overrides.walletOwner ? { walletOwner: overrides.walletOwner } : {}),
152
+ sessionSignIn: signInOf,
153
+ memberWallets,
154
+ cache: chainCache,
155
+ onOperatorChanged: (address, buyerIdentity) => {
156
+ // Rewards carry the operator (their recipient); the buyer caches it with the balances for 5 min.
157
+ chainCache.invalidate(`rewards:${address.toLowerCase()}`);
158
+ void optionalBuyerJson(buyer, withIdentity('/_antseed/balances?fresh=1', buyerIdentity));
159
+ },
160
+ });
161
+ router.add('GET', '/workspaces/:id/channels', async (request) => {
162
+ const ws = workspace(request);
163
+ const all = request.query.get('all') === '1';
164
+ const channels = mapChannels(await buyerJson(buyer, withIdentity(`/_antseed/channels${all ? '?all=1' : ''}`, ws.buyerIdentity)));
165
+ // The buyer's store can call a channel active long after a seller settled
166
+ // it, and reports its configured maximum as the reserve; the chain decides both.
167
+ const ids = channels.filter((channel) => OPEN_CHANNEL_STATUSES.has(channel.status)).map((channel) => channel.channelId).sort();
168
+ let states = new Map();
169
+ // After a close request or withdrawal the browser asks for a re-read rather than wait out the cache.
170
+ if (request.query.get('fresh') === '1')
171
+ chainCache.invalidate('channels');
172
+ if (ids.length > 0) {
173
+ try {
174
+ states = (await chainCache.read(`channels:${createHash('sha256').update(ids.join(',')).digest('hex')}`, { ttlMs: CHANNELS_TTL_MS }, async () => readChannelStates(await resolveChain(), ids))).value;
175
+ }
176
+ catch {
177
+ // Unreadable chain: show what the buyer knows rather than nothing.
178
+ }
179
+ }
180
+ const nowSeconds = Math.floor(deps.now() / 1000);
181
+ const reconciled = channels.map((channel) => applyChannelChainState(channel, states.get(channel.channelId), nowSeconds));
182
+ return all ? reconciled : reconciled.filter((channel) => OPEN_CHANNEL_STATUSES.has(channel.status));
183
+ });
184
+ router.add('POST', '/workspaces/:id/channels/close', async (request) => {
185
+ requireOrgAdmin(request.principal, deps.store);
186
+ const ws = workspace(request);
187
+ const peerId = record(request.body)['peerId'];
188
+ if (typeof peerId !== 'string' || !/^(0x)?[0-9a-fA-F]{40}$/.test(peerId.trim())) {
189
+ throw new ConsoleError(400, 'invalid_peer', 'peerId must be a 40-character hex peer id.');
190
+ }
191
+ const result = record((await buyerJson(buyer, '/_antseed/channels/close', {
192
+ method: 'POST',
193
+ body: { peerId: peerId.trim().toLowerCase().replace(/^0x/, ''), includeAuth: true, identity: ws.buyerIdentity },
194
+ }))['result']);
195
+ if (result['status'] === 'rejected') {
196
+ throw new ConsoleError(409, 'close_rejected', `The seller declined to close the channel (${rejectionReason(result)}).`);
197
+ }
198
+ chainCache.invalidate('channels');
199
+ audit(deps, request, 'channel.close', { kind: 'workspace', id: request.params['id'] ?? null, label: null }, { buyerIdentity: ws.buyerIdentity, peerId: peerId.trim() });
200
+ return { ok: true };
201
+ });
202
+ router.add('GET', '/workspaces/:id/rewards', async (request) => {
203
+ const ws = workspace(request);
204
+ let address = await addressOf(ws);
205
+ if (!address)
206
+ address = mapBalances(await buyerJson(buyer, withIdentity('/_antseed/balances', ws.buyerIdentity))).address;
207
+ if (!address)
208
+ throw new ConsoleError(409, 'wallet_unavailable', 'This workspace has no wallet address yet.');
209
+ const owner = address;
210
+ try {
211
+ // Five-minute cache; a page visit within ten minutes is answered at once while it refreshes.
212
+ const read = await chainCache.read(`rewards:${owner.toLowerCase()}`, { ttlMs: REWARDS_TTL_MS, staleWhileRevalidateMs: REWARDS_TTL_MS }, async () => mapRewards(await readRewards(await resolveChain(), owner), owner));
213
+ return read.stale ? { ...read.value, stale: true } : read.value;
214
+ }
215
+ catch (err) {
216
+ throw new ConsoleError(502, 'rewards_unavailable', `Rewards could not be read from the chain: ${errorMessage(err)}`);
217
+ }
218
+ });
219
+ router.add('GET', '/chain', async () => chainInfo(await resolveChain()));
220
+ }
221
+ //# sourceMappingURL=wallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../../../src/gateway/console-api/handlers/wallet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=wallet.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.test.d.ts","sourceRoot":"","sources":["../../../../src/gateway/console-api/handlers/wallet.test.ts"],"names":[],"mappings":""}