@aeolus-fleet/gateway 0.31.0 → 0.32.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 (345) hide show
  1. package/dist/adapters/fleet/core-version.d.ts +1 -1
  2. package/dist/adapters/fleet/core-version.js +1 -1
  3. package/dist/adapters/fleet/proxy-ships-as-actor.js +5 -1
  4. package/dist/adapters/fleet/proxy-ships-as-actor.js.map +1 -1
  5. package/dist/adapters/fleet/rest-fleet-door.js +15 -6
  6. package/dist/adapters/fleet/rest-fleet-door.js.map +1 -1
  7. package/dist/adapters/http/mcp-endpoint.js +1 -1
  8. package/dist/adapters/http/mcp-endpoint.js.map +1 -1
  9. package/dist/adapters/http/person-tools.js +1 -1
  10. package/dist/adapters/http/person-tools.js.map +1 -1
  11. package/dist/adapters/pagasae/email-channel.js +4 -2
  12. package/dist/adapters/pagasae/email-channel.js.map +1 -1
  13. package/dist/adapters/prisma/generated/commonInputTypes.d.ts +50 -50
  14. package/dist/adapters/prisma/generated/internal/class.js +4 -4
  15. package/dist/adapters/prisma/generated/internal/class.js.map +1 -1
  16. package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +2 -0
  17. package/dist/adapters/prisma/generated/internal/prismaNamespace.js +2 -0
  18. package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
  19. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +2 -0
  20. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +2 -0
  21. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  22. package/dist/adapters/prisma/generated/models/A2aPush.d.ts +0 -7
  23. package/dist/adapters/prisma/generated/models/Party.d.ts +70 -1
  24. package/dist/adapters/prisma/scope-requirements.d.ts +10 -0
  25. package/dist/adapters/prisma/scope-requirements.js +37 -0
  26. package/dist/adapters/prisma/scope-requirements.js.map +1 -0
  27. package/dist/adapters/trpc/router.d.ts +91 -8
  28. package/dist/adapters/trpc/router.js +98 -11
  29. package/dist/adapters/trpc/router.js.map +1 -1
  30. package/dist/app.js +34 -9
  31. package/dist/app.js.map +1 -1
  32. package/dist/core/a2a-out/agent-event.d.ts +1 -1
  33. package/dist/core/a2a-out/agent-event.js +2 -2
  34. package/dist/core/a2a-out/agent-event.js.map +1 -1
  35. package/dist/core/a2a-out/agent-statement.d.ts +2 -1
  36. package/dist/core/a2a-out/agent-statement.js +5 -2
  37. package/dist/core/a2a-out/agent-statement.js.map +1 -1
  38. package/dist/core/a2a-out/hand-a2a-message.d.ts +7 -2
  39. package/dist/core/a2a-out/hand-a2a-message.js +15 -1
  40. package/dist/core/a2a-out/hand-a2a-message.js.map +1 -1
  41. package/dist/core/a2a-out/read-agent-statement.d.ts +1 -0
  42. package/dist/core/a2a-out/read-agent-statement.js +1 -1
  43. package/dist/core/a2a-out/read-agent-statement.js.map +1 -1
  44. package/dist/core/a2a-out/state-a2a-agent.d.ts +3 -2
  45. package/dist/core/a2a-out/state-a2a-agent.js +3 -2
  46. package/dist/core/a2a-out/state-a2a-agent.js.map +1 -1
  47. package/dist/core/account-sign-in/account-in-view.d.ts +10 -1
  48. package/dist/core/account-sign-in/account-in-view.js +17 -4
  49. package/dist/core/account-sign-in/account-in-view.js.map +1 -1
  50. package/dist/core/connection/ports.d.ts +8 -0
  51. package/dist/core/mcp-out/hand-call.d.ts +6 -2
  52. package/dist/core/mcp-out/hand-call.js +14 -1
  53. package/dist/core/mcp-out/hand-call.js.map +1 -1
  54. package/dist/core/mcp-out/state-party.d.ts +3 -2
  55. package/dist/core/mcp-out/state-party.js +2 -2
  56. package/dist/core/mcp-out/state-party.js.map +1 -1
  57. package/dist/core/mcp-out/statement.d.ts +16 -0
  58. package/dist/core/mcp-out/statement.js +10 -3
  59. package/dist/core/mcp-out/statement.js.map +1 -1
  60. package/dist/core/operator/ports.d.ts +4 -4
  61. package/dist/core/parties/add-a2a-agent.js +1 -1
  62. package/dist/core/parties/add-a2a-agent.js.map +1 -1
  63. package/dist/core/parties/check-approving.d.ts +36 -0
  64. package/dist/core/parties/check-approving.js +48 -0
  65. package/dist/core/parties/check-approving.js.map +1 -0
  66. package/dist/core/parties/check-required-scopes.d.ts +34 -0
  67. package/dist/core/parties/check-required-scopes.js +27 -0
  68. package/dist/core/parties/check-required-scopes.js.map +1 -0
  69. package/dist/core/parties/ports.d.ts +21 -0
  70. package/dist/core/parties/read-listed-scopes.d.ts +17 -0
  71. package/dist/core/parties/read-listed-scopes.js +23 -0
  72. package/dist/core/parties/read-listed-scopes.js.map +1 -0
  73. package/dist/core/parties/read-scope-requirements.d.ts +18 -0
  74. package/dist/core/parties/read-scope-requirements.js +17 -0
  75. package/dist/core/parties/read-scope-requirements.js.map +1 -0
  76. package/dist/core/parties/scope-requirements.d.ts +34 -0
  77. package/dist/core/parties/scope-requirements.js +37 -0
  78. package/dist/core/parties/scope-requirements.js.map +1 -0
  79. package/dist/core/parties/set-scope-requirements.d.ts +45 -0
  80. package/dist/core/parties/set-scope-requirements.js +48 -0
  81. package/dist/core/parties/set-scope-requirements.js.map +1 -0
  82. package/dist/core/parties/switch-tools.d.ts +39 -0
  83. package/dist/core/parties/switch-tools.js +38 -0
  84. package/dist/core/parties/switch-tools.js.map +1 -0
  85. package/dist/core/parties/tool-switches.d.ts +4 -2
  86. package/dist/core/parties/tool-switches.js +2 -1
  87. package/dist/core/parties/tool-switches.js.map +1 -1
  88. package/dist/core/people/ports.d.ts +4 -2
  89. package/dist/core/people/wake-person.d.ts +22 -10
  90. package/dist/core/people/wake-person.js +88 -20
  91. package/dist/core/people/wake-person.js.map +1 -1
  92. package/dist/core/people/web-push-channel.js +1 -1
  93. package/dist/core/people/web-push-channel.js.map +1 -1
  94. package/dist/core/shared/errors.d.ts +1 -1
  95. package/dist/core/shared/errors.js.map +1 -1
  96. package/package.json +3 -3
  97. package/src/adapters/prisma/migrations/20261025140000_scope_requirements/migration.sql +3 -0
  98. package/src/adapters/prisma/schema.prisma +69 -65
  99. package/web/.next/BUILD_ID +1 -1
  100. package/web/.next/app-path-routes-manifest.json +1 -0
  101. package/web/.next/build-manifest.json +15 -3
  102. package/web/.next/diagnostics/route-bundle-stats.json +113 -77
  103. package/web/.next/fallback-build-manifest.json +3 -3
  104. package/web/.next/prerender-manifest.json +3 -3
  105. package/web/.next/routes-manifest.json +6 -0
  106. package/web/.next/server/app/(console)/gateway-off/page/app-paths-manifest.json +3 -0
  107. package/web/.next/server/app/(console)/gateway-off/page/build-manifest.json +23 -0
  108. package/web/.next/server/app/(console)/gateway-off/page/next-font-manifest.json +11 -0
  109. package/web/.next/server/app/(console)/gateway-off/page/react-loadable-manifest.json +1 -0
  110. package/web/.next/server/app/(console)/gateway-off/page/server-reference-manifest.json +15 -0
  111. package/web/.next/server/app/(console)/gateway-off/page.js +19 -0
  112. package/web/.next/server/app/(console)/gateway-off/page.js.map +5 -0
  113. package/web/.next/server/app/(console)/gateway-off/page.js.nft.json +1 -0
  114. package/web/.next/server/app/(console)/gateway-off/page_client-reference-manifest.js +3 -0
  115. package/web/.next/server/app/(console)/meetings/[meetingId]/page/server-reference-manifest.json +3 -3
  116. package/web/.next/server/app/(console)/meetings/[meetingId]/page.js.nft.json +1 -1
  117. package/web/.next/server/app/(console)/meetings/[meetingId]/page_client-reference-manifest.js +1 -1
  118. package/web/.next/server/app/(console)/outside-parties/[name]/change/page/server-reference-manifest.json +17 -7
  119. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js +4 -4
  120. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js.nft.json +1 -1
  121. package/web/.next/server/app/(console)/outside-parties/[name]/change/page_client-reference-manifest.js +1 -1
  122. package/web/.next/server/app/(console)/outside-parties/[name]/page/server-reference-manifest.json +15 -5
  123. package/web/.next/server/app/(console)/outside-parties/[name]/page.js +4 -4
  124. package/web/.next/server/app/(console)/outside-parties/[name]/page.js.nft.json +1 -1
  125. package/web/.next/server/app/(console)/outside-parties/[name]/page_client-reference-manifest.js +1 -1
  126. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/server-reference-manifest.json +17 -7
  127. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js +4 -4
  128. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js.nft.json +1 -1
  129. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page_client-reference-manifest.js +1 -1
  130. package/web/.next/server/app/(console)/outside-parties/add/page/server-reference-manifest.json +17 -7
  131. package/web/.next/server/app/(console)/outside-parties/add/page.js +3 -4
  132. package/web/.next/server/app/(console)/outside-parties/add/page.js.nft.json +1 -1
  133. package/web/.next/server/app/(console)/outside-parties/add/page_client-reference-manifest.js +1 -1
  134. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/server-reference-manifest.json +2 -2
  135. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js.nft.json +1 -1
  136. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page_client-reference-manifest.js +1 -1
  137. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/server-reference-manifest.json +2 -2
  138. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js.nft.json +1 -1
  139. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page_client-reference-manifest.js +1 -1
  140. package/web/.next/server/app/(console)/outside-parties/page/server-reference-manifest.json +2 -2
  141. package/web/.next/server/app/(console)/outside-parties/page.js.nft.json +1 -1
  142. package/web/.next/server/app/(console)/outside-parties/page_client-reference-manifest.js +1 -1
  143. package/web/.next/server/app/(console)/overview/changes/route.js.nft.json +1 -1
  144. package/web/.next/server/app/(console)/overview/focus/route.js.nft.json +1 -1
  145. package/web/.next/server/app/(console)/overview/page/server-reference-manifest.json +7 -7
  146. package/web/.next/server/app/(console)/overview/page.js.nft.json +1 -1
  147. package/web/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
  148. package/web/.next/server/app/(console)/overview/requests/[requestId]/page/server-reference-manifest.json +2 -2
  149. package/web/.next/server/app/(console)/overview/requests/[requestId]/page.js.nft.json +1 -1
  150. package/web/.next/server/app/(console)/overview/requests/[requestId]/page_client-reference-manifest.js +1 -1
  151. package/web/.next/server/app/(console)/parties/page/server-reference-manifest.json +9 -9
  152. package/web/.next/server/app/(console)/parties/page.js.nft.json +1 -1
  153. package/web/.next/server/app/(console)/parties/page_client-reference-manifest.js +1 -1
  154. package/web/.next/server/app/(console)/sign-in/failed/page/server-reference-manifest.json +1 -1
  155. package/web/.next/server/app/(console)/sign-in/failed/page.js.nft.json +1 -1
  156. package/web/.next/server/app/(console)/sign-in/failed/page_client-reference-manifest.js +1 -1
  157. package/web/.next/server/app/_global-error.html +1 -1
  158. package/web/.next/server/app/_global-error.rsc +1 -1
  159. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  160. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  161. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  162. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  163. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  164. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  165. package/web/.next/server/app/authorize/failed/page/server-reference-manifest.json +1 -1
  166. package/web/.next/server/app/authorize/failed/page.js.nft.json +1 -1
  167. package/web/.next/server/app/authorize/failed/page_client-reference-manifest.js +1 -1
  168. package/web/.next/server/app/authorize/pick/page/server-reference-manifest.json +1 -1
  169. package/web/.next/server/app/authorize/pick/page.js.nft.json +1 -1
  170. package/web/.next/server/app/authorize/pick/page_client-reference-manifest.js +1 -1
  171. package/web/.next/server/app/authorize/waiting/approval/page/server-reference-manifest.json +1 -1
  172. package/web/.next/server/app/authorize/waiting/approval/page.js.nft.json +1 -1
  173. package/web/.next/server/app/authorize/waiting/approval/page_client-reference-manifest.js +1 -1
  174. package/web/.next/server/app-paths-manifest.json +1 -0
  175. package/web/.next/server/chunks/[root-of-the-server]__0ykc8bq_c06a1._.js +1 -1
  176. package/web/.next/server/chunks/[root-of-the-server]__0ykc8bq_c06a1._.js.map +1 -1
  177. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js +1 -1
  178. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js.map +1 -1
  179. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js +1 -1
  180. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js.map +1 -1
  181. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js +1 -1
  182. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js.map +1 -1
  183. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js +1 -1
  184. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js.map +1 -1
  185. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js +1 -1
  186. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js.map +1 -1
  187. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js +1 -1
  188. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js.map +1 -1
  189. package/web/.next/server/chunks/ssr/[root-of-the-server]__0-og0bl8lr2xq._.js +1 -1
  190. package/web/.next/server/chunks/ssr/[root-of-the-server]__0-og0bl8lr2xq._.js.map +1 -1
  191. package/web/.next/server/chunks/ssr/[root-of-the-server]__00q22dte1g2ww._.js +3 -0
  192. package/web/.next/server/chunks/ssr/[root-of-the-server]__00q22dte1g2ww._.js.map +1 -0
  193. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js +1 -1
  194. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js.map +1 -1
  195. package/web/.next/server/chunks/ssr/[root-of-the-server]__0n2us07jk-78w._.js +1 -1
  196. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rr5u24i9tjyc._.js +1 -1
  197. package/web/.next/server/chunks/ssr/[root-of-the-server]__1-c9wugbbwsp3._.js +4 -0
  198. package/web/.next/server/chunks/ssr/[root-of-the-server]__1-c9wugbbwsp3._.js.map +1 -0
  199. package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js +1 -1
  200. package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js.map +1 -1
  201. package/web/.next/server/chunks/ssr/{[root-of-the-server]__11w36a4le04vy._.js → [root-of-the-server]__1dc6okf5os70a._.js} +2 -2
  202. package/web/.next/server/chunks/ssr/[root-of-the-server]__1dc6okf5os70a._.js.map +1 -0
  203. package/web/.next/server/chunks/ssr/[root-of-the-server]__1dtyycvqa6uht._.js +1 -1
  204. package/web/.next/server/chunks/ssr/_0-lfpqqlgfhzj._.js.map +1 -1
  205. package/web/.next/server/chunks/ssr/_00dg5cvqofspn._.js +3 -0
  206. package/web/.next/server/chunks/ssr/_00dg5cvqofspn._.js.map +1 -0
  207. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js +1 -1
  208. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js.map +1 -1
  209. package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js +2 -2
  210. package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js.map +1 -1
  211. package/web/.next/server/chunks/ssr/_0_kakdt7lb6z-._.js +3 -0
  212. package/web/.next/server/chunks/ssr/_0_kakdt7lb6z-._.js.map +1 -0
  213. package/web/.next/server/chunks/ssr/_0bhvvyz0q_0ja._.js +1 -1
  214. package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js +4 -0
  215. package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js.map +1 -0
  216. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js +1 -1
  217. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js.map +1 -1
  218. package/web/.next/server/chunks/ssr/_0w2ptjht34s6t._.js +3 -0
  219. package/web/.next/server/chunks/ssr/_0w2ptjht34s6t._.js.map +1 -0
  220. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js +1 -1
  221. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js.map +1 -1
  222. package/web/.next/server/chunks/ssr/_1_wav28san6dm._.js +1 -1
  223. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js +1 -1
  224. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js.map +1 -1
  225. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js +1 -1
  226. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js.map +1 -1
  227. package/web/.next/server/chunks/ssr/_1uuy6gkkhq6bx._.js +3 -0
  228. package/web/.next/server/chunks/ssr/_1uuy6gkkhq6bx._.js.map +1 -0
  229. package/web/.next/server/chunks/ssr/_1y1ovmdhl9_ml._.js +3 -0
  230. package/web/.next/server/chunks/ssr/_1y1ovmdhl9_ml._.js.map +1 -0
  231. package/web/.next/server/chunks/ssr/node_modules_07sxnbglqc5q9._.js +3 -0
  232. package/web/.next/server/chunks/ssr/node_modules_07sxnbglqc5q9._.js.map +1 -0
  233. package/web/.next/server/chunks/ssr/node_modules_0_cxkn6vujxay._.js +3 -0
  234. package/web/.next/server/chunks/ssr/node_modules_0_cxkn6vujxay._.js.map +1 -0
  235. package/web/.next/server/chunks/ssr/node_modules_0qlo87g8tugr4._.js +3 -0
  236. package/web/.next/server/chunks/ssr/node_modules_0qlo87g8tugr4._.js.map +1 -0
  237. package/web/.next/server/chunks/ssr/node_modules_15ceu3jhtifcw._.js +3 -0
  238. package/web/.next/server/chunks/ssr/node_modules_15ceu3jhtifcw._.js.map +1 -0
  239. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1jvz31plyg2f-._.js +1 -1
  240. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1jvz31plyg2f-._.js.map +1 -1
  241. package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_utils_FloatingPortalLite_mjs_1uzc1ezeugtex._.js +3 -0
  242. package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_utils_FloatingPortalLite_mjs_1uzc1ezeugtex._.js.map +1 -0
  243. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1s46s8vlfx01v.js +3 -0
  244. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1s46s8vlfx01v.js.map +1 -0
  245. package/web/.next/server/chunks/ssr/web_0v-7sowo0hupw._.js +1 -1
  246. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js +1 -1
  247. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js.map +1 -1
  248. package/web/.next/server/chunks/ssr/web_1wcpaty_bz55q._.js +3 -0
  249. package/web/.next/server/chunks/ssr/web_1wcpaty_bz55q._.js.map +1 -0
  250. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js +1 -1
  251. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js.map +1 -1
  252. package/web/.next/server/chunks/ssr/{web_features_0ahlkugj7fu3n._.js → web_features_0xbnkk4hfgr9v._.js} +2 -2
  253. package/web/.next/server/chunks/ssr/{web_features_0ahlkugj7fu3n._.js.map → web_features_0xbnkk4hfgr9v._.js.map} +1 -1
  254. package/web/.next/server/chunks/ssr/web_features_0xnlgtw8bfqaa._.js +1 -1
  255. package/web/.next/server/chunks/ssr/web_features_10xz3ojtvfi7h._.js +3 -0
  256. package/web/.next/server/chunks/ssr/web_features_10xz3ojtvfi7h._.js.map +1 -0
  257. package/web/.next/server/chunks/ssr/web_features_1_2m6l73qk7qw._.js +1 -1
  258. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js +1 -1
  259. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js.map +1 -1
  260. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js +1 -1
  261. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js.map +1 -1
  262. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js +1 -1
  263. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js.map +1 -1
  264. package/web/.next/server/chunks/ssr/web_features_forms_1u0akr22eh_x_._.js +3 -0
  265. package/web/.next/server/chunks/ssr/web_features_forms_1u0akr22eh_x_._.js.map +1 -0
  266. package/web/.next/server/chunks/ssr/web_features_frame_0pe8cwpxe1egb._.js +1 -1
  267. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js +1 -1
  268. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js.map +1 -1
  269. package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js +1 -1
  270. package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js.map +1 -1
  271. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js +1 -1
  272. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js.map +1 -1
  273. package/web/.next/server/chunks/ssr/web_features_outside-party_0_9c27knfvw7u._.js +3 -0
  274. package/web/.next/server/chunks/ssr/web_features_outside-party_0_9c27knfvw7u._.js.map +1 -0
  275. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js +1 -1
  276. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js.map +1 -1
  277. package/web/.next/server/chunks/ssr/web_features_overview_0udx5lm8igils._.js +3 -0
  278. package/web/.next/server/chunks/ssr/{web_features_overview_16dyz2ngvs14b._.js.map → web_features_overview_0udx5lm8igils._.js.map} +1 -1
  279. package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js +1 -1
  280. package/web/.next/server/chunks/ssr/web_features_overview_state_1wuk95dw2_whp._.js +1 -1
  281. package/web/.next/server/chunks/ssr/web_features_overview_state_1wuk95dw2_whp._.js.map +1 -1
  282. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js +1 -1
  283. package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js.map +1 -1
  284. package/web/.next/server/chunks/ssr/{web_features_overview_ui_action-button_tsx_14-5f45xbzbi6._.js → web_features_overview_ui_10mb24kjiffea._.js} +2 -2
  285. package/web/.next/server/chunks/ssr/{web_features_overview_ui_action-button_tsx_14-5f45xbzbi6._.js.map → web_features_overview_ui_10mb24kjiffea._.js.map} +1 -1
  286. package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js +1 -1
  287. package/web/.next/server/middleware-build-manifest.js +15 -3
  288. package/web/.next/server/next-font-manifest.js +1 -1
  289. package/web/.next/server/next-font-manifest.json +4 -0
  290. package/web/.next/server/pages/500.html +1 -1
  291. package/web/.next/server/preview-props.json +3 -3
  292. package/web/.next/server/server-reference-manifest.js +1 -1
  293. package/web/.next/server/server-reference-manifest.json +57 -31
  294. package/web/.next/static/chunks/10wzmy096av_5.css +3 -0
  295. package/web/.next/static/chunks/{21s2_ccrw90ok.js → 1ffk4chq_kmie.js} +1 -1
  296. package/web/.next/static/chunks/{3tss77vu57zju.js → 1nyfzf-d7kj96.js} +1 -1
  297. package/web/.next/static/chunks/202avng4-d5jq.js +1 -0
  298. package/web/.next/static/chunks/{1juj2_tl8d16x.js → 26kio8jl2dc6u.js} +1 -1
  299. package/web/.next/static/chunks/2cd4e71s711ad.js +1 -0
  300. package/web/.next/static/chunks/2i3ydqqupow_x.js +1 -0
  301. package/web/.next/static/chunks/2jvq5fses35mf.js +1 -0
  302. package/web/.next/static/chunks/2riya89_i0je8.js +1 -0
  303. package/web/.next/static/chunks/{3o8h4o3utbvgc.js → 2sx1mxv2u71xx.js} +1 -1
  304. package/web/.next/static/chunks/3_pwm8b3mf4mf.js +1 -0
  305. package/web/.next/static/chunks/{2hsi-sahla2aj.js → 3f3s544ovqebz.js} +1 -1
  306. package/web/.next/static/chunks/{2x00o45pdbkok.js → 3x_8doukmdfpu.js} +1 -1
  307. package/web/.next/static/chunks/{1pafc2gfswboo.js → 3yunex2p9do7t.js} +1 -1
  308. package/web/.next/static/chunks/{2n2qsek2y94y5.js → 40sj32h7okqjq.js} +1 -1
  309. package/web/.next/trace +1 -1
  310. package/web/.next/trace-build +1 -1
  311. package/web/.next/types/routes.d.ts +2 -1
  312. package/web/.next/types/validator.ts +17 -0
  313. package/dist/core/parties/switch-tool.d.ts +0 -29
  314. package/dist/core/parties/switch-tool.js +0 -33
  315. package/dist/core/parties/switch-tool.js.map +0 -1
  316. package/web/.next/server/chunks/ssr/[root-of-the-server]__0m57jyae0dn_7._.js +0 -3
  317. package/web/.next/server/chunks/ssr/[root-of-the-server]__0m57jyae0dn_7._.js.map +0 -1
  318. package/web/.next/server/chunks/ssr/[root-of-the-server]__11w36a4le04vy._.js.map +0 -1
  319. package/web/.next/server/chunks/ssr/[root-of-the-server]__1k25lo5ka4mgd._.js +0 -3
  320. package/web/.next/server/chunks/ssr/[root-of-the-server]__1k25lo5ka4mgd._.js.map +0 -1
  321. package/web/.next/server/chunks/ssr/[root-of-the-server]__1yjb00o7x58xv._.js +0 -3
  322. package/web/.next/server/chunks/ssr/[root-of-the-server]__1yjb00o7x58xv._.js.map +0 -1
  323. package/web/.next/server/chunks/ssr/node_modules_0cyjln1rocvt5._.js +0 -3
  324. package/web/.next/server/chunks/ssr/node_modules_0cyjln1rocvt5._.js.map +0 -1
  325. package/web/.next/server/chunks/ssr/node_modules_1ins1z8o_qrka._.js +0 -3
  326. package/web/.next/server/chunks/ssr/node_modules_1ins1z8o_qrka._.js.map +0 -1
  327. package/web/.next/server/chunks/ssr/web_features_0i_kwiszuiqcp._.js +0 -3
  328. package/web/.next/server/chunks/ssr/web_features_0i_kwiszuiqcp._.js.map +0 -1
  329. package/web/.next/server/chunks/ssr/web_features_1--8ungjj--ht._.js +0 -3
  330. package/web/.next/server/chunks/ssr/web_features_1--8ungjj--ht._.js.map +0 -1
  331. package/web/.next/server/chunks/ssr/web_features_1qq_ruz59ldc9._.js +0 -3
  332. package/web/.next/server/chunks/ssr/web_features_1qq_ruz59ldc9._.js.map +0 -1
  333. package/web/.next/server/chunks/ssr/web_features_forms_form-state_ts_2142hiopykfk1._.js +0 -3
  334. package/web/.next/server/chunks/ssr/web_features_forms_form-state_ts_2142hiopykfk1._.js.map +0 -1
  335. package/web/.next/server/chunks/ssr/web_features_outside-party_ui_20x5u9bhxeehi._.js +0 -3
  336. package/web/.next/server/chunks/ssr/web_features_outside-party_ui_20x5u9bhxeehi._.js.map +0 -1
  337. package/web/.next/server/chunks/ssr/web_features_overview_16dyz2ngvs14b._.js +0 -3
  338. package/web/.next/static/chunks/183mifyxtyab5.css +0 -3
  339. package/web/.next/static/chunks/1bnlc-p1_cm01.js +0 -1
  340. package/web/.next/static/chunks/1ca21kggixrjz.js +0 -1
  341. package/web/.next/static/chunks/2-t4g6oq6tjkg.js +0 -1
  342. package/web/.next/static/chunks/2l27ty2dy2pb4.js +0 -1
  343. /package/web/.next/static/{3whgLnRJ9iJe_25h6KGzQ → JmnMsO8U6uK0nukLKdccI}/_buildManifest.js +0 -0
  344. /package/web/.next/static/{3whgLnRJ9iJe_25h6KGzQ → JmnMsO8U6uK0nukLKdccI}/_clientMiddlewareManifest.js +0 -0
  345. /package/web/.next/static/{3whgLnRJ9iJe_25h6KGzQ → JmnMsO8U6uK0nukLKdccI}/_ssgManifest.js +0 -0
