@aeolus-fleet/gateway 0.29.2 → 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 (694) 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/core-version.d.ts +1 -1
  14. package/dist/adapters/fleet/core-version.js +1 -1
  15. package/dist/adapters/fleet/fleet-ships.d.ts +3 -1
  16. package/dist/adapters/fleet/fleet-ships.js +19 -10
  17. package/dist/adapters/fleet/fleet-ships.js.map +1 -1
  18. package/dist/adapters/fleet/rest-fleet-door.d.ts +2 -2
  19. package/dist/adapters/fleet/rest-fleet-door.js +29 -5
  20. package/dist/adapters/fleet/rest-fleet-door.js.map +1 -1
  21. package/dist/adapters/http/a2a-cards.d.ts +24 -0
  22. package/dist/adapters/http/a2a-cards.js +62 -0
  23. package/dist/adapters/http/a2a-cards.js.map +1 -0
  24. package/dist/adapters/http/a2a-endpoint.d.ts +28 -0
  25. package/dist/adapters/http/a2a-endpoint.js +424 -0
  26. package/dist/adapters/http/a2a-endpoint.js.map +1 -0
  27. package/dist/adapters/http/a2a-streams.d.ts +28 -0
  28. package/dist/adapters/http/a2a-streams.js +74 -0
  29. package/dist/adapters/http/a2a-streams.js.map +1 -0
  30. package/dist/adapters/http/a2a-tasks.d.ts +18 -0
  31. package/dist/adapters/http/a2a-tasks.js +117 -0
  32. package/dist/adapters/http/a2a-tasks.js.map +1 -0
  33. package/dist/adapters/http/front-door.js +8 -4
  34. package/dist/adapters/http/front-door.js.map +1 -1
  35. package/dist/adapters/http/live.d.ts +3 -1
  36. package/dist/adapters/http/live.js +6 -2
  37. package/dist/adapters/http/live.js.map +1 -1
  38. package/dist/adapters/http/oauth-routes.d.ts +1 -1
  39. package/dist/adapters/http/oauth-routes.js +16 -3
  40. package/dist/adapters/http/oauth-routes.js.map +1 -1
  41. package/dist/adapters/mcp/mcp-servers.js +2 -0
  42. package/dist/adapters/mcp/mcp-servers.js.map +1 -1
  43. package/dist/adapters/pagasae/email-channel.d.ts +8 -0
  44. package/dist/adapters/pagasae/email-channel.js +37 -0
  45. package/dist/adapters/pagasae/email-channel.js.map +1 -0
  46. package/dist/adapters/pagasae/pagasae-client.js +6 -2
  47. package/dist/adapters/pagasae/pagasae-client.js.map +1 -1
  48. package/dist/adapters/prisma/agent-calls.d.ts +3 -0
  49. package/dist/adapters/prisma/agent-calls.js +49 -0
  50. package/dist/adapters/prisma/agent-calls.js.map +1 -0
  51. package/dist/adapters/prisma/changes.d.ts +17 -8
  52. package/dist/adapters/prisma/changes.js +18 -5
  53. package/dist/adapters/prisma/changes.js.map +1 -1
  54. package/dist/adapters/prisma/client-calls.d.ts +1 -1
  55. package/dist/adapters/prisma/client-calls.js +83 -21
  56. package/dist/adapters/prisma/client-calls.js.map +1 -1
  57. package/dist/adapters/prisma/email-channels.d.ts +4 -0
  58. package/dist/adapters/prisma/email-channels.js +14 -0
  59. package/dist/adapters/prisma/email-channels.js.map +1 -0
  60. package/dist/adapters/prisma/fleet-forgetter.d.ts +1 -1
  61. package/dist/adapters/prisma/fleet-forgetter.js +2 -2
  62. package/dist/adapters/prisma/fleet-forgetter.js.map +1 -1
  63. package/dist/adapters/prisma/focused-pages.d.ts +4 -0
  64. package/dist/adapters/prisma/focused-pages.js +13 -0
  65. package/dist/adapters/prisma/focused-pages.js.map +1 -0
  66. package/dist/adapters/prisma/generated/browser.d.ts +45 -0
  67. package/dist/adapters/prisma/generated/client.d.ts +45 -0
  68. package/dist/adapters/prisma/generated/commonInputTypes.d.ts +54 -54
  69. package/dist/adapters/prisma/generated/internal/class.d.ts +99 -0
  70. package/dist/adapters/prisma/generated/internal/class.js +4 -4
  71. package/dist/adapters/prisma/generated/internal/class.js.map +1 -1
  72. package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +783 -1
  73. package/dist/adapters/prisma/generated/internal/prismaNamespace.js +101 -3
  74. package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
  75. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +107 -0
  76. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +101 -3
  77. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  78. package/dist/adapters/prisma/generated/models/A2aAgentCall.d.ts +1203 -0
  79. package/dist/adapters/prisma/generated/models/A2aAgentCall.js +2 -0
  80. package/dist/adapters/prisma/generated/models/A2aAgentCall.js.map +1 -0
  81. package/dist/adapters/prisma/generated/models/A2aAgentReply.d.ts +1003 -0
  82. package/dist/adapters/prisma/generated/models/A2aAgentReply.js +2 -0
  83. package/dist/adapters/prisma/generated/models/A2aAgentReply.js.map +1 -0
  84. package/dist/adapters/prisma/generated/models/A2aPush.d.ts +1413 -0
  85. package/dist/adapters/prisma/generated/models/A2aPush.js +2 -0
  86. package/dist/adapters/prisma/generated/models/A2aPush.js.map +1 -0
  87. package/dist/adapters/prisma/generated/models/A2aPushConfig.d.ts +1322 -0
  88. package/dist/adapters/prisma/generated/models/A2aPushConfig.js +2 -0
  89. package/dist/adapters/prisma/generated/models/A2aPushConfig.js.map +1 -0
  90. package/dist/adapters/prisma/generated/models/A2aTask.d.ts +1002 -0
  91. package/dist/adapters/prisma/generated/models/A2aTask.js +2 -0
  92. package/dist/adapters/prisma/generated/models/A2aTask.js.map +1 -0
  93. package/dist/adapters/prisma/generated/models/ClientCall.d.ts +136 -15
  94. package/dist/adapters/prisma/generated/models/ClientCallReply.d.ts +0 -7
  95. package/dist/adapters/prisma/generated/models/EmailChannel.d.ts +946 -0
  96. package/dist/adapters/prisma/generated/models/EmailChannel.js +2 -0
  97. package/dist/adapters/prisma/generated/models/EmailChannel.js.map +1 -0
  98. package/dist/adapters/prisma/generated/models/FocusedPage.d.ts +974 -0
  99. package/dist/adapters/prisma/generated/models/FocusedPage.js +2 -0
  100. package/dist/adapters/prisma/generated/models/FocusedPage.js.map +1 -0
  101. package/dist/adapters/prisma/generated/models/IssuedToken.d.ts +47 -41
  102. package/dist/adapters/prisma/generated/models/OAuthClient.d.ts +32 -8
  103. package/dist/adapters/prisma/generated/models/Party.d.ts +90 -3
  104. package/dist/adapters/prisma/generated/models/WakeSent.d.ts +975 -0
  105. package/dist/adapters/prisma/generated/models/WakeSent.js +2 -0
  106. package/dist/adapters/prisma/generated/models/WakeSent.js.map +1 -0
  107. package/dist/adapters/prisma/generated/models/WebPushSubscription.d.ts +1115 -0
  108. package/dist/adapters/prisma/generated/models/WebPushSubscription.js +2 -0
  109. package/dist/adapters/prisma/generated/models/WebPushSubscription.js.map +1 -0
  110. package/dist/adapters/prisma/generated/models.d.ts +9 -0
  111. package/dist/adapters/prisma/oauth-stores.js +3 -2
  112. package/dist/adapters/prisma/oauth-stores.js.map +1 -1
  113. package/dist/adapters/prisma/party-store.js +35 -6
  114. package/dist/adapters/prisma/party-store.js.map +1 -1
  115. package/dist/adapters/prisma/person-crews.js +9 -0
  116. package/dist/adapters/prisma/person-crews.js.map +1 -1
  117. package/dist/adapters/prisma/push-store.d.ts +3 -0
  118. package/dist/adapters/prisma/push-store.js +102 -0
  119. package/dist/adapters/prisma/push-store.js.map +1 -0
  120. package/dist/adapters/prisma/waiter-locks.d.ts +4 -0
  121. package/dist/adapters/prisma/waiter-locks.js +72 -0
  122. package/dist/adapters/prisma/waiter-locks.js.map +1 -0
  123. package/dist/adapters/prisma/wakes-sent.d.ts +4 -0
  124. package/dist/adapters/prisma/wakes-sent.js +10 -0
  125. package/dist/adapters/prisma/wakes-sent.js.map +1 -0
  126. package/dist/adapters/prisma/web-push-subscriptions.d.ts +3 -0
  127. package/dist/adapters/prisma/web-push-subscriptions.js +33 -0
  128. package/dist/adapters/prisma/web-push-subscriptions.js.map +1 -0
  129. package/dist/adapters/trpc/router.d.ts +397 -9
  130. package/dist/adapters/trpc/router.js +237 -13
  131. package/dist/adapters/trpc/router.js.map +1 -1
  132. package/dist/adapters/web-push/web-push.d.ts +9 -0
  133. package/dist/adapters/web-push/web-push.js +70 -0
  134. package/dist/adapters/web-push/web-push.js.map +1 -0
  135. package/dist/adapters/webhooks/allowed-lookup.d.ts +14 -0
  136. package/dist/adapters/webhooks/allowed-lookup.js +28 -0
  137. package/dist/adapters/webhooks/allowed-lookup.js.map +1 -0
  138. package/dist/adapters/webhooks/host-resolver.d.ts +3 -0
  139. package/dist/adapters/webhooks/host-resolver.js +13 -0
  140. package/dist/adapters/webhooks/host-resolver.js.map +1 -0
  141. package/dist/adapters/webhooks/webhook-poster.d.ts +6 -0
  142. package/dist/adapters/webhooks/webhook-poster.js +67 -0
  143. package/dist/adapters/webhooks/webhook-poster.js.map +1 -0
  144. package/dist/app.d.ts +12 -0
  145. package/dist/app.js +273 -14
  146. package/dist/app.js.map +1 -1
  147. package/dist/bin/aeolus-gateway.js +3 -0
  148. package/dist/bin/aeolus-gateway.js.map +1 -1
  149. package/dist/config.d.ts +14 -0
  150. package/dist/config.js +24 -0
  151. package/dist/config.js.map +1 -1
  152. package/dist/core/a2a-in/authenticate-a2a-client.d.ts +23 -0
  153. package/dist/core/a2a-in/authenticate-a2a-client.js +21 -0
  154. package/dist/core/a2a-in/authenticate-a2a-client.js.map +1 -0
  155. package/dist/core/a2a-in/deliver-pushes.d.ts +24 -0
  156. package/dist/core/a2a-in/deliver-pushes.js +48 -0
  157. package/dist/core/a2a-in/deliver-pushes.js.map +1 -0
  158. package/dist/core/a2a-in/find-reached-ship.d.ts +18 -0
  159. package/dist/core/a2a-in/find-reached-ship.js +20 -0
  160. package/dist/core/a2a-in/find-reached-ship.js.map +1 -0
  161. package/dist/core/a2a-in/follow-a2a-task.d.ts +25 -0
  162. package/dist/core/a2a-in/follow-a2a-task.js +23 -0
  163. package/dist/core/a2a-in/follow-a2a-task.js.map +1 -0
  164. package/dist/core/a2a-in/inbound-message.d.ts +30 -0
  165. package/dist/core/a2a-in/inbound-message.js +33 -0
  166. package/dist/core/a2a-in/inbound-message.js.map +1 -0
  167. package/dist/core/a2a-in/list-a2a-tasks.d.ts +18 -0
  168. package/dist/core/a2a-in/list-a2a-tasks.js +14 -0
  169. package/dist/core/a2a-in/list-a2a-tasks.js.map +1 -0
  170. package/dist/core/a2a-in/list-push-configs.d.ts +20 -0
  171. package/dist/core/a2a-in/list-push-configs.js +18 -0
  172. package/dist/core/a2a-in/list-push-configs.js.map +1 -0
  173. package/dist/core/a2a-in/list-reached-ships.d.ts +25 -0
  174. package/dist/core/a2a-in/list-reached-ships.js +22 -0
  175. package/dist/core/a2a-in/list-reached-ships.js.map +1 -0
  176. package/dist/core/a2a-in/notice-task-changes.d.ts +19 -0
  177. package/dist/core/a2a-in/notice-task-changes.js +17 -0
  178. package/dist/core/a2a-in/notice-task-changes.js.map +1 -0
  179. package/dist/core/a2a-in/ports.d.ts +124 -0
  180. package/dist/core/a2a-in/ports.js +2 -0
  181. package/dist/core/a2a-in/ports.js.map +1 -0
  182. package/dist/core/a2a-in/push-config-view.d.ts +8 -0
  183. package/dist/core/a2a-in/push-config-view.js +2 -0
  184. package/dist/core/a2a-in/push-config-view.js.map +1 -0
  185. package/dist/core/a2a-in/push-to-webhooks.d.ts +19 -0
  186. package/dist/core/a2a-in/push-to-webhooks.js +19 -0
  187. package/dist/core/a2a-in/push-to-webhooks.js.map +1 -0
  188. package/dist/core/a2a-in/read-a2a-task.d.ts +12 -0
  189. package/dist/core/a2a-in/read-a2a-task.js +11 -0
  190. package/dist/core/a2a-in/read-a2a-task.js.map +1 -0
  191. package/dist/core/a2a-in/read-push-config.d.ts +16 -0
  192. package/dist/core/a2a-in/read-push-config.js +14 -0
  193. package/dist/core/a2a-in/read-push-config.js.map +1 -0
  194. package/dist/core/a2a-in/remove-push-config.d.ts +15 -0
  195. package/dist/core/a2a-in/remove-push-config.js +13 -0
  196. package/dist/core/a2a-in/remove-push-config.js.map +1 -0
  197. package/dist/core/a2a-in/send-a2a-message.d.ts +34 -0
  198. package/dist/core/a2a-in/send-a2a-message.js +106 -0
  199. package/dist/core/a2a-in/send-a2a-message.js.map +1 -0
  200. package/dist/core/a2a-in/set-push-config.d.ts +30 -0
  201. package/dist/core/a2a-in/set-push-config.js +27 -0
  202. package/dist/core/a2a-in/set-push-config.js.map +1 -0
  203. package/dist/core/a2a-in/subscribe-to-a2a-task.d.ts +18 -0
  204. package/dist/core/a2a-in/subscribe-to-a2a-task.js +17 -0
  205. package/dist/core/a2a-in/subscribe-to-a2a-task.js.map +1 -0
  206. package/dist/core/a2a-in/task-view.d.ts +51 -0
  207. package/dist/core/a2a-in/task-view.js +49 -0
  208. package/dist/core/a2a-in/task-view.js.map +1 -0
  209. package/dist/core/a2a-in/webhook-address.d.ts +7 -0
  210. package/dist/core/a2a-in/webhook-address.js +17 -0
  211. package/dist/core/a2a-in/webhook-address.js.map +1 -0
  212. package/dist/core/a2a-in/webhook.d.ts +6 -0
  213. package/dist/core/a2a-in/webhook.js +80 -0
  214. package/dist/core/a2a-in/webhook.js.map +1 -0
  215. package/dist/core/a2a-out/agent-endpoint.d.ts +10 -0
  216. package/dist/core/a2a-out/agent-endpoint.js +10 -0
  217. package/dist/core/a2a-out/agent-endpoint.js.map +1 -0
  218. package/dist/core/a2a-out/agent-event.d.ts +41 -0
  219. package/dist/core/a2a-out/agent-event.js +64 -0
  220. package/dist/core/a2a-out/agent-event.js.map +1 -0
  221. package/dist/core/a2a-out/agent-message.d.ts +36 -0
  222. package/dist/core/a2a-out/agent-message.js +36 -0
  223. package/dist/core/a2a-out/agent-message.js.map +1 -0
  224. package/dist/core/a2a-out/agent-statement.d.ts +10 -0
  225. package/dist/core/a2a-out/agent-statement.js +45 -0
  226. package/dist/core/a2a-out/agent-statement.js.map +1 -0
  227. package/dist/core/a2a-out/follow-agent-task.d.ts +40 -0
  228. package/dist/core/a2a-out/follow-agent-task.js +125 -0
  229. package/dist/core/a2a-out/follow-agent-task.js.map +1 -0
  230. package/dist/core/a2a-out/hand-a2a-message.d.ts +36 -0
  231. package/dist/core/a2a-out/hand-a2a-message.js +132 -0
  232. package/dist/core/a2a-out/hand-a2a-message.js.map +1 -0
  233. package/dist/core/a2a-out/mark-a2a-agent.d.ts +24 -0
  234. package/dist/core/a2a-out/mark-a2a-agent.js +24 -0
  235. package/dist/core/a2a-out/mark-a2a-agent.js.map +1 -0
  236. package/dist/core/a2a-out/ports.d.ts +200 -0
  237. package/dist/core/a2a-out/ports.js +2 -0
  238. package/dist/core/a2a-out/ports.js.map +1 -0
  239. package/dist/core/a2a-out/read-agent-statement.d.ts +13 -0
  240. package/dist/core/a2a-out/read-agent-statement.js +13 -0
  241. package/dist/core/a2a-out/read-agent-statement.js.map +1 -0
  242. package/dist/core/a2a-out/run-a2a-agent.d.ts +26 -0
  243. package/dist/core/a2a-out/run-a2a-agent.js +46 -0
  244. package/dist/core/a2a-out/run-a2a-agent.js.map +1 -0
  245. package/dist/core/a2a-out/state-a2a-agent.d.ts +26 -0
  246. package/dist/core/a2a-out/state-a2a-agent.js +31 -0
  247. package/dist/core/a2a-out/state-a2a-agent.js.map +1 -0
  248. package/dist/core/mcp-in/call-tool.js +2 -0
  249. package/dist/core/mcp-in/call-tool.js.map +1 -1
  250. package/dist/core/mcp-in/client-call.d.ts +35 -4
  251. package/dist/core/mcp-in/client-call.js +57 -10
  252. package/dist/core/mcp-in/client-call.js.map +1 -1
  253. package/dist/core/mcp-in/collect-replies.d.ts +4 -3
  254. package/dist/core/mcp-in/collect-replies.js +4 -0
  255. package/dist/core/mcp-in/collect-replies.js.map +1 -1
  256. package/dist/core/mcp-in/ports.d.ts +52 -3
  257. package/dist/core/mcp-out/hand-call.d.ts +5 -1
  258. package/dist/core/mcp-out/hand-call.js +9 -1
  259. package/dist/core/mcp-out/hand-call.js.map +1 -1
  260. package/dist/core/mcp-out/run-party.d.ts +29 -7
  261. package/dist/core/mcp-out/run-party.js +14 -6
  262. package/dist/core/mcp-out/run-party.js.map +1 -1
  263. package/dist/core/mcp-out/state-party.d.ts +4 -2
  264. package/dist/core/mcp-out/state-party.js +10 -3
  265. package/dist/core/mcp-out/state-party.js.map +1 -1
  266. package/dist/core/mcp-out/statement.d.ts +2 -1
  267. package/dist/core/mcp-out/statement.js.map +1 -1
  268. package/dist/core/oauth/exchange-id-jag.d.ts +28 -0
  269. package/dist/core/oauth/exchange-id-jag.js +66 -0
  270. package/dist/core/oauth/exchange-id-jag.js.map +1 -0
  271. package/dist/core/oauth/exchange-token.d.ts +25 -11
  272. package/dist/core/oauth/exchange-token.js +50 -3
  273. package/dist/core/oauth/exchange-token.js.map +1 -1
  274. package/dist/core/oauth/ports.d.ts +17 -6
  275. package/dist/core/oauth/register-client.js +1 -1
  276. package/dist/core/oauth/register-client.js.map +1 -1
  277. package/dist/core/parties/add-a2a-agent.d.ts +34 -0
  278. package/dist/core/parties/add-a2a-agent.js +45 -0
  279. package/dist/core/parties/add-a2a-agent.js.map +1 -0
  280. package/dist/core/parties/add-a2a-client.d.ts +30 -0
  281. package/dist/core/parties/add-a2a-client.js +47 -0
  282. package/dist/core/parties/add-a2a-client.js.map +1 -0
  283. package/dist/core/parties/add-client-party.d.ts +38 -0
  284. package/dist/core/parties/add-client-party.js +40 -0
  285. package/dist/core/parties/add-client-party.js.map +1 -0
  286. package/dist/core/parties/approve-party.d.ts +43 -2
  287. package/dist/core/parties/approve-party.js +9 -5
  288. package/dist/core/parties/approve-party.js.map +1 -1
  289. package/dist/core/parties/approver.d.ts +7 -0
  290. package/dist/core/parties/approver.js +9 -0
  291. package/dist/core/parties/approver.js.map +1 -0
  292. package/dist/core/parties/check-server.d.ts +2 -1
  293. package/dist/core/parties/check-server.js +1 -1
  294. package/dist/core/parties/check-server.js.map +1 -1
  295. package/dist/core/parties/crew-party.d.ts +18 -4
  296. package/dist/core/parties/crew-party.js +36 -4
  297. package/dist/core/parties/crew-party.js.map +1 -1
  298. package/dist/core/parties/party.d.ts +23 -1
  299. package/dist/core/parties/party.js +17 -4
  300. package/dist/core/parties/party.js.map +1 -1
  301. package/dist/core/parties/ports.d.ts +16 -0
  302. package/dist/core/parties/read-party-tools.d.ts +4 -3
  303. package/dist/core/parties/read-party-tools.js +4 -2
  304. package/dist/core/parties/read-party-tools.js.map +1 -1
  305. package/dist/core/parties/shown-party.d.ts +8 -0
  306. package/dist/core/parties/shown-party.js +4 -0
  307. package/dist/core/parties/shown-party.js.map +1 -1
  308. package/dist/core/parties/switch-tool.d.ts +29 -0
  309. package/dist/core/parties/switch-tool.js +33 -0
  310. package/dist/core/parties/switch-tool.js.map +1 -0
  311. package/dist/core/parties/tool-switches.d.ts +27 -0
  312. package/dist/core/parties/tool-switches.js +17 -0
  313. package/dist/core/parties/tool-switches.js.map +1 -0
  314. package/dist/core/people/answer-delivery.d.ts +2 -1
  315. package/dist/core/people/answer-delivery.js.map +1 -1
  316. package/dist/core/people/done-delivery.d.ts +2 -1
  317. package/dist/core/people/done-delivery.js.map +1 -1
  318. package/dist/core/people/focus-page.d.ts +18 -0
  319. package/dist/core/people/focus-page.js +20 -0
  320. package/dist/core/people/focus-page.js.map +1 -0
  321. package/dist/core/people/open-delivery.d.ts +3 -1
  322. package/dist/core/people/open-delivery.js +2 -0
  323. package/dist/core/people/open-delivery.js.map +1 -1
  324. package/dist/core/people/opened-of.d.ts +7 -2
  325. package/dist/core/people/opened-of.js +6 -1
  326. package/dist/core/people/opened-of.js.map +1 -1
  327. package/dist/core/people/person-crew.d.ts +2 -0
  328. package/dist/core/people/person-crew.js +6 -2
  329. package/dist/core/people/person-crew.js.map +1 -1
  330. package/dist/core/people/ports.d.ts +151 -3
  331. package/dist/core/people/read-wake-channels.d.ts +42 -0
  332. package/dist/core/people/read-wake-channels.js +21 -0
  333. package/dist/core/people/read-wake-channels.js.map +1 -0
  334. package/dist/core/people/turn-email-channel.d.ts +21 -0
  335. package/dist/core/people/turn-email-channel.js +22 -0
  336. package/dist/core/people/turn-email-channel.js.map +1 -0
  337. package/dist/core/people/turn-off-web-push.d.ts +13 -0
  338. package/dist/core/people/turn-off-web-push.js +14 -0
  339. package/dist/core/people/turn-off-web-push.js.map +1 -0
  340. package/dist/core/people/turn-on-web-push.d.ts +35 -0
  341. package/dist/core/people/turn-on-web-push.js +49 -0
  342. package/dist/core/people/turn-on-web-push.js.map +1 -0
  343. package/dist/core/people/wait-on-person-ship.d.ts +44 -0
  344. package/dist/core/people/wait-on-person-ship.js +92 -0
  345. package/dist/core/people/wait-on-person-ship.js.map +1 -0
  346. package/dist/core/people/wake-person.d.ts +40 -0
  347. package/dist/core/people/wake-person.js +74 -0
  348. package/dist/core/people/wake-person.js.map +1 -0
  349. package/dist/core/people/web-push-channel.d.ts +17 -0
  350. package/dist/core/people/web-push-channel.js +35 -0
  351. package/dist/core/people/web-push-channel.js.map +1 -0
  352. package/dist/core/requests/decide-request.d.ts +0 -2
  353. package/dist/core/requests/decide-request.js +3 -6
  354. package/dist/core/requests/decide-request.js.map +1 -1
  355. package/dist/core/requests/list-to-decide.js +1 -1
  356. package/dist/core/requests/list-to-decide.js.map +1 -1
  357. package/dist/core/shared/errors.d.ts +1 -1
  358. package/dist/core/shared/errors.js.map +1 -1
  359. package/dist/core/sign-in/ports.d.ts +13 -0
  360. package/dist/core/vault/credential.d.ts +6 -2
  361. package/dist/party-workers.d.ts +9 -1
  362. package/dist/party-workers.js +37 -5
  363. package/dist/party-workers.js.map +1 -1
  364. package/dist/person-waiters.d.ts +30 -0
  365. package/dist/person-waiters.js +89 -0
  366. package/dist/person-waiters.js.map +1 -0
  367. package/package.json +7 -3
  368. package/src/adapters/prisma/migrations/20261023120000_party_bearer_hash/migration.sql +4 -0
  369. package/src/adapters/prisma/migrations/20261023130000_client_credentials/migration.sql +5 -0
  370. package/src/adapters/prisma/migrations/20261023200000_a2a_tasks/migration.sql +20 -0
  371. package/src/adapters/prisma/migrations/20261023210000_tool_switches/migration.sql +2 -0
  372. package/src/adapters/prisma/migrations/20261024090000_a2a_pushes/migration.sql +37 -0
  373. package/src/adapters/prisma/migrations/20261024100000_party_is_repeatable/migration.sql +2 -0
  374. package/src/adapters/prisma/migrations/20261024110000_a2a_agent_calls/migration.sql +29 -0
  375. package/src/adapters/prisma/migrations/20261024115000_wakes/migration.sql +17 -0
  376. package/src/adapters/prisma/migrations/20261024120000_focused_pages/migration.sql +11 -0
  377. package/src/adapters/prisma/migrations/20261024130000_web_push_subscriptions/migration.sql +14 -0
  378. package/src/adapters/prisma/schema.prisma +159 -5
  379. package/web/.next/BUILD_ID +1 -1
  380. package/web/.next/app-path-routes-manifest.json +3 -0
  381. package/web/.next/build-manifest.json +27 -3
  382. package/web/.next/diagnostics/route-bundle-stats.json +75 -42
  383. package/web/.next/fallback-build-manifest.json +3 -3
  384. package/web/.next/next-minimal-server.js.nft.json +1 -1
  385. package/web/.next/next-server.js.nft.json +1 -1
  386. package/web/.next/prerender-manifest.json +3 -3
  387. package/web/.next/routes-manifest.json +18 -0
  388. package/web/.next/server/app/(console)/outside-parties/[name]/change/page/server-reference-manifest.json +23 -3
  389. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js +10 -8
  390. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js.nft.json +1 -1
  391. package/web/.next/server/app/(console)/outside-parties/[name]/change/page_client-reference-manifest.js +1 -1
  392. package/web/.next/server/app/(console)/outside-parties/[name]/page/server-reference-manifest.json +22 -2
  393. package/web/.next/server/app/(console)/outside-parties/[name]/page.js +8 -5
  394. package/web/.next/server/app/(console)/outside-parties/[name]/page.js.nft.json +1 -1
  395. package/web/.next/server/app/(console)/outside-parties/[name]/page_client-reference-manifest.js +1 -1
  396. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/server-reference-manifest.json +23 -3
  397. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js +9 -6
  398. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js.nft.json +1 -1
  399. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page_client-reference-manifest.js +1 -1
  400. package/web/.next/server/app/(console)/outside-parties/add/page/server-reference-manifest.json +26 -6
  401. package/web/.next/server/app/(console)/outside-parties/add/page.js +10 -5
  402. package/web/.next/server/app/(console)/outside-parties/add/page.js.nft.json +1 -1
  403. package/web/.next/server/app/(console)/outside-parties/add/page_client-reference-manifest.js +1 -1
  404. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/app-paths-manifest.json +3 -0
  405. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/build-manifest.json +23 -0
  406. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/next-font-manifest.json +11 -0
  407. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/react-loadable-manifest.json +1 -0
  408. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/server-reference-manifest.json +25 -0
  409. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js +20 -0
  410. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js.map +5 -0
  411. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js.nft.json +1 -0
  412. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page_client-reference-manifest.js +3 -0
  413. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/app-paths-manifest.json +3 -0
  414. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/build-manifest.json +23 -0
  415. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/next-font-manifest.json +11 -0
  416. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/react-loadable-manifest.json +1 -0
  417. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/server-reference-manifest.json +25 -0
  418. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js +21 -0
  419. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js.map +5 -0
  420. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js.nft.json +1 -0
  421. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page_client-reference-manifest.js +3 -0
  422. package/web/.next/server/app/(console)/outside-parties/page/server-reference-manifest.json +2 -2
  423. package/web/.next/server/app/(console)/outside-parties/page.js +3 -3
  424. package/web/.next/server/app/(console)/outside-parties/page.js.nft.json +1 -1
  425. package/web/.next/server/app/(console)/outside-parties/page_client-reference-manifest.js +1 -1
  426. package/web/.next/server/app/(console)/overview/changes/route.js +3 -2
  427. package/web/.next/server/app/(console)/overview/changes/route.js.nft.json +1 -1
  428. package/web/.next/server/app/(console)/overview/focus/route/app-paths-manifest.json +3 -0
  429. package/web/.next/server/app/(console)/overview/focus/route/build-manifest.json +12 -0
  430. package/web/.next/server/app/(console)/overview/focus/route/server-reference-manifest.json +4 -0
  431. package/web/.next/server/app/(console)/overview/focus/route.js +7 -0
  432. package/web/.next/server/app/(console)/overview/focus/route.js.map +5 -0
  433. package/web/.next/server/app/(console)/overview/focus/route.js.nft.json +1 -0
  434. package/web/.next/server/app/(console)/overview/focus/route_client-reference-manifest.js +3 -0
  435. package/web/.next/server/app/(console)/overview/page/server-reference-manifest.json +34 -4
  436. package/web/.next/server/app/(console)/overview/page.js +3 -3
  437. package/web/.next/server/app/(console)/overview/page.js.nft.json +1 -1
  438. package/web/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
  439. package/web/.next/server/app/(console)/overview/requests/[requestId]/page/server-reference-manifest.json +2 -2
  440. package/web/.next/server/app/(console)/overview/requests/[requestId]/page.js +2 -2
  441. package/web/.next/server/app/(console)/overview/requests/[requestId]/page.js.nft.json +1 -1
  442. package/web/.next/server/app/(console)/overview/requests/[requestId]/page_client-reference-manifest.js +1 -1
  443. package/web/.next/server/app/(console)/parties/page/server-reference-manifest.json +8 -8
  444. package/web/.next/server/app/(console)/parties/page.js +2 -2
  445. package/web/.next/server/app/(console)/parties/page.js.nft.json +1 -1
  446. package/web/.next/server/app/(console)/parties/page_client-reference-manifest.js +1 -1
  447. package/web/.next/server/app/(console)/sign-in/failed/page/server-reference-manifest.json +1 -1
  448. package/web/.next/server/app/(console)/sign-in/failed/page.js +3 -3
  449. package/web/.next/server/app/(console)/sign-in/failed/page.js.nft.json +1 -1
  450. package/web/.next/server/app/(console)/sign-in/failed/page_client-reference-manifest.js +1 -1
  451. package/web/.next/server/app/_global-error/page.js +3 -3
  452. package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  453. package/web/.next/server/app/_global-error.html +1 -1
  454. package/web/.next/server/app/_global-error.rsc +1 -1
  455. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  456. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  457. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  458. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  459. package/web/.next/server/app/_not-found/page.js +3 -3
  460. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  461. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  462. package/web/.next/server/app/authorize/failed/page/server-reference-manifest.json +1 -1
  463. package/web/.next/server/app/authorize/failed/page.js +2 -2
  464. package/web/.next/server/app/authorize/failed/page.js.nft.json +1 -1
  465. package/web/.next/server/app/authorize/failed/page_client-reference-manifest.js +1 -1
  466. package/web/.next/server/app/authorize/pick/page/server-reference-manifest.json +1 -1
  467. package/web/.next/server/app/authorize/pick/page.js +2 -2
  468. package/web/.next/server/app/authorize/pick/page.js.nft.json +1 -1
  469. package/web/.next/server/app/authorize/pick/page_client-reference-manifest.js +1 -1
  470. package/web/.next/server/app/authorize/waiting/approval/page/server-reference-manifest.json +1 -1
  471. package/web/.next/server/app/authorize/waiting/approval/page.js +2 -2
  472. package/web/.next/server/app/authorize/waiting/approval/page.js.nft.json +1 -1
  473. package/web/.next/server/app/authorize/waiting/approval/page_client-reference-manifest.js +1 -1
  474. package/web/.next/server/app-paths-manifest.json +3 -0
  475. package/web/.next/server/chunks/0b9d__next-internal_server_app_(console)_overview_focus_route_actions_10hgyjvv-6fus.js +3 -0
  476. package/web/.next/server/chunks/[externals]__0fgpzedhhntg9._.js +3 -0
  477. package/web/.next/server/chunks/[externals]__0fgpzedhhntg9._.js.map +1 -0
  478. package/web/.next/server/chunks/{[root-of-the-server]__0k8jiujb_0xtx._.js → [root-of-the-server]__0ykc8bq_c06a1._.js} +22 -22
  479. package/web/.next/server/chunks/[root-of-the-server]__0ykc8bq_c06a1._.js.map +1 -0
  480. package/web/.next/server/chunks/_04is-uopj3op9._.js +3 -0
  481. package/web/.next/server/chunks/_04is-uopj3op9._.js.map +1 -0
  482. package/web/.next/server/chunks/_1-fw4-pwzazl4._.js +3 -0
  483. package/web/.next/server/chunks/_1-fw4-pwzazl4._.js.map +1 -0
  484. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js +3 -0
  485. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js.map +1 -0
  486. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js +3 -0
  487. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js.map +1 -0
  488. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js +3 -0
  489. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js.map +1 -0
  490. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js +3 -0
  491. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js.map +1 -0
  492. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js +3 -0
  493. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js.map +1 -0
  494. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js +1 -1
  495. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js.map +1 -1
  496. package/web/.next/server/chunks/ssr/{[root-of-the-server]__12_to1hq55n1y._.js → [root-of-the-server]__0-og0bl8lr2xq._.js} +2 -2
  497. package/web/.next/server/chunks/ssr/{[root-of-the-server]__12_to1hq55n1y._.js.map → [root-of-the-server]__0-og0bl8lr2xq._.js.map} +1 -1
  498. package/web/.next/server/chunks/ssr/[root-of-the-server]__07udzu2zwg_74._.js +3 -0
  499. package/web/.next/server/chunks/ssr/{[root-of-the-server]__1yydhn6iokbm4._.js.map → [root-of-the-server]__07udzu2zwg_74._.js.map} +1 -1
  500. package/web/.next/server/chunks/ssr/{[root-of-the-server]__197il4swfpq1a._.js → [root-of-the-server]__0a68v9ynev4q6._.js} +2 -2
  501. package/web/.next/server/chunks/ssr/{[root-of-the-server]__197il4swfpq1a._.js.map → [root-of-the-server]__0a68v9ynev4q6._.js.map} +1 -1
  502. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js +4 -0
  503. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js.map +1 -0
  504. package/web/.next/server/chunks/ssr/[root-of-the-server]__0l2_dk9d4o01n._.js +3 -0
  505. package/web/.next/server/chunks/ssr/{[root-of-the-server]__1vkw2kvzx6fpw._.js.map → [root-of-the-server]__0l2_dk9d4o01n._.js.map} +1 -1
  506. package/web/.next/server/chunks/ssr/[root-of-the-server]__0m57jyae0dn_7._.js +3 -0
  507. package/web/.next/server/chunks/ssr/[root-of-the-server]__0m57jyae0dn_7._.js.map +1 -0
  508. package/web/.next/server/chunks/ssr/[root-of-the-server]__0n2us07jk-78w._.js +4 -0
  509. package/web/.next/server/chunks/ssr/[root-of-the-server]__0n2us07jk-78w._.js.map +1 -0
  510. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rr5u24i9tjyc._.js +3 -0
  511. package/web/.next/server/chunks/ssr/{[root-of-the-server]__1imel8atfb770._.js.map → [root-of-the-server]__0rr5u24i9tjyc._.js.map} +1 -1
  512. package/web/.next/server/chunks/ssr/[root-of-the-server]__10y66e1xx8xiq._.js +1 -1
  513. package/web/.next/server/chunks/ssr/[root-of-the-server]__10y66e1xx8xiq._.js.map +1 -1
  514. package/web/.next/server/chunks/ssr/[root-of-the-server]__11w36a4le04vy._.js +3 -0
  515. package/web/.next/server/chunks/ssr/[root-of-the-server]__11w36a4le04vy._.js.map +1 -0
  516. package/web/.next/server/chunks/ssr/[root-of-the-server]__1dtyycvqa6uht._.js +4 -0
  517. package/web/.next/server/chunks/ssr/[root-of-the-server]__1dtyycvqa6uht._.js.map +1 -0
  518. package/web/.next/server/chunks/ssr/[root-of-the-server]__1gb-3dttuacyz._.js +3 -0
  519. package/web/.next/server/chunks/ssr/[root-of-the-server]__1gb-3dttuacyz._.js.map +1 -0
  520. package/web/.next/server/chunks/ssr/[root-of-the-server]__1k25lo5ka4mgd._.js +3 -0
  521. package/web/.next/server/chunks/ssr/[root-of-the-server]__1k25lo5ka4mgd._.js.map +1 -0
  522. package/web/.next/server/chunks/ssr/[root-of-the-server]__1m9atpy0vkbmj._.js +3 -0
  523. package/web/.next/server/chunks/ssr/{[root-of-the-server]__0dywrno7zb0r_._.js.map → [root-of-the-server]__1m9atpy0vkbmj._.js.map} +1 -1
  524. package/web/.next/server/chunks/ssr/[root-of-the-server]__1n_sq_58wdluh._.js +3 -0
  525. package/web/.next/server/chunks/ssr/[root-of-the-server]__1n_sq_58wdluh._.js.map +1 -0
  526. package/web/.next/server/chunks/ssr/[root-of-the-server]__1w5swo8gmjyx6._.js +3 -0
  527. package/web/.next/server/chunks/ssr/{[root-of-the-server]__216xd8otb96uo._.js.map → [root-of-the-server]__1w5swo8gmjyx6._.js.map} +1 -1
  528. package/web/.next/server/chunks/ssr/[root-of-the-server]__1wl0vw-n8lbkn._.js +1 -1
  529. package/web/.next/server/chunks/ssr/[root-of-the-server]__1yjb00o7x58xv._.js +3 -0
  530. package/web/.next/server/chunks/ssr/[root-of-the-server]__1yjb00o7x58xv._.js.map +1 -0
  531. package/web/.next/server/chunks/ssr/_0-lfpqqlgfhzj._.js +3 -0
  532. package/web/.next/server/chunks/ssr/_0-lfpqqlgfhzj._.js.map +1 -0
  533. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js +1 -1
  534. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js.map +1 -1
  535. package/web/.next/server/chunks/ssr/_0bhvvyz0q_0ja._.js +4 -0
  536. package/web/.next/server/chunks/ssr/_0bhvvyz0q_0ja._.js.map +1 -0
  537. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js +1 -1
  538. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js.map +1 -1
  539. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js +1 -1
  540. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js.map +1 -1
  541. package/web/.next/server/chunks/ssr/_1_wav28san6dm._.js +4 -0
  542. package/web/.next/server/chunks/ssr/_1_wav28san6dm._.js.map +1 -0
  543. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js +1 -1
  544. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js.map +1 -1
  545. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js +1 -1
  546. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js.map +1 -1
  547. package/web/.next/server/chunks/ssr/node_modules_1wdusod3fyk3s._.js +3 -0
  548. package/web/.next/server/chunks/ssr/node_modules_1wdusod3fyk3s._.js.map +1 -0
  549. package/web/.next/server/chunks/ssr/node_modules_next_08hq6z46rczo0._.js +1 -1
  550. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08lcy-jnk5o43.js +1 -1
  551. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08lcy-jnk5o43.js.map +1 -1
  552. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0e8cobt3o_8ur.js +3 -0
  553. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0e8cobt3o_8ur.js.map +1 -0
  554. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0gzed-epom5si.js +3 -0
  555. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0gzed-epom5si.js.map +1 -0
  556. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1bt2ioufqh6fl.js +1 -1
  557. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1bt2ioufqh6fl.js.map +1 -1
  558. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1o0-ipfysjmro.js +1 -1
  559. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1o0-ipfysjmro.js.map +1 -1
  560. package/web/.next/server/chunks/ssr/web_0-ufi2al5ubig._.js +3 -0
  561. package/web/.next/server/chunks/ssr/web_0-ufi2al5ubig._.js.map +1 -0
  562. package/web/.next/server/chunks/ssr/web_0_jk9eione6lx._.js +3 -0
  563. package/web/.next/server/chunks/ssr/web_0_jk9eione6lx._.js.map +1 -0
  564. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js +3 -0
  565. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js.map +1 -0
  566. package/web/.next/server/chunks/ssr/web_1ga4pbv72m0ad._.js +1 -1
  567. package/web/.next/server/chunks/ssr/web_1ga4pbv72m0ad._.js.map +1 -1
  568. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js +1 -1
  569. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js.map +1 -1
  570. package/web/.next/server/chunks/ssr/web_app_(console)_parties_page_tsx_0pp63ghly3eyp._.js +1 -1
  571. package/web/.next/server/chunks/ssr/web_app_(console)_parties_page_tsx_0pp63ghly3eyp._.js.map +1 -1
  572. package/web/.next/server/chunks/ssr/web_features_085cv0gogrxxf._.js +1 -1
  573. package/web/.next/server/chunks/ssr/web_features_085cv0gogrxxf._.js.map +1 -1
  574. package/web/.next/server/chunks/ssr/web_features_0ahlkugj7fu3n._.js +3 -0
  575. package/web/.next/server/chunks/ssr/web_features_0ahlkugj7fu3n._.js.map +1 -0
  576. package/web/.next/server/chunks/ssr/web_features_0i_kwiszuiqcp._.js +3 -0
  577. package/web/.next/server/chunks/ssr/web_features_0i_kwiszuiqcp._.js.map +1 -0
  578. package/web/.next/server/chunks/ssr/web_features_0xnlgtw8bfqaa._.js +3 -0
  579. package/web/.next/server/chunks/ssr/web_features_0xnlgtw8bfqaa._.js.map +1 -0
  580. package/web/.next/server/chunks/ssr/web_features_1--8ungjj--ht._.js +3 -0
  581. package/web/.next/server/chunks/ssr/web_features_1--8ungjj--ht._.js.map +1 -0
  582. package/web/.next/server/chunks/ssr/web_features_19v3mlx8c_h1-._.js +3 -0
  583. package/web/.next/server/chunks/ssr/web_features_19v3mlx8c_h1-._.js.map +1 -0
  584. package/web/.next/server/chunks/ssr/web_features_1_2m6l73qk7qw._.js +3 -0
  585. package/web/.next/server/chunks/ssr/web_features_1_2m6l73qk7qw._.js.map +1 -0
  586. package/web/.next/server/chunks/ssr/web_features_1qq_ruz59ldc9._.js +3 -0
  587. package/web/.next/server/chunks/ssr/web_features_1qq_ruz59ldc9._.js.map +1 -0
  588. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js +3 -0
  589. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js.map +1 -0
  590. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js +3 -0
  591. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js.map +1 -0
  592. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js +1 -1
  593. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js.map +1 -1
  594. package/web/.next/server/chunks/ssr/web_features_forms_1d1jyea2jni9o._.js +3 -0
  595. package/web/.next/server/chunks/ssr/web_features_forms_1d1jyea2jni9o._.js.map +1 -0
  596. package/web/.next/server/chunks/ssr/web_features_forms_form-state_ts_2142hiopykfk1._.js +3 -0
  597. package/web/.next/server/chunks/ssr/web_features_forms_form-state_ts_2142hiopykfk1._.js.map +1 -0
  598. package/web/.next/server/chunks/ssr/web_features_forms_ui_credential-fields_tsx_0l-w19zg-7x4b._.js +3 -0
  599. package/web/.next/server/chunks/ssr/web_features_forms_ui_credential-fields_tsx_0l-w19zg-7x4b._.js.map +1 -0
  600. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js +1 -1
  601. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js.map +1 -1
  602. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js +1 -1
  603. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js.map +1 -1
  604. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js +1 -1
  605. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js.map +1 -1
  606. package/web/.next/server/chunks/ssr/web_features_outside-party_ui_20x5u9bhxeehi._.js +3 -0
  607. package/web/.next/server/chunks/ssr/web_features_outside-party_ui_20x5u9bhxeehi._.js.map +1 -0
  608. package/web/.next/server/chunks/ssr/web_features_overview_16dyz2ngvs14b._.js +1 -1
  609. package/web/.next/server/chunks/ssr/web_features_overview_16dyz2ngvs14b._.js.map +1 -1
  610. package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js +1 -1
  611. package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js.map +1 -1
  612. package/web/.next/server/chunks/ssr/web_features_overview_state_1wuk95dw2_whp._.js +3 -0
  613. package/web/.next/server/chunks/ssr/web_features_overview_state_1wuk95dw2_whp._.js.map +1 -0
  614. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js +1 -1
  615. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js.map +1 -1
  616. package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js +1 -1
  617. package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js.map +1 -1
  618. package/web/.next/server/middleware-build-manifest.js +27 -3
  619. package/web/.next/server/next-font-manifest.js +1 -1
  620. package/web/.next/server/next-font-manifest.json +8 -0
  621. package/web/.next/server/pages/500.html +1 -1
  622. package/web/.next/server/preview-props.json +3 -3
  623. package/web/.next/server/server-reference-manifest.js +1 -1
  624. package/web/.next/server/server-reference-manifest.json +124 -22
  625. package/web/.next/static/chunks/00njqo86bx2kb.js +1 -0
  626. package/web/.next/static/chunks/047i2x2j--shk.css +3 -0
  627. package/web/.next/static/chunks/0g4cpamshfwmn.js +1 -0
  628. package/web/.next/static/chunks/0j84uiid6fsim.js +1 -0
  629. package/web/.next/static/chunks/1aa1d23q1vokr.js +1 -0
  630. package/web/.next/static/chunks/1jvae6c-4jwji.js +1 -0
  631. package/web/.next/static/chunks/23ud2e13dn8f4.js +1 -0
  632. package/web/.next/static/chunks/2_41h3v090ur9.js +1 -0
  633. package/web/.next/static/chunks/31vy122d9fvme.js +1 -0
  634. package/web/.next/static/chunks/3apnqdh48__yw.js +1 -0
  635. package/web/.next/static/chunks/3okm5g88ig1l3.js +1 -0
  636. package/web/.next/trace +1 -1
  637. package/web/.next/trace-build +1 -1
  638. package/web/.next/types/routes.d.ts +5 -2
  639. package/web/.next/types/validator.ts +44 -0
  640. package/web/public/wake-worker.js +17 -0
  641. package/web/.next/server/chunks/[externals]__12s2uxrv8n30f._.js +0 -3
  642. package/web/.next/server/chunks/[root-of-the-server]__0k8jiujb_0xtx._.js.map +0 -1
  643. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_10eg3jn_qq_u_.js +0 -3
  644. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_10eg3jn_qq_u_.js.map +0 -1
  645. package/web/.next/server/chunks/ssr/[root-of-the-server]__0-liudmjwlqmo._.js +0 -4
  646. package/web/.next/server/chunks/ssr/[root-of-the-server]__0-liudmjwlqmo._.js.map +0 -1
  647. package/web/.next/server/chunks/ssr/[root-of-the-server]__0dywrno7zb0r_._.js +0 -3
  648. package/web/.next/server/chunks/ssr/[root-of-the-server]__0hosi33y5xecr._.js +0 -3
  649. package/web/.next/server/chunks/ssr/[root-of-the-server]__0hosi33y5xecr._.js.map +0 -1
  650. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k-sy-ven9f2f._.js +0 -3
  651. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k-sy-ven9f2f._.js.map +0 -1
  652. package/web/.next/server/chunks/ssr/[root-of-the-server]__1imel8atfb770._.js +0 -3
  653. package/web/.next/server/chunks/ssr/[root-of-the-server]__1rmy72sai5-kh._.js +0 -4
  654. package/web/.next/server/chunks/ssr/[root-of-the-server]__1rmy72sai5-kh._.js.map +0 -1
  655. package/web/.next/server/chunks/ssr/[root-of-the-server]__1vkw2kvzx6fpw._.js +0 -3
  656. package/web/.next/server/chunks/ssr/[root-of-the-server]__1yydhn6iokbm4._.js +0 -3
  657. package/web/.next/server/chunks/ssr/[root-of-the-server]__1yyfc4xf3xa-s._.js +0 -4
  658. package/web/.next/server/chunks/ssr/[root-of-the-server]__1yyfc4xf3xa-s._.js.map +0 -1
  659. package/web/.next/server/chunks/ssr/[root-of-the-server]__216xd8otb96uo._.js +0 -3
  660. package/web/.next/server/chunks/ssr/_080ao10j8x4km._.js +0 -4
  661. package/web/.next/server/chunks/ssr/_080ao10j8x4km._.js.map +0 -1
  662. package/web/.next/server/chunks/ssr/_1gb_kwx9jg1et._.js +0 -4
  663. package/web/.next/server/chunks/ssr/_1gb_kwx9jg1et._.js.map +0 -1
  664. package/web/.next/server/chunks/ssr/_1ulh8nd8_yv_3._.js +0 -4
  665. package/web/.next/server/chunks/ssr/_1ulh8nd8_yv_3._.js.map +0 -1
  666. package/web/.next/server/chunks/ssr/node_modules_next_dist_compiled_@opentelemetry_api_index_1oy1nwhip-98t.js +0 -3
  667. package/web/.next/server/chunks/ssr/node_modules_next_dist_compiled_@opentelemetry_api_index_1oy1nwhip-98t.js.map +0 -1
  668. package/web/.next/server/chunks/ssr/web_06ue1l1ujajps._.js +0 -3
  669. package/web/.next/server/chunks/ssr/web_06ue1l1ujajps._.js.map +0 -1
  670. package/web/.next/server/chunks/ssr/web_1_rm1ivvp726s._.js +0 -3
  671. package/web/.next/server/chunks/ssr/web_1_rm1ivvp726s._.js.map +0 -1
  672. package/web/.next/server/chunks/ssr/web_features_0k3zd1eymtkgq._.js +0 -3
  673. package/web/.next/server/chunks/ssr/web_features_0k3zd1eymtkgq._.js.map +0 -1
  674. package/web/.next/server/chunks/ssr/web_features_forms_03k1kg82ux_ee._.js +0 -3
  675. package/web/.next/server/chunks/ssr/web_features_forms_03k1kg82ux_ee._.js.map +0 -1
  676. package/web/.next/server/chunks/ssr/web_features_forms_1-88lvs4ivi73._.js +0 -3
  677. package/web/.next/server/chunks/ssr/web_features_forms_1-88lvs4ivi73._.js.map +0 -1
  678. package/web/.next/server/chunks/ssr/web_features_forms_15gausi3cpweg._.js +0 -3
  679. package/web/.next/server/chunks/ssr/web_features_forms_15gausi3cpweg._.js.map +0 -1
  680. package/web/.next/server/chunks/ssr/web_features_outside-party_ui_outside-party_tsx_06a94oekz1ckq._.js +0 -3
  681. package/web/.next/server/chunks/ssr/web_features_outside-party_ui_outside-party_tsx_06a94oekz1ckq._.js.map +0 -1
  682. package/web/.next/server/chunks/ssr/web_features_overview_state_inbox-panel_tsx_03hlegjsc27sb._.js +0 -3
  683. package/web/.next/server/chunks/ssr/web_features_overview_state_inbox-panel_tsx_03hlegjsc27sb._.js.map +0 -1
  684. package/web/.next/static/chunks/1l1gmjf-hz7u_.css +0 -3
  685. package/web/.next/static/chunks/1ma7v1viiz247.js +0 -1
  686. package/web/.next/static/chunks/1tfvu44eel7g5.js +0 -1
  687. package/web/.next/static/chunks/2bg4wnfhuftsq.js +0 -1
  688. package/web/.next/static/chunks/2yplpvvjibfqw.js +0 -1
  689. package/web/.next/static/chunks/34syicr_5c5u1.js +0 -1
  690. package/web/.next/static/chunks/43zbq11isnos4.js +0 -1
  691. /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
  692. /package/web/.next/static/{ESz77-eaR5ViaU4LRqo0i → Az1CqrzgGHMZVR4nw9717}/_buildManifest.js +0 -0
  693. /package/web/.next/static/{ESz77-eaR5ViaU4LRqo0i → Az1CqrzgGHMZVR4nw9717}/_clientMiddlewareManifest.js +0 -0
  694. /package/web/.next/static/{ESz77-eaR5ViaU4LRqo0i → Az1CqrzgGHMZVR4nw9717}/_ssgManifest.js +0 -0
