@aeolus-fleet/gateway 0.29.1 → 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (923) hide show
  1. package/README.md +11 -3
  2. package/dist/adapters/a2a/a2a-agents.d.ts +6 -0
  3. package/dist/adapters/a2a/a2a-agents.js +238 -0
  4. package/dist/adapters/a2a/a2a-agents.js.map +1 -0
  5. package/dist/adapters/a2a/agent-cards.d.ts +4 -0
  6. package/dist/adapters/a2a/agent-cards.js +90 -0
  7. package/dist/adapters/a2a/agent-cards.js.map +1 -0
  8. package/dist/adapters/crypto/agent-keys.d.ts +3 -0
  9. package/dist/adapters/crypto/agent-keys.js +13 -0
  10. package/dist/adapters/crypto/agent-keys.js.map +1 -0
  11. package/dist/adapters/crypto/call-keys.js +2 -0
  12. package/dist/adapters/crypto/call-keys.js.map +1 -1
  13. package/dist/adapters/fleet/console-sessions.js +10 -6
  14. package/dist/adapters/fleet/console-sessions.js.map +1 -1
  15. package/dist/adapters/fleet/core-version.d.ts +1 -1
  16. package/dist/adapters/fleet/core-version.js +1 -1
  17. package/dist/adapters/fleet/fleet-ships.d.ts +3 -1
  18. package/dist/adapters/fleet/fleet-ships.js +19 -10
  19. package/dist/adapters/fleet/fleet-ships.js.map +1 -1
  20. package/dist/adapters/fleet/rest-fleet-door.d.ts +2 -2
  21. package/dist/adapters/fleet/rest-fleet-door.js +29 -5
  22. package/dist/adapters/fleet/rest-fleet-door.js.map +1 -1
  23. package/dist/adapters/http/a2a-cards.d.ts +24 -0
  24. package/dist/adapters/http/a2a-cards.js +62 -0
  25. package/dist/adapters/http/a2a-cards.js.map +1 -0
  26. package/dist/adapters/http/a2a-endpoint.d.ts +28 -0
  27. package/dist/adapters/http/a2a-endpoint.js +424 -0
  28. package/dist/adapters/http/a2a-endpoint.js.map +1 -0
  29. package/dist/adapters/http/a2a-streams.d.ts +28 -0
  30. package/dist/adapters/http/a2a-streams.js +74 -0
  31. package/dist/adapters/http/a2a-streams.js.map +1 -0
  32. package/dist/adapters/http/a2a-tasks.d.ts +18 -0
  33. package/dist/adapters/http/a2a-tasks.js +117 -0
  34. package/dist/adapters/http/a2a-tasks.js.map +1 -0
  35. package/dist/adapters/http/front-door.js +8 -4
  36. package/dist/adapters/http/front-door.js.map +1 -1
  37. package/dist/adapters/http/live.d.ts +3 -1
  38. package/dist/adapters/http/live.js +6 -2
  39. package/dist/adapters/http/live.js.map +1 -1
  40. package/dist/adapters/http/oauth-routes.d.ts +1 -1
  41. package/dist/adapters/http/oauth-routes.js +16 -3
  42. package/dist/adapters/http/oauth-routes.js.map +1 -1
  43. package/dist/adapters/mcp/mcp-servers.js +2 -0
  44. package/dist/adapters/mcp/mcp-servers.js.map +1 -1
  45. package/dist/adapters/pagasae/email-channel.d.ts +8 -0
  46. package/dist/adapters/pagasae/email-channel.js +37 -0
  47. package/dist/adapters/pagasae/email-channel.js.map +1 -0
  48. package/dist/adapters/pagasae/pagasae-client.js +6 -2
  49. package/dist/adapters/pagasae/pagasae-client.js.map +1 -1
  50. package/dist/adapters/prisma/agent-calls.d.ts +3 -0
  51. package/dist/adapters/prisma/agent-calls.js +49 -0
  52. package/dist/adapters/prisma/agent-calls.js.map +1 -0
  53. package/dist/adapters/prisma/changes.d.ts +17 -8
  54. package/dist/adapters/prisma/changes.js +18 -5
  55. package/dist/adapters/prisma/changes.js.map +1 -1
  56. package/dist/adapters/prisma/client-calls.d.ts +1 -1
  57. package/dist/adapters/prisma/client-calls.js +83 -21
  58. package/dist/adapters/prisma/client-calls.js.map +1 -1
  59. package/dist/adapters/prisma/email-channels.d.ts +4 -0
  60. package/dist/adapters/prisma/email-channels.js +14 -0
  61. package/dist/adapters/prisma/email-channels.js.map +1 -0
  62. package/dist/adapters/prisma/fleet-forgetter.d.ts +1 -1
  63. package/dist/adapters/prisma/fleet-forgetter.js +2 -2
  64. package/dist/adapters/prisma/fleet-forgetter.js.map +1 -1
  65. package/dist/adapters/prisma/focused-pages.d.ts +4 -0
  66. package/dist/adapters/prisma/focused-pages.js +13 -0
  67. package/dist/adapters/prisma/focused-pages.js.map +1 -0
  68. package/dist/adapters/prisma/generated/browser.d.ts +45 -0
  69. package/dist/adapters/prisma/generated/client.d.ts +45 -0
  70. package/dist/adapters/prisma/generated/commonInputTypes.d.ts +54 -54
  71. package/dist/adapters/prisma/generated/internal/class.d.ts +99 -0
  72. package/dist/adapters/prisma/generated/internal/class.js +4 -4
  73. package/dist/adapters/prisma/generated/internal/class.js.map +1 -1
  74. package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +783 -1
  75. package/dist/adapters/prisma/generated/internal/prismaNamespace.js +101 -3
  76. package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
  77. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +107 -0
  78. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +101 -3
  79. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  80. package/dist/adapters/prisma/generated/models/A2aAgentCall.d.ts +1203 -0
  81. package/dist/adapters/prisma/generated/models/A2aAgentCall.js +2 -0
  82. package/dist/adapters/prisma/generated/models/A2aAgentCall.js.map +1 -0
  83. package/dist/adapters/prisma/generated/models/A2aAgentReply.d.ts +1003 -0
  84. package/dist/adapters/prisma/generated/models/A2aAgentReply.js +2 -0
  85. package/dist/adapters/prisma/generated/models/A2aAgentReply.js.map +1 -0
  86. package/dist/adapters/prisma/generated/models/A2aPush.d.ts +1413 -0
  87. package/dist/adapters/prisma/generated/models/A2aPush.js +2 -0
  88. package/dist/adapters/prisma/generated/models/A2aPush.js.map +1 -0
  89. package/dist/adapters/prisma/generated/models/A2aPushConfig.d.ts +1322 -0
  90. package/dist/adapters/prisma/generated/models/A2aPushConfig.js +2 -0
  91. package/dist/adapters/prisma/generated/models/A2aPushConfig.js.map +1 -0
  92. package/dist/adapters/prisma/generated/models/A2aTask.d.ts +1002 -0
  93. package/dist/adapters/prisma/generated/models/A2aTask.js +2 -0
  94. package/dist/adapters/prisma/generated/models/A2aTask.js.map +1 -0
  95. package/dist/adapters/prisma/generated/models/ClientCall.d.ts +136 -15
  96. package/dist/adapters/prisma/generated/models/ClientCallReply.d.ts +0 -7
  97. package/dist/adapters/prisma/generated/models/EmailChannel.d.ts +946 -0
  98. package/dist/adapters/prisma/generated/models/EmailChannel.js +2 -0
  99. package/dist/adapters/prisma/generated/models/EmailChannel.js.map +1 -0
  100. package/dist/adapters/prisma/generated/models/FocusedPage.d.ts +974 -0
  101. package/dist/adapters/prisma/generated/models/FocusedPage.js +2 -0
  102. package/dist/adapters/prisma/generated/models/FocusedPage.js.map +1 -0
  103. package/dist/adapters/prisma/generated/models/IssuedToken.d.ts +47 -41
  104. package/dist/adapters/prisma/generated/models/OAuthClient.d.ts +32 -8
  105. package/dist/adapters/prisma/generated/models/Party.d.ts +90 -3
  106. package/dist/adapters/prisma/generated/models/WakeSent.d.ts +975 -0
  107. package/dist/adapters/prisma/generated/models/WakeSent.js +2 -0
  108. package/dist/adapters/prisma/generated/models/WakeSent.js.map +1 -0
  109. package/dist/adapters/prisma/generated/models/WebPushSubscription.d.ts +1115 -0
  110. package/dist/adapters/prisma/generated/models/WebPushSubscription.js +2 -0
  111. package/dist/adapters/prisma/generated/models/WebPushSubscription.js.map +1 -0
  112. package/dist/adapters/prisma/generated/models.d.ts +9 -0
  113. package/dist/adapters/prisma/oauth-stores.js +3 -2
  114. package/dist/adapters/prisma/oauth-stores.js.map +1 -1
  115. package/dist/adapters/prisma/party-store.js +35 -6
  116. package/dist/adapters/prisma/party-store.js.map +1 -1
  117. package/dist/adapters/prisma/person-crews.js +9 -0
  118. package/dist/adapters/prisma/person-crews.js.map +1 -1
  119. package/dist/adapters/prisma/push-store.d.ts +3 -0
  120. package/dist/adapters/prisma/push-store.js +102 -0
  121. package/dist/adapters/prisma/push-store.js.map +1 -0
  122. package/dist/adapters/prisma/waiter-locks.d.ts +4 -0
  123. package/dist/adapters/prisma/waiter-locks.js +72 -0
  124. package/dist/adapters/prisma/waiter-locks.js.map +1 -0
  125. package/dist/adapters/prisma/wakes-sent.d.ts +4 -0
  126. package/dist/adapters/prisma/wakes-sent.js +10 -0
  127. package/dist/adapters/prisma/wakes-sent.js.map +1 -0
  128. package/dist/adapters/prisma/web-push-subscriptions.d.ts +3 -0
  129. package/dist/adapters/prisma/web-push-subscriptions.js +33 -0
  130. package/dist/adapters/prisma/web-push-subscriptions.js.map +1 -0
  131. package/dist/adapters/trpc/router.d.ts +397 -9
  132. package/dist/adapters/trpc/router.js +247 -16
  133. package/dist/adapters/trpc/router.js.map +1 -1
  134. package/dist/adapters/web-push/web-push.d.ts +9 -0
  135. package/dist/adapters/web-push/web-push.js +70 -0
  136. package/dist/adapters/web-push/web-push.js.map +1 -0
  137. package/dist/adapters/webhooks/allowed-lookup.d.ts +14 -0
  138. package/dist/adapters/webhooks/allowed-lookup.js +28 -0
  139. package/dist/adapters/webhooks/allowed-lookup.js.map +1 -0
  140. package/dist/adapters/webhooks/host-resolver.d.ts +3 -0
  141. package/dist/adapters/webhooks/host-resolver.js +13 -0
  142. package/dist/adapters/webhooks/host-resolver.js.map +1 -0
  143. package/dist/adapters/webhooks/webhook-poster.d.ts +6 -0
  144. package/dist/adapters/webhooks/webhook-poster.js +67 -0
  145. package/dist/adapters/webhooks/webhook-poster.js.map +1 -0
  146. package/dist/app.d.ts +12 -0
  147. package/dist/app.js +273 -14
  148. package/dist/app.js.map +1 -1
  149. package/dist/bin/aeolus-gateway.js +3 -0
  150. package/dist/bin/aeolus-gateway.js.map +1 -1
  151. package/dist/config.d.ts +14 -0
  152. package/dist/config.js +24 -0
  153. package/dist/config.js.map +1 -1
  154. package/dist/core/a2a-in/authenticate-a2a-client.d.ts +23 -0
  155. package/dist/core/a2a-in/authenticate-a2a-client.js +21 -0
  156. package/dist/core/a2a-in/authenticate-a2a-client.js.map +1 -0
  157. package/dist/core/a2a-in/deliver-pushes.d.ts +24 -0
  158. package/dist/core/a2a-in/deliver-pushes.js +48 -0
  159. package/dist/core/a2a-in/deliver-pushes.js.map +1 -0
  160. package/dist/core/a2a-in/find-reached-ship.d.ts +18 -0
  161. package/dist/core/a2a-in/find-reached-ship.js +20 -0
  162. package/dist/core/a2a-in/find-reached-ship.js.map +1 -0
  163. package/dist/core/a2a-in/follow-a2a-task.d.ts +25 -0
  164. package/dist/core/a2a-in/follow-a2a-task.js +23 -0
  165. package/dist/core/a2a-in/follow-a2a-task.js.map +1 -0
  166. package/dist/core/a2a-in/inbound-message.d.ts +30 -0
  167. package/dist/core/a2a-in/inbound-message.js +33 -0
  168. package/dist/core/a2a-in/inbound-message.js.map +1 -0
  169. package/dist/core/a2a-in/list-a2a-tasks.d.ts +18 -0
  170. package/dist/core/a2a-in/list-a2a-tasks.js +14 -0
  171. package/dist/core/a2a-in/list-a2a-tasks.js.map +1 -0
  172. package/dist/core/a2a-in/list-push-configs.d.ts +20 -0
  173. package/dist/core/a2a-in/list-push-configs.js +18 -0
  174. package/dist/core/a2a-in/list-push-configs.js.map +1 -0
  175. package/dist/core/a2a-in/list-reached-ships.d.ts +25 -0
  176. package/dist/core/a2a-in/list-reached-ships.js +22 -0
  177. package/dist/core/a2a-in/list-reached-ships.js.map +1 -0
  178. package/dist/core/a2a-in/notice-task-changes.d.ts +19 -0
  179. package/dist/core/a2a-in/notice-task-changes.js +17 -0
  180. package/dist/core/a2a-in/notice-task-changes.js.map +1 -0
  181. package/dist/core/a2a-in/ports.d.ts +124 -0
  182. package/dist/core/a2a-in/ports.js +2 -0
  183. package/dist/core/a2a-in/ports.js.map +1 -0
  184. package/dist/core/a2a-in/push-config-view.d.ts +8 -0
  185. package/dist/core/a2a-in/push-config-view.js +2 -0
  186. package/dist/core/a2a-in/push-config-view.js.map +1 -0
  187. package/dist/core/a2a-in/push-to-webhooks.d.ts +19 -0
  188. package/dist/core/a2a-in/push-to-webhooks.js +19 -0
  189. package/dist/core/a2a-in/push-to-webhooks.js.map +1 -0
  190. package/dist/core/a2a-in/read-a2a-task.d.ts +12 -0
  191. package/dist/core/a2a-in/read-a2a-task.js +11 -0
  192. package/dist/core/a2a-in/read-a2a-task.js.map +1 -0
  193. package/dist/core/a2a-in/read-push-config.d.ts +16 -0
  194. package/dist/core/a2a-in/read-push-config.js +14 -0
  195. package/dist/core/a2a-in/read-push-config.js.map +1 -0
  196. package/dist/core/a2a-in/remove-push-config.d.ts +15 -0
  197. package/dist/core/a2a-in/remove-push-config.js +13 -0
  198. package/dist/core/a2a-in/remove-push-config.js.map +1 -0
  199. package/dist/core/a2a-in/send-a2a-message.d.ts +34 -0
  200. package/dist/core/a2a-in/send-a2a-message.js +106 -0
  201. package/dist/core/a2a-in/send-a2a-message.js.map +1 -0
  202. package/dist/core/a2a-in/set-push-config.d.ts +30 -0
  203. package/dist/core/a2a-in/set-push-config.js +27 -0
  204. package/dist/core/a2a-in/set-push-config.js.map +1 -0
  205. package/dist/core/a2a-in/subscribe-to-a2a-task.d.ts +18 -0
  206. package/dist/core/a2a-in/subscribe-to-a2a-task.js +17 -0
  207. package/dist/core/a2a-in/subscribe-to-a2a-task.js.map +1 -0
  208. package/dist/core/a2a-in/task-view.d.ts +51 -0
  209. package/dist/core/a2a-in/task-view.js +49 -0
  210. package/dist/core/a2a-in/task-view.js.map +1 -0
  211. package/dist/core/a2a-in/webhook-address.d.ts +7 -0
  212. package/dist/core/a2a-in/webhook-address.js +17 -0
  213. package/dist/core/a2a-in/webhook-address.js.map +1 -0
  214. package/dist/core/a2a-in/webhook.d.ts +6 -0
  215. package/dist/core/a2a-in/webhook.js +80 -0
  216. package/dist/core/a2a-in/webhook.js.map +1 -0
  217. package/dist/core/a2a-out/agent-endpoint.d.ts +10 -0
  218. package/dist/core/a2a-out/agent-endpoint.js +10 -0
  219. package/dist/core/a2a-out/agent-endpoint.js.map +1 -0
  220. package/dist/core/a2a-out/agent-event.d.ts +41 -0
  221. package/dist/core/a2a-out/agent-event.js +64 -0
  222. package/dist/core/a2a-out/agent-event.js.map +1 -0
  223. package/dist/core/a2a-out/agent-message.d.ts +36 -0
  224. package/dist/core/a2a-out/agent-message.js +36 -0
  225. package/dist/core/a2a-out/agent-message.js.map +1 -0
  226. package/dist/core/a2a-out/agent-statement.d.ts +10 -0
  227. package/dist/core/a2a-out/agent-statement.js +45 -0
  228. package/dist/core/a2a-out/agent-statement.js.map +1 -0
  229. package/dist/core/a2a-out/follow-agent-task.d.ts +40 -0
  230. package/dist/core/a2a-out/follow-agent-task.js +125 -0
  231. package/dist/core/a2a-out/follow-agent-task.js.map +1 -0
  232. package/dist/core/a2a-out/hand-a2a-message.d.ts +36 -0
  233. package/dist/core/a2a-out/hand-a2a-message.js +132 -0
  234. package/dist/core/a2a-out/hand-a2a-message.js.map +1 -0
  235. package/dist/core/a2a-out/mark-a2a-agent.d.ts +24 -0
  236. package/dist/core/a2a-out/mark-a2a-agent.js +24 -0
  237. package/dist/core/a2a-out/mark-a2a-agent.js.map +1 -0
  238. package/dist/core/a2a-out/ports.d.ts +200 -0
  239. package/dist/core/a2a-out/ports.js +2 -0
  240. package/dist/core/a2a-out/ports.js.map +1 -0
  241. package/dist/core/a2a-out/read-agent-statement.d.ts +13 -0
  242. package/dist/core/a2a-out/read-agent-statement.js +13 -0
  243. package/dist/core/a2a-out/read-agent-statement.js.map +1 -0
  244. package/dist/core/a2a-out/run-a2a-agent.d.ts +26 -0
  245. package/dist/core/a2a-out/run-a2a-agent.js +46 -0
  246. package/dist/core/a2a-out/run-a2a-agent.js.map +1 -0
  247. package/dist/core/a2a-out/state-a2a-agent.d.ts +26 -0
  248. package/dist/core/a2a-out/state-a2a-agent.js +31 -0
  249. package/dist/core/a2a-out/state-a2a-agent.js.map +1 -0
  250. package/dist/core/actors/authenticate-actor.d.ts +11 -5
  251. package/dist/core/actors/authenticate-actor.js +7 -3
  252. package/dist/core/actors/authenticate-actor.js.map +1 -1
  253. package/dist/core/actors/credential-of.d.ts +3 -2
  254. package/dist/core/actors/credential-of.js +4 -3
  255. package/dist/core/actors/credential-of.js.map +1 -1
  256. package/dist/core/mcp-in/call-tool.js +2 -0
  257. package/dist/core/mcp-in/call-tool.js.map +1 -1
  258. package/dist/core/mcp-in/client-call.d.ts +35 -4
  259. package/dist/core/mcp-in/client-call.js +57 -10
  260. package/dist/core/mcp-in/client-call.js.map +1 -1
  261. package/dist/core/mcp-in/collect-replies.d.ts +4 -3
  262. package/dist/core/mcp-in/collect-replies.js +4 -0
  263. package/dist/core/mcp-in/collect-replies.js.map +1 -1
  264. package/dist/core/mcp-in/ports.d.ts +52 -3
  265. package/dist/core/mcp-out/hand-call.d.ts +5 -1
  266. package/dist/core/mcp-out/hand-call.js +9 -1
  267. package/dist/core/mcp-out/hand-call.js.map +1 -1
  268. package/dist/core/mcp-out/run-party.d.ts +29 -7
  269. package/dist/core/mcp-out/run-party.js +14 -6
  270. package/dist/core/mcp-out/run-party.js.map +1 -1
  271. package/dist/core/mcp-out/state-party.d.ts +4 -2
  272. package/dist/core/mcp-out/state-party.js +10 -3
  273. package/dist/core/mcp-out/state-party.js.map +1 -1
  274. package/dist/core/mcp-out/statement.d.ts +2 -1
  275. package/dist/core/mcp-out/statement.js.map +1 -1
  276. package/dist/core/oauth/exchange-id-jag.d.ts +28 -0
  277. package/dist/core/oauth/exchange-id-jag.js +66 -0
  278. package/dist/core/oauth/exchange-id-jag.js.map +1 -0
  279. package/dist/core/oauth/exchange-token.d.ts +25 -11
  280. package/dist/core/oauth/exchange-token.js +50 -3
  281. package/dist/core/oauth/exchange-token.js.map +1 -1
  282. package/dist/core/oauth/ports.d.ts +17 -6
  283. package/dist/core/oauth/register-client.js +1 -1
  284. package/dist/core/oauth/register-client.js.map +1 -1
  285. package/dist/core/operator/authenticate-operator.d.ts +5 -9
  286. package/dist/core/operator/authenticate-operator.js +4 -4
  287. package/dist/core/operator/authenticate-operator.js.map +1 -1
  288. package/dist/core/operator/ports.d.ts +15 -9
  289. package/dist/core/parties/add-a2a-agent.d.ts +34 -0
  290. package/dist/core/parties/add-a2a-agent.js +45 -0
  291. package/dist/core/parties/add-a2a-agent.js.map +1 -0
  292. package/dist/core/parties/add-a2a-client.d.ts +30 -0
  293. package/dist/core/parties/add-a2a-client.js +47 -0
  294. package/dist/core/parties/add-a2a-client.js.map +1 -0
  295. package/dist/core/parties/add-client-party.d.ts +38 -0
  296. package/dist/core/parties/add-client-party.js +40 -0
  297. package/dist/core/parties/add-client-party.js.map +1 -0
  298. package/dist/core/parties/approve-party.d.ts +43 -2
  299. package/dist/core/parties/approve-party.js +9 -5
  300. package/dist/core/parties/approve-party.js.map +1 -1
  301. package/dist/core/parties/approver.d.ts +7 -0
  302. package/dist/core/parties/approver.js +9 -0
  303. package/dist/core/parties/approver.js.map +1 -0
  304. package/dist/core/parties/check-server.d.ts +2 -1
  305. package/dist/core/parties/check-server.js +1 -1
  306. package/dist/core/parties/check-server.js.map +1 -1
  307. package/dist/core/parties/crew-party.d.ts +18 -4
  308. package/dist/core/parties/crew-party.js +36 -4
  309. package/dist/core/parties/crew-party.js.map +1 -1
  310. package/dist/core/parties/party.d.ts +23 -1
  311. package/dist/core/parties/party.js +17 -4
  312. package/dist/core/parties/party.js.map +1 -1
  313. package/dist/core/parties/ports.d.ts +16 -0
  314. package/dist/core/parties/read-party-tools.d.ts +4 -3
  315. package/dist/core/parties/read-party-tools.js +4 -2
  316. package/dist/core/parties/read-party-tools.js.map +1 -1
  317. package/dist/core/parties/shown-party.d.ts +8 -0
  318. package/dist/core/parties/shown-party.js +4 -0
  319. package/dist/core/parties/shown-party.js.map +1 -1
  320. package/dist/core/parties/switch-tool.d.ts +29 -0
  321. package/dist/core/parties/switch-tool.js +33 -0
  322. package/dist/core/parties/switch-tool.js.map +1 -0
  323. package/dist/core/parties/tool-switches.d.ts +27 -0
  324. package/dist/core/parties/tool-switches.js +17 -0
  325. package/dist/core/parties/tool-switches.js.map +1 -0
  326. package/dist/core/people/answer-delivery.d.ts +2 -1
  327. package/dist/core/people/answer-delivery.js.map +1 -1
  328. package/dist/core/people/done-delivery.d.ts +2 -1
  329. package/dist/core/people/done-delivery.js.map +1 -1
  330. package/dist/core/people/focus-page.d.ts +18 -0
  331. package/dist/core/people/focus-page.js +20 -0
  332. package/dist/core/people/focus-page.js.map +1 -0
  333. package/dist/core/people/open-delivery.d.ts +3 -1
  334. package/dist/core/people/open-delivery.js +2 -0
  335. package/dist/core/people/open-delivery.js.map +1 -1
  336. package/dist/core/people/opened-of.d.ts +7 -2
  337. package/dist/core/people/opened-of.js +6 -1
  338. package/dist/core/people/opened-of.js.map +1 -1
  339. package/dist/core/people/person-crew.d.ts +2 -0
  340. package/dist/core/people/person-crew.js +6 -2
  341. package/dist/core/people/person-crew.js.map +1 -1
  342. package/dist/core/people/ports.d.ts +151 -3
  343. package/dist/core/people/read-wake-channels.d.ts +42 -0
  344. package/dist/core/people/read-wake-channels.js +21 -0
  345. package/dist/core/people/read-wake-channels.js.map +1 -0
  346. package/dist/core/people/turn-email-channel.d.ts +21 -0
  347. package/dist/core/people/turn-email-channel.js +22 -0
  348. package/dist/core/people/turn-email-channel.js.map +1 -0
  349. package/dist/core/people/turn-off-web-push.d.ts +13 -0
  350. package/dist/core/people/turn-off-web-push.js +14 -0
  351. package/dist/core/people/turn-off-web-push.js.map +1 -0
  352. package/dist/core/people/turn-on-web-push.d.ts +35 -0
  353. package/dist/core/people/turn-on-web-push.js +49 -0
  354. package/dist/core/people/turn-on-web-push.js.map +1 -0
  355. package/dist/core/people/wait-on-person-ship.d.ts +44 -0
  356. package/dist/core/people/wait-on-person-ship.js +92 -0
  357. package/dist/core/people/wait-on-person-ship.js.map +1 -0
  358. package/dist/core/people/wake-person.d.ts +40 -0
  359. package/dist/core/people/wake-person.js +74 -0
  360. package/dist/core/people/wake-person.js.map +1 -0
  361. package/dist/core/people/web-push-channel.d.ts +17 -0
  362. package/dist/core/people/web-push-channel.js +35 -0
  363. package/dist/core/people/web-push-channel.js.map +1 -0
  364. package/dist/core/requests/decide-request.d.ts +0 -2
  365. package/dist/core/requests/decide-request.js +3 -6
  366. package/dist/core/requests/decide-request.js.map +1 -1
  367. package/dist/core/requests/list-to-decide.js +1 -1
  368. package/dist/core/requests/list-to-decide.js.map +1 -1
  369. package/dist/core/shared/errors.d.ts +1 -1
  370. package/dist/core/shared/errors.js.map +1 -1
  371. package/dist/core/sign-in/ports.d.ts +13 -0
  372. package/dist/core/vault/credential.d.ts +6 -2
  373. package/dist/party-workers.d.ts +9 -1
  374. package/dist/party-workers.js +37 -5
  375. package/dist/party-workers.js.map +1 -1
  376. package/dist/person-waiters.d.ts +30 -0
  377. package/dist/person-waiters.js +89 -0
  378. package/dist/person-waiters.js.map +1 -0
  379. package/package.json +7 -3
  380. package/src/adapters/prisma/migrations/20261023120000_party_bearer_hash/migration.sql +4 -0
  381. package/src/adapters/prisma/migrations/20261023130000_client_credentials/migration.sql +5 -0
  382. package/src/adapters/prisma/migrations/20261023200000_a2a_tasks/migration.sql +20 -0
  383. package/src/adapters/prisma/migrations/20261023210000_tool_switches/migration.sql +2 -0
  384. package/src/adapters/prisma/migrations/20261024090000_a2a_pushes/migration.sql +37 -0
  385. package/src/adapters/prisma/migrations/20261024100000_party_is_repeatable/migration.sql +2 -0
  386. package/src/adapters/prisma/migrations/20261024110000_a2a_agent_calls/migration.sql +29 -0
  387. package/src/adapters/prisma/migrations/20261024115000_wakes/migration.sql +17 -0
  388. package/src/adapters/prisma/migrations/20261024120000_focused_pages/migration.sql +11 -0
  389. package/src/adapters/prisma/migrations/20261024130000_web_push_subscriptions/migration.sql +14 -0
  390. package/src/adapters/prisma/schema.prisma +159 -5
  391. package/web/.next/BUILD_ID +1 -1
  392. package/web/.next/app-path-routes-manifest.json +14 -11
  393. package/web/.next/build-manifest.json +39 -15
  394. package/web/.next/diagnostics/route-bundle-stats.json +107 -58
  395. package/web/.next/fallback-build-manifest.json +3 -3
  396. package/web/.next/next-minimal-server.js.nft.json +1 -1
  397. package/web/.next/next-server.js.nft.json +1 -1
  398. package/web/.next/prerender-manifest.json +3 -3
  399. package/web/.next/routes-manifest.json +18 -0
  400. package/web/.next/server/app/(console)/outside-parties/[name]/change/page/app-paths-manifest.json +3 -0
  401. package/web/.next/server/app/(console)/outside-parties/[name]/change/page/build-manifest.json +23 -0
  402. package/web/.next/server/app/(console)/outside-parties/[name]/change/page/next-font-manifest.json +11 -0
  403. package/web/.next/server/app/(console)/outside-parties/[name]/change/page/server-reference-manifest.json +55 -0
  404. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js +25 -0
  405. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js.nft.json +1 -0
  406. package/web/.next/server/app/(console)/outside-parties/[name]/change/page_client-reference-manifest.js +3 -0
  407. package/web/.next/server/app/(console)/outside-parties/[name]/page/app-paths-manifest.json +3 -0
  408. package/web/.next/server/app/{outside-parties/[name]/retire → (console)/outside-parties/[name]}/page/build-manifest.json +1 -1
  409. package/web/.next/server/app/{outside-parties/[name]/retire → (console)/outside-parties/[name]}/page/next-font-manifest.json +1 -1
  410. package/web/.next/server/app/(console)/outside-parties/[name]/page/server-reference-manifest.json +35 -0
  411. package/web/.next/server/app/(console)/outside-parties/[name]/page.js +24 -0
  412. package/web/.next/server/app/(console)/outside-parties/[name]/page.js.nft.json +1 -0
  413. package/web/.next/server/app/(console)/outside-parties/[name]/page_client-reference-manifest.js +3 -0
  414. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/app-paths-manifest.json +3 -0
  415. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/build-manifest.json +23 -0
  416. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/next-font-manifest.json +11 -0
  417. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/server-reference-manifest.json +55 -0
  418. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js +25 -0
  419. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js.nft.json +1 -0
  420. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page_client-reference-manifest.js +3 -0
  421. package/web/.next/server/app/(console)/outside-parties/add/page/app-paths-manifest.json +3 -0
  422. package/web/.next/server/app/{outside-parties/[name]/change → (console)/outside-parties/add}/page/build-manifest.json +1 -1
  423. package/web/.next/server/app/{outside-parties/[name]/change → (console)/outside-parties/add}/page/next-font-manifest.json +1 -1
  424. package/web/.next/server/app/(console)/outside-parties/add/page/server-reference-manifest.json +55 -0
  425. package/web/.next/server/app/(console)/outside-parties/add/page.js +25 -0
  426. package/web/.next/server/app/(console)/outside-parties/add/page.js.nft.json +1 -0
  427. package/web/.next/server/app/(console)/outside-parties/add/page_client-reference-manifest.js +3 -0
  428. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/app-paths-manifest.json +3 -0
  429. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/build-manifest.json +23 -0
  430. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/next-font-manifest.json +11 -0
  431. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/server-reference-manifest.json +25 -0
  432. package/web/.next/server/app/{outside-parties/add → (console)/outside-parties/add-a2a-agent}/page.js +14 -13
  433. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js.nft.json +1 -0
  434. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page_client-reference-manifest.js +3 -0
  435. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/app-paths-manifest.json +3 -0
  436. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/build-manifest.json +23 -0
  437. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/next-font-manifest.json +11 -0
  438. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/server-reference-manifest.json +25 -0
  439. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js +21 -0
  440. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js.nft.json +1 -0
  441. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page_client-reference-manifest.js +3 -0
  442. package/web/.next/server/app/(console)/outside-parties/page/app-paths-manifest.json +3 -0
  443. package/web/.next/server/app/{outside-parties/[name] → (console)/outside-parties}/page/build-manifest.json +1 -1
  444. package/web/.next/server/app/{outside-parties/add → (console)/outside-parties}/page/next-font-manifest.json +1 -1
  445. package/web/.next/server/app/{outside-parties → (console)/outside-parties}/page/server-reference-manifest.json +6 -6
  446. package/web/.next/server/app/{outside-parties → (console)/outside-parties}/page.js +13 -12
  447. package/web/.next/server/app/(console)/outside-parties/page.js.nft.json +1 -0
  448. package/web/.next/server/app/(console)/outside-parties/page_client-reference-manifest.js +3 -0
  449. package/web/.next/server/app/(console)/overview/changes/route/app-paths-manifest.json +3 -0
  450. package/web/.next/server/app/(console)/overview/changes/route.js +7 -0
  451. package/web/.next/server/app/(console)/overview/changes/route.js.nft.json +1 -0
  452. package/web/.next/server/app/(console)/overview/changes/route_client-reference-manifest.js +3 -0
  453. package/web/.next/server/app/(console)/overview/focus/route/app-paths-manifest.json +3 -0
  454. package/web/.next/server/app/(console)/overview/focus/route/build-manifest.json +12 -0
  455. package/web/.next/server/app/(console)/overview/focus/route/server-reference-manifest.json +4 -0
  456. package/web/.next/server/app/(console)/overview/focus/route.js +7 -0
  457. package/web/.next/server/app/(console)/overview/focus/route.js.nft.json +1 -0
  458. package/web/.next/server/app/(console)/overview/focus/route_client-reference-manifest.js +3 -0
  459. package/web/.next/server/app/(console)/overview/page/app-paths-manifest.json +3 -0
  460. package/web/.next/server/app/{sign-in/failed → (console)/overview}/page/build-manifest.json +1 -1
  461. package/web/.next/server/app/{parties → (console)/overview}/page/next-font-manifest.json +1 -1
  462. package/web/.next/server/app/(console)/overview/page/server-reference-manifest.json +75 -0
  463. package/web/.next/server/app/{overview/requests/[requestId] → (console)/overview}/page.js +15 -14
  464. package/web/.next/server/app/(console)/overview/page.js.nft.json +1 -0
  465. package/web/.next/server/app/(console)/overview/page_client-reference-manifest.js +3 -0
  466. package/web/.next/server/app/(console)/overview/requests/[requestId]/page/app-paths-manifest.json +3 -0
  467. package/web/.next/server/app/(console)/overview/requests/[requestId]/page/build-manifest.json +23 -0
  468. package/web/.next/server/app/(console)/overview/requests/[requestId]/page/next-font-manifest.json +11 -0
  469. package/web/.next/server/app/{overview → (console)/overview}/requests/[requestId]/page/server-reference-manifest.json +6 -6
  470. package/web/.next/server/app/{overview → (console)/overview/requests/[requestId]}/page.js +15 -14
  471. package/web/.next/server/app/(console)/overview/requests/[requestId]/page.js.map +5 -0
  472. package/web/.next/server/app/(console)/overview/requests/[requestId]/page.js.nft.json +1 -0
  473. package/web/.next/server/app/(console)/overview/requests/[requestId]/page_client-reference-manifest.js +3 -0
  474. package/web/.next/server/app/(console)/parties/page/app-paths-manifest.json +3 -0
  475. package/web/.next/server/app/{outside-parties → (console)/parties}/page/build-manifest.json +1 -1
  476. package/web/.next/server/app/{outside-parties → (console)/parties}/page/next-font-manifest.json +1 -1
  477. package/web/.next/server/app/(console)/parties/page/react-loadable-manifest.json +1 -0
  478. package/web/.next/server/app/{parties → (console)/parties}/page/server-reference-manifest.json +18 -18
  479. package/web/.next/server/app/{parties → (console)/parties}/page.js +12 -11
  480. package/web/.next/server/app/(console)/parties/page.js.map +5 -0
  481. package/web/.next/server/app/(console)/parties/page.js.nft.json +1 -0
  482. package/web/.next/server/app/(console)/parties/page_client-reference-manifest.js +3 -0
  483. package/web/.next/server/app/(console)/sign-in/failed/page/app-paths-manifest.json +3 -0
  484. package/web/.next/server/app/{outside-parties/add → (console)/sign-in/failed}/page/build-manifest.json +1 -1
  485. package/web/.next/server/app/{outside-parties/[name] → (console)/sign-in/failed}/page/next-font-manifest.json +1 -1
  486. package/web/.next/server/app/(console)/sign-in/failed/page/react-loadable-manifest.json +1 -0
  487. package/web/.next/server/app/{sign-in → (console)/sign-in}/failed/page/server-reference-manifest.json +3 -3
  488. package/web/.next/server/app/{sign-in → (console)/sign-in}/failed/page.js +13 -12
  489. package/web/.next/server/app/(console)/sign-in/failed/page.js.map +5 -0
  490. package/web/.next/server/app/(console)/sign-in/failed/page.js.nft.json +1 -0
  491. package/web/.next/server/app/(console)/sign-in/failed/page_client-reference-manifest.js +3 -0
  492. package/web/.next/server/app/_global-error/page.js +3 -3
  493. package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  494. package/web/.next/server/app/_global-error.html +1 -1
  495. package/web/.next/server/app/_global-error.rsc +1 -1
  496. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  497. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  498. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  499. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  500. package/web/.next/server/app/_not-found/page.js +7 -7
  501. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  502. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  503. package/web/.next/server/app/authorize/failed/page/server-reference-manifest.json +1 -1
  504. package/web/.next/server/app/authorize/failed/page.js +11 -9
  505. package/web/.next/server/app/authorize/failed/page.js.nft.json +1 -1
  506. package/web/.next/server/app/authorize/failed/page_client-reference-manifest.js +1 -1
  507. package/web/.next/server/app/authorize/pick/page/server-reference-manifest.json +1 -1
  508. package/web/.next/server/app/authorize/pick/page.js +12 -10
  509. package/web/.next/server/app/authorize/pick/page.js.nft.json +1 -1
  510. package/web/.next/server/app/authorize/pick/page_client-reference-manifest.js +1 -1
  511. package/web/.next/server/app/authorize/waiting/approval/page/server-reference-manifest.json +1 -1
  512. package/web/.next/server/app/authorize/waiting/approval/page.js +11 -9
  513. package/web/.next/server/app/authorize/waiting/approval/page.js.nft.json +1 -1
  514. package/web/.next/server/app/authorize/waiting/approval/page_client-reference-manifest.js +1 -1
  515. package/web/.next/server/app-paths-manifest.json +14 -11
  516. package/web/.next/server/chunks/0b9d__next-internal_server_app_(console)_overview_focus_route_actions_10hgyjvv-6fus.js +3 -0
  517. package/web/.next/server/chunks/1mb5_next-internal_server_app_(console)_overview_changes_route_actions_0zbq7lqsf5nng.js +3 -0
  518. package/web/.next/server/chunks/[externals]__0fgpzedhhntg9._.js +3 -0
  519. package/web/.next/server/chunks/[externals]__0fgpzedhhntg9._.js.map +1 -0
  520. package/web/.next/server/chunks/{[root-of-the-server]__00bbah0fbuex2._.js → [root-of-the-server]__0ykc8bq_c06a1._.js} +22 -22
  521. package/web/.next/server/chunks/[root-of-the-server]__0ykc8bq_c06a1._.js.map +1 -0
  522. package/web/.next/server/chunks/_04is-uopj3op9._.js +3 -0
  523. package/web/.next/server/chunks/_04is-uopj3op9._.js.map +1 -0
  524. package/web/.next/server/chunks/_1-fw4-pwzazl4._.js +3 -0
  525. package/web/.next/server/chunks/_1-fw4-pwzazl4._.js.map +1 -0
  526. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js +3 -0
  527. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js.map +1 -0
  528. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js +3 -0
  529. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js.map +1 -0
  530. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js +3 -0
  531. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js.map +1 -0
  532. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js +3 -0
  533. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js.map +1 -0
  534. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js +3 -0
  535. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js.map +1 -0
  536. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js +3 -0
  537. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js.map +1 -0
  538. package/web/.next/server/chunks/ssr/{[root-of-the-server]__1qpk1uw97id0a._.js → [root-of-the-server]__0-og0bl8lr2xq._.js} +2 -2
  539. package/web/.next/server/chunks/ssr/[root-of-the-server]__0-og0bl8lr2xq._.js.map +1 -0
  540. package/web/.next/server/chunks/ssr/[root-of-the-server]__07udzu2zwg_74._.js +3 -0
  541. package/web/.next/server/chunks/ssr/[root-of-the-server]__07udzu2zwg_74._.js.map +1 -0
  542. package/web/.next/server/chunks/ssr/{[root-of-the-server]__197il4swfpq1a._.js → [root-of-the-server]__0a68v9ynev4q6._.js} +2 -2
  543. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a68v9ynev4q6._.js.map +1 -0
  544. package/web/.next/server/chunks/ssr/[root-of-the-server]__0grpi5wnl9ppf._.js +10 -0
  545. package/web/.next/server/chunks/ssr/[root-of-the-server]__0grpi5wnl9ppf._.js.map +1 -0
  546. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js +4 -0
  547. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js.map +1 -0
  548. package/web/.next/server/chunks/ssr/[root-of-the-server]__0l2_dk9d4o01n._.js +3 -0
  549. package/web/.next/server/chunks/ssr/{[root-of-the-server]__1vkw2kvzx6fpw._.js.map → [root-of-the-server]__0l2_dk9d4o01n._.js.map} +1 -1
  550. package/web/.next/server/chunks/ssr/[root-of-the-server]__0m57jyae0dn_7._.js +3 -0
  551. package/web/.next/server/chunks/ssr/[root-of-the-server]__0m57jyae0dn_7._.js.map +1 -0
  552. package/web/.next/server/chunks/ssr/[root-of-the-server]__0n2us07jk-78w._.js +4 -0
  553. package/web/.next/server/chunks/ssr/[root-of-the-server]__0n2us07jk-78w._.js.map +1 -0
  554. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rr5u24i9tjyc._.js +3 -0
  555. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rr5u24i9tjyc._.js.map +1 -0
  556. package/web/.next/server/chunks/ssr/[root-of-the-server]__10y66e1xx8xiq._.js +1 -1
  557. package/web/.next/server/chunks/ssr/[root-of-the-server]__10y66e1xx8xiq._.js.map +1 -1
  558. package/web/.next/server/chunks/ssr/[root-of-the-server]__11w36a4le04vy._.js +3 -0
  559. package/web/.next/server/chunks/ssr/[root-of-the-server]__11w36a4le04vy._.js.map +1 -0
  560. package/web/.next/server/chunks/ssr/{[root-of-the-server]__0ntyo9p3x-w6a._.js → [root-of-the-server]__179upda-y7uap._.js} +2 -2
  561. package/web/.next/server/chunks/ssr/[root-of-the-server]__179upda-y7uap._.js.map +1 -0
  562. package/web/.next/server/chunks/ssr/[root-of-the-server]__1dtyycvqa6uht._.js +4 -0
  563. package/web/.next/server/chunks/ssr/[root-of-the-server]__1dtyycvqa6uht._.js.map +1 -0
  564. package/web/.next/server/chunks/ssr/[root-of-the-server]__1gb-3dttuacyz._.js +3 -0
  565. package/web/.next/server/chunks/ssr/[root-of-the-server]__1gb-3dttuacyz._.js.map +1 -0
  566. package/web/.next/server/chunks/ssr/[root-of-the-server]__1k25lo5ka4mgd._.js +3 -0
  567. package/web/.next/server/chunks/ssr/[root-of-the-server]__1k25lo5ka4mgd._.js.map +1 -0
  568. package/web/.next/server/chunks/ssr/[root-of-the-server]__1m9atpy0vkbmj._.js +3 -0
  569. package/web/.next/server/chunks/ssr/{[root-of-the-server]__0dywrno7zb0r_._.js.map → [root-of-the-server]__1m9atpy0vkbmj._.js.map} +1 -1
  570. package/web/.next/server/chunks/ssr/[root-of-the-server]__1n_sq_58wdluh._.js +3 -0
  571. package/web/.next/server/chunks/ssr/[root-of-the-server]__1n_sq_58wdluh._.js.map +1 -0
  572. package/web/.next/server/chunks/ssr/[root-of-the-server]__1w5swo8gmjyx6._.js +3 -0
  573. package/web/.next/server/chunks/ssr/{[root-of-the-server]__216xd8otb96uo._.js.map → [root-of-the-server]__1w5swo8gmjyx6._.js.map} +1 -1
  574. package/web/.next/server/chunks/ssr/[root-of-the-server]__1wl0vw-n8lbkn._.js +1 -1
  575. package/web/.next/server/chunks/ssr/[root-of-the-server]__1yjb00o7x58xv._.js +3 -0
  576. package/web/.next/server/chunks/ssr/[root-of-the-server]__1yjb00o7x58xv._.js.map +1 -0
  577. package/web/.next/server/chunks/ssr/_0-lfpqqlgfhzj._.js +3 -0
  578. package/web/.next/server/chunks/ssr/_0-lfpqqlgfhzj._.js.map +1 -0
  579. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js +1 -1
  580. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js.map +1 -1
  581. package/web/.next/server/chunks/ssr/_0bhvvyz0q_0ja._.js +4 -0
  582. package/web/.next/server/chunks/ssr/_0bhvvyz0q_0ja._.js.map +1 -0
  583. package/web/.next/server/chunks/ssr/{_13qzwpag13tvy._.js → _0pyd1_y7w8ngp._.js} +2 -2
  584. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js.map +1 -0
  585. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js +1 -1
  586. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js.map +1 -1
  587. package/web/.next/server/chunks/ssr/_12fsn_33ga-n0._.js +3 -0
  588. package/web/.next/server/chunks/ssr/_12fsn_33ga-n0._.js.map +1 -0
  589. package/web/.next/server/chunks/ssr/_1_wav28san6dm._.js +4 -0
  590. package/web/.next/server/chunks/ssr/_1_wav28san6dm._.js.map +1 -0
  591. package/web/.next/server/chunks/ssr/_1hmjvjuxx92vo._.js +3 -0
  592. package/web/.next/server/chunks/ssr/_1hmjvjuxx92vo._.js.map +1 -0
  593. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js +1 -1
  594. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js.map +1 -1
  595. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js +1 -1
  596. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js.map +1 -1
  597. package/web/.next/server/chunks/ssr/node_modules_0cyjln1rocvt5._.js +3 -0
  598. package/web/.next/server/chunks/ssr/node_modules_0cyjln1rocvt5._.js.map +1 -0
  599. package/web/.next/server/chunks/ssr/node_modules_1ins1z8o_qrka._.js +3 -0
  600. package/web/.next/server/chunks/ssr/node_modules_1ins1z8o_qrka._.js.map +1 -0
  601. package/web/.next/server/chunks/ssr/node_modules_1wdusod3fyk3s._.js +3 -0
  602. package/web/.next/server/chunks/ssr/node_modules_1wdusod3fyk3s._.js.map +1 -0
  603. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1id6g-6m2hh0l._.js +3 -0
  604. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1id6g-6m2hh0l._.js.map +1 -0
  605. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1jvz31plyg2f-._.js +3 -0
  606. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1jvz31plyg2f-._.js.map +1 -0
  607. package/web/.next/server/chunks/ssr/node_modules_next_08hq6z46rczo0._.js +1 -1
  608. package/web/.next/server/chunks/ssr/node_modules_next_dist_client_components_server-async-storage_0t1datokkgym0.js +3 -0
  609. package/web/.next/server/chunks/ssr/node_modules_next_dist_client_components_server-async-storage_0t1datokkgym0.js.map +1 -0
  610. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_06etuymo2azrg.js +3 -0
  611. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_06etuymo2azrg.js.map +1 -0
  612. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08lcy-jnk5o43.js +3 -0
  613. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08lcy-jnk5o43.js.map +1 -0
  614. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0bnypafopxsfl.js +3 -0
  615. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0bnypafopxsfl.js.map +1 -0
  616. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0e8cobt3o_8ur.js +3 -0
  617. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0e8cobt3o_8ur.js.map +1 -0
  618. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0gzed-epom5si.js +3 -0
  619. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0gzed-epom5si.js.map +1 -0
  620. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0k0-b63ptvbl5.js +3 -0
  621. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0k0-b63ptvbl5.js.map +1 -0
  622. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pik0g65vv-wi.js +3 -0
  623. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pik0g65vv-wi.js.map +1 -0
  624. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0xccr6d8xcb1p.js +3 -0
  625. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0xccr6d8xcb1p.js.map +1 -0
  626. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_13agc620bnznv.js +3 -0
  627. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_13agc620bnznv.js.map +1 -0
  628. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_184-gj4lz41i-.js +3 -0
  629. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_184-gj4lz41i-.js.map +1 -0
  630. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1bt2ioufqh6fl.js +3 -0
  631. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1bt2ioufqh6fl.js.map +1 -0
  632. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1d613l6zsee_e.js +3 -0
  633. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1d613l6zsee_e.js.map +1 -0
  634. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1o0-ipfysjmro.js +3 -0
  635. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1o0-ipfysjmro.js.map +1 -0
  636. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1x-0vplt44lez.js +3 -0
  637. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1x-0vplt44lez.js.map +1 -0
  638. package/web/.next/server/chunks/ssr/web_0-ufi2al5ubig._.js +3 -0
  639. package/web/.next/server/chunks/ssr/web_0-ufi2al5ubig._.js.map +1 -0
  640. package/web/.next/server/chunks/ssr/web_0_jk9eione6lx._.js +3 -0
  641. package/web/.next/server/chunks/ssr/web_0_jk9eione6lx._.js.map +1 -0
  642. package/web/.next/server/chunks/ssr/web_0v-7sowo0hupw._.js.map +1 -1
  643. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js +3 -0
  644. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js.map +1 -0
  645. package/web/.next/server/chunks/ssr/web_1ga4pbv72m0ad._.js +3 -0
  646. package/web/.next/server/chunks/ssr/web_1ga4pbv72m0ad._.js.map +1 -0
  647. package/web/.next/server/chunks/ssr/{web_1nqu01kfi0u66._.js → web_1loiet18xbddu._.js} +2 -2
  648. package/web/.next/server/chunks/ssr/web_1loiet18xbddu._.js.map +1 -0
  649. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js +3 -0
  650. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js.map +1 -0
  651. package/web/.next/server/chunks/ssr/web_app_(console)_layout_tsx_1t-5g79yb9xtl._.js +3 -0
  652. package/web/.next/server/chunks/ssr/web_app_(console)_layout_tsx_1t-5g79yb9xtl._.js.map +1 -0
  653. package/web/.next/server/chunks/ssr/{web_app_outside-parties_[name]_change_page_tsx_0kfjh3f55us56._.js → web_app_(console)_outside-parties_[name]_change_page_tsx_00bpg0s2eypj9._.js} +2 -2
  654. package/web/.next/server/chunks/ssr/web_app_(console)_outside-parties_[name]_change_page_tsx_00bpg0s2eypj9._.js.map +1 -0
  655. package/web/.next/server/chunks/ssr/{web_app_outside-parties_[name]_retire_page_tsx_0qhcnjpjipu_2._.js → web_app_(console)_outside-parties_[name]_retire_page_tsx_1zxy74pr5_2kn._.js} +2 -2
  656. package/web/.next/server/chunks/ssr/web_app_(console)_outside-parties_[name]_retire_page_tsx_1zxy74pr5_2kn._.js.map +1 -0
  657. package/web/.next/server/chunks/ssr/{web_app_overview_error_tsx_17_cklg40kzxe._.js → web_app_(console)_overview_error_tsx_087e7ba8loavc._.js} +2 -2
  658. package/web/.next/server/chunks/ssr/web_app_(console)_overview_error_tsx_087e7ba8loavc._.js.map +1 -0
  659. package/web/.next/server/chunks/ssr/web_app_(console)_overview_error_tsx_1nn1jz5nh77af._.js +3 -0
  660. package/web/.next/server/chunks/ssr/web_app_(console)_overview_error_tsx_1nn1jz5nh77af._.js.map +1 -0
  661. package/web/.next/server/chunks/ssr/web_app_(console)_parties_page_tsx_0pp63ghly3eyp._.js +3 -0
  662. package/web/.next/server/chunks/ssr/web_app_(console)_parties_page_tsx_0pp63ghly3eyp._.js.map +1 -0
  663. package/web/.next/server/chunks/ssr/web_app_authorize_layout_tsx_0gs61_7wzx68y._.js +3 -0
  664. package/web/.next/server/chunks/ssr/web_app_authorize_layout_tsx_0gs61_7wzx68y._.js.map +1 -0
  665. package/web/.next/server/chunks/ssr/web_features_085cv0gogrxxf._.js +1 -1
  666. package/web/.next/server/chunks/ssr/web_features_085cv0gogrxxf._.js.map +1 -1
  667. package/web/.next/server/chunks/ssr/web_features_0ahlkugj7fu3n._.js +3 -0
  668. package/web/.next/server/chunks/ssr/web_features_0ahlkugj7fu3n._.js.map +1 -0
  669. package/web/.next/server/chunks/ssr/web_features_0h0ueu8_-_z5k._.js +1 -1
  670. package/web/.next/server/chunks/ssr/web_features_0h0ueu8_-_z5k._.js.map +1 -1
  671. package/web/.next/server/chunks/ssr/web_features_0i_kwiszuiqcp._.js +3 -0
  672. package/web/.next/server/chunks/ssr/web_features_0i_kwiszuiqcp._.js.map +1 -0
  673. package/web/.next/server/chunks/ssr/web_features_0xnlgtw8bfqaa._.js +3 -0
  674. package/web/.next/server/chunks/ssr/web_features_0xnlgtw8bfqaa._.js.map +1 -0
  675. package/web/.next/server/chunks/ssr/web_features_1--8ungjj--ht._.js +3 -0
  676. package/web/.next/server/chunks/ssr/web_features_1--8ungjj--ht._.js.map +1 -0
  677. package/web/.next/server/chunks/ssr/web_features_19v3mlx8c_h1-._.js +3 -0
  678. package/web/.next/server/chunks/ssr/web_features_19v3mlx8c_h1-._.js.map +1 -0
  679. package/web/.next/server/chunks/ssr/web_features_1_2m6l73qk7qw._.js +3 -0
  680. package/web/.next/server/chunks/ssr/web_features_1_2m6l73qk7qw._.js.map +1 -0
  681. package/web/.next/server/chunks/ssr/web_features_1qq_ruz59ldc9._.js +3 -0
  682. package/web/.next/server/chunks/ssr/web_features_1qq_ruz59ldc9._.js.map +1 -0
  683. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js +3 -0
  684. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js.map +1 -0
  685. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js +3 -0
  686. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js.map +1 -0
  687. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js +1 -1
  688. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js.map +1 -1
  689. package/web/.next/server/chunks/ssr/web_features_authorize_137wk0n1nu3cn._.js +3 -0
  690. package/web/.next/server/chunks/ssr/web_features_authorize_137wk0n1nu3cn._.js.map +1 -0
  691. package/web/.next/server/chunks/ssr/web_features_forms_1d1jyea2jni9o._.js +3 -0
  692. package/web/.next/server/chunks/ssr/web_features_forms_1d1jyea2jni9o._.js.map +1 -0
  693. package/web/.next/server/chunks/ssr/web_features_forms_form-state_ts_2142hiopykfk1._.js +3 -0
  694. package/web/.next/server/chunks/ssr/web_features_forms_form-state_ts_2142hiopykfk1._.js.map +1 -0
  695. package/web/.next/server/chunks/ssr/web_features_forms_ui_credential-fields_tsx_0l-w19zg-7x4b._.js +3 -0
  696. package/web/.next/server/chunks/ssr/web_features_forms_ui_credential-fields_tsx_0l-w19zg-7x4b._.js.map +1 -0
  697. package/web/.next/server/chunks/ssr/web_features_frame_0pe8cwpxe1egb._.js +3 -0
  698. package/web/.next/server/chunks/ssr/web_features_frame_0pe8cwpxe1egb._.js.map +1 -0
  699. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js +3 -0
  700. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js.map +1 -0
  701. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js +1 -1
  702. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js.map +1 -1
  703. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js +1 -1
  704. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js.map +1 -1
  705. package/web/.next/server/chunks/ssr/web_features_outside-party_ui_20x5u9bhxeehi._.js +3 -0
  706. package/web/.next/server/chunks/ssr/web_features_outside-party_ui_20x5u9bhxeehi._.js.map +1 -0
  707. package/web/.next/server/chunks/ssr/web_features_overview_16dyz2ngvs14b._.js +1 -1
  708. package/web/.next/server/chunks/ssr/web_features_overview_16dyz2ngvs14b._.js.map +1 -1
  709. package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js +1 -1
  710. package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js.map +1 -1
  711. package/web/.next/server/chunks/ssr/web_features_overview_state_1wuk95dw2_whp._.js +3 -0
  712. package/web/.next/server/chunks/ssr/web_features_overview_state_1wuk95dw2_whp._.js.map +1 -0
  713. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js +1 -1
  714. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js.map +1 -1
  715. package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js +1 -1
  716. package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js.map +1 -1
  717. package/web/.next/server/middleware-build-manifest.js +39 -15
  718. package/web/.next/server/next-font-manifest.js +1 -1
  719. package/web/.next/server/next-font-manifest.json +21 -13
  720. package/web/.next/server/pages/500.html +1 -1
  721. package/web/.next/server/preview-props.json +3 -3
  722. package/web/.next/server/server-reference-manifest.js +1 -1
  723. package/web/.next/server/server-reference-manifest.json +176 -74
  724. package/web/.next/static/chunks/00njqo86bx2kb.js +1 -0
  725. package/web/.next/static/chunks/047i2x2j--shk.css +3 -0
  726. package/web/.next/static/chunks/07j7jnfe13wx6.js +1 -0
  727. package/web/.next/static/chunks/0g4cpamshfwmn.js +1 -0
  728. package/web/.next/static/chunks/0j84uiid6fsim.js +1 -0
  729. package/web/.next/static/chunks/0p_kl57bddsiy.js +1 -0
  730. package/web/.next/static/chunks/1aa1d23q1vokr.js +1 -0
  731. package/web/.next/static/chunks/1ca21kggixrjz.js +1 -0
  732. package/web/.next/static/chunks/1jvae6c-4jwji.js +1 -0
  733. package/web/.next/static/chunks/23ud2e13dn8f4.js +1 -0
  734. package/web/.next/static/chunks/2_41h3v090ur9.js +1 -0
  735. package/web/.next/static/chunks/2x00o45pdbkok.js +1 -0
  736. package/web/.next/static/chunks/31vy122d9fvme.js +1 -0
  737. package/web/.next/static/chunks/3apnqdh48__yw.js +1 -0
  738. package/web/.next/static/chunks/3okm5g88ig1l3.js +1 -0
  739. package/web/.next/static/chunks/{0a1vw3r93lh06.js → 3v6tr952p9dba.js} +1 -1
  740. package/web/.next/trace +1 -1
  741. package/web/.next/trace-build +1 -1
  742. package/web/.next/types/routes.d.ts +8 -3
  743. package/web/.next/types/validator.ts +128 -50
  744. package/web/public/wake-worker.js +17 -0
  745. package/web/.next/server/app/outside-parties/[name]/change/page/app-paths-manifest.json +0 -3
  746. package/web/.next/server/app/outside-parties/[name]/change/page/server-reference-manifest.json +0 -35
  747. package/web/.next/server/app/outside-parties/[name]/change/page.js +0 -22
  748. package/web/.next/server/app/outside-parties/[name]/change/page.js.nft.json +0 -1
  749. package/web/.next/server/app/outside-parties/[name]/change/page_client-reference-manifest.js +0 -3
  750. package/web/.next/server/app/outside-parties/[name]/page/app-paths-manifest.json +0 -3
  751. package/web/.next/server/app/outside-parties/[name]/page/server-reference-manifest.json +0 -15
  752. package/web/.next/server/app/outside-parties/[name]/page.js +0 -20
  753. package/web/.next/server/app/outside-parties/[name]/page.js.nft.json +0 -1
  754. package/web/.next/server/app/outside-parties/[name]/page_client-reference-manifest.js +0 -3
  755. package/web/.next/server/app/outside-parties/[name]/retire/page/app-paths-manifest.json +0 -3
  756. package/web/.next/server/app/outside-parties/[name]/retire/page/server-reference-manifest.json +0 -35
  757. package/web/.next/server/app/outside-parties/[name]/retire/page.js +0 -21
  758. package/web/.next/server/app/outside-parties/[name]/retire/page.js.nft.json +0 -1
  759. package/web/.next/server/app/outside-parties/[name]/retire/page_client-reference-manifest.js +0 -3
  760. package/web/.next/server/app/outside-parties/add/page/app-paths-manifest.json +0 -3
  761. package/web/.next/server/app/outside-parties/add/page/server-reference-manifest.json +0 -35
  762. package/web/.next/server/app/outside-parties/add/page.js.nft.json +0 -1
  763. package/web/.next/server/app/outside-parties/add/page_client-reference-manifest.js +0 -3
  764. package/web/.next/server/app/outside-parties/page/app-paths-manifest.json +0 -3
  765. package/web/.next/server/app/outside-parties/page.js.nft.json +0 -1
  766. package/web/.next/server/app/outside-parties/page_client-reference-manifest.js +0 -3
  767. package/web/.next/server/app/overview/changes/route/app-paths-manifest.json +0 -3
  768. package/web/.next/server/app/overview/changes/route.js +0 -6
  769. package/web/.next/server/app/overview/changes/route.js.nft.json +0 -1
  770. package/web/.next/server/app/overview/changes/route_client-reference-manifest.js +0 -3
  771. package/web/.next/server/app/overview/page/app-paths-manifest.json +0 -3
  772. package/web/.next/server/app/overview/page/build-manifest.json +0 -23
  773. package/web/.next/server/app/overview/page/next-font-manifest.json +0 -11
  774. package/web/.next/server/app/overview/page/server-reference-manifest.json +0 -45
  775. package/web/.next/server/app/overview/page.js.nft.json +0 -1
  776. package/web/.next/server/app/overview/page_client-reference-manifest.js +0 -3
  777. package/web/.next/server/app/overview/requests/[requestId]/page/app-paths-manifest.json +0 -3
  778. package/web/.next/server/app/overview/requests/[requestId]/page/build-manifest.json +0 -23
  779. package/web/.next/server/app/overview/requests/[requestId]/page/next-font-manifest.json +0 -11
  780. package/web/.next/server/app/overview/requests/[requestId]/page.js.nft.json +0 -1
  781. package/web/.next/server/app/overview/requests/[requestId]/page_client-reference-manifest.js +0 -3
  782. package/web/.next/server/app/parties/page/app-paths-manifest.json +0 -3
  783. package/web/.next/server/app/parties/page/build-manifest.json +0 -23
  784. package/web/.next/server/app/parties/page.js.nft.json +0 -1
  785. package/web/.next/server/app/parties/page_client-reference-manifest.js +0 -3
  786. package/web/.next/server/app/sign-in/failed/page/app-paths-manifest.json +0 -3
  787. package/web/.next/server/app/sign-in/failed/page/next-font-manifest.json +0 -11
  788. package/web/.next/server/app/sign-in/failed/page.js.nft.json +0 -1
  789. package/web/.next/server/app/sign-in/failed/page_client-reference-manifest.js +0 -3
  790. package/web/.next/server/chunks/[externals]__12s2uxrv8n30f._.js +0 -3
  791. package/web/.next/server/chunks/[root-of-the-server]__00bbah0fbuex2._.js.map +0 -1
  792. package/web/.next/server/chunks/ssr/0vkm_server_app_overview_requests_[requestId]_page_actions_08cpboirhdm8t.js +0 -3
  793. package/web/.next/server/chunks/ssr/0vkm_server_app_overview_requests_[requestId]_page_actions_08cpboirhdm8t.js.map +0 -1
  794. package/web/.next/server/chunks/ssr/[root-of-the-server]__0-liudmjwlqmo._.js +0 -4
  795. package/web/.next/server/chunks/ssr/[root-of-the-server]__0-liudmjwlqmo._.js.map +0 -1
  796. package/web/.next/server/chunks/ssr/[root-of-the-server]__0dywrno7zb0r_._.js +0 -3
  797. package/web/.next/server/chunks/ssr/[root-of-the-server]__0hosi33y5xecr._.js +0 -3
  798. package/web/.next/server/chunks/ssr/[root-of-the-server]__0hosi33y5xecr._.js.map +0 -1
  799. package/web/.next/server/chunks/ssr/[root-of-the-server]__0ntyo9p3x-w6a._.js.map +0 -1
  800. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rzvf7wb60m05._.js +0 -3
  801. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rzvf7wb60m05._.js.map +0 -1
  802. package/web/.next/server/chunks/ssr/[root-of-the-server]__10rfwy-punm8_._.js +0 -3
  803. package/web/.next/server/chunks/ssr/[root-of-the-server]__10rfwy-punm8_._.js.map +0 -1
  804. package/web/.next/server/chunks/ssr/[root-of-the-server]__11e7zi5yg_f_4._.js +0 -4
  805. package/web/.next/server/chunks/ssr/[root-of-the-server]__11e7zi5yg_f_4._.js.map +0 -1
  806. package/web/.next/server/chunks/ssr/[root-of-the-server]__197il4swfpq1a._.js.map +0 -1
  807. package/web/.next/server/chunks/ssr/[root-of-the-server]__1afrhvkbp010p._.js +0 -3
  808. package/web/.next/server/chunks/ssr/[root-of-the-server]__1afrhvkbp010p._.js.map +0 -1
  809. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpk1uw97id0a._.js.map +0 -1
  810. package/web/.next/server/chunks/ssr/[root-of-the-server]__1vkw2kvzx6fpw._.js +0 -3
  811. package/web/.next/server/chunks/ssr/[root-of-the-server]__1yyfc4xf3xa-s._.js +0 -4
  812. package/web/.next/server/chunks/ssr/[root-of-the-server]__1yyfc4xf3xa-s._.js.map +0 -1
  813. package/web/.next/server/chunks/ssr/[root-of-the-server]__216xd8otb96uo._.js +0 -3
  814. package/web/.next/server/chunks/ssr/_03xm-6l-r6ko0._.js +0 -4
  815. package/web/.next/server/chunks/ssr/_03xm-6l-r6ko0._.js.map +0 -1
  816. package/web/.next/server/chunks/ssr/_04iwj3w0divwb._.js +0 -4
  817. package/web/.next/server/chunks/ssr/_04iwj3w0divwb._.js.map +0 -1
  818. package/web/.next/server/chunks/ssr/_13qzwpag13tvy._.js.map +0 -1
  819. package/web/.next/server/chunks/ssr/_1bfq0g9c1iw__._.js +0 -4
  820. package/web/.next/server/chunks/ssr/_1bfq0g9c1iw__._.js.map +0 -1
  821. package/web/.next/server/chunks/ssr/_1jfy4064jcghi._.js +0 -3
  822. package/web/.next/server/chunks/ssr/_1jfy4064jcghi._.js.map +0 -1
  823. package/web/.next/server/chunks/ssr/node_modules_next_dist_compiled_@opentelemetry_api_index_1oy1nwhip-98t.js +0 -3
  824. package/web/.next/server/chunks/ssr/node_modules_next_dist_compiled_@opentelemetry_api_index_1oy1nwhip-98t.js.map +0 -1
  825. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_03zgfhccdkaiy.js +0 -3
  826. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_03zgfhccdkaiy.js.map +0 -1
  827. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0fj-1791_p39n.js +0 -3
  828. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0fj-1791_p39n.js.map +0 -1
  829. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pq59x3iko2ai.js +0 -3
  830. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pq59x3iko2ai.js.map +0 -1
  831. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0svltk31-r84e.js +0 -3
  832. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0svltk31-r84e.js.map +0 -1
  833. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ytc4y16h581t.js +0 -3
  834. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ytc4y16h581t.js.map +0 -1
  835. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_15hcath_cy93j.js +0 -3
  836. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_15hcath_cy93j.js.map +0 -1
  837. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ej-pov8ir4hb.js +0 -3
  838. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ej-pov8ir4hb.js.map +0 -1
  839. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1emdm3ck_2g9k.js +0 -3
  840. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1emdm3ck_2g9k.js.map +0 -1
  841. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1mvwdrj8rcdc5.js +0 -3
  842. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1mvwdrj8rcdc5.js.map +0 -1
  843. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1uc-ufaepnlh_.js +0 -3
  844. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1uc-ufaepnlh_.js.map +0 -1
  845. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ymh04086158y.js +0 -3
  846. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ymh04086158y.js.map +0 -1
  847. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1z9khw-ht54ev.js +0 -3
  848. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1z9khw-ht54ev.js.map +0 -1
  849. package/web/.next/server/chunks/ssr/web_0vot73dagfg_x._.js +0 -3
  850. package/web/.next/server/chunks/ssr/web_0vot73dagfg_x._.js.map +0 -1
  851. package/web/.next/server/chunks/ssr/web_17c7_dhsf-sjp._.js +0 -3
  852. package/web/.next/server/chunks/ssr/web_17c7_dhsf-sjp._.js.map +0 -1
  853. package/web/.next/server/chunks/ssr/web_1j5yjwqkgyeve._.js +0 -3
  854. package/web/.next/server/chunks/ssr/web_1j5yjwqkgyeve._.js.map +0 -1
  855. package/web/.next/server/chunks/ssr/web_1nqu01kfi0u66._.js.map +0 -1
  856. package/web/.next/server/chunks/ssr/web_1zd285_dq60z5._.js +0 -3
  857. package/web/.next/server/chunks/ssr/web_1zd285_dq60z5._.js.map +0 -1
  858. package/web/.next/server/chunks/ssr/web_207u8paamz3z-._.js +0 -10
  859. package/web/.next/server/chunks/ssr/web_207u8paamz3z-._.js.map +0 -1
  860. package/web/.next/server/chunks/ssr/web__next-internal_server_app_outside-parties_add_page_actions_0wclx47vjdhe6.js +0 -3
  861. package/web/.next/server/chunks/ssr/web__next-internal_server_app_outside-parties_add_page_actions_0wclx47vjdhe6.js.map +0 -1
  862. package/web/.next/server/chunks/ssr/web__next-internal_server_app_overview_page_actions_0hxu14a57nlf2.js +0 -3
  863. package/web/.next/server/chunks/ssr/web__next-internal_server_app_overview_page_actions_0hxu14a57nlf2.js.map +0 -1
  864. package/web/.next/server/chunks/ssr/web_app_not-found_tsx_1miwllm8xrp2a._.js +0 -3
  865. package/web/.next/server/chunks/ssr/web_app_not-found_tsx_1miwllm8xrp2a._.js.map +0 -1
  866. package/web/.next/server/chunks/ssr/web_app_outside-parties_[name]_change_page_tsx_0kfjh3f55us56._.js.map +0 -1
  867. package/web/.next/server/chunks/ssr/web_app_outside-parties_[name]_retire_page_tsx_0qhcnjpjipu_2._.js.map +0 -1
  868. package/web/.next/server/chunks/ssr/web_app_overview_error_tsx_0qlcwxupzw726._.js +0 -3
  869. package/web/.next/server/chunks/ssr/web_app_overview_error_tsx_0qlcwxupzw726._.js.map +0 -1
  870. package/web/.next/server/chunks/ssr/web_app_overview_error_tsx_17_cklg40kzxe._.js.map +0 -1
  871. package/web/.next/server/chunks/ssr/web_app_parties_page_tsx_1lilxm339jj89._.js +0 -3
  872. package/web/.next/server/chunks/ssr/web_app_parties_page_tsx_1lilxm339jj89._.js.map +0 -1
  873. package/web/.next/server/chunks/ssr/web_features_0k3zd1eymtkgq._.js +0 -3
  874. package/web/.next/server/chunks/ssr/web_features_0k3zd1eymtkgq._.js.map +0 -1
  875. package/web/.next/server/chunks/ssr/web_features_0vq1wjkuh6dmr._.js +0 -3
  876. package/web/.next/server/chunks/ssr/web_features_0vq1wjkuh6dmr._.js.map +0 -1
  877. package/web/.next/server/chunks/ssr/web_features_forms_03k1kg82ux_ee._.js +0 -3
  878. package/web/.next/server/chunks/ssr/web_features_forms_03k1kg82ux_ee._.js.map +0 -1
  879. package/web/.next/server/chunks/ssr/web_features_forms_1-88lvs4ivi73._.js +0 -3
  880. package/web/.next/server/chunks/ssr/web_features_forms_1-88lvs4ivi73._.js.map +0 -1
  881. package/web/.next/server/chunks/ssr/web_features_forms_15gausi3cpweg._.js +0 -3
  882. package/web/.next/server/chunks/ssr/web_features_forms_15gausi3cpweg._.js.map +0 -1
  883. package/web/.next/server/chunks/ssr/web_features_outside-party_ui_outside-party_tsx_06a94oekz1ckq._.js +0 -3
  884. package/web/.next/server/chunks/ssr/web_features_outside-party_ui_outside-party_tsx_06a94oekz1ckq._.js.map +0 -1
  885. package/web/.next/server/chunks/ssr/web_features_overview_state_inbox-panel_tsx_03hlegjsc27sb._.js +0 -3
  886. package/web/.next/server/chunks/ssr/web_features_overview_state_inbox-panel_tsx_03hlegjsc27sb._.js.map +0 -1
  887. package/web/.next/server/chunks/web__next-internal_server_app_overview_changes_route_actions_16jqwsctr1pzg.js +0 -3
  888. package/web/.next/static/chunks/0214opd1iq3ld.js +0 -1
  889. package/web/.next/static/chunks/0hobzrlhklo3e.js +0 -1
  890. package/web/.next/static/chunks/1ma7v1viiz247.js +0 -1
  891. package/web/.next/static/chunks/1sgi4p93eayf4.js +0 -1
  892. package/web/.next/static/chunks/22u81hd6kxqsx.js +0 -1
  893. package/web/.next/static/chunks/2qpupho1jn-iy.js +0 -1
  894. package/web/.next/static/chunks/2rap-vrom5-zw.css +0 -3
  895. package/web/.next/static/chunks/3jr0srcv_-pfa.js +0 -1
  896. package/web/.next/static/chunks/3l_1gcuoe8bfn.js +0 -1
  897. package/web/.next/static/chunks/3sv0_hjr9t4cp.js +0 -1
  898. /package/web/.next/server/app/{outside-parties → (console)/outside-parties}/[name]/change/page/react-loadable-manifest.json +0 -0
  899. /package/web/.next/server/app/{outside-parties → (console)/outside-parties}/[name]/change/page.js.map +0 -0
  900. /package/web/.next/server/app/{outside-parties → (console)/outside-parties}/[name]/page/react-loadable-manifest.json +0 -0
  901. /package/web/.next/server/app/{outside-parties → (console)/outside-parties}/[name]/page.js.map +0 -0
  902. /package/web/.next/server/app/{outside-parties → (console)/outside-parties}/[name]/retire/page/react-loadable-manifest.json +0 -0
  903. /package/web/.next/server/app/{outside-parties → (console)/outside-parties}/[name]/retire/page.js.map +0 -0
  904. /package/web/.next/server/app/{overview → (console)/outside-parties/add}/page/react-loadable-manifest.json +0 -0
  905. /package/web/.next/server/app/{overview → (console)/outside-parties/add}/page.js.map +0 -0
  906. /package/web/.next/server/app/{outside-parties/add → (console)/outside-parties/add-a2a-agent}/page/react-loadable-manifest.json +0 -0
  907. /package/web/.next/server/app/{outside-parties/add → (console)/outside-parties/add-a2a-agent}/page.js.map +0 -0
  908. /package/web/.next/server/app/{outside-parties → (console)/outside-parties/add-a2a-client}/page/react-loadable-manifest.json +0 -0
  909. /package/web/.next/server/app/{outside-parties → (console)/outside-parties/add-a2a-client}/page.js.map +0 -0
  910. /package/web/.next/server/app/{overview/requests/[requestId] → (console)/outside-parties}/page/react-loadable-manifest.json +0 -0
  911. /package/web/.next/server/app/{overview/requests/[requestId] → (console)/outside-parties}/page.js.map +0 -0
  912. /package/web/.next/server/app/{overview → (console)/overview}/changes/route/build-manifest.json +0 -0
  913. /package/web/.next/server/app/{overview → (console)/overview}/changes/route/server-reference-manifest.json +0 -0
  914. /package/web/.next/server/app/{overview → (console)/overview}/changes/route.js.map +0 -0
  915. /package/web/.next/server/app/{parties/page.js.map → (console)/overview/focus/route.js.map} +0 -0
  916. /package/web/.next/server/app/{parties → (console)/overview}/page/react-loadable-manifest.json +0 -0
  917. /package/web/.next/server/app/{sign-in/failed → (console)/overview}/page.js.map +0 -0
  918. /package/web/.next/server/app/{sign-in/failed → (console)/overview/requests/[requestId]}/page/react-loadable-manifest.json +0 -0
  919. /package/web/.next/server/chunks/{[externals]__12s2uxrv8n30f._.js.map → 0b9d__next-internal_server_app_(console)_overview_focus_route_actions_10hgyjvv-6fus.js.map} +0 -0
  920. /package/web/.next/server/chunks/{web__next-internal_server_app_overview_changes_route_actions_16jqwsctr1pzg.js.map → 1mb5_next-internal_server_app_(console)_overview_changes_route_actions_0zbq7lqsf5nng.js.map} +0 -0
  921. /package/web/.next/static/{MLIzjhz2u5r5gyyuciHvf → Az1CqrzgGHMZVR4nw9717}/_buildManifest.js +0 -0
  922. /package/web/.next/static/{MLIzjhz2u5r5gyyuciHvf → Az1CqrzgGHMZVR4nw9717}/_clientMiddlewareManifest.js +0 -0
  923. /package/web/.next/static/{MLIzjhz2u5r5gyyuciHvf → Az1CqrzgGHMZVR4nw9717}/_ssgManifest.js +0 -0