@@ -0,0 +1,45 @@
1
+ import type { StateA2aAgent } from '../a2a-out/state-a2a-agent.js';
2
+ import type { Actor } from '../actors/authenticate-actor.js';
3
+ import type { ActorCredential, CredentialOf } from '../actors/credential-of.js';
4
+ import type { ConnectionStore, FleetDoor } from '../connection/ports.js';
5
+ import type { StateParty } from '../mcp-out/state-party.js';
6
+ import { type DomainError } from '../shared/errors.js';
7
+ import { type Result } from '../shared/result.js';
8
+ import type { PartyStore, ProxyShipsAsActor, ScopeRequirementsStore } from './ports.js';
9
+ import type { ScopeRequirements } from './scope-requirements.js';
10
+ export type SetScopeRequirementsRefusal = DomainError<'NOT_AN_APPROVER' | 'NO_SUCH_PARTY' | 'PARTY_NOT_COMMISSIONED' | 'NOT_REACHABLE' | 'NO_SUCH_TOOL' | 'NOT_CONNECTED' | 'FLEET_UNAVAILABLE' | 'SCOPE_NOT_LISTED' | 'CONFLICT'>;
11
+ export type SetScopeRequirements = (input: {
12
+ actor: Actor;
13
+ as: ActorCredential;
14
+ name: string;
15
+ /** The requirements' version the change was made on, as the approver read them. */
16
+ version: number;
17
+ party?: readonly string[];
18
+ tools: ReadonlyMap<string, readonly string[]>;
19
+ }) => Promise<Result<{
20
+ requirements: ScopeRequirements; /** Why the proxy ship's statement waits for its next one; none when the fleet sees the change now. */
21
+ statementRefusal: string | null;
22
+ }, SetScopeRequirementsRefusal>>;
23
+ /**
24
+ * Use case: an approver sets which scopes a calling ship needs (design
25
+ * gateway-scopes, 4.2, A2): for an outside MCP server the party's set and
26
+ * any tool's, for an outside A2A agent its set as a whole. The fleet, asked
27
+ * as the approver, must answer that it manages the proxy ship before
28
+ * anything changes, clearing included; it records a refusal. Every scope must
29
+ * be one the fleet lists now, core's, a plugin's or the fleet's own: any may
30
+ * be required (0016). The change is made only on the version the approver
31
+ * read, so two approvers never overwrite each other unseen. The change is
32
+ * kept first, so the check holds at once, then the proxy ship is stated
33
+ * anew with what each capability needs (P1); while it cannot be, the
34
+ * statement waits for its next one.
35
+ */
36
+ export declare function createSetScopeRequirements(deps: {
37
+ parties: PartyStore;
38
+ requirements: ScopeRequirementsStore;
39
+ connections: Pick<ConnectionStore, 'find'>;
40
+ door: Pick<FleetDoor, 'listScopes'>;
41
+ stateParty: StateParty;
42
+ stateA2aAgent: StateA2aAgent;
43
+ fleet: Pick<ProxyShipsAsActor, 'checkManage'>;
44
+ credentialOf: CredentialOf;
45
+ }): SetScopeRequirements;
@@ -0,0 +1,48 @@
1
+ import { refuse } from '../shared/errors.js';
2
+ import { ok } from '../shared/result.js';
3
+ import { approvedParty } from './check-approving.js';
4
+ const unique = (scopes) => [...new Set(scopes)];
5
+ /**
6
+ * Use case: an approver sets which scopes a calling ship needs (design
7
+ * gateway-scopes, 4.2, A2): for an outside MCP server the party's set and
8
+ * any tool's, for an outside A2A agent its set as a whole. The fleet, asked
9
+ * as the approver, must answer that it manages the proxy ship before
10
+ * anything changes, clearing included; it records a refusal. Every scope must
11
+ * be one the fleet lists now, core's, a plugin's or the fleet's own: any may
12
+ * be required (0016). The change is made only on the version the approver
13
+ * read, so two approvers never overwrite each other unseen. The change is
14
+ * kept first, so the check holds at once, then the proxy ship is stated
15
+ * anew with what each capability needs (P1); while it cannot be, the
16
+ * statement waits for its next one.
17
+ */
18
+ export function createSetScopeRequirements(deps) {
19
+ return async ({ actor, as, name, version, party, tools }) => {
20
+ const approved = await approvedParty(deps, { actor, as, name });
21
+ if (!approved.isOk) {
22
+ return approved;
23
+ }
24
+ const { party: kept, gateway } = approved.value;
25
+ if (kept.kind === 'a2aAgent' && tools.size > 0) {
26
+ return refuse('NO_SUCH_TOOL', `${name} is an outside A2A agent: its messages name no tool, so set the scopes it needs as a whole`);
27
+ }
28
+ const change = { ...(party === undefined ? {} : { party: unique(party) }), tools: new Map([...tools].map(([tool, scopes]) => [tool, unique(scopes)])) };
29
+ const required = unique([...(change.party ?? []), ...[...change.tools.values()].flat()]);
30
+ if (required.length > 0) {
31
+ const listed = await deps.door.listScopes(gateway.crewToken);
32
+ if (!listed.isOk) {
33
+ return refuse('FLEET_UNAVAILABLE', `The fleet did not say which scopes it lists: ${listed.error.message}`);
34
+ }
35
+ const unlisted = required.filter((scope) => !listed.value.some((each) => each.scope === scope));
36
+ if (unlisted.length > 0) {
37
+ return refuse('SCOPE_NOT_LISTED', `The fleet lists no scope ${unlisted.join(' or ')}: define it first, or pick a listed one`);
38
+ }
39
+ }
40
+ const changed = await deps.requirements.change({ fleetId: actor.fleetId, name }, { ...change, version });
41
+ if (changed === undefined) {
42
+ return refuse('CONFLICT', 'The requirements changed since you opened this page');
43
+ }
44
+ const stated = await (kept.kind === 'mcpServer' ? deps.stateParty : deps.stateA2aAgent)({ fleetId: actor.fleetId, name });
45
+ return ok({ requirements: changed, statementRefusal: stated.isOk ? null : stated.error.message });
46
+ };
47
+ }
48
+ //# sourceMappingURL=set-scope-requirements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-scope-requirements.js","sourceRoot":"","sources":["../../../src/core/parties/set-scope-requirements.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { Actor } from '../actors/authenticate-actor.js';
2
+ import type { ActorCredential, CredentialOf } from '../actors/credential-of.js';
3
+ import type { ConnectionStore } from '../connection/ports.js';
4
+ import type { McpServers } from '../mcp-out/ports.js';
5
+ import type { StateParty } from '../mcp-out/state-party.js';
6
+ import { type DomainError } from '../shared/errors.js';
7
+ import { type Result } from '../shared/result.js';
8
+ import { type ApprovingRefusal } from './check-approving.js';
9
+ import type { PartyStore, ProxyShipsAsActor } from './ports.js';
10
+ export type SwitchToolsRefusal = ApprovingRefusal | DomainError<'SERVER_UNREACHABLE' | 'NO_SUCH_TOOL'>;
11
+ export type SwitchTools = (input: {
12
+ actor: Actor;
13
+ as: ActorCredential;
14
+ name: string;
15
+ tools: readonly string[];
16
+ isOn: boolean;
17
+ }) => Promise<Result<{
18
+ tools: string[];
19
+ isOn: boolean; /** Why the proxy ship's statement waits for its next one; none when the fleet sees the switches now. */
20
+ statementRefusal: string | null;
21
+ }, SwitchToolsRefusal>>;
22
+ /**
23
+ * Use case: an approver switches tools of an outside MCP server on or off
24
+ * (aeolus-fleet#1151), one or every one selected on its page (gateway scopes
25
+ * 4.3), for the party as a whole: every ship that may reach it reaches the
26
+ * same tools. The fleet, asked as the approver, must answer that it manages
27
+ * the proxy ship before anything changes (A2). The selection is kept in one change, all of it or none, so a
28
+ * call to a tool switched off is refused at once, then the proxy ship is
29
+ * stated anew once; while it cannot be, the switches wait for its next
30
+ * statement.
31
+ */
32
+ export declare function createSwitchTools(deps: {
33
+ parties: PartyStore;
34
+ servers: McpServers;
35
+ stateParty: StateParty;
36
+ connections: Pick<ConnectionStore, 'find'>;
37
+ fleet: Pick<ProxyShipsAsActor, 'checkManage'>;
38
+ credentialOf: CredentialOf;
39
+ }): SwitchTools;
@@ -0,0 +1,38 @@
1
+ import { refuse } from '../shared/errors.js';
2
+ import { ok } from '../shared/result.js';
3
+ import { approvedParty } from './check-approving.js';
4
+ /**
5
+ * Use case: an approver switches tools of an outside MCP server on or off
6
+ * (aeolus-fleet#1151), one or every one selected on its page (gateway scopes
7
+ * 4.3), for the party as a whole: every ship that may reach it reaches the
8
+ * same tools. The fleet, asked as the approver, must answer that it manages
9
+ * the proxy ship before anything changes (A2). The selection is kept in one change, all of it or none, so a
10
+ * call to a tool switched off is refused at once, then the proxy ship is
11
+ * stated anew once; while it cannot be, the switches wait for its next
12
+ * statement.
13
+ */
14
+ export function createSwitchTools(deps) {
15
+ return async ({ actor, as, name, tools, isOn }) => {
16
+ const approved = await approvedParty(deps, { actor, as, name });
17
+ if (!approved.isOk) {
18
+ return approved;
19
+ }
20
+ const { party } = approved.value;
21
+ if (party.kind !== 'mcpServer') {
22
+ return refuse('NO_SUCH_PARTY', `There is no outside MCP server ${name}`);
23
+ }
24
+ const listed = await deps.servers.listTools({ url: party.url, credential: party.credential });
25
+ if (!listed.isOk) {
26
+ return refuse('SERVER_UNREACHABLE', `The MCP server of ${name} could not be listed: ${listed.error.reason}`);
27
+ }
28
+ const names = listed.value.map((each) => each.name);
29
+ const unlisted = tools.filter((tool) => !names.includes(tool));
30
+ if (unlisted.length > 0) {
31
+ return refuse('NO_SUCH_TOOL', `The MCP server of ${name} lists no tool ${unlisted.join(' or ')} now`);
32
+ }
33
+ await deps.parties.switchTools({ fleetId: actor.fleetId, name }, { listed: names, switched: new Map(tools.map((tool) => [tool, isOn])) });
34
+ const stated = await deps.stateParty({ fleetId: actor.fleetId, name });
35
+ return ok({ tools: [...tools], isOn, statementRefusal: stated.isOk ? null : stated.error.message });
36
+ };
37
+ }
38
+ //# sourceMappingURL=switch-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch-tools.js","sourceRoot":"","sources":["../../../src/core/parties/switch-tools.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAyB,MAAM,sBAAsB,CAAC;AAS5E;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAOjC;IACC,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;QAChD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC/B,OAAO,MAAM,CAAC,eAAe,EAAE,kCAAkC,IAAI,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9F,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC,oBAAoB,EAAE,qBAAqB,IAAI,yBAAyB,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/G,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC,cAAc,EAAE,qBAAqB,IAAI,kBAAkB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxG,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1I,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACtG,CAAC,CAAC;AACJ,CAAC"}
@@ -16,8 +16,10 @@ export declare const TOOL_NOT_ENABLED = "tool not enabled for this party";
16
16
  export interface SwitchedTool {
17
17
  name: string;
18
18
  description?: string;
19
- /** Whether the server says the tool changes nothing (its readOnlyHint): a hint, never trusted on its own. */
20
- isReadOnly: boolean;
19
+ /** Whether the server says the tool changes nothing, its readOnlyHint as it gives it: a hint, never trusted on its own; none when it says nothing. */
20
+ isReadOnly?: boolean;
21
+ /** Whether the server says the tool may destroy what it changes, its destructiveHint as it gives it; none when it says nothing. */
22
+ isDestructive?: boolean;
21
23
  isOn: boolean;
22
24
  isNew: boolean;
23
25
  }