@@ -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.2",
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;
@@ -0,0 +1,37 @@
1
+ -- A2A in, push to the client's webhook (slice 4): each task's push configs, and the pushes still to make.
2
+ CREATE TABLE "a2a_push_configs" (
3
+ "fleet_id" TEXT NOT NULL,
4
+ "task_id" TEXT NOT NULL,
5
+ "id" TEXT NOT NULL,
6
+ "party" TEXT NOT NULL,
7
+ "url" TEXT NOT NULL,
8
+ "token" TEXT,
9
+ "authentication" JSONB,
10
+ "created_at" TIMESTAMP(3) NOT NULL,
11
+ "noticed_mark" TEXT NOT NULL,
12
+ "is_following" BOOLEAN NOT NULL,
13
+
14
+ CONSTRAINT "a2a_push_configs_pkey" PRIMARY KEY ("fleet_id","task_id","id")
15
+ );
16
+
17
+ CREATE INDEX "a2a_push_configs_fleet_id_party_is_following_idx" ON "a2a_push_configs"("fleet_id", "party", "is_following");
18
+
19
+ CREATE TABLE "a2a_pushes" (
20
+ "push_id" SERIAL NOT NULL,
21
+ "fleet_id" TEXT NOT NULL,
22
+ "task_id" TEXT NOT NULL,
23
+ "config_id" TEXT NOT NULL,
24
+ "party" TEXT NOT NULL,
25
+ "body" TEXT NOT NULL,
26
+ "attempts" INTEGER NOT NULL,
27
+ "next_at" TIMESTAMP(3) NOT NULL,
28
+ "state" TEXT NOT NULL,
29
+ "reason" TEXT,
30
+ "settled_at" TIMESTAMP(3),
31
+
32
+ CONSTRAINT "a2a_pushes_pkey" PRIMARY KEY ("push_id")
33
+ );
34
+
35
+ CREATE INDEX "a2a_pushes_fleet_id_party_state_task_id_config_id_push_id_idx" ON "a2a_pushes"("fleet_id", "party", "state", "task_id", "config_id", "push_id");
36
+
37
+ ALTER TABLE "a2a_pushes" ADD CONSTRAINT "a2a_pushes_fleet_id_task_id_config_id_fkey" FOREIGN KEY ("fleet_id", "task_id", "config_id") REFERENCES "a2a_push_configs"("fleet_id", "task_id", "id") ON DELETE CASCADE ON UPDATE CASCADE;
@@ -0,0 +1,2 @@
1
+ -- An A2A agent's mark (A9): whether a message that died unconfirmed may be handed again.
2
+ ALTER TABLE "parties" ADD COLUMN "is_repeatable" BOOLEAN;
@@ -0,0 +1,29 @@
1
+ -- The gateway's messages to outside A2A agents, by delivery, and which task each reply tells of (slice 6).
2
+ CREATE TABLE "a2a_agent_calls" (
3
+ "delivery_id" TEXT NOT NULL,
4
+ "fleet_id" TEXT NOT NULL,
5
+ "party" TEXT NOT NULL,
6
+ "message_id" TEXT NOT NULL,
7
+ "sender_ship_id" TEXT NOT NULL,
8
+ "state" TEXT NOT NULL,
9
+ "task_id" TEXT,
10
+ "context_id" TEXT,
11
+ "deadline_at" TIMESTAMPTZ(3) NOT NULL,
12
+ "answer" JSONB,
13
+ "replied" TEXT[] DEFAULT ARRAY[]::TEXT[],
14
+ "chunk_places" JSONB NOT NULL DEFAULT '{}',
15
+
16
+ CONSTRAINT "a2a_agent_calls_pkey" PRIMARY KEY ("fleet_id", "delivery_id")
17
+ );
18
+
19
+ CREATE INDEX "a2a_agent_calls_fleet_id_party_state_idx" ON "a2a_agent_calls"("fleet_id", "party", "state");
20
+
21
+ CREATE TABLE "a2a_agent_replies" (
22
+ "fleet_id" TEXT NOT NULL,
23
+ "party" TEXT NOT NULL,
24
+ "message_id" TEXT NOT NULL,
25
+ "task_id" TEXT NOT NULL,
26
+ "context_id" TEXT NOT NULL,
27
+
28
+ CONSTRAINT "a2a_agent_replies_pkey" PRIMARY KEY ("fleet_id", "party", "message_id")
29
+ );
@@ -0,0 +1,17 @@
1
+ -- What wakes a person (wake a person, W3, W8): the email channel they turned on, and when each channel last woke their person ship.
2
+ CREATE TABLE "email_channels" (
3
+ "fleet_id" TEXT NOT NULL,
4
+ "ship_id" TEXT NOT NULL,
5
+ "turned_on_at" TIMESTAMPTZ(3) NOT NULL,
6
+
7
+ CONSTRAINT "email_channels_pkey" PRIMARY KEY ("fleet_id","ship_id")
8
+ );
9
+
10
+ CREATE TABLE "wakes_sent" (
11
+ "fleet_id" TEXT NOT NULL,
12
+ "ship_id" TEXT NOT NULL,
13
+ "channel" TEXT NOT NULL,
14
+ "sent_at" TIMESTAMPTZ(3) NOT NULL,
15
+
16
+ CONSTRAINT "wakes_sent_pkey" PRIMARY KEY ("fleet_id","ship_id","channel")
17
+ );
@@ -0,0 +1,11 @@
1
+ -- Wake a person (W6): a person's pages in focus, on any gateway instance.
2
+ CREATE TABLE "focused_pages" (
3
+ "fleet_id" TEXT NOT NULL,
4
+ "page_id" TEXT NOT NULL,
5
+ "ship_id" TEXT NOT NULL,
6
+ "seen_at" TIMESTAMPTZ(3) NOT NULL,
7
+
8
+ CONSTRAINT "focused_pages_pkey" PRIMARY KEY ("fleet_id","page_id")
9
+ );
10
+
11
+ CREATE INDEX "focused_pages_fleet_id_ship_id_seen_at_idx" ON "focused_pages"("fleet_id", "ship_id", "seen_at");
@@ -0,0 +1,14 @@
1
+ -- Wake a person (W8): the browsers a person turned web push on in.
2
+ CREATE TABLE "web_push_subscriptions" (
3
+ "fleet_id" TEXT NOT NULL,
4
+ "ship_id" TEXT NOT NULL,
5
+ "endpoint" TEXT NOT NULL,
6
+ "p256dh" TEXT NOT NULL,
7
+ "auth" TEXT NOT NULL,
8
+ "browser" TEXT NOT NULL,
9
+ "fleet_name" TEXT NOT NULL,
10
+ "added_at" TIMESTAMPTZ(3) NOT NULL,
11
+ "gone_at" TIMESTAMPTZ(3),
12
+
13
+ CONSTRAINT "web_push_subscriptions_pkey" PRIMARY KEY ("fleet_id","ship_id","endpoint")
14
+ );
@@ -74,12 +74,18 @@ model Party {
74
74
  fleetId String @map("fleet_id")
75
75
  name String
76
76
  kind String
77
- /// An MCP server's: its URL, its credential as JSON (a static bearer, or OAuth client credentials), and its calls at once.
77
+ /// An MCP server's: its URL, its credential as JSON (none, a static bearer, or OAuth client credentials), and its calls at once. An A2A agent's too, its card address as the URL.
78
78
  url String?
79
79
  credential Json?
80
80
  concurrencyLimit Int? @map("concurrency_limit")
81
+ /// An MCP server's tool switches, by tool name (aeolus-fleet#1151); none kept yet means every tool it lists is on.
82
+ toolSwitches Json? @map("tool_switches")
81
83
  /// An MCP client's: its OAuth client id.
82
84
  clientId String? @map("client_id")
85
+ /// An A2A client's: the hash of the bearer it was shown once, which names it on every call; unique across fleets, as the bearer alone names the party (decision 0060).
86
+ bearerHash String? @unique @map("bearer_hash")
87
+ /// An A2A agent's: whether a message that died unconfirmed may be handed again, until an approver marks it not (A9).
88
+ isRepeatable Boolean? @map("is_repeatable")
83
89
  state String
84
90
  proxyShipId String? @map("proxy_ship_id")
85
91
  /// Kept only from the proxy ship's commission until the gateway crews it.
@@ -117,6 +123,41 @@ model Call {
117
123
  @@map("calls")
118
124
  }
119
125
 
126
+ /// The gateway's messages to outside A2A agents, by delivery (slice 6): so a restart sends nothing again that may have run, and follows on each task the agent took.
127
+ model A2aAgentCall {
128
+ deliveryId String @map("delivery_id")
129
+ fleetId String @map("fleet_id")
130
+ party String
131
+ messageId String @map("message_id")
132
+ senderShipId String @map("sender_ship_id")
133
+ state String
134
+ taskId String? @map("task_id")
135
+ contextId String? @map("context_id")
136
+ deadlineAt DateTime @map("deadline_at") @db.Timestamptz(3)
137
+ /// The reply to the agent's message answer or refusal, kept before the ack.
138
+ answer Json?
139
+ /// The identity of each event the follow replied, so a restart replies none again.
140
+ replied String[] @default([])
141
+ /// Where the next chunk of each artifact goes, as the replies so far leave it.
142
+ chunkPlaces Json @default("{}") @map("chunk_places")
143
+
144
+ @@id([fleetId, deliveryId])
145
+ @@index([fleetId, party, state])
146
+ @@map("a2a_agent_calls")
147
+ }
148
+
149
+ /// Which task each reply the gateway sent for an outside A2A agent tells of, by the reply's message id: an answer to it continues the task (slice 6).
150
+ model A2aAgentReply {
151
+ fleetId String @map("fleet_id")
152
+ party String
153
+ messageId String @map("message_id")
154
+ taskId String @map("task_id")
155
+ contextId String @map("context_id")
156
+
157
+ @@id([fleetId, party, messageId])
158
+ @@map("a2a_agent_replies")
159
+ }
160
+
120
161
  /// MCP clients argo pre-registered; a confidential one's secret kept only as its hash.
121
162
  model OAuthClient {
122
163
  clientId String @id @map("client_id")
@@ -124,6 +165,8 @@ model OAuthClient {
124
165
  name String
125
166
  redirectUris String[] @map("redirect_uris")
126
167
  secretHash String? @map("secret_hash")
168
+ /// How it signs in: authorizationCode, or clientCredentials with no redirect URI (vendor platforms V4).
169
+ grant String @default("authorizationCode")
127
170
 
128
171
  @@index([fleetId])
129
172
  @@map("oauth_clients")
@@ -151,9 +194,11 @@ model AuthorizationCode {
151
194
  /// The access and refresh tokens the gateway issued, kept only as hashes, a pair per row.
152
195
  model IssuedToken {
153
196
  accessHash String @id @map("access_hash")
154
- refreshHash String @unique @map("refresh_hash")
197
+ /// None for a client signed in by client credentials, which asks again.
198
+ refreshHash String? @unique @map("refresh_hash")
155
199
  familyId String @map("family_id")
156
- codeHash String @map("code_hash")
200
+ /// None for a token issued from client credentials.
201
+ codeHash String? @map("code_hash")
157
202
  fleetId String @map("fleet_id")
158
203
  clientId String @map("client_id")
159
204
  resource String
@@ -162,7 +207,7 @@ model IssuedToken {
162
207
  party String?
163
208
  grantId String? @map("grant_id")
164
209
  accessExpiresAt DateTime @map("access_expires_at") @db.Timestamptz(3)
165
- refreshExpiresAt DateTime @map("refresh_expires_at") @db.Timestamptz(3)
210
+ refreshExpiresAt DateTime? @map("refresh_expires_at") @db.Timestamptz(3)
166
211
  state String
167
212
 
168
213
  @@index([fleetId])
@@ -178,16 +223,76 @@ model ClientCall {
178
223
  party String
179
224
  handle String
180
225
  shipId String @map("ship_id")
181
- capability String
226
+ /// None when an A2A message matched no capability, and then its first reply answers it (decision 0060).
227
+ capability String?
182
228
  outputContentType String? @map("output_content_type")
183
229
  sentAt DateTime @map("sent_at")
184
230
  deadlineAt DateTime? @map("deadline_at")
231
+ /// Where its delivery stands, as the gateway last read it from the fleet's sentMessage.
232
+ deliveryState String? @map("delivery_state")
233
+ deliverySince DateTime? @map("delivery_since")
234
+ /// An A2A call's task, and the client's message as A2A JSON; none for an MCP call.
235
+ taskId String? @map("task_id")
236
+ taskMessage String? @map("task_message")
185
237
 
186
238
  @@id([fleetId, messageId])
187
239
  @@unique([fleetId, handle])
240
+ @@index([fleetId, taskId])
188
241
  @@map("client_calls")
189
242
  }
190
243
 
244
+ /// An outside A2A client's task (decision 0060): its id, the HMAC of its first message, its party and its context.
245
+ model A2aTask {
246
+ fleetId String @map("fleet_id")
247
+ taskId String @map("task_id")
248
+ party String
249
+ contextId String @map("context_id")
250
+ createdAt DateTime @map("created_at")
251
+
252
+ @@id([fleetId, taskId])
253
+ @@index([fleetId, party, createdAt(sort: Desc), taskId(sort: Desc)])
254
+ @@map("a2a_tasks")
255
+ }
256
+
257
+ /// A push config of an outside A2A client's task (slice 4): its webhook, and the vault of its token and authentication, never answered back; with the task as last noticed.
258
+ model A2aPushConfig {
259
+ fleetId String @map("fleet_id")
260
+ taskId String @map("task_id")
261
+ id String
262
+ party String
263
+ url String
264
+ token String?
265
+ /// The scheme and credentials the webhook is called with, as JSON.
266
+ authentication Json?
267
+ createdAt DateTime @map("created_at")
268
+ noticedMark String @map("noticed_mark")
269
+ isFollowing Boolean @map("is_following")
270
+ pushes A2aPush[]
271
+
272
+ @@id([fleetId, taskId, id])
273
+ @@index([fleetId, party, isFollowing])
274
+ @@map("a2a_push_configs")
275
+ }
276
+
277
+ /// A push of one event of a config's task to its webhook (slice 4): pending until delivered or given up, kept over a restart; its id is its order.
278
+ model A2aPush {
279
+ pushId Int @id @default(autoincrement()) @map("push_id")
280
+ fleetId String @map("fleet_id")
281
+ taskId String @map("task_id")
282
+ configId String @map("config_id")
283
+ party String
284
+ body String
285
+ attempts Int
286
+ nextAt DateTime @map("next_at")
287
+ state String
288
+ reason String?
289
+ settledAt DateTime? @map("settled_at")
290
+ config A2aPushConfig @relation(fields: [fleetId, taskId, configId], references: [fleetId, taskId, id], onDelete: Cascade)
291
+
292
+ @@index([fleetId, party, state, taskId, configId, pushId])
293
+ @@map("a2a_pushes")
294
+ }
295
+
191
296
  /// The replies naming an outside client's call, each kept once per delivery before it is acknowledged.
192
297
  model ClientCallReply {
193
298
  deliveryId String @id @map("delivery_id")
@@ -232,6 +337,27 @@ model PersonCrew {
232
337
  @@map("person_crews")
233
338
  }
234
339
 
340
+ /// A person who turned email on to be woken for their person ship (wake a person, W8): a row while it is on; nothing is on by default.
341
+ model EmailChannel {
342
+ fleetId String @map("fleet_id")
343
+ shipId String @map("ship_id")
344
+ turnedOnAt DateTime @map("turned_on_at") @db.Timestamptz(3)
345
+
346
+ @@id([fleetId, shipId])
347
+ @@map("email_channels")
348
+ }
349
+
350
+ /// When a channel last woke a person ship, so it sends at most one wake per its window (wake a person, W3).
351
+ model WakeSent {
352
+ fleetId String @map("fleet_id")
353
+ shipId String @map("ship_id")
354
+ channel String
355
+ sentAt DateTime @map("sent_at") @db.Timestamptz(3)
356
+
357
+ @@id([fleetId, shipId, channel])
358
+ @@map("wakes_sent")
359
+ }
360
+
235
361
  /// A delivery a person opened, kept until they deal with it, so their answer finds its message and sender and their inbox lists it (Q28 (a)).
236
362
  model OpenedDelivery {
237
363
  fleetId String @map("fleet_id")
@@ -311,3 +437,31 @@ model OwnerQuestion {
311
437
  @@id([fleetId, requestId])
312
438
  @@map("owner_questions")
313
439
  }
440
+
441
+ /// A page of a person in focus, on any gateway instance, with when it was last seen so (wake a person, W6).
442
+ model FocusedPage {
443
+ fleetId String @map("fleet_id")
444
+ pageId String @map("page_id")
445
+ shipId String @map("ship_id")
446
+ seenAt DateTime @map("seen_at") @db.Timestamptz(3)
447
+
448
+ @@id([fleetId, pageId])
449
+ @@index([fleetId, shipId, seenAt])
450
+ @@map("focused_pages")
451
+ }
452
+
453
+ /// A browser a person turned web push on in (wake a person, W8): its push service's endpoint and keys, and the fleet's name its wakes say. Gone once its push service answered 404 or 410.
454
+ model WebPushSubscription {
455
+ fleetId String @map("fleet_id")
456
+ shipId String @map("ship_id")
457
+ endpoint String
458
+ p256dh String
459
+ auth String
460
+ browser String
461
+ fleetName String @map("fleet_name")
462
+ addedAt DateTime @map("added_at") @db.Timestamptz(3)
463
+ goneAt DateTime? @map("gone_at") @db.Timestamptz(3)
464
+
465
+ @@id([fleetId, shipId, endpoint])
466
+ @@map("web_push_subscriptions")
467
+ }
@@ -1 +1 @@
1
- ESz77-eaR5ViaU4LRqo0i
1
+ Az1CqrzgGHMZVR4nw9717