@@ -0,0 +1,74 @@
1
+ import { RECEIVE_MAX_UPPER_BOUND } from '@aeolus-fleet/common';
2
+ import { err, ok } from '../shared/result.js';
3
+ /**
4
+ * Use case: wakes a person for what waits on their person ship (wake a
5
+ * person, W3, W8). It takes the ship's deliveries with the gateway as their
6
+ * waker; those never handed are fresh. Each channel the person turned on
7
+ * whose window has passed sends one wake for all of them; each fresh
8
+ * delivery is then handed no. 1, naming the first channel that went out, so
9
+ * a delivery is woken once. A wake held back by a window, or that no
10
+ * channel sent, hands nothing. Each channel's window is kept after the
11
+ * hand-overs, so a gateway that stopped in between wakes again: one wake
12
+ * more, nothing lost. While a page of the person is in focus, the page
13
+ * shows what arrives (W6): each fresh delivery is handed through it and no
14
+ * wake goes out.
15
+ */
16
+ export function createWakePerson(deps) {
17
+ return async (ship, crewToken) => {
18
+ /** Hands each fresh delivery no. 1 through the channel, up to the first refusal: that refusal, or none. */
19
+ const handEach = async (fresh, channel) => {
20
+ for (const { deliveryId } of fresh) {
21
+ const handed = await deps.door.handed(crewToken, { deliveryId, handOverNumber: 1, channel });
22
+ if (!handed.isOk) {
23
+ return handed.error;
24
+ }
25
+ }
26
+ return undefined;
27
+ };
28
+ const taken = await deps.door.pushReceive(crewToken, { max: RECEIVE_MAX_UPPER_BOUND });
29
+ if (!taken.isOk) {
30
+ return taken;
31
+ }
32
+ const fresh = taken.value.filter(({ handOverNumber }) => handOverNumber === null);
33
+ if (fresh.length === 0) {
34
+ return ok({ kind: 'settled' });
35
+ }
36
+ if (await deps.focused.isAnyInFocus(ship, new Date(deps.clock.now().getTime() - deps.focusFreshMs))) {
37
+ const refused = await handEach(fresh, 'page');
38
+ return refused === undefined ? ok({ kind: 'settled' }) : err(refused);
39
+ }
40
+ const turnedOn = (await Promise.all(deps.channels.map(async (channel) => ((await channel.isOn(ship)) ? [channel] : [])))).flat();
41
+ if (turnedOn.length === 0) {
42
+ return ok({ kind: 'settled' });
43
+ }
44
+ const now = deps.clock.now();
45
+ const windows = await Promise.all(turnedOn.map(async (channel) => {
46
+ const lastSentAt = await deps.wakesSent.lastSentAt(ship, channel.name);
47
+ return { channel, endsAt: lastSentAt === undefined ? now : new Date(lastSentAt.getTime() + channel.windowMs) };
48
+ }));
49
+ const due = windows.filter(({ endsAt }) => endsAt.getTime() <= now.getTime()).map(({ channel }) => channel);
50
+ if (due.length === 0) {
51
+ return ok({ kind: 'inWindow', until: new Date(Math.min(...windows.map(({ endsAt }) => endsAt.getTime()))) });
52
+ }
53
+ const wentOut = [];
54
+ for (const channel of due) {
55
+ if ((await channel.wake(ship)).isOk) {
56
+ wentOut.push(channel.name);
57
+ }
58
+ }
59
+ const [firstOut] = wentOut;
60
+ if (firstOut === undefined) {
61
+ return ok({ kind: 'failed' });
62
+ }
63
+ const refused = await handEach(fresh, firstOut);
64
+ // The window is kept only after the hand-overs: a gateway that stopped in between wakes again, as the design says. A refusal keeps it, so no second email follows at once.
65
+ for (const channel of wentOut) {
66
+ await deps.wakesSent.record({ ship, channel, sentAt: now });
67
+ }
68
+ if (refused !== undefined) {
69
+ return err(refused);
70
+ }
71
+ return ok({ kind: 'settled' });
72
+ };
73
+ }
74
+ //# sourceMappingURL=wake-person.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wake-person.js","sourceRoot":"","sources":["../../../src/core/people/wake-person.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { FleetId } from '@aeolus-fleet/common';
2
+ import type { Clock } from '../shared/clock.js';
3
+ import type { WakeChannel, WebPush, WebPushSubscriptions } from './ports.js';
4
+ /**
5
+ * Web push, a channel that wakes a person (wake a person, W1, W4, W8). It is
6
+ * on while a browser they turned it on in still takes wakes. A wake goes to
7
+ * each such browser, saying only the fleet by its name and the overview
8
+ * link; it went out once one push service took it. A subscription its push
9
+ * service says is gone takes no wake again.
10
+ */
11
+ export declare function createWebPushChannel(deps: {
12
+ subscriptions: WebPushSubscriptions;
13
+ webPush: WebPush;
14
+ clock: Clock;
15
+ windowMs: number;
16
+ overviewUrlOf: (fleetId: FleetId) => string;
17
+ }): WakeChannel;
@@ -0,0 +1,35 @@
1
+ import { err, ok } from '../shared/result.js';
2
+ /**
3
+ * Web push, a channel that wakes a person (wake a person, W1, W4, W8). It is
4
+ * on while a browser they turned it on in still takes wakes. A wake goes to
5
+ * each such browser, saying only the fleet by its name and the overview
6
+ * link; it went out once one push service took it. A subscription its push
7
+ * service says is gone takes no wake again.
8
+ */
9
+ export function createWebPushChannel(deps) {
10
+ const takingWakes = async ({ fleetId, shipId }) => (await deps.subscriptions.list(fleetId, shipId)).filter(({ goneAt }) => goneAt === null);
11
+ return {
12
+ name: 'web-push',
13
+ windowMs: deps.windowMs,
14
+ isOn: async (ship) => (await takingWakes(ship)).length > 0,
15
+ wake: async (ship) => {
16
+ const overviewUrl = deps.overviewUrlOf(ship.fleetId);
17
+ let isTaken = false;
18
+ for (const subscription of await takingWakes(ship)) {
19
+ const sent = await deps.webPush.send(subscription, { fleetName: subscription.fleetName, overviewUrl });
20
+ switch (sent) {
21
+ case 'sent':
22
+ isTaken = true;
23
+ break;
24
+ case 'gone':
25
+ await deps.subscriptions.markGone(ship.fleetId, { shipId: ship.shipId, endpoint: subscription.endpoint, goneAt: deps.clock.now() });
26
+ break;
27
+ case 'failed':
28
+ break;
29
+ }
30
+ }
31
+ return isTaken ? ok(undefined) : err({ reason: 'no push service took the wake' });
32
+ },
33
+ };
34
+ }
35
+ //# sourceMappingURL=web-push-channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-push-channel.js","sourceRoot":"","sources":["../../../src/core/people/web-push-channel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAG9C;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAA4I;IAC/K,MAAM,WAAW,GAAG,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAc,EAAkC,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;IACxL,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;QAC1D,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACnB,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrD,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,KAAK,MAAM,YAAY,IAAI,MAAM,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,YAAY,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;gBACvG,QAAQ,IAAI,EAAE,CAAC;oBACb,KAAK,MAAM;wBACT,OAAO,GAAG,IAAI,CAAC;wBACf,MAAM;oBACR,KAAK,MAAM;wBACT,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACpI,MAAM;oBACR,KAAK,QAAQ;wBACX,MAAM;gBACV,CAAC;YACH,CAAC;YACD,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,+BAA+B,EAAE,CAAC,CAAC;QACpF,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -7,8 +7,6 @@ import { type DomainError } from '../shared/errors.js';
7
7
  import { type Result } from '../shared/result.js';