@@ -9,7 +9,8 @@ export function switchedToolsOf(listed, switches) {
9
9
  return listed.map(({ name, description, annotations }) => ({
10
10
  name,
11
11
  ...(description === undefined ? {} : { description }),
12
- isReadOnly: annotations?.readOnlyHint === true,
12
+ ...(annotations?.readOnlyHint === undefined ? {} : { isReadOnly: annotations.readOnlyHint }),
13
+ ...(annotations?.destructiveHint === undefined ? {} : { isDestructive: annotations.destructiveHint }),
13
14
  isOn: isToolOn(switches, name),
14
15
  isNew: switches !== null && !switches.has(name),
15
16
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"tool-switches.js","sourceRoot":"","sources":["../../../src/core/parties/tool-switches.ts"],"names":[],"mappings":"AAcA,8FAA8F;AAC9F,MAAM,CAAC,MAAM,gBAAgB,GAAG,iCAAiC,CAAC;AAYlE,kGAAkG;AAClG,MAAM,UAAU,QAAQ,CAAC,QAA6B,EAAE,IAAY;IAClE,OAAO,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;AAC1D,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,eAAe,CAAC,MAA8B,EAAE,QAA6B;IAC3F,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;QACzD,IAAI;QACJ,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;QACrD,UAAU,EAAE,WAAW,EAAE,YAAY,KAAK,IAAI;QAC9C,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;QAC9B,KAAK,EAAE,QAAQ,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;KAChD,CAAC,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"tool-switches.js","sourceRoot":"","sources":["../../../src/core/parties/tool-switches.ts"],"names":[],"mappings":"AAcA,8FAA8F;AAC9F,MAAM,CAAC,MAAM,gBAAgB,GAAG,iCAAiC,CAAC;AAclE,kGAAkG;AAClG,MAAM,UAAU,QAAQ,CAAC,QAA6B,EAAE,IAAY;IAClE,OAAO,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;AAC1D,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,eAAe,CAAC,MAA8B,EAAE,QAA6B;IAC3F,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;QACzD,IAAI;QACJ,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;QACrD,GAAG,CAAC,WAAW,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,WAAW,CAAC,YAAY,EAAE,CAAC;QAC5F,GAAG,CAAC,WAAW,EAAE,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,WAAW,CAAC,eAAe,EAAE,CAAC;QACrG,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;QAC9B,KAAK,EAAE,QAAQ,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;KAChD,CAAC,CAAC,CAAC;AACN,CAAC"}
@@ -123,9 +123,10 @@ export interface PersonShipDoor {
123
123
  }): Promise<Result<{
124
124
  waiting: number;
125
125
  }, FleetRefusal>>;
126
- /** The ship's deliveries, up to max, its own held ones again first. */
126
+ /** The ship's deliveries, up to max, its own held ones again first; shouldSkipHanded leaves the handed ones out before the limit, so a new one is not shut out by held ones. */
127
127
  pushReceive(crewToken: string, take: {
128
128
  max: number;
129
+ shouldSkipHanded?: boolean;
129
130
  }): Promise<Result<PushedPersonDelivery[], FleetRefusal>>;
130
131
  /** Acknowledges a delivery the person opened: their own act confirms it (interop 5.1). */
131
132
  ack(crewToken: string, deliveryId: DeliveryId): Promise<Result<undefined, FleetRefusal>>;
@@ -208,8 +209,9 @@ export interface WakeChannel {
208
209
  readonly windowMs: number;
209
210
  /** Whether the person turned it on (W8): nothing is on by default. */
210
211
  isOn(ship: PersonShip): Promise<boolean>;
211
- /** Sends the wake: whether it went out. */
212
+ /** Sends the wake: whether it went out. A refusal for good (refused) cannot be fixed by trying again; unavailable can succeed later. */
212
213
  wake(ship: PersonShip): Promise<Result<undefined, {
214
+ kind: 'refused' | 'unavailable';
213
215
  reason: string;
214
216
  }>>;
215
217
  }
@@ -1,40 +1,52 @@
1
- import type { FleetRefusal } from '../connection/ports.js';
2
- import type { Clock } from '../shared/clock.js';
3
- import { type Result } from '../shared/result.js';
4
- import type { FocusedPages, PersonShip, PersonShipDoor, WakeChannel, WakesSent } from './ports.js';
1
+ import type { FleetRefusal } from "../connection/ports.js";
2
+ import type { Clock } from "../shared/clock.js";
3
+ import { type Result } from "../shared/result.js";
4
+ import type { FocusedPages, PersonShip, PersonShipDoor, WakeChannel, WakeChannelName, WakesSent } from "./ports.js";
5
5
  /**
6
6
  * What a wake came to: nothing left to wake (settled), a wake held back
7
7
  * until the earliest window of a channel turned on ends (inWindow), or no
8
8
  * channel sent it, so it is tried again (failed).
9
9
  */
10
10
  export type WakeOutcome = {
11
- readonly kind: 'settled';
11
+ readonly kind: "settled";
12
12
  } | {
13
- readonly kind: 'inWindow';
13
+ readonly kind: "inWindow";
14
14
  readonly until: Date;
15
15
  } | {
16
- readonly kind: 'failed';
16
+ readonly kind: "failed";
17
17
  };
18
18
  export type WakePerson = (ship: PersonShip, crewToken: string) => Promise<Result<WakeOutcome, FleetRefusal>>;
19
19
  /**
20
20
  * Use case: wakes a person for what waits on their person ship (wake a
21
21
  * person, W3, W8). It takes the ship's deliveries with the gateway as their
22
- * waker; those never handed are fresh. Each channel the person turned on
22
+ * waker, leaving the handed ones out so ten held deliveries never shut a new
23
+ * one out; those never handed are fresh. Each channel the person turned on
23
24
  * whose window has passed sends one wake for all of them; each fresh
24
25
  * delivery is then handed no. 1, naming the first channel that went out, so
25
26
  * a delivery is woken once. A wake held back by a window, or that no
26
27
  * channel sent, hands nothing. Each channel's window is kept after the
27
28
  * hand-overs, so a gateway that stopped in between wakes again: one wake
28
- * more, nothing lost. While a page of the person is in focus, the page
29
+ * more, nothing lost. A fresh delivery sent before a channel's last wake
30
+ * that is still inside its window is one that wake covers: a hand-over the
31
+ * fleet refused is made again through that channel, never with a second
32
+ * wake. A channel that refused the wake for good ends the attempt, which is
33
+ * told, as asking again cannot help; while another channel's wake fails and is
34
+ * tried again, that channel is not asked again. While a page of the person is in focus, the page
29
35
  * shows what arrives (W6): each fresh delivery is handed through it and no
30
36
  * wake goes out.
31
37
  */
32
38
  export declare function createWakePerson(deps: {
33
- door: Pick<PersonShipDoor, 'pushReceive' | 'handed'>;
39
+ door: Pick<PersonShipDoor, "pushReceive" | "handed">;
34
40
  channels: readonly WakeChannel[];
35
41
  wakesSent: WakesSent;
36
42
  focused: FocusedPages;
37
43
  /** How long a page counts in focus since it was last seen so. */
38
44
  focusFreshMs: number;
39
45
  clock: Clock;
46
+ /** Tells that a channel refused the wake for good, so the attempt ended. */
47
+ attemptEnded: (ended: {
48
+ ship: PersonShip;
49
+ channel: WakeChannelName;
50
+ reason: string;
51
+ }) => void;
40
52
  }): WakePerson;
@@ -1,64 +1,125 @@
1
- import { RECEIVE_MAX_UPPER_BOUND } from '@aeolus-fleet/common';
2
- import { err, ok } from '../shared/result.js';
1
+ import { RECEIVE_MAX_UPPER_BOUND } from "@aeolus-fleet/common";
2
+ import { err, ok } from "../shared/result.js";
3
3
  /**
4
4
  * Use case: wakes a person for what waits on their person ship (wake a
5
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
6
+ * waker, leaving the handed ones out so ten held deliveries never shut a new
7
+ * one out; those never handed are fresh. Each channel the person turned on
7
8
  * whose window has passed sends one wake for all of them; each fresh
8
9
  * delivery is then handed no. 1, naming the first channel that went out, so
9
10
  * a delivery is woken once. A wake held back by a window, or that no
10
11
  * channel sent, hands nothing. Each channel's window is kept after the
11
12
  * 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
+ * more, nothing lost. A fresh delivery sent before a channel's last wake
14
+ * that is still inside its window is one that wake covers: a hand-over the
15
+ * fleet refused is made again through that channel, never with a second
16
+ * wake. A channel that refused the wake for good ends the attempt, which is
17
+ * told, as asking again cannot help; while another channel's wake fails and is
18
+ * tried again, that channel is not asked again. While a page of the person is in focus, the page
13
19
  * shows what arrives (W6): each fresh delivery is handed through it and no
14
20
  * wake goes out.
15
21
  */
16
22
  export function createWakePerson(deps) {
17
- return async (ship, crewToken) => {
23
+ /** Channels that refused for good during an attempt still failing, by person ship: a retry of that attempt does not ask them again. */
24
+ const refusedInAttempt = new Map();
25
+ const attemptKey = (ship) => `${ship.fleetId}/${ship.shipId}`;
26
+ const wakePerson = async (ship, crewToken) => {
18
27
  /** Hands each fresh delivery no. 1 through the channel, up to the first refusal: that refusal, or none. */
19
28
  const handEach = async (fresh, channel) => {
20
29
  for (const { deliveryId } of fresh) {
21
- const handed = await deps.door.handed(crewToken, { deliveryId, handOverNumber: 1, channel });
30
+ const handed = await deps.door.handed(crewToken, {
31
+ deliveryId,
32
+ handOverNumber: 1,
33
+ channel,
34
+ });
22
35
  if (!handed.isOk) {
23
36
  return handed.error;
24
37
  }
25
38
  }
26
39
  return undefined;
27
40
  };
28
- const taken = await deps.door.pushReceive(crewToken, { max: RECEIVE_MAX_UPPER_BOUND });
41
+ const taken = await deps.door.pushReceive(crewToken, {
42
+ max: RECEIVE_MAX_UPPER_BOUND,
43
+ shouldSkipHanded: true,
44
+ });
29
45
  if (!taken.isOk) {
30
46
  return taken;
31
47
  }
32
- const fresh = taken.value.filter(({ handOverNumber }) => handOverNumber === null);
33
- if (fresh.length === 0) {
34
- return ok({ kind: 'settled' });
48
+ const allFresh = taken.value.filter(({ handOverNumber }) => handOverNumber === null);
49
+ if (allFresh.length === 0) {
50
+ return ok({ kind: "settled" });
35
51
  }
36
52
  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);
53
+ const refused = await handEach(allFresh, "page");
54
+ return refused === undefined ? ok({ kind: "settled" }) : err(refused);
39
55
  }
40
- const turnedOn = (await Promise.all(deps.channels.map(async (channel) => ((await channel.isOn(ship)) ? [channel] : [])))).flat();
56
+ const turnedOn = (await Promise.all(deps.channels.map(async (channel) => (await channel.isOn(ship)) ? [channel] : []))).flat();
41
57
  if (turnedOn.length === 0) {
42
- return ok({ kind: 'settled' });
58
+ return ok({ kind: "settled" });
43
59
  }
44
60
  const now = deps.clock.now();
45
61
  const windows = await Promise.all(turnedOn.map(async (channel) => {
46
62
  const lastSentAt = await deps.wakesSent.lastSentAt(ship, channel.name);
47
- return { channel, endsAt: lastSentAt === undefined ? now : new Date(lastSentAt.getTime() + channel.windowMs) };
63
+ return {
64
+ channel,
65
+ lastSentAt,
66
+ endsAt: lastSentAt === undefined
67
+ ? now
68
+ : new Date(lastSentAt.getTime() + channel.windowMs),
69
+ };
48
70
  }));
49
- const due = windows.filter(({ endsAt }) => endsAt.getTime() <= now.getTime()).map(({ channel }) => channel);
71
+ // What a wake still inside its window covers was left unhanded by a refusal: hand it through that channel.
72
+ let fresh = allFresh;
73
+ for (const { channel, lastSentAt, endsAt } of windows) {
74
+ if (lastSentAt === undefined || endsAt.getTime() <= now.getTime()) {
75
+ continue;
76
+ }
77
+ const covered = fresh.filter(({ sentAt }) => sentAt.getTime() <= lastSentAt.getTime());
78
+ const refused = await handEach(covered, channel.name);
79
+ if (refused !== undefined) {
80
+ return err(refused);
81
+ }
82
+ fresh = fresh.filter((delivery) => !covered.includes(delivery));
83
+ }
84
+ if (fresh.length === 0) {
85
+ return ok({ kind: "settled" });
86
+ }
87
+ const refusedBefore = refusedInAttempt.get(attemptKey(ship)) ?? new Set();
88
+ const due = windows
89
+ .filter(({ channel, endsAt }) => endsAt.getTime() <= now.getTime() && !refusedBefore.has(channel.name))
90
+ .map(({ channel }) => channel);
50
91
  if (due.length === 0) {
51
- return ok({ kind: 'inWindow', until: new Date(Math.min(...windows.map(({ endsAt }) => endsAt.getTime()))) });
92
+ const waiting = windows.filter(({ channel }) => !refusedBefore.has(channel.name));
93
+ return ok(waiting.length === 0
94
+ ? { kind: "settled" }
95
+ : {
96
+ kind: "inWindow",
97
+ until: new Date(Math.min(...waiting.map(({ endsAt }) => endsAt.getTime()))),
98
+ });
52
99
  }
53
100
  const wentOut = [];
101
+ let isRetryable = false;
54
102
  for (const channel of due) {
55
- if ((await channel.wake(ship)).isOk) {
103
+ const woken = await channel.wake(ship);
104
+ if (woken.isOk) {
56
105
  wentOut.push(channel.name);
57
106
  }
107
+ else if (woken.error.kind === "refused") {
108
+ refusedBefore.add(channel.name);
109
+ refusedInAttempt.set(attemptKey(ship), refusedBefore);
110
+ deps.attemptEnded({
111
+ ship,
112
+ channel: channel.name,
113
+ reason: woken.error.reason,
114
+ });
115
+ }
116
+ else {
117
+ isRetryable = true;
118
+ }
58
119
  }
59
120
  const [firstOut] = wentOut;
60
121
  if (firstOut === undefined) {
61
- return ok({ kind: 'failed' });
122
+ return ok(isRetryable ? { kind: "failed" } : { kind: "settled" });
62
123
  }
63
124
  const refused = await handEach(fresh, firstOut);
64
125
  // 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.
@@ -68,7 +129,14 @@ export function createWakePerson(deps) {
68
129
  if (refused !== undefined) {
69
130
  return err(refused);
70
131
  }
71
- return ok({ kind: 'settled' });
132
+ return ok({ kind: "settled" });
133
+ };
134
+ return async (ship, crewToken) => {
135
+ const woken = await wakePerson(ship, crewToken);
136
+ if (!woken.isOk || woken.value.kind !== "failed") {
137
+ refusedInAttempt.delete(attemptKey(ship));
138
+ }
139
+ return woken;
72
140
  };
73
141
  }
74
142
  //# sourceMappingURL=wake-person.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wake-person.js","sourceRoot":"","sources":["../../../src/core/people/wake-person.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wake-person.js","sourceRoot":"","sources":["../../../src/core/people/wake-person.ts"],"names":[],"mappings":"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"}
@@ -28,7 +28,7 @@ export function createWebPushChannel(deps) {
28
28
  break;
29
29
  }
30
30
  }
31
- return isTaken ? ok(undefined) : err({ reason: 'no push service took the wake' });
31
+ return isTaken ? ok(undefined) : err({ kind: 'unavailable', reason: 'no push service took the wake' });
32
32
  },
33
33
  };
34
34
  }
@@ -1 +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"}
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,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,+BAA+B,EAAE,CAAC,CAAC;QACzG,CAAC;KACF,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' | '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' | 'NO_SUCH_MEETING' | 'MIC_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' | 'NO_SUCH_MEETING' | 'MIC_REFUSED' | 'SCOPE_NOT_LISTED' | 'CONFLICT';
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;AAoE5C,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;AAsE5C,qDAAqD;AACrD,MAAM,UAAU,MAAM,CAA4B,IAAO,EAAE,OAAe;IACxE,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAChC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aeolus-fleet/gateway",
3
- "version": "0.31.0",
3
+ "version": "0.32.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",
@@ -46,7 +46,7 @@
46
46
  },
