@aeolus-fleet/gateway 0.30.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.
- package/dist/adapters/fleet/core-version.d.ts +1 -1
- package/dist/adapters/fleet/core-version.js +1 -1
- package/dist/adapters/fleet/proxy-ships-as-actor.js +5 -1
- package/dist/adapters/fleet/proxy-ships-as-actor.js.map +1 -1
- package/dist/adapters/fleet/rest-fleet-door.d.ts +2 -0
- package/dist/adapters/fleet/rest-fleet-door.js +51 -7
- package/dist/adapters/fleet/rest-fleet-door.js.map +1 -1
- package/dist/adapters/http/mcp-endpoint.js +1 -1
- package/dist/adapters/http/mcp-endpoint.js.map +1 -1
- package/dist/adapters/http/person-tools.d.ts +4 -7
- package/dist/adapters/http/person-tools.js +76 -11
- package/dist/adapters/http/person-tools.js.map +1 -1
- package/dist/adapters/pagasae/email-channel.js +4 -2
- package/dist/adapters/pagasae/email-channel.js.map +1 -1
- package/dist/adapters/prisma/generated/commonInputTypes.d.ts +50 -50
- package/dist/adapters/prisma/generated/internal/class.js +4 -4
- package/dist/adapters/prisma/generated/internal/class.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +2 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js +2 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +2 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +2 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
- package/dist/adapters/prisma/generated/models/A2aPush.d.ts +0 -7
- package/dist/adapters/prisma/generated/models/Party.d.ts +70 -1
- package/dist/adapters/prisma/scope-requirements.d.ts +10 -0
- package/dist/adapters/prisma/scope-requirements.js +37 -0
- package/dist/adapters/prisma/scope-requirements.js.map +1 -0
- package/dist/adapters/trpc/router.d.ts +154 -8
- package/dist/adapters/trpc/router.js +130 -11
- package/dist/adapters/trpc/router.js.map +1 -1
- package/dist/app.js +38 -9
- package/dist/app.js.map +1 -1
- package/dist/core/a2a-out/agent-event.d.ts +1 -1
- package/dist/core/a2a-out/agent-event.js +2 -2
- package/dist/core/a2a-out/agent-event.js.map +1 -1
- package/dist/core/a2a-out/agent-statement.d.ts +2 -1
- package/dist/core/a2a-out/agent-statement.js +5 -2
- package/dist/core/a2a-out/agent-statement.js.map +1 -1
- package/dist/core/a2a-out/hand-a2a-message.d.ts +7 -2
- package/dist/core/a2a-out/hand-a2a-message.js +15 -1
- package/dist/core/a2a-out/hand-a2a-message.js.map +1 -1
- package/dist/core/a2a-out/read-agent-statement.d.ts +1 -0
- package/dist/core/a2a-out/read-agent-statement.js +1 -1
- package/dist/core/a2a-out/read-agent-statement.js.map +1 -1
- package/dist/core/a2a-out/state-a2a-agent.d.ts +3 -2
- package/dist/core/a2a-out/state-a2a-agent.js +3 -2
- package/dist/core/a2a-out/state-a2a-agent.js.map +1 -1
- package/dist/core/account-sign-in/account-in-view.d.ts +10 -1
- package/dist/core/account-sign-in/account-in-view.js +17 -4
- package/dist/core/account-sign-in/account-in-view.js.map +1 -1
- package/dist/core/connection/ports.d.ts +8 -0
- package/dist/core/mcp-out/hand-call.d.ts +6 -2
- package/dist/core/mcp-out/hand-call.js +14 -1
- package/dist/core/mcp-out/hand-call.js.map +1 -1
- package/dist/core/mcp-out/state-party.d.ts +3 -2
- package/dist/core/mcp-out/state-party.js +2 -2
- package/dist/core/mcp-out/state-party.js.map +1 -1
- package/dist/core/mcp-out/statement.d.ts +16 -0
- package/dist/core/mcp-out/statement.js +10 -3
- package/dist/core/mcp-out/statement.js.map +1 -1
- package/dist/core/meetings/change-own-mic.d.ts +24 -0
- package/dist/core/meetings/change-own-mic.js +21 -0
- package/dist/core/meetings/change-own-mic.js.map +1 -0
- package/dist/core/meetings/mic-standing.d.ts +18 -0
- package/dist/core/meetings/mic-standing.js +11 -0
- package/dist/core/meetings/mic-standing.js.map +1 -0
- package/dist/core/meetings/ports.d.ts +70 -0
- package/dist/core/meetings/ports.js +2 -0
- package/dist/core/meetings/ports.js.map +1 -0
- package/dist/core/meetings/read-meeting.d.ts +30 -0
- package/dist/core/meetings/read-meeting.js +26 -0
- package/dist/core/meetings/read-meeting.js.map +1 -0
- package/dist/core/operator/ports.d.ts +4 -4
- package/dist/core/parties/add-a2a-agent.js +1 -1
- package/dist/core/parties/add-a2a-agent.js.map +1 -1
- package/dist/core/parties/check-approving.d.ts +36 -0
- package/dist/core/parties/check-approving.js +48 -0
- package/dist/core/parties/check-approving.js.map +1 -0
- package/dist/core/parties/check-required-scopes.d.ts +34 -0
- package/dist/core/parties/check-required-scopes.js +27 -0
- package/dist/core/parties/check-required-scopes.js.map +1 -0
- package/dist/core/parties/ports.d.ts +21 -0
- package/dist/core/parties/read-listed-scopes.d.ts +17 -0
- package/dist/core/parties/read-listed-scopes.js +23 -0
- package/dist/core/parties/read-listed-scopes.js.map +1 -0
- package/dist/core/parties/read-scope-requirements.d.ts +18 -0
- package/dist/core/parties/read-scope-requirements.js +17 -0
- package/dist/core/parties/read-scope-requirements.js.map +1 -0
- package/dist/core/parties/scope-requirements.d.ts +34 -0
- package/dist/core/parties/scope-requirements.js +37 -0
- package/dist/core/parties/scope-requirements.js.map +1 -0
- package/dist/core/parties/set-scope-requirements.d.ts +45 -0
- package/dist/core/parties/set-scope-requirements.js +48 -0
- package/dist/core/parties/set-scope-requirements.js.map +1 -0
- package/dist/core/parties/switch-tools.d.ts +39 -0
- package/dist/core/parties/switch-tools.js +38 -0
- package/dist/core/parties/switch-tools.js.map +1 -0
- package/dist/core/parties/tool-switches.d.ts +4 -2
- package/dist/core/parties/tool-switches.js +2 -1
- package/dist/core/parties/tool-switches.js.map +1 -1
- package/dist/core/people/inbox-entry.d.ts +2 -2
- package/dist/core/people/inbox-entry.js +9 -2
- package/dist/core/people/inbox-entry.js.map +1 -1
- package/dist/core/people/open-delivery.d.ts +3 -1
- package/dist/core/people/open-delivery.js +1 -1
- package/dist/core/people/open-delivery.js.map +1 -1
- package/dist/core/people/ports.d.ts +11 -4
- package/dist/core/people/wake-person.d.ts +22 -10
- package/dist/core/people/wake-person.js +88 -20
- package/dist/core/people/wake-person.js.map +1 -1
- package/dist/core/people/web-push-channel.js +1 -1
- package/dist/core/people/web-push-channel.js.map +1 -1
- package/dist/core/shared/errors.d.ts +1 -1
- package/dist/core/shared/errors.js.map +1 -1
- package/package.json +3 -3
- package/src/adapters/prisma/migrations/20261025140000_scope_requirements/migration.sql +3 -0
- package/src/adapters/prisma/schema.prisma +69 -65
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/app-path-routes-manifest.json +2 -0
- package/web/.next/build-manifest.json +27 -3
- package/web/.next/diagnostics/route-bundle-stats.json +122 -70
- package/web/.next/fallback-build-manifest.json +3 -3
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/routes-manifest.json +14 -0
- package/web/.next/server/app/(console)/gateway-off/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(console)/gateway-off/page/build-manifest.json +23 -0
- package/web/.next/server/app/(console)/gateway-off/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/(console)/gateway-off/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/(console)/gateway-off/page/server-reference-manifest.json +15 -0
- package/web/.next/server/app/(console)/gateway-off/page.js +19 -0
- package/web/.next/server/app/(console)/gateway-off/page.js.map +5 -0
- package/web/.next/server/app/(console)/gateway-off/page.js.nft.json +1 -0
- package/web/.next/server/app/(console)/gateway-off/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(console)/meetings/[meetingId]/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(console)/meetings/[meetingId]/page/build-manifest.json +23 -0
- package/web/.next/server/app/(console)/meetings/[meetingId]/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/(console)/meetings/[meetingId]/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/(console)/meetings/[meetingId]/page/server-reference-manifest.json +35 -0
- package/web/.next/server/app/(console)/meetings/[meetingId]/page.js +21 -0
- package/web/.next/server/app/(console)/meetings/[meetingId]/page.js.map +5 -0
- package/web/.next/server/app/(console)/meetings/[meetingId]/page.js.nft.json +1 -0
- package/web/.next/server/app/(console)/meetings/[meetingId]/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page/server-reference-manifest.json +17 -7
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js +4 -4
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/page/server-reference-manifest.json +15 -5
- package/web/.next/server/app/(console)/outside-parties/[name]/page.js +4 -4
- package/web/.next/server/app/(console)/outside-parties/[name]/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/server-reference-manifest.json +17 -7
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js +4 -4
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/add/page/server-reference-manifest.json +17 -7
- package/web/.next/server/app/(console)/outside-parties/add/page.js +3 -4
- package/web/.next/server/app/(console)/outside-parties/add/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/add/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/server-reference-manifest.json +2 -2
- package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/server-reference-manifest.json +2 -2
- package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/page/server-reference-manifest.json +2 -2
- package/web/.next/server/app/(console)/outside-parties/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/overview/changes/route.js.nft.json +1 -1
- package/web/.next/server/app/(console)/overview/focus/route.js.nft.json +1 -1
- package/web/.next/server/app/(console)/overview/page/server-reference-manifest.json +7 -7
- package/web/.next/server/app/(console)/overview/page.js +3 -3
- package/web/.next/server/app/(console)/overview/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/overview/requests/[requestId]/page/server-reference-manifest.json +2 -2
- package/web/.next/server/app/(console)/overview/requests/[requestId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/overview/requests/[requestId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/parties/page/server-reference-manifest.json +7 -7
- package/web/.next/server/app/(console)/parties/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/parties/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/sign-in/failed/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/(console)/sign-in/failed/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/sign-in/failed/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error.html +1 -1
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/authorize/failed/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/authorize/failed/page.js.nft.json +1 -1
- package/web/.next/server/app/authorize/failed/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/authorize/pick/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/authorize/pick/page.js.nft.json +1 -1
- package/web/.next/server/app/authorize/pick/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/authorize/waiting/approval/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/authorize/waiting/approval/page.js.nft.json +1 -1
- package/web/.next/server/app/authorize/waiting/approval/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app-paths-manifest.json +2 -0
- package/web/.next/server/chunks/[root-of-the-server]__0ykc8bq_c06a1._.js +10 -10
- package/web/.next/server/chunks/[root-of-the-server]__0ykc8bq_c06a1._.js.map +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js.map +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js.map +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js.map +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js.map +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js.map +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0-og0bl8lr2xq._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0-og0bl8lr2xq._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__00erqdm9cmhh7._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__00erqdm9cmhh7._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__00q22dte1g2ww._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__00q22dte1g2ww._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0n2us07jk-78w._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rr5u24i9tjyc._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1-c9wugbbwsp3._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1-c9wugbbwsp3._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__11w36a4le04vy._.js → [root-of-the-server]__1dc6okf5os70a._.js} +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1dc6okf5os70a._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1dtyycvqa6uht._.js +1 -1
- package/web/.next/server/chunks/ssr/_0-lfpqqlgfhzj._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_00dg5cvqofspn._.js +3 -0
- package/web/.next/server/chunks/ssr/_00dg5cvqofspn._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js +1 -1
- package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js +2 -2
- package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0_kakdt7lb6z-._.js +3 -0
- package/web/.next/server/chunks/ssr/_0_kakdt7lb6z-._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0bhvvyz0q_0ja._.js +1 -1
- package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js +4 -0
- package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js +1 -1
- package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0w2ptjht34s6t._.js +3 -0
- package/web/.next/server/chunks/ssr/_0w2ptjht34s6t._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js +1 -1
- package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_1_wav28san6dm._.js +1 -1
- package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js +1 -1
- package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js +1 -1
- package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_1uuy6gkkhq6bx._.js +3 -0
- package/web/.next/server/chunks/ssr/_1uuy6gkkhq6bx._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1y1ovmdhl9_ml._.js +3 -0
- package/web/.next/server/chunks/ssr/_1y1ovmdhl9_ml._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_07sxnbglqc5q9._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_07sxnbglqc5q9._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_0_cxkn6vujxay._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_0_cxkn6vujxay._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_0qlo87g8tugr4._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_0qlo87g8tugr4._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_15ceu3jhtifcw._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_15ceu3jhtifcw._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1jvz31plyg2f-._.js +1 -1
- package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_1jvz31plyg2f-._.js.map +1 -1
- package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_utils_FloatingPortalLite_mjs_1uzc1ezeugtex._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_utils_FloatingPortalLite_mjs_1uzc1ezeugtex._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1s46s8vlfx01v.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1s46s8vlfx01v.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_20d8hq6wsqwh_.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_20d8hq6wsqwh_.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_0-ufi2al5ubig._.js +1 -1
- package/web/.next/server/chunks/ssr/web_0-ufi2al5ubig._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_09zipglxee7tv._.js +3 -0
- package/web/.next/server/chunks/ssr/web_09zipglxee7tv._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_0v-7sowo0hupw._.js +1 -1
- package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js +1 -1
- package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_1wcpaty_bz55q._.js +3 -0
- package/web/.next/server/chunks/ssr/web_1wcpaty_bz55q._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js +1 -1
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js.map +1 -1
- package/web/.next/server/chunks/ssr/{web_features_0ahlkugj7fu3n._.js → web_features_0xbnkk4hfgr9v._.js} +2 -2
- package/web/.next/server/chunks/ssr/{web_features_0ahlkugj7fu3n._.js.map → web_features_0xbnkk4hfgr9v._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/web_features_0xnlgtw8bfqaa._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_10xz3ojtvfi7h._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_10xz3ojtvfi7h._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_1_2m6l73qk7qw._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_1k6q2m0sl54-8._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_1k6q2m0sl54-8._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_forms_1u0akr22eh_x_._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_forms_1u0akr22eh_x_._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_frame_0pe8cwpxe1egb._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_outside-party_0_9c27knfvw7u._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_outside-party_0_9c27knfvw7u._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_overview_0udx5lm8igils._.js +3 -0
- package/web/.next/server/chunks/ssr/{web_features_overview_16dyz2ngvs14b._.js.map → web_features_overview_0udx5lm8igils._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_overview_state_1wuk95dw2_whp._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_overview_state_1wuk95dw2_whp._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_overview_ui_10mb24kjiffea._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_overview_ui_10mb24kjiffea._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js +1 -1
- package/web/.next/server/middleware-build-manifest.js +27 -3
- package/web/.next/server/next-font-manifest.js +1 -1
- package/web/.next/server/next-font-manifest.json +8 -0
- package/web/.next/server/pages/500.html +1 -1
- package/web/.next/server/preview-props.json +3 -3
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +76 -26
- package/web/.next/static/chunks/10wzmy096av_5.css +3 -0
- package/web/.next/static/chunks/{2_41h3v090ur9.js → 1ffk4chq_kmie.js} +1 -1
- package/web/.next/static/chunks/1nyfzf-d7kj96.js +1 -0
- package/web/.next/static/chunks/202avng4-d5jq.js +1 -0
- package/web/.next/static/chunks/{00njqo86bx2kb.js → 26kio8jl2dc6u.js} +1 -1
- package/web/.next/static/chunks/2cd4e71s711ad.js +1 -0
- package/web/.next/static/chunks/2i3ydqqupow_x.js +1 -0
- package/web/.next/static/chunks/2jvq5fses35mf.js +1 -0
- package/web/.next/static/chunks/2riya89_i0je8.js +1 -0
- package/web/.next/static/chunks/{31vy122d9fvme.js → 2sx1mxv2u71xx.js} +1 -1
- package/web/.next/static/chunks/3_pwm8b3mf4mf.js +1 -0
- package/web/.next/static/chunks/3f3s544ovqebz.js +1 -0
- package/web/.next/static/chunks/{2x00o45pdbkok.js → 3x_8doukmdfpu.js} +1 -1
- package/web/.next/static/chunks/{3apnqdh48__yw.js → 3yunex2p9do7t.js} +1 -1
- package/web/.next/static/chunks/{1aa1d23q1vokr.js → 40sj32h7okqjq.js} +1 -1
- package/web/.next/trace +1 -1
- package/web/.next/trace-build +1 -1
- package/web/.next/types/routes.d.ts +3 -1
- package/web/.next/types/validator.ts +34 -0
- package/dist/core/parties/switch-tool.d.ts +0 -29
- package/dist/core/parties/switch-tool.js +0 -33
- package/dist/core/parties/switch-tool.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0m57jyae0dn_7._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0m57jyae0dn_7._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__11w36a4le04vy._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1k25lo5ka4mgd._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1k25lo5ka4mgd._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1yjb00o7x58xv._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1yjb00o7x58xv._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_0cyjln1rocvt5._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_0cyjln1rocvt5._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_1ins1z8o_qrka._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_1ins1z8o_qrka._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_0i_kwiszuiqcp._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_0i_kwiszuiqcp._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_1--8ungjj--ht._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_1--8ungjj--ht._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_1qq_ruz59ldc9._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_1qq_ruz59ldc9._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_forms_form-state_ts_2142hiopykfk1._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_forms_form-state_ts_2142hiopykfk1._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_outside-party_ui_20x5u9bhxeehi._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_outside-party_ui_20x5u9bhxeehi._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_overview_16dyz2ngvs14b._.js +0 -3
- package/web/.next/static/chunks/047i2x2j--shk.css +0 -3
- package/web/.next/static/chunks/0g4cpamshfwmn.js +0 -1
- package/web/.next/static/chunks/0j84uiid6fsim.js +0 -1
- package/web/.next/static/chunks/1ca21kggixrjz.js +0 -1
- package/web/.next/static/chunks/23ud2e13dn8f4.js +0 -1
- package/web/.next/static/chunks/3okm5g88ig1l3.js +0 -1
- /package/web/.next/static/{Az1CqrzgGHMZVR4nw9717 → JmnMsO8U6uK0nukLKdccI}/_buildManifest.js +0 -0
- /package/web/.next/static/{Az1CqrzgGHMZVR4nw9717 → JmnMsO8U6uK0nukLKdccI}/_clientMiddlewareManifest.js +0 -0
- /package/web/.next/static/{Az1CqrzgGHMZVR4nw9717 → JmnMsO8U6uK0nukLKdccI}/_ssgManifest.js +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type HandOutcome, type PushedDelivery } from '../mcp-out/hand-call.js';
|
|
2
|
+
import type { CheckRequiredScopes } from '../parties/check-required-scopes.js';
|
|
2
3
|
import type { A2aAgentParty } from '../parties/party.js';
|
|
3
|
-
import type { PartyStore } from '../parties/ports.js';
|
|
4
|
+
import type { PartyStore, ScopeRequirementsStore } from '../parties/ports.js';
|
|
4
5
|
import type { Clock } from '../shared/clock.js';
|
|
5
6
|
import type { AgentEndpoint } from './agent-endpoint.js';
|
|
6
7
|
import type { FollowAgentTask } from './follow-agent-task.js';
|
|
@@ -21,7 +22,9 @@ export type HandA2aMessage = (input: {
|
|
|
21
22
|
* replied rejected and handled. With no answer, it is handed again when the
|
|
22
23
|
* agent is repeatable (A9), else reported not handled. An answer to a reply
|
|
23
24
|
* the gateway sent continues that reply's task. Each step is kept before
|
|
24
|
-
* the next, so a delivery that comes again picks up where it stopped.
|
|
25
|
+
* the next, so a delivery that comes again picks up where it stopped. A
|
|
26
|
+
* message from a ship that lacks a scope the agent needs is answered so and
|
|
27
|
+
* never reaches the agent (design gateway-scopes, 4.2).
|
|
25
28
|
*/
|
|
26
29
|
export declare function createHandA2aMessage(deps: {
|
|
27
30
|
crew: AgentShipCrew;
|
|
@@ -30,6 +33,8 @@ export declare function createHandA2aMessage(deps: {
|
|
|
30
33
|
keys: AgentKeys;
|
|
31
34
|
statuses: GatewayStatuses;
|
|
32
35
|
parties: PartyStore;
|
|
36
|
+
requirements: ScopeRequirementsStore;
|
|
37
|
+
checkScopes: CheckRequiredScopes;
|
|
33
38
|
follow: FollowAgentTask;
|
|
34
39
|
clock: Clock;
|
|
35
40
|
deadlineMs: number;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { MAY_HAVE_RUN } from '../mcp-out/hand-call.js';
|
|
2
|
+
import { scopesNeeded } from '../parties/scope-requirements.js';
|
|
2
3
|
import { replyContentOf } from './agent-event.js';
|
|
3
4
|
import { outboundMessageOf } from './agent-message.js';
|
|
4
5
|
/** The channel the gateway hands an outside agent's delivery through (interop 5.1). */
|
|
@@ -14,7 +15,9 @@ const AGAIN = { kind: 'again' };
|
|
|
14
15
|
* replied rejected and handled. With no answer, it is handed again when the
|
|
15
16
|
* agent is repeatable (A9), else reported not handled. An answer to a reply
|
|
16
17
|
* the gateway sent continues that reply's task. Each step is kept before
|
|
17
|
-
* the next, so a delivery that comes again picks up where it stopped.
|
|
18
|
+
* the next, so a delivery that comes again picks up where it stopped. A
|
|
19
|
+
* message from a ship that lacks a scope the agent needs is answered so and
|
|
20
|
+
* never reaches the agent (design gateway-scopes, 4.2).
|
|
18
21
|
*/
|
|
19
22
|
export function createHandA2aMessage(deps) {
|
|
20
23
|
return async ({ party, endpoint, delivery, signal }) => {
|
|
@@ -99,6 +102,17 @@ export function createHandA2aMessage(deps) {
|
|
|
99
102
|
if (delivery.state === 'handed' && kept?.state !== 'notSent' && !isRepeatable) {
|
|
100
103
|
return mayHaveRun(call);
|
|
101
104
|
}
|
|
105
|
+
// The requirements and the sender's scopes as they are now, at hand-over: either may change while a message waits.
|
|
106
|
+
const needed = scopesNeeded(await deps.requirements.find(fleetId, party.name), null);
|
|
107
|
+
const checked = await deps.checkScopes({ fleetId, senderShipId: delivery.senderShipId, needing: party.name, needed });
|
|
108
|
+
switch (checked.kind) {
|
|
109
|
+
case 'unread':
|
|
110
|
+
return AGAIN;
|
|
111
|
+
case 'lacks':
|
|
112
|
+
return answered(undefined, { contentType: 'text/plain', payload: checked.message, key: checked.message });
|
|
113
|
+
case 'holds':
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
102
116
|
const handed = await deps.crew.handed(crewToken, { deliveryId: delivery.deliveryId, handOverNumber: (delivery.handOverNumber ?? 0) + 1, channel: A2A_CHANNEL });
|
|
103
117
|
if (!handed.isOk) {
|
|
104
118
|
return AGAIN;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hand-a2a-message.js","sourceRoot":"","sources":["../../../src/core/a2a-out/hand-a2a-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAyC,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"hand-a2a-message.js","sourceRoot":"","sources":["../../../src/core/a2a-out/hand-a2a-message.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,6 @@ export async function readAgentStatement(deps, agent) {
|
|
|
8
8
|
? refuse('CARD_UNREACHABLE', `The card of ${agent.name} could not be read: ${card.error.reason}`)
|
|
9
9
|
: refuse('CARD_INVALID', `The card address of ${agent.name} answers no agent card: ${card.error.reason}`);
|
|
10
10
|
}
|
|
11
|
-
return agentStatementOf({ partyName: agent.name, card: card.value, isRepeatable: agent.isRepeatable, timing: deps.timing });
|
|
11
|
+
return agentStatementOf({ partyName: agent.name, card: card.value, isRepeatable: agent.isRepeatable, timing: deps.timing, scopes: agent.scopes });
|
|
12
12
|
}
|
|
13
13
|
//# sourceMappingURL=read-agent-statement.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-agent-statement.js","sourceRoot":"","sources":["../../../src/core/a2a-out/read-agent-statement.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD,wKAAwK;AACxK,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAA+C,EAC/C,
|
|
1
|
+
{"version":3,"file":"read-agent-statement.js","sourceRoot":"","sources":["../../../src/core/a2a-out/read-agent-statement.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD,wKAAwK;AACxK,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAA+C,EAC/C,KAA0F;IAE1F,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa;YACtC,CAAC,CAAC,MAAM,CAAC,kBAAkB,EAAE,eAAe,KAAK,CAAC,IAAI,uBAAuB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACjG,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,uBAAuB,KAAK,CAAC,IAAI,2BAA2B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9G,CAAC;IACD,OAAO,gBAAgB,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AACpJ,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { FleetId } from '@aeolus-fleet/common';
|
|
2
2
|
import type { StatementDoor } from '../mcp-out/state-party.js';
|
|
3
3
|
import type { CallTiming } from '../mcp-out/statement.js';
|
|
4
|
-
import type { PartyStore } from '../parties/ports.js';
|
|
4
|
+
import type { PartyStore, ScopeRequirementsStore } from '../parties/ports.js';
|
|
5
5
|
import { type DomainError } from '../shared/errors.js';
|
|
6
6
|
import { type Result } from '../shared/result.js';
|
|
7
7
|
import type { AgentCards } from './ports.js';
|
|
@@ -14,7 +14,7 @@ export type StateA2aAgent = (input: {
|
|
|
14
14
|
/**
|
|
15
15
|
* Use case: the gateway states what an outside A2A agent's proxy ship
|
|
16
16
|
* offers, as its crew (slice 5): the skills of its card as read now, with
|
|
17
|
-
* the agent's repeatable mark (A9). The whole statement replaces the one
|
|
17
|
+
* the agent's repeatable mark (A9) and the scopes it needs now. The whole statement replaces the one
|
|
18
18
|
* before. A card that does not answer or is no longer valid states nothing,
|
|
19
19
|
* so the last statement stays.
|
|
20
20
|
*/
|
|
@@ -22,5 +22,6 @@ export declare function createStateA2aAgent(deps: {
|
|
|
22
22
|
parties: PartyStore;
|
|
23
23
|
cards: AgentCards;
|
|
24
24
|
door: StatementDoor;
|
|
25
|
+
requirements: ScopeRequirementsStore;
|
|
25
26
|
timing: CallTiming;
|
|
26
27
|
}): StateA2aAgent;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { scopesNeeded } from '../parties/scope-requirements.js';
|
|
1
2
|
import { refuse } from '../shared/errors.js';
|
|
2
3
|
import { ok } from '../shared/result.js';
|
|
3
4
|
import { readAgentStatement } from './read-agent-statement.js';
|
|
4
5
|
/**
|
|
5
6
|
* Use case: the gateway states what an outside A2A agent's proxy ship
|
|
6
7
|
* offers, as its crew (slice 5): the skills of its card as read now, with
|
|
7
|
-
* the agent's repeatable mark (A9). The whole statement replaces the one
|
|
8
|
+
* the agent's repeatable mark (A9) and the scopes it needs now. The whole statement replaces the one
|
|
8
9
|
* before. A card that does not answer or is no longer valid states nothing,
|
|
9
10
|
* so the last statement stays.
|
|
10
11
|
*/
|
|
@@ -17,7 +18,7 @@ export function createStateA2aAgent(deps) {
|
|
|
17
18
|
if (party.state !== 'crewed' || party.crewToken === null) {
|
|
18
19
|
return refuse('NOT_CREWED', `The gateway does not crew the proxy ship of ${name} yet`);
|
|
19
20
|
}
|
|
20
|
-
const statement = await readAgentStatement(deps, party);
|
|
21
|
+
const statement = await readAgentStatement(deps, { ...party, scopes: scopesNeeded(await deps.requirements.find(fleetId, name), null) });
|
|
21
22
|
if (!statement.isOk) {
|
|
22
23
|
return statement;
|
|
23
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-a2a-agent.js","sourceRoot":"","sources":["../../../src/core/a2a-out/state-a2a-agent.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAM/D;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"state-a2a-agent.js","sourceRoot":"","sources":["../../../src/core/a2a-out/state-a2a-agent.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAM/D;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAA+H;IACjK,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QACjC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,KAAK,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,OAAO,MAAM,CAAC,eAAe,EAAE,sBAAsB,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YACzD,OAAO,MAAM,CAAC,YAAY,EAAE,+CAA+C,IAAI,MAAM,CAAC,CAAC;QACzF,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACxI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACpB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9E,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjG,CAAC;QACD,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjG,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { FleetId } from '@aeolus-fleet/common';
|
|
2
|
+
import type { IsServed } from '../installation/served.js';
|
|
2
3
|
import { type Result } from '../shared/result.js';
|
|
3
4
|
import type { AccountOfSignIn } from './account-of-sign-in.js';
|
|
4
5
|
import type { SharedAccountToken, SharedSignIn } from './ports.js';
|
|
@@ -6,6 +7,7 @@ import type { SharedAccountToken, SharedSignIn } from './ports.js';
|
|
|
6
7
|
* Where a page goes for its account:
|
|
7
8
|
* - signedIn: it shows the fleet as the account, by this token;
|
|
8
9
|
* - goTo: it asked for no fleet, and goes to this one;
|
|
10
|
+
* - off: it asked for no fleet, may open the gateway in none, and the gateway is off for this fleet of its (#1233);
|
|
9
11
|
* - elsewhere: the account may not open the gateway there, and goes to an app it may open (H9).
|
|
10
12
|
*/
|
|
11
13
|
export type AccountInViewAnswer = {
|
|
@@ -15,6 +17,10 @@ export type AccountInViewAnswer = {
|
|
|
15
17
|
} | {
|
|
16
18
|
readonly kind: 'goTo';
|
|
17
19
|
readonly fleetId: FleetId;
|
|
20
|
+
} | {
|
|
21
|
+
readonly kind: 'off';
|
|
22
|
+
readonly fleetName: string;
|
|
23
|
+
readonly accountUrl: string;
|
|
18
24
|
} | {
|
|
19
25
|
readonly kind: 'elsewhere';
|
|
20
26
|
readonly url: string;
|
|
@@ -35,9 +41,12 @@ export type AccountInView = (asked: {
|
|
|
35
41
|
* fleets and a link opens the same one). With no fleet asked for, the page
|
|
36
42
|
* goes to the first fleet whose gateway the account may open (header design
|
|
37
43
|
* H1). Where the account holds no right, it goes to an app it may open
|
|
38
|
-
* there, Account at least (H9).
|
|
44
|
+
* there, Account at least (H9). Where it may open none because the gateway
|
|
45
|
+
* is off for its fleet, the page says so instead (Thomas, 25 Oct: "Say it
|
|
46
|
+
* is off, and who turns it on").
|
|
39
47
|
*/
|
|
40
48
|
export declare function createAccountInView(deps: {
|
|
41
49
|
signIns: Pick<SharedSignIn, 'apps'>;
|
|
42
50
|
accountOf: AccountOfSignIn;
|
|
51
|
+
isServed: IsServed;
|
|
43
52
|
}): AccountInView;
|
|
@@ -5,8 +5,19 @@ const GATEWAY_APP = 'gateway';
|
|
|
5
5
|
/** The first app the account may open in the fleet, else Account; none at all is no answer pagasae gives. */
|
|
6
6
|
function elsewhere(openable, fleetId) {
|
|
7
7
|
const inFleet = openable.fleets.find((fleet) => fleet.fleetId === fleetId)?.apps.find((app) => app.app !== GATEWAY_APP);
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
return { kind: 'elsewhere', url: inFleet?.url ?? accountUrlOf(openable) };
|
|
9
|
+
}
|
|
10
|
+
function accountUrlOf(openable) {
|
|
11
|
+
return openable.apps.find((app) => app.app === ACCOUNT_APP)?.url ?? '/';
|
|
12
|
+
}
|
|
13
|
+
/** The first of the account's fleets the gateway is off for, said so; else elsewhere. */
|
|
14
|
+
async function offOrElsewhere(openable, isServed) {
|
|
15
|
+
for (const fleet of openable.fleets) {
|
|
16
|
+
if (!(await isServed(fleet.fleetId))) {
|
|
17
|
+
return { kind: 'off', fleetName: fleet.name, accountUrl: accountUrlOf(openable) };
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return elsewhere(openable, undefined);
|
|
10
21
|
}
|
|
11
22
|
/**
|
|
12
23
|
* Use case: the account a page of the gateway shows the fleet in its address
|
|
@@ -14,7 +25,9 @@ function elsewhere(openable, fleetId) {
|
|
|
14
25
|
* fleets and a link opens the same one). With no fleet asked for, the page
|
|
15
26
|
* goes to the first fleet whose gateway the account may open (header design
|
|
16
27
|
* H1). Where the account holds no right, it goes to an app it may open
|
|
17
|
-
* there, Account at least (H9).
|
|
28
|
+
* there, Account at least (H9). Where it may open none because the gateway
|
|
29
|
+
* is off for its fleet, the page says so instead (Thomas, 25 Oct: "Say it
|
|
30
|
+
* is off, and who turns it on").
|
|
18
31
|
*/
|
|
19
32
|
export function createAccountInView(deps) {
|
|
20
33
|
const openable = async (signIn, fleetId) => {
|
|
@@ -26,7 +39,7 @@ export function createAccountInView(deps) {
|
|
|
26
39
|
return ok(elsewhere(apps.value, fleetId));
|
|
27
40
|
}
|
|
28
41
|
const gateway = apps.value.fleets.find((fleet) => fleet.apps.some((app) => app.app === GATEWAY_APP));
|
|
29
|
-
return ok(gateway === undefined ?
|
|
42
|
+
return ok(gateway === undefined ? await offOrElsewhere(apps.value, deps.isServed) : { kind: 'goTo', fleetId: gateway.fleetId });
|
|
30
43
|
};
|
|
31
44
|
return async ({ signIn, fleetId }) => {
|
|
32
45
|
if (signIn === undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-in-view.js","sourceRoot":"","sources":["../../../src/core/account-sign-in/account-in-view.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"account-in-view.js","sourceRoot":"","sources":["../../../src/core/account-sign-in/account-in-view.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,12 +12,18 @@ export interface FleetRefusal {
|
|
|
12
12
|
/** A ship as `fleet.ship` shows it: what the gateway reads of it. */
|
|
13
13
|
export interface FleetShip {
|
|
14
14
|
status: 'awaitingCrew' | 'crewed' | 'retired';
|
|
15
|
+
name: string;
|
|
15
16
|
scopes: string[];
|
|
16
17
|
}
|
|
17
18
|
/**
|
|
18
19
|
* Outbound port: the fleet's public ship calls, as the gateway makes them for
|
|
19
20
|
* its own ship. The gateway is a ship like any other.
|
|
20
21
|
*/
|
|
22
|
+
/** A scope the fleet lists (fleet.scopes): core's, a plugin's or the fleet's own, with its one-line description. */
|
|
23
|
+
export interface ListedScope {
|
|
24
|
+
scope: string;
|
|
25
|
+
description: string;
|
|
26
|
+
}
|
|
21
27
|
export interface FleetDoor {
|
|
22
28
|
register(claim: {
|
|
23
29
|
shipId: ShipId;
|
|
@@ -42,6 +48,8 @@ export interface FleetDoor {
|
|
|
42
48
|
}): Promise<Result<FleetShip, FleetRefusal>>;
|
|
43
49
|
/** Ends this session's crew of its ship: the lease and the secret it claimed with. */
|
|
44
50
|
deregister(crewToken: string): Promise<Result<undefined, FleetRefusal>>;
|
|
51
|
+
/** Every scope the fleet lists (fleet.scopes, fleet:read): core's, each plugin's and the fleet's own. */
|
|
52
|
+
listScopes(crewToken: string): Promise<Result<ListedScope[], FleetRefusal>>;
|
|
45
53
|
/** Declares the ship's own namespace and its whole list of scopes; the fleet stores them, the gateway enforces them (decision 0046). */
|
|
46
54
|
declareScopes(crewToken: string, declaration: {
|
|
47
55
|
namespace: string;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { type DeliveryId, type FleetId, type MessageId, type ShipId } from '@aeolus-fleet/common';
|
|
2
2
|
import type { FleetRefusal } from '../connection/ports.js';
|
|
3
|
+
import type { CheckRequiredScopes } from '../parties/check-required-scopes.js';
|
|
3
4
|
import type { McpServerParty } from '../parties/party.js';
|
|
4
|
-
import type { PartyStore } from '../parties/ports.js';
|
|
5
|
+
import type { PartyStore, ScopeRequirementsStore } from '../parties/ports.js';
|
|
5
6
|
import type { Result } from '../shared/result.js';
|
|
6
7
|
import type { McpServers } from './ports.js';
|
|
7
8
|
import type { ToolMarks } from './state-party.js';
|
|
@@ -97,7 +98,8 @@ export declare const MAY_HAVE_RUN = "The call may have run; its answer was lost.
|
|
|
97
98
|
* nothing. A call that died unanswered is handed again only where argo
|
|
98
99
|
* marked its tool repeatable; otherwise it is reported not handled. A call
|
|
99
100
|
* to a tool not switched on is answered an error and reaches no server
|
|
100
|
-
* (aeolus-fleet#1151)
|
|
101
|
+
* (aeolus-fleet#1151); so is a call from a ship that lacks a scope the
|
|
102
|
+
* tool needs (design gateway-scopes, 4.2).
|
|
101
103
|
*/
|
|
102
104
|
export declare function createHandCall(deps: {
|
|
103
105
|
crew: ProxyShipCrew;
|
|
@@ -105,5 +107,7 @@ export declare function createHandCall(deps: {
|
|
|
105
107
|
calls: CallStore;
|
|
106
108
|
marks: ToolMarks;
|
|
107
109
|
parties: PartyStore;
|
|
110
|
+
requirements: ScopeRequirementsStore;
|
|
111
|
+
checkScopes: CheckRequiredScopes;
|
|
108
112
|
timeoutMs: number;
|
|
109
113
|
}): HandCall;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { PAYLOAD_MAX_BYTES, payloadBytes } from '@aeolus-fleet/common';
|
|
2
|
+
import { scopesNeeded } from '../parties/scope-requirements.js';
|
|
2
3
|
import { isToolOn, TOOL_NOT_ENABLED } from '../parties/tool-switches.js';
|
|
3
4
|
import { toolCalledBy, toolInputType, toolResultType } from './content-types.js';
|
|
4
5
|
/** The channel the gateway hands a proxy ship's delivery through: its outside MCP server (interop 5.1). */
|
|
@@ -51,7 +52,8 @@ function notACallReply(party, delivery) {
|
|
|
51
52
|
* nothing. A call that died unanswered is handed again only where argo
|
|
52
53
|
* marked its tool repeatable; otherwise it is reported not handled. A call
|
|
53
54
|
* to a tool not switched on is answered an error and reaches no server
|
|
54
|
-
* (aeolus-fleet#1151)
|
|
55
|
+
* (aeolus-fleet#1151); so is a call from a ship that lacks a scope the
|
|
56
|
+
* tool needs (design gateway-scopes, 4.2).
|
|
55
57
|
*/
|
|
56
58
|
export function createHandCall(deps) {
|
|
57
59
|
return async ({ party, delivery }) => {
|
|
@@ -100,6 +102,17 @@ export function createHandCall(deps) {
|
|
|
100
102
|
if (!isToolOn(now?.kind === 'mcpServer' ? now.toolSwitches : party.toolSwitches, tool)) {
|
|
101
103
|
return finish(resultReply(delivery, { tool, result: errorResult(TOOL_NOT_ENABLED) }));
|
|
102
104
|
}
|
|
105
|
+
// The requirements and the sender's scopes as they are now, at hand-over: either may change while a call waits.
|
|
106
|
+
const needed = scopesNeeded(await deps.requirements.find(party.fleetId, party.name), tool);
|
|
107
|
+
const checked = await deps.checkScopes({ fleetId: party.fleetId, senderShipId: delivery.senderShipId, needing: tool, needed });
|
|
108
|
+
switch (checked.kind) {
|
|
109
|
+
case 'unread':
|
|
110
|
+
return AGAIN;
|
|
111
|
+
case 'lacks':
|
|
112
|
+
return finish(resultReply(delivery, { tool, result: errorResult(checked.message) }));
|
|
113
|
+
case 'holds':
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
103
116
|
const handed = await deps.crew.handed(crewToken, { deliveryId: delivery.deliveryId, handOverNumber: (delivery.handOverNumber ?? 0) + 1, channel: MCP_CHANNEL });
|
|
104
117
|
if (!handed.isOk) {
|
|
105
118
|
return AGAIN;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hand-call.js","sourceRoot":"","sources":["../../../src/core/mcp-out/hand-call.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAA8D,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"hand-call.js","sourceRoot":"","sources":["../../../src/core/mcp-out/hand-call.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { FleetId } from '@aeolus-fleet/common';
|
|
2
2
|
import type { FleetRefusal } from '../connection/ports.js';
|
|
3
|
-
import type { PartyStore } from '../parties/ports.js';
|
|
3
|
+
import type { PartyStore, ScopeRequirementsStore } from '../parties/ports.js';
|
|
4
4
|
import { type DomainError } from '../shared/errors.js';
|
|
5
5
|
import { type Result } from '../shared/result.js';
|
|
6
6
|
import type { McpServers } from './ports.js';
|
|
@@ -28,7 +28,7 @@ export type StateParty = (input: {
|
|
|
28
28
|
/**
|
|
29
29
|
* Use case: the gateway states what a party's proxy ship offers, as its
|
|
30
30
|
* crew: the tools its server lists now that are switched on, with argo's
|
|
31
|
-
* marks. The whole statement replaces the one before, so a tool the server
|
|
31
|
+
* marks and the scopes each tool needs now. The whole statement replaces the one before, so a tool the server
|
|
32
32
|
* dropped or an approver switched off is gone. A party with no switches kept
|
|
33
33
|
* keeps every tool it lists on first (aeolus-fleet#1151).
|
|
34
34
|
*/
|
|
@@ -37,5 +37,6 @@ export declare function createStateParty(deps: {
|
|
|
37
37
|
servers: McpServers;
|
|
38
38
|
door: StatementDoor;
|
|
39
39
|
marks: ToolMarks;
|
|
40
|
+
requirements: ScopeRequirementsStore;
|
|
40
41
|
timing: CallTiming;
|
|
41
42
|
}): StateParty;
|
|
@@ -5,7 +5,7 @@ import { statementOf } from './statement.js';
|
|
|
5
5
|
/**
|
|
6
6
|
* Use case: the gateway states what a party's proxy ship offers, as its
|
|
7
7
|
* crew: the tools its server lists now that are switched on, with argo's
|
|
8
|
-
* marks. The whole statement replaces the one before, so a tool the server
|
|
8
|
+
* marks and the scopes each tool needs now. The whole statement replaces the one before, so a tool the server
|
|
9
9
|
* dropped or an approver switched off is gone. A party with no switches kept
|
|
10
10
|
* keeps every tool it lists on first (aeolus-fleet#1151).
|
|
11
11
|
*/
|
|
@@ -26,7 +26,7 @@ export function createStateParty(deps) {
|
|
|
26
26
|
await deps.parties.switchTools({ fleetId, name }, { listed: listed.value.map((tool) => tool.name), switched: new Map() });
|
|
27
27
|
}
|
|
28
28
|
const tools = listed.value.filter((tool) => isToolOn(party.toolSwitches, tool.name));
|
|
29
|
-
const statement = statementOf({ partyName: name, tools, repeatable: await deps.marks.repeatable(fleetId, name), timing: deps.timing });
|
|
29
|
+
const statement = statementOf({ partyName: name, tools, repeatable: await deps.marks.repeatable(fleetId, name), timing: deps.timing, requirements: await deps.requirements.find(fleetId, name) });
|
|
30
30
|
const stated = await deps.door.setStatement(party.crewToken, statement);
|
|
31
31
|
if (!stated.isOk) {
|
|
32
32
|
return refuse('STATEMENT_REFUSED', `The fleet refused the statement: ${stated.error.message}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-party.js","sourceRoot":"","sources":["../../../src/core/mcp-out/state-party.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAmC,MAAM,gBAAgB,CAAC;AAkB9E;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"state-party.js","sourceRoot":"","sources":["../../../src/core/mcp-out/state-party.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAmC,MAAM,gBAAgB,CAAC;AAkB9E;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAmJ;IAClL,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QACjC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,KAAK,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;YAChC,OAAO,MAAM,CAAC,eAAe,EAAE,kBAAkB,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YACzD,OAAO,MAAM,CAAC,YAAY,EAAE,+CAA+C,IAAI,MAAM,CAAC,CAAC;QACzF,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,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QAC5H,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrF,MAAM,SAAS,GAAG,WAAW,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAClM,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjG,CAAC;QACD,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3F,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A proxy ship's statement (decision 0047), written from its outside MCP
|
|
3
|
+
* server's `tools/list`: each tool is one capability, with MCP's fields as
|
|
4
|
+
* the server states them (decision 0048), the content types that call it
|
|
5
|
+
* and carry its result, argo's repeatable mark (interop 5.2), the
|
|
6
|
+
* gateway's own wait and deadline for a call (interop 3.4, 5.3), and the
|
|
7
|
+
* scopes a calling ship needs (gateway scopes P1).
|
|
8
|
+
*/
|
|
9
|
+
import { type ScopeRequirements } from '../parties/scope-requirements.js';
|
|
1
10
|
import type { OutsideTool, ToolAnnotations } from './ports.js';
|
|
2
11
|
export interface Capability {
|
|
3
12
|
readonly name: string;
|
|
@@ -15,6 +24,8 @@ export interface Capability {
|
|
|
15
24
|
readonly deadlineMs: number;
|
|
16
25
|
/** argo's mark that a call may be handed again when it died unanswered; the server's hints never set it. */
|
|
17
26
|
readonly repeatable?: true;
|
|
27
|
+
/** The scopes a calling ship must hold, every one, so it sees them before it calls (gateway scopes P1); none when it needs none. */
|
|
28
|
+
readonly scopes?: readonly string[];
|
|
18
29
|
}
|
|
19
30
|
export interface Statement {
|
|
20
31
|
readonly summary: string;
|
|
@@ -25,6 +36,10 @@ export interface CallTiming {
|
|
|
25
36
|
readonly waitMs: number;
|
|
26
37
|
readonly deadlineMs: number;
|
|
27
38
|
}
|
|
39
|
+
/** The scopes field of a capability: stated only when a calling ship needs any. */
|
|
40
|
+
export declare function scopesFieldOf(scopes: readonly string[]): {
|
|
41
|
+
scopes?: readonly string[];
|
|
42
|
+
};
|
|
28
43
|
/**
|
|
29
44
|
* The statement of a party's proxy ship. Its summary names the party only:
|
|
30
45
|
* the server's URL and credential stay in the gateway (NAT both ways).
|
|
@@ -34,4 +49,5 @@ export declare function statementOf(input: {
|
|
|
34
49
|
tools: readonly OutsideTool[];
|
|
35
50
|
repeatable: ReadonlySet<string>;
|
|
36
51
|
timing: CallTiming;
|
|
52
|
+
requirements: ScopeRequirements;
|
|
37
53
|
}): Statement;
|
|
@@ -2,10 +2,16 @@
|
|
|
2
2
|
* A proxy ship's statement (decision 0047), written from its outside MCP
|
|
3
3
|
* server's `tools/list`: each tool is one capability, with MCP's fields as
|
|
4
4
|
* the server states them (decision 0048), the content types that call it
|
|
5
|
-
* and carry its result, argo's repeatable mark (interop 5.2),
|
|
6
|
-
* gateway's own wait and deadline for a call (interop 3.4, 5.3)
|
|
5
|
+
* and carry its result, argo's repeatable mark (interop 5.2), the
|
|
6
|
+
* gateway's own wait and deadline for a call (interop 3.4, 5.3), and the
|
|
7
|
+
* scopes a calling ship needs (gateway scopes P1).
|
|
7
8
|
*/
|
|
9
|
+
import { scopesNeeded } from '../parties/scope-requirements.js';
|
|
8
10
|
import { toolInputType, toolResultType } from './content-types.js';
|
|
11
|
+
/** The scopes field of a capability: stated only when a calling ship needs any. */
|
|
12
|
+
export function scopesFieldOf(scopes) {
|
|
13
|
+
return scopes.length === 0 ? {} : { scopes };
|
|
14
|
+
}
|
|
9
15
|
function capabilityOf(tool, marked) {
|
|
10
16
|
return {
|
|
11
17
|
name: tool.name,
|
|
@@ -19,6 +25,7 @@ function capabilityOf(tool, marked) {
|
|
|
19
25
|
...(marked.isRepeatable ? { repeatable: true } : {}),
|
|
20
26
|
waitMs: marked.timing.waitMs,
|
|
21
27
|
deadlineMs: marked.timing.deadlineMs,
|
|
28
|
+
...scopesFieldOf(marked.scopes),
|
|
22
29
|
};
|
|
23
30
|
}
|
|
24
31
|
/**
|
|
@@ -28,7 +35,7 @@ function capabilityOf(tool, marked) {
|
|
|
28
35
|
export function statementOf(input) {
|
|
29
36
|
return {
|
|
30
37
|
summary: `${input.partyName}, an outside MCP server reached through the Aeolus gateway. Each capability is one of its tools: send its input type with the tool arguments as a JSON object, and the reply carries the tool result.`,
|
|
31
|
-
capabilities: input.tools.map((tool) => capabilityOf(tool, { isRepeatable: input.repeatable.has(tool.name), timing: input.timing })),
|
|
38
|
+
capabilities: input.tools.map((tool) => capabilityOf(tool, { isRepeatable: input.repeatable.has(tool.name), timing: input.timing, scopes: scopesNeeded(input.requirements, tool.name) })),
|
|
32
39
|
};
|
|
33
40
|
}
|
|
34
41
|
//# sourceMappingURL=statement.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statement.js","sourceRoot":"","sources":["../../../src/core/mcp-out/statement.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"statement.js","sourceRoot":"","sources":["../../../src/core/mcp-out/statement.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,YAAY,EAA0B,MAAM,kCAAkC,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAmCnE,mFAAmF;AACnF,MAAM,UAAU,aAAa,CAAC,MAAyB;IACrD,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;AAC/C,CAAC;AAED,SAAS,YAAY,CAAC,IAAiB,EAAE,MAAgF;IACvH,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1D,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5E,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;QAC/E,UAAU,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,WAAW,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5E,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;QAC5B,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU;QACpC,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC;KAChC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAiJ;IAC3K,OAAO;QACL,OAAO,EAAE,GAAG,KAAK,CAAC,SAAS,uMAAuM;QAClO,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC1L,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { MeetingId } from '@aeolus-fleet/common';
|
|
2
|
+
import type { CrewPersonShip } from '../people/crew-person-ship.js';
|
|
3
|
+
import { type PersonCaller, type PersonCrewError } from '../people/person-crew.js';
|
|
4
|
+
import type { PersonCrews } from '../people/ports.js';
|
|
5
|
+
import { type DomainError } from '../shared/errors.js';
|
|
6
|
+
import { type Result } from '../shared/result.js';
|
|
7
|
+
import type { OwnMicChange, PersonMeetingDoor } from './ports.js';
|
|
8
|
+
export type ChangeOwnMic = (input: {
|
|
9
|
+
caller: PersonCaller;
|
|
10
|
+
meetingId: MeetingId;
|
|
11
|
+
change: OwnMicChange;
|
|
12
|
+
}) => Promise<Result<undefined, PersonCrewError | DomainError<'MIC_REFUSED'>>>;
|
|
13
|
+
/**
|
|
14
|
+
* Use case: a person requests a meeting's mic, withdraws their request, or
|
|
15
|
+
* releases the mic they hold, as their person ship (decision 0061, M8, M10,
|
|
16
|
+
* M19). The mic is core's state: the gateway adds no rule of its own and
|
|
17
|
+
* passes the fleet's reason on when it refuses. A request stays on the list
|
|
18
|
+
* until it is served or withdrawn, so a person who reads slowly loses no place.
|
|
19
|
+
*/
|
|
20
|
+
export declare function createChangeOwnMic(deps: {
|
|
21
|
+
crewPersonShip: CrewPersonShip;
|
|
22
|
+
crews: PersonCrews;
|
|
23
|
+
door: PersonMeetingDoor;
|
|
24
|
+
}): ChangeOwnMic;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { asPersonCrew, withOwnRefusal } from '../people/person-crew.js';
|
|
2
|
+
import { refuse } from '../shared/errors.js';
|
|
3
|
+
import { ok } from '../shared/result.js';
|
|
4
|
+
/**
|
|
5
|
+
* Use case: a person requests a meeting's mic, withdraws their request, or
|
|
6
|
+
* releases the mic they hold, as their person ship (decision 0061, M8, M10,
|
|
7
|
+
* M19). The mic is core's state: the gateway adds no rule of its own and
|
|
8
|
+
* passes the fleet's reason on when it refuses. A request stays on the list
|
|
9
|
+
* until it is served or withdrawn, so a person who reads slowly loses no place.
|
|
10
|
+
*/
|
|
11
|
+
export function createChangeOwnMic(deps) {
|
|
12
|
+
return async ({ caller, meetingId, change }) => {
|
|
13
|
+
const changed = await asPersonCrew(deps, { caller, run: (crew) => withOwnRefusal(deps.door.changeMic(crew.crewToken, { meetingId, change })) });
|
|
14
|
+
if (!changed.isOk) {
|
|
15
|
+
return changed;
|
|
16
|
+
}
|
|
17
|
+
const taken = changed.value.value;
|
|
18
|
+
return taken.isOk ? ok(undefined) : refuse('MIC_REFUSED', `The fleet did not change the mic: ${taken.error.message}`);
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=change-own-mic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"change-own-mic.js","sourceRoot":"","sources":["../../../src/core/meetings/change-own-mic.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,cAAc,EAA2C,MAAM,0BAA0B,CAAC;AAEjH,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAKtD;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAqF;IACtH,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;QAC7C,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAChJ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QAClC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,qCAAqC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACxH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ShipId } from '@aeolus-fleet/common';
|
|
2
|
+
import type { MeetingRead } from './ports.js';
|
|
3
|
+
/**
|
|
4
|
+
* Where a participant stands on a meeting's mic (M7, M8): it moderates, so it
|
|
5
|
+
* contributes without the mic; it holds the mic; it waits in line, at its
|
|
6
|
+
* place counted from 1; or none of these, so it requests the mic first.
|
|
7
|
+
*/
|
|
8
|
+
export type MicStanding = {
|
|
9
|
+
readonly kind: 'moderating';
|
|
10
|
+
} | {
|
|
11
|
+
readonly kind: 'holding';
|
|
12
|
+
} | {
|
|
13
|
+
readonly kind: 'requested';
|
|
14
|
+
readonly place: number;
|
|
15
|
+
} | {
|
|
16
|
+
readonly kind: 'none';
|
|
17
|
+
};
|
|
18
|
+
export declare function micStandingOf(meeting: MeetingRead, shipId: ShipId): MicStanding;
|