8
8
  import type { McpServerCredential } from '../vault/credential.js';
9
9
  import type { PendingRequests } from './ports.js';
10
- /** The scope the gateway declares for approving outside parties (decision 0056). */
11
- export declare const APPROVING_SCOPE = "gateway:approve";
12
10
  /** An approval: the proxy ship's name, its owner (a person ship) and its scopes; for a server, its credential and how many calls it takes at once. */
13
11
  export interface Approval {
14
12
  readonly kind: 'approve';
@@ -1,10 +1,7 @@
1
+ import { APPROVING_SCOPE, EVERY_APP_SHIP_SCOPES, scopeNotHeld } from '../parties/approver.js';
1
2
  import { refuse } from '../shared/errors.js';
2
3
  import { ok } from '../shared/result.js';
3
4
  import { noticesOf } from './outcome-notice.js';
4
- /** The scope the gateway declares for approving outside parties (decision 0056). */
5
- export const APPROVING_SCOPE = 'gateway:approve';
6
- /** The scopes every app ship gets (decision 0046), so an approver need not hold them to grant them. */
7
- const EVERY_APP_SHIP_SCOPES = new Set(['messages:send', 'messages:receive']);
8
5
  function decidedByOf(actor) {
9
6
  switch (actor.kind) {
10
7
  case 'ship':
@@ -37,7 +34,7 @@ export function createDecideRequest(deps) {
37
34
  }
38
35
  return approval.server === undefined
39
36
  ? Promise.resolve(refuse('SERVER_DETAILS_MISSING', 'Adding an outside MCP server needs its credential and how many calls it takes at once'))
40
- : deps.approveParty({ ...party, url: request.subject.url, ...approval.server });
37
+ : deps.approveParty({ ...party, url: request.subject.url, ...approval.server, toolSwitches: null });
41
38
  };
42
39
  return async ({ actor, requestId, decision }) => {
43
40
  if (!actor.scopes.includes(APPROVING_SCOPE)) {
@@ -59,7 +56,7 @@ export function createDecideRequest(deps) {
59
56
  const isDenied = await deps.requests.decide(actor.fleetId, { requestId, from: ['pending'], decision: decided, notices: noticesOf(request, { outcome: 'denied', partyName: null }) });
60
57
  return isDenied ? ok({ state: 'denied', party: null }) : refuse('ALREADY_DECIDED', 'This request is decided already');
61
58
  }
62
- const notHeld = decision.party.scopes.find((scope) => !EVERY_APP_SHIP_SCOPES.has(scope) && !actor.scopes.includes(scope));
59
+ const notHeld = scopeNotHeld(actor, decision.party.scopes);
63
60
  if (notHeld !== undefined) {
64
61
  return refuse('SCOPE_NOT_HELD', `You may grant only scopes you hold: not ${notHeld}`);
65
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"decide-request.js","sourceRoot":"","sources":["../../../src/core/requests/decide-request.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decide-request.js","sourceRoot":"","sources":["../../../src/core/requests/decide-request.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { refuse } from '../shared/errors.js';
2
2
  import { ok } from '../shared/result.js';
3
- import { APPROVING_SCOPE } from './decide-request.js';
3
+ import { APPROVING_SCOPE } from '../parties/approver.js';
4
4
  /** Use case: every open request of the fleet, for an actor holding gateway:approve (decision 0056: To decide on the overview). */
5
5
  export function createListToDecide(deps) {
6
6
  return async (actor) => {
@@ -1 +1 @@
1
- {"version":3,"file":"list-to-decide.js","sourceRoot":"","sources":["../../../src/core/requests/list-to-decide.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAKtD,kIAAkI;AAClI,MAAM,UAAU,kBAAkB,CAAC,IAAiD;IAClF,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YAC5C,OAAO,MAAM,CAAC,iBAAiB,EAAE,2BAA2B,eAAe,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"list-to-decide.js","sourceRoot":"","sources":["../../../src/core/requests/list-to-decide.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAKzD,kIAAkI;AAClI,MAAM,UAAU,kBAAkB,CAAC,IAAiD;IAClF,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YAC5C,OAAO,MAAM,CAAC,iBAAiB,EAAE,2BAA2B,eAAe,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { type Err } from './result.js';
2
2
  /** Every reason the gateway's core refuses a request. */
3
- export type DomainErrorKind = 'ALREADY_CONNECTED' | 'SECRET_REFUSED' | 'OTHER_FLEET' | 'MISSING_SCOPES' | 'SCOPE_REFUSED' | 'NOT_THE_OPERATOR' | 'NOT_AN_ACTOR' | 'NOT_AN_APPROVER' | 'NO_SUCH_REQUEST' | 'ALREADY_DECIDED' | 'EXPIRED' | 'SCOPE_NOT_HELD' | 'SERVER_DETAILS_MISSING' | 'REQUEST_ID_USED' | 'FLEET_UNAVAILABLE' | 'NOT_CONNECTED' | 'PARTY_EXISTS' | 'COMMISSION_REFUSED' | 'NO_SUCH_PARTY' | 'NOT_AWAITING_CREW' | 'NOT_CREWED' | 'SERVER_UNREACHABLE' | 'STATEMENT_REFUSED' | 'INVALID_REDIRECT_URIS' | 'CLIENT_HAS_PARTY' | 'PARTY_NOT_CREWED' | 'NO_SUCH_TOOL' | 'INVALID_ARGUMENTS' | 'NOT_REACHABLE' | 'SEND_REFUSED' | 'NO_SUCH_CALL' | 'NOT_A_PERSON' | 'SIGNED_OUT' | 'NO_SUCH_DELIVERY' | 'NOT_A_NETWORKER' | 'OPEN_NETWORK' | 'OUTSIDE_PARTIES_OFF' | 'INVALID_SERVER_URL' | 'NOT_A_MANAGER' | 'RETIRE_REFUSED' | 'NOT_AN_ACCOUNT' | 'PARTY_NOT_COMMISSIONED' | 'CHANGE_REFUSED';
3
+ export type DomainErrorKind = 'ALREADY_CONNECTED' | 'SECRET_REFUSED' | 'OTHER_FLEET' | 'MISSING_SCOPES' | 'SCOPE_REFUSED' | 'NOT_THE_OPERATOR' | 'NOT_AN_ACTOR' | 'NOT_AN_APPROVER' | 'NO_SUCH_REQUEST' | 'ALREADY_DECIDED' | 'EXPIRED' | 'SCOPE_NOT_HELD' | 'SERVER_DETAILS_MISSING' | 'REQUEST_ID_USED' | 'FLEET_UNAVAILABLE' | 'NOT_CONNECTED' | 'PARTY_EXISTS' | 'COMMISSION_REFUSED' | 'NO_SUCH_PARTY' | 'NOT_AWAITING_CREW' | 'NOT_CREWED' | 'SERVER_UNREACHABLE' | 'STATEMENT_REFUSED' | 'INVALID_REDIRECT_URIS' | 'CLIENT_HAS_PARTY' | 'PARTY_NOT_CREWED' | 'NO_SUCH_TOOL' | 'INVALID_ARGUMENTS' | 'NOT_REACHABLE' | 'SEND_REFUSED' | 'NO_SUCH_CALL' | 'NOT_A_PERSON' | 'SIGNED_OUT' | 'NO_SUCH_DELIVERY' | 'NOT_A_NETWORKER' | 'OPEN_NETWORK' | 'OUTSIDE_PARTIES_OFF' | 'INVALID_SERVER_URL' | 'NOT_A_MANAGER' | 'RETIRE_REFUSED' | 'NOT_AN_ACCOUNT' | 'PARTY_NOT_COMMISSIONED' | 'CHANGE_REFUSED' | 'UNKNOWN_ALIAS' | 'PAYLOAD_TOO_LARGE' | 'TASK_NOT_FOUND' | 'TASK_TERMINAL' | 'WEBHOOK_REFUSED' | 'PUSH_CONFIG_NOT_FOUND' | 'CONTEXT_MISMATCH' | 'CARD_UNREACHABLE' | 'CARD_INVALID' | 'NOT_A_MESSAGE' | 'CHANNEL_NOT_OFFERED' | 'INVALID_SUBSCRIPTION';
4
4
  /** Why the core refused a request. Adapters map the kind to their own error shape; the message is safe to show. */
5
5
  export interface DomainError<K extends DomainErrorKind = DomainErrorKind> {
6
6
  readonly kind: K;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/core/shared/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAY,MAAM,aAAa,CAAC;AAsD5C,qDAAqD;AACrD,MAAM,UAAU,MAAM,CAA4B,IAAO,EAAE,OAAe;IACxE,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/core/shared/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAY,MAAM,aAAa,CAAC;AAkE5C,qDAAqD;AACrD,MAAM,UAAU,MAAM,CAA4B,IAAO,EAAE,OAAe;IACxE,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAChC,CAAC"}
@@ -66,6 +66,19 @@ export interface Pagasae {
66
66
  kind: 'refused' | 'unavailable';
67
67
  reason: string;
68
68
  }>>;
69
+ /**
70
+ * The account's grant for an ID-JAG a client of the gateway brought
71
+ * (aeolus-fleet company sign-in design, slice 6): pagasae checks it against
72
+ * the organisation's identity provider, for the gateway and that client,
73
+ * once; refused as for any refusal there, unavailable when it did not answer.
74
+ */
75
+ exchangeIdJag(handed: {
76
+ idJag: string;
77
+ clientId: string;
78
+ }): Promise<Result<PagasaeTokens, {
79
+ kind: 'refused' | 'unavailable';
80
+ reason: string;
81
+ }>>;
69
82
  }
70
83
  /** A person's sign-in kept for their MCP client or the gateway's pages: the account in the fleet, and pagasae's tokens to act as it. */
71
84
  export interface AccountGrant {
@@ -1,10 +1,14 @@
1
1
  /**
2
- * The credential the gateway calls an outside MCP server with, kept in the
2
+ * The credential the gateway calls an outside MCP server or A2A agent with, kept in the
3
3
  * vault, the gateway's own database (as squadrons keeps crew tokens). The
4
4
  * server sees the gateway's credential, never the asker's: no rights travel
5
5
  * with a message.
6
6
  */
7
- export type McpServerCredential = {
7
+ export type McpServerCredential =
8
+ /** A server that asks for none, as one reached only on a private network: the gateway sends no Authorization header. */
9
+ {
10
+ readonly kind: 'none';
11
+ } | {
8
12
  readonly kind: 'bearer';
9
13
  readonly token: string;
10
14
  } | {
@@ -2,11 +2,16 @@
2
2
  * The gateway's workers, one per crewed party, each until the gateway stops
3
3
  * or the fleet refuses its crew token: an outside server's states its proxy
4
4
  * ship, then takes its calls (interop 5.2); an outside client's takes the
5
- * replies to its calls (Q9 a). A fleet's workers work only while its outside
5
+ * replies to its calls (Q9 a), and an A2A client's pushes its tasks' changes
6
+ * to its webhooks meanwhile (slice 4); an outside A2A agent's states its
7
+ * proxy ship from its card (slice 5), then takes its messages (slice 6). A fleet's workers work only while its outside
6
8
  * parties are on (interop I-3).
7
9
  */
8
10
  import type { FleetId } from '@aeolus-fleet/common';
9
11
  import type { FastifyBaseLogger } from 'fastify';
12
+ import type { PushToWebhooks } from './core/a2a-in/push-to-webhooks.js';
13
+ import type { RunA2aAgent } from './core/a2a-out/run-a2a-agent.js';
14
+ import type { StateA2aAgent } from './core/a2a-out/state-a2a-agent.js';
10
15
  import type { CollectReplies } from './core/mcp-in/collect-replies.js';
11
16
  import type { RunParty } from './core/mcp-out/run-party.js';
12
17
  import type { StateParty } from './core/mcp-out/state-party.js';
@@ -25,8 +30,11 @@ export interface PartyWorkers {
25
30
  export declare function createPartyWorkers(deps: {
26
31
  parties: PartyStore;
27
32
  stateParty: StateParty;
33
+ stateA2aAgent: StateA2aAgent;
28
34
  runParty: RunParty;
35
+ runA2aAgent: RunA2aAgent;
29
36
  collectReplies: CollectReplies;
37
+ pushToWebhooks: PushToWebhooks;
30
38
  servesOutsideParties: (fleetId: FleetId) => Promise<boolean>;
31
39
  log: FastifyBaseLogger;
32
40
  }): PartyWorkers;
@@ -2,20 +2,37 @@ export function createPartyWorkers(deps) {
2
2
  const stop = new AbortController();
3
3
  /** Each running worker, by fleet and party, with what stops it. */
4
4
  const running = new Map();
5
- const work = async ({ fleetId, name }, signal) => {
5
+ /** One run of the party's worker, as its crew token stands now: whether the fleet refused its crew token, and which. */
6
+ const workOnce = async ({ fleetId, name }, signal) => {
6
7
  if (!(await deps.servesOutsideParties(fleetId))) {
7
- return;
8
+ return { refused: null };
8
9
  }
9
10
  const party = await deps.parties.find(fleetId, name);
10
11
  if (party?.state !== 'crewed' || signal.aborted) {
11
- return;
12
+ return { refused: null };
12
13
  }
13
- if (party.kind === 'mcpClient') {
14
+ if (party.kind === 'mcpClient' || party.kind === 'a2aClient') {
15
+ // Pushing needs no crew token: it ends with the replies, whatever ended them.
16
+ const isCollected = new AbortController();
17
+ const pushing = party.kind === 'a2aClient' ? deps.pushToWebhooks({ caller: { fleetId, party: name }, signal: AbortSignal.any([signal, isCollected.signal]) }) : Promise.resolve();
14
18
  const { ended } = await deps.collectReplies({ party, signal });
19
+ isCollected.abort();
20
+ await pushing;
15
21
  if (ended === 'crewRefused') {
16
22
  deps.log.warn({ fleetId, party: name }, "the fleet refused the proxy ship's crew token: its calls get no replies");
17
23
  }
18
- return;
24
+ return { refused: ended === 'crewRefused' ? party.crewToken : null };
25
+ }
26
+ if (party.kind === 'a2aAgent') {
27
+ const statedAgent = await deps.stateA2aAgent({ fleetId, name });
28
+ if (!statedAgent.isOk) {
29
+ deps.log.warn({ fleetId, party: name, reason: statedAgent.error.message }, 'proxy ship not stated: its last statement stays');
30
+ }
31
+ const { ended } = await deps.runA2aAgent({ party, signal });
32
+ if (ended === 'crewRefused') {
33
+ deps.log.warn({ fleetId, party: name }, "the fleet refused the proxy ship's crew token: its messages are not taken");
34
+ }
35
+ return { refused: ended === 'crewRefused' ? party.crewToken : null };
19
36
  }
20
37
  const stated = await deps.stateParty({ fleetId, name });
21
38
  if (!stated.isOk) {
@@ -26,6 +43,21 @@ export function createPartyWorkers(deps) {
26
43
  if (ended === 'crewRefused') {
27
44
  deps.log.warn({ fleetId, party: name }, 'the fleet refused the proxy ship\'s crew token: its calls are not taken');
28
45
  }
46
+ return { refused: ended === 'crewRefused' ? party.crewToken : null };
47
+ };
48
+ /**
49
+ * The party's worker until it is stopped. A crew token the fleet refused
50
+ * ends it, unless the party was crewed again meanwhile with another, as
51
+ * when its crew was released and a new secret crewed the same proxy ship
52
+ * (vendor platforms V8): then it works on with the new one.
53
+ */
54
+ const work = async (party, signal) => {
55
+ for (let run = await workOnce(party, signal); run.refused !== null && !signal.aborted; run = await workOnce(party, signal)) {
56
+ const kept = await deps.parties.find(party.fleetId, party.name);
57
+ if (kept?.state !== 'crewed' || kept.crewToken === run.refused) {
58
+ return;
59
+ }
60
+ }
29
61
  };
30
62
  return {
31
63
  start: (party) => {
@@ -1 +1 @@
1
- {"version":3,"file":"party-workers.js","sourceRoot":"","sources":["../src/party-workers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"party-workers.js","sourceRoot":"","sources":["../src/party-workers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * The gateway's waiters, one per person ship it crews, across its instances
3
+ * (wake a person, W7, W9): an instance runs a ship's waiter only while it
4
+ * holds the ship's lock. Each round it looks for crews whose waiter no
5
+ * instance runs, so the waiters of an instance that stopped, or lost its
6
+ * locks, are taken over; a ship crewed meanwhile is woken at once. A waiter
7
+ * that ends gives its lock back.
8
+ */
9
+ import type { FastifyBaseLogger } from 'fastify';
10
+ import type { Sleep } from './core/mcp-out/run-party.js';
11
+ import type { PersonCrews, PersonShip, WaiterLocks } from './core/people/ports.js';
12
+ import type { WaitOnPersonShip } from './core/people/wait-on-person-ship.js';
13
+ export interface PersonWaiters {
14
+ /** Runs a round every interval until it stops. */
15
+ start(): void;
16
+ /** Starts the ship's waiter now, unless one runs: the gateway just crewed it. */
17
+ wake(ship: PersonShip): void;
18
+ /** The ships this instance waits on now. */
19
+ waitingOn(): PersonShip[];
20
+ /** Stops every waiter and gives its lock back. */
21
+ stop(): Promise<void>;
22
+ }
23
+ export declare function createPersonWaiters(deps: {
24
+ crews: PersonCrews;
25
+ locks: WaiterLocks;
26
+ waitOnPersonShip: WaitOnPersonShip;
27
+ sleep: Sleep;
28
+ roundMs: number;
29
+ log: FastifyBaseLogger;
30
+ }): PersonWaiters;
@@ -0,0 +1,89 @@
1
+ /** How many crews a round reads at once. */
2
+ const ROUND_PAGE = 100;
3
+ export function createPersonWaiters(deps) {
4
+ const stopping = new AbortController();
5
+ /** Each ship this instance waits on, or takes the lock of, with what stops its waiter. */
6
+ const running = new Map();
7
+ let rounds = Promise.resolve();
8
+ const keyOf = ({ fleetId, shipId }) => `${fleetId}/${shipId}`;
9
+ const run = async (ship, stop) => {
10
+ if (!(await deps.locks.take(ship))) {
11
+ return;
12
+ }
13
+ const held = running.get(keyOf(ship));
14
+ if (held === undefined || stop.signal.aborted) {
15
+ await deps.locks.give(ship);
16
+ return;
17
+ }
18
+ held.isWaiting = true;
19
+ try {
20
+ const ended = await deps.waitOnPersonShip(ship, stop.signal);
21
+ if (ended.reason === 'crewEnded') {
22
+ deps.log.info(ship, "the person ship's crew no longer works: its waiter stopped and the crew was dropped");
23
+ }
24
+ }
25
+ finally {
26
+ await deps.locks.give(ship);
27
+ }
28
+ };
29
+ const wake = (ship) => {
30
+ const key = keyOf(ship);
31
+ if (running.has(key) || stopping.signal.aborted) {
32
+ return;
33
+ }
34
+ const stop = new AbortController();
35
+ const entry = { ship, isWaiting: false, stop, done: Promise.resolve() };
36
+ running.set(key, entry);
37
+ entry.done = run(ship, stop)
38
+ .catch((error) => {
39
+ deps.log.error({ err: error, ...ship }, 'person ship waiter failed');
40
+ })
41
+ .finally(() => running.delete(key));
42
+ };
43
+ const round = async () => {
44
+ try {
45
+ let after = null;
46
+ for (;;) {
47
+ const page = await deps.crews.crewed({ after, limit: ROUND_PAGE });
48
+ for (const ship of page) {
49
+ wake(ship);
50
+ }
51
+ const last = page.at(-1);
52
+ if (page.length < ROUND_PAGE || last === undefined) {
53
+ return;
54
+ }
55
+ after = last;
56
+ }
57
+ }
58
+ catch (error) {
59
+ deps.log.error({ err: error }, 'person ship waiters round failed');
60
+ }
61
+ };
62
+ // Every lock is lost at once: their waiters stop, and the next round takes the locks again where no instance holds them.
63
+ deps.locks.onLost(() => {
64
+ for (const entry of running.values()) {
65
+ entry.stop.abort();
66
+ }
67
+ });
68
+ return {
69
+ start: () => {
70
+ rounds = (async () => {
71
+ while (!stopping.signal.aborted) {
72
+ await round();
73
+ await deps.sleep(deps.roundMs, stopping.signal);
74
+ }
75
+ })();
76
+ },
77
+ wake,
78
+ waitingOn: () => [...running.values()].filter(({ isWaiting }) => isWaiting).map(({ ship }) => ship),
79
+ stop: async () => {
80
+ stopping.abort();
81
+ for (const entry of running.values()) {
82
+ entry.stop.abort();
83
+ }
84
+ await rounds;
85
+ await Promise.all([...running.values()].map(({ done }) => done));
86
+ },
87
+ };
88
+ }
89
+ //# sourceMappingURL=person-waiters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"person-waiters.js","sourceRoot":"","sources":["../src/person-waiters.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aeolus-fleet/gateway",
3
- "version": "0.29.1",
3
+ "version": "0.30.0",
4
4
  "description": "Aeolus gateway: outside MCP servers and clients join a fleet as ships, through one gateway beside core.",
5
5
  "keywords": [
6
6
  "ai-agents",
@@ -27,6 +27,7 @@
27
27
  "!web/.next/cache",
28
28
  "!web/.next/dev",
29
29
  "web/next.config.ts",
30
+ "web/public",
30
31
  "prisma.config.ts",
31
32
  "src/adapters/prisma/schema.prisma",
32
33
  "src/adapters/prisma/migrations"
@@ -44,7 +45,8 @@
44
45
  "db:migrate": "tsx --env-file-if-exists=.env src/bin/aeolus-gateway.ts migrate"
45
46
  },
46
47
  "dependencies": {
47
- "@aeolus-fleet/common": "^0.29.1",
48
+ "@a2a-js/sdk": "1.3.0",
49
+ "@aeolus-fleet/common": "^0.30.0",
48
50
  "@base-ui/react": "^1.9.0",
49
51
  "@fastify/websocket": "^11.3.4",
50
52
  "@modelcontextprotocol/client": "^2.3.1",
@@ -63,10 +65,11 @@
63
65
  "react": "^19.3.1",
64
66
  "react-dom": "^19.3.1",
65
67
  "tailwind-merge": "^3.7.0",
68
+ "web-push": "^3.6.7",
66
69
  "zod": "^4.6.5"
67
70
  },
68
71
  "devDependencies": {
69
- "@aeolus-fleet/core": "^0.29.1",
72
+ "@aeolus-fleet/core": "^0.30.0",
70
73
  "@eslint/js": "^10.0.1",
71
74
  "@modelcontextprotocol/ext-tasks": "0.2.2",
72
75
  "@tailwindcss/postcss": "^4.3.3",
@@ -75,6 +78,7 @@
75
78
  "@types/pg": "^8.23.1",
76
79
  "@types/react": "^19.3.0",
77
80
  "@types/react-dom": "^19.3.0",
81
+ "@types/web-push": "^3.6.4",
78
82
  "@types/ws": "^8.18.2",
79
83
  "eslint": "^10.11.0",
80
84
  "eslint-plugin-check-file": "^3.3.2",
@@ -0,0 +1,4 @@
1
+ -- An outside A2A client's party is named on every call by the hash of its bearer (decision 0060).
2
+ ALTER TABLE "parties" ADD COLUMN "bearer_hash" TEXT;
3
+
4
+ CREATE UNIQUE INDEX "parties_bearer_hash_key" ON "parties"("bearer_hash");
@@ -0,0 +1,5 @@
1
+ -- A client party with no human at the authorize step signs in by client credentials (vendor platforms V4): an access token from no code, with no refresh token.
2
+ ALTER TABLE "oauth_clients" ADD COLUMN "grant" TEXT NOT NULL DEFAULT 'authorizationCode';
3
+ ALTER TABLE "issued_tokens" ALTER COLUMN "refresh_hash" DROP NOT NULL;
4
+ ALTER TABLE "issued_tokens" ALTER COLUMN "refresh_expires_at" DROP NOT NULL;
5
+ ALTER TABLE "issued_tokens" ALTER COLUMN "code_hash" DROP NOT NULL;
@@ -0,0 +1,20 @@
1
+ -- A2A in (decision 0060): a call may match no capability, its delivery is read from the fleet, and an A2A call belongs to a task.
2
+ ALTER TABLE "client_calls" ALTER COLUMN "capability" DROP NOT NULL;
3
+ ALTER TABLE "client_calls" ADD COLUMN "delivery_state" TEXT;
4
+ ALTER TABLE "client_calls" ADD COLUMN "delivery_since" TIMESTAMP(3);
5
+ ALTER TABLE "client_calls" ADD COLUMN "task_id" TEXT;
6
+ ALTER TABLE "client_calls" ADD COLUMN "task_message" TEXT;
7
+
8
+ CREATE INDEX "client_calls_fleet_id_task_id_idx" ON "client_calls"("fleet_id", "task_id");
9
+
10
+ CREATE TABLE "a2a_tasks" (
11
+ "fleet_id" TEXT NOT NULL,
12
+ "task_id" TEXT NOT NULL,
13
+ "party" TEXT NOT NULL,
14
+ "context_id" TEXT NOT NULL,
15
+ "created_at" TIMESTAMP(3) NOT NULL,
16
+
17
+ CONSTRAINT "a2a_tasks_pkey" PRIMARY KEY ("fleet_id","task_id")
18
+ );
19
+
20
+ CREATE INDEX "a2a_tasks_fleet_id_party_created_at_task_id_idx" ON "a2a_tasks"("fleet_id", "party", "created_at" DESC, "task_id" DESC);
@@ -0,0 +1,2 @@
1
+ -- AlterTable: a server added before this has none kept, so every tool it lists stays on.
2
+ ALTER TABLE "parties" ADD COLUMN "tool_switches" JSONB;