47
47
  "dependencies": {
48
48
  "@a2a-js/sdk": "1.3.0",
49
- "@aeolus-fleet/common": "^0.31.0",
49
+ "@aeolus-fleet/common": "^0.32.0",
50
50
  "@base-ui/react": "^1.9.0",
51
51
  "@fastify/websocket": "^11.3.4",
52
52
  "@modelcontextprotocol/client": "^2.3.1",
@@ -69,7 +69,7 @@
69
69
  "zod": "^4.6.5"
70
70
  },
71
71
  "devDependencies": {
72
- "@aeolus-fleet/core": "^0.31.0",
72
+ "@aeolus-fleet/core": "^0.32.0",
73
73
  "@eslint/js": "^10.0.1",
74
74
  "@modelcontextprotocol/ext-tasks": "0.2.2",
75
75
  "@tailwindcss/postcss": "^4.3.3",
@@ -0,0 +1,3 @@
1
+ -- Gateway scopes (4.2): the scopes a calling ship needs, for the party as a whole and per tool, kept with the party, and the version they were last changed to.
2
+ ALTER TABLE "parties" ADD COLUMN "scope_requirements" JSONB;
3
+ ALTER TABLE "parties" ADD COLUMN "scope_requirements_version" INTEGER NOT NULL DEFAULT 0;