@aeolus-fleet/gateway 0.0.0-stage → 0.28.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/LICENSE +201 -0
- package/README.md +105 -2
- package/dist/adapters/crypto/call-keys.d.ts +7 -0
- package/dist/adapters/crypto/call-keys.js +18 -0
- package/dist/adapters/crypto/call-keys.js.map +1 -0
- package/dist/adapters/crypto/oauth-secrets.d.ts +3 -0
- package/dist/adapters/crypto/oauth-secrets.js +10 -0
- package/dist/adapters/crypto/oauth-secrets.js.map +1 -0
- package/dist/adapters/crypto/page-sessions.d.ts +15 -0
- package/dist/adapters/crypto/page-sessions.js +40 -0
- package/dist/adapters/crypto/page-sessions.js.map +1 -0
- package/dist/adapters/crypto/request-hasher.d.ts +3 -0
- package/dist/adapters/crypto/request-hasher.js +4 -0
- package/dist/adapters/crypto/request-hasher.js.map +1 -0
- package/dist/adapters/crypto/request-ids.d.ts +4 -0
- package/dist/adapters/crypto/request-ids.js +7 -0
- package/dist/adapters/crypto/request-ids.js.map +1 -0
- package/dist/adapters/crypto/sealer.d.ts +14 -0
- package/dist/adapters/crypto/sealer.js +41 -0
- package/dist/adapters/crypto/sealer.js.map +1 -0
- package/dist/adapters/crypto/ship-aliases.d.ts +7 -0
- package/dist/adapters/crypto/ship-aliases.js +19 -0
- package/dist/adapters/crypto/ship-aliases.js.map +1 -0
- package/dist/adapters/crypto/sign-in-seals.d.ts +7 -0
- package/dist/adapters/crypto/sign-in-seals.js +25 -0
- package/dist/adapters/crypto/sign-in-seals.js.map +1 -0
- package/dist/adapters/crypto/waiting-seals.d.ts +3 -0
- package/dist/adapters/crypto/waiting-seals.js +24 -0
- package/dist/adapters/crypto/waiting-seals.js.map +1 -0
- package/dist/adapters/fleet/actor-door.d.ts +20 -0
- package/dist/adapters/fleet/actor-door.js +75 -0
- package/dist/adapters/fleet/actor-door.js.map +1 -0
- package/dist/adapters/fleet/console-sessions.d.ts +2 -0
- package/dist/adapters/fleet/console-sessions.js +23 -0
- package/dist/adapters/fleet/console-sessions.js.map +1 -0
- package/dist/adapters/fleet/core-version.d.ts +11 -0
- package/dist/adapters/fleet/core-version.js +18 -0
- package/dist/adapters/fleet/core-version.js.map +1 -0
- package/dist/adapters/fleet/fleet-network.d.ts +2 -0
- package/dist/adapters/fleet/fleet-network.js +34 -0
- package/dist/adapters/fleet/fleet-network.js.map +1 -0
- package/dist/adapters/fleet/logged-verified-facts.d.ts +13 -0
- package/dist/adapters/fleet/logged-verified-facts.js +18 -0
- package/dist/adapters/fleet/logged-verified-facts.js.map +1 -0
- package/dist/adapters/fleet/proxy-ship-reads.d.ts +7 -0
- package/dist/adapters/fleet/proxy-ship-reads.js +24 -0
- package/dist/adapters/fleet/proxy-ship-reads.js.map +1 -0
- package/dist/adapters/fleet/proxy-ships-as-actor.d.ts +3 -0
- package/dist/adapters/fleet/proxy-ships-as-actor.js +25 -0
- package/dist/adapters/fleet/proxy-ships-as-actor.js.map +1 -0
- package/dist/adapters/fleet/rest-fleet-door.d.ts +14 -0
- package/dist/adapters/fleet/rest-fleet-door.js +205 -0
- package/dist/adapters/fleet/rest-fleet-door.js.map +1 -0
- package/dist/adapters/http/add-server-page.d.ts +7 -0
- package/dist/adapters/http/add-server-page.js +175 -0
- package/dist/adapters/http/add-server-page.js.map +1 -0
- package/dist/adapters/http/delivery-page.d.ts +24 -0
- package/dist/adapters/http/delivery-page.js +115 -0
- package/dist/adapters/http/delivery-page.js.map +1 -0
- package/dist/adapters/http/html.d.ts +15 -0
- package/dist/adapters/http/html.js +53 -0
- package/dist/adapters/http/html.js.map +1 -0
- package/dist/adapters/http/live.d.ts +29 -0
- package/dist/adapters/http/live.js +100 -0
- package/dist/adapters/http/live.js.map +1 -0
- package/dist/adapters/http/mcp-endpoint.d.ts +20 -0
- package/dist/adapters/http/mcp-endpoint.js +164 -0
- package/dist/adapters/http/mcp-endpoint.js.map +1 -0
- package/dist/adapters/http/mcp-task.d.ts +45 -0
- package/dist/adapters/http/mcp-task.js +35 -0
- package/dist/adapters/http/mcp-task.js.map +1 -0
- package/dist/adapters/http/oauth-routes.d.ts +47 -0
- package/dist/adapters/http/oauth-routes.js +337 -0
- package/dist/adapters/http/oauth-routes.js.map +1 -0
- package/dist/adapters/http/outside-parties-page.d.ts +33 -0
- package/dist/adapters/http/outside-parties-page.js +153 -0
- package/dist/adapters/http/outside-parties-page.js.map +1 -0
- package/dist/adapters/http/outside-party-page.d.ts +7 -0
- package/dist/adapters/http/outside-party-page.js +212 -0
- package/dist/adapters/http/outside-party-page.js.map +1 -0
- package/dist/adapters/http/overview-page.d.ts +17 -0
- package/dist/adapters/http/overview-page.js +298 -0
- package/dist/adapters/http/overview-page.js.map +1 -0
- package/dist/adapters/http/parties-page.d.ts +7 -0
- package/dist/adapters/http/parties-page.js +139 -0
- package/dist/adapters/http/parties-page.js.map +1 -0
- package/dist/adapters/http/person-tools.d.ts +22 -0
- package/dist/adapters/http/person-tools.js +98 -0
- package/dist/adapters/http/person-tools.js.map +1 -0
- package/dist/adapters/http/scope-rows.d.ts +10 -0
- package/dist/adapters/http/scope-rows.js +30 -0
- package/dist/adapters/http/scope-rows.js.map +1 -0
- package/dist/adapters/http/signal.d.ts +61 -0
- package/dist/adapters/http/signal.js +263 -0
- package/dist/adapters/http/signal.js.map +1 -0
- package/dist/adapters/http/version.d.ts +6 -0
- package/dist/adapters/http/version.js +12 -0
- package/dist/adapters/http/version.js.map +1 -0
- package/dist/adapters/mcp/mcp-servers.d.ts +2 -0
- package/dist/adapters/mcp/mcp-servers.js +154 -0
- package/dist/adapters/mcp/mcp-servers.js.map +1 -0
- package/dist/adapters/oauth/client-metadata-documents.d.ts +9 -0
- package/dist/adapters/oauth/client-metadata-documents.js +25 -0
- package/dist/adapters/oauth/client-metadata-documents.js.map +1 -0
- package/dist/adapters/pagasae/pagasae-client.d.ts +8 -0
- package/dist/adapters/pagasae/pagasae-client.js +88 -0
- package/dist/adapters/pagasae/pagasae-client.js.map +1 -0
- package/dist/adapters/prisma/account-grants.d.ts +4 -0
- package/dist/adapters/prisma/account-grants.js +27 -0
- package/dist/adapters/prisma/account-grants.js.map +1 -0
- package/dist/adapters/prisma/calls.d.ts +4 -0
- package/dist/adapters/prisma/calls.js +35 -0
- package/dist/adapters/prisma/calls.js.map +1 -0
- package/dist/adapters/prisma/changes.d.ts +21 -0
- package/dist/adapters/prisma/changes.js +86 -0
- package/dist/adapters/prisma/changes.js.map +1 -0
- package/dist/adapters/prisma/client-calls.d.ts +4 -0
- package/dist/adapters/prisma/client-calls.js +59 -0
- package/dist/adapters/prisma/client-calls.js.map +1 -0
- package/dist/adapters/prisma/client.d.ts +8 -0
- package/dist/adapters/prisma/client.js +11 -0
- package/dist/adapters/prisma/client.js.map +1 -0
- package/dist/adapters/prisma/connection-store.d.ts +4 -0
- package/dist/adapters/prisma/connection-store.js +28 -0
- package/dist/adapters/prisma/connection-store.js.map +1 -0
- package/dist/adapters/prisma/fleet-forgetter.d.ts +4 -0
- package/dist/adapters/prisma/fleet-forgetter.js +10 -0
- package/dist/adapters/prisma/fleet-forgetter.js.map +1 -0
- package/dist/adapters/prisma/fleet-switches.d.ts +4 -0
- package/dist/adapters/prisma/fleet-switches.js +10 -0
- package/dist/adapters/prisma/fleet-switches.js.map +1 -0
- package/dist/adapters/prisma/generated/browser.d.ts +108 -0
- package/dist/adapters/prisma/generated/browser.js +18 -0
- package/dist/adapters/prisma/generated/browser.js.map +1 -0
- package/dist/adapters/prisma/generated/client.d.ts +127 -0
- package/dist/adapters/prisma/generated/client.js +38 -0
- package/dist/adapters/prisma/generated/client.js.map +1 -0
- package/dist/adapters/prisma/generated/commonInputTypes.d.ts +490 -0
- package/dist/adapters/prisma/generated/commonInputTypes.js +11 -0
- package/dist/adapters/prisma/generated/commonInputTypes.js.map +1 -0
- package/dist/adapters/prisma/generated/enums.d.ts +1 -0
- package/dist/adapters/prisma/generated/enums.js +12 -0
- package/dist/adapters/prisma/generated/enums.js.map +1 -0
- package/dist/adapters/prisma/generated/internal/class.d.ts +319 -0
- package/dist/adapters/prisma/generated/internal/class.js +50 -0
- package/dist/adapters/prisma/generated/internal/class.js.map +1 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +2102 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js +294 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +273 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +264 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -0
- package/dist/adapters/prisma/generated/models/AccountGrant.d.ts +1088 -0
- package/dist/adapters/prisma/generated/models/AccountGrant.js +2 -0
- package/dist/adapters/prisma/generated/models/AccountGrant.js.map +1 -0
- package/dist/adapters/prisma/generated/models/AuthorizationCode.d.ts +1171 -0
- package/dist/adapters/prisma/generated/models/AuthorizationCode.js +2 -0
- package/dist/adapters/prisma/generated/models/AuthorizationCode.js.map +1 -0
- package/dist/adapters/prisma/generated/models/Call.d.ts +994 -0
- package/dist/adapters/prisma/generated/models/Call.js +2 -0
- package/dist/adapters/prisma/generated/models/Call.js.map +1 -0
- package/dist/adapters/prisma/generated/models/ClientCall.d.ts +1119 -0
- package/dist/adapters/prisma/generated/models/ClientCall.js +2 -0
- package/dist/adapters/prisma/generated/models/ClientCall.js.map +1 -0
- package/dist/adapters/prisma/generated/models/ClientCallReply.d.ts +1129 -0
- package/dist/adapters/prisma/generated/models/ClientCallReply.js +2 -0
- package/dist/adapters/prisma/generated/models/ClientCallReply.js.map +1 -0
- package/dist/adapters/prisma/generated/models/Connection.d.ts +1011 -0
- package/dist/adapters/prisma/generated/models/Connection.js +2 -0
- package/dist/adapters/prisma/generated/models/Connection.js.map +1 -0
- package/dist/adapters/prisma/generated/models/FleetSwitch.d.ts +945 -0
- package/dist/adapters/prisma/generated/models/FleetSwitch.js +2 -0
- package/dist/adapters/prisma/generated/models/FleetSwitch.js.map +1 -0
- package/dist/adapters/prisma/generated/models/InstallationRequest.d.ts +1030 -0
- package/dist/adapters/prisma/generated/models/InstallationRequest.js +2 -0
- package/dist/adapters/prisma/generated/models/InstallationRequest.js.map +1 -0
- package/dist/adapters/prisma/generated/models/IssuedToken.d.ts +1224 -0
- package/dist/adapters/prisma/generated/models/IssuedToken.js +2 -0
- package/dist/adapters/prisma/generated/models/IssuedToken.js.map +1 -0
- package/dist/adapters/prisma/generated/models/OAuthClient.d.ts +1005 -0
- package/dist/adapters/prisma/generated/models/OAuthClient.js +2 -0
- package/dist/adapters/prisma/generated/models/OAuthClient.js.map +1 -0
- package/dist/adapters/prisma/generated/models/OpenedDelivery.d.ts +1087 -0
- package/dist/adapters/prisma/generated/models/OpenedDelivery.js +2 -0
- package/dist/adapters/prisma/generated/models/OpenedDelivery.js.map +1 -0
- package/dist/adapters/prisma/generated/models/OutsidePartySwitch.d.ts +942 -0
- package/dist/adapters/prisma/generated/models/OutsidePartySwitch.js +2 -0
- package/dist/adapters/prisma/generated/models/OutsidePartySwitch.js.map +1 -0
- package/dist/adapters/prisma/generated/models/OwnerQuestion.d.ts +1035 -0
- package/dist/adapters/prisma/generated/models/OwnerQuestion.js +2 -0
- package/dist/adapters/prisma/generated/models/OwnerQuestion.js.map +1 -0
- package/dist/adapters/prisma/generated/models/Party.d.ts +1310 -0
- package/dist/adapters/prisma/generated/models/Party.js +2 -0
- package/dist/adapters/prisma/generated/models/Party.js.map +1 -0
- package/dist/adapters/prisma/generated/models/PendingRequest.d.ts +1252 -0
- package/dist/adapters/prisma/generated/models/PendingRequest.js +2 -0
- package/dist/adapters/prisma/generated/models/PendingRequest.js.map +1 -0
- package/dist/adapters/prisma/generated/models/PersonCrew.d.ts +974 -0
- package/dist/adapters/prisma/generated/models/PersonCrew.js +2 -0
- package/dist/adapters/prisma/generated/models/PersonCrew.js.map +1 -0
- package/dist/adapters/prisma/generated/models/RequestOutcomeNotice.d.ts +1120 -0
- package/dist/adapters/prisma/generated/models/RequestOutcomeNotice.js +2 -0
- package/dist/adapters/prisma/generated/models/RequestOutcomeNotice.js.map +1 -0
- package/dist/adapters/prisma/generated/models/ToolMark.d.ts +947 -0
- package/dist/adapters/prisma/generated/models/ToolMark.js +2 -0
- package/dist/adapters/prisma/generated/models/ToolMark.js.map +1 -0
- package/dist/adapters/prisma/generated/models.d.ts +19 -0
- package/dist/adapters/prisma/generated/models.js +2 -0
- package/dist/adapters/prisma/generated/models.js.map +1 -0
- package/dist/adapters/prisma/installation-requests.d.ts +4 -0
- package/dist/adapters/prisma/installation-requests.js +25 -0
- package/dist/adapters/prisma/installation-requests.js.map +1 -0
- package/dist/adapters/prisma/migrate.d.ts +5 -0
- package/dist/adapters/prisma/migrate.js +53 -0
- package/dist/adapters/prisma/migrate.js.map +1 -0
- package/dist/adapters/prisma/oauth-stores.d.ts +5 -0
- package/dist/adapters/prisma/oauth-stores.js +85 -0
- package/dist/adapters/prisma/oauth-stores.js.map +1 -0
- package/dist/adapters/prisma/opened-deliveries.d.ts +4 -0
- package/dist/adapters/prisma/opened-deliveries.js +29 -0
- package/dist/adapters/prisma/opened-deliveries.js.map +1 -0
- package/dist/adapters/prisma/outcome-notices.d.ts +4 -0
- package/dist/adapters/prisma/outcome-notices.js +24 -0
- package/dist/adapters/prisma/outcome-notices.js.map +1 -0
- package/dist/adapters/prisma/outside-party-switches.d.ts +4 -0
- package/dist/adapters/prisma/outside-party-switches.js +10 -0
- package/dist/adapters/prisma/outside-party-switches.js.map +1 -0
- package/dist/adapters/prisma/owner-questions.d.ts +8 -0
- package/dist/adapters/prisma/owner-questions.js +54 -0
- package/dist/adapters/prisma/owner-questions.js.map +1 -0
- package/dist/adapters/prisma/party-store.d.ts +7 -0
- package/dist/adapters/prisma/party-store.js +71 -0
- package/dist/adapters/prisma/party-store.js.map +1 -0
- package/dist/adapters/prisma/pending-requests.d.ts +11 -0
- package/dist/adapters/prisma/pending-requests.js +128 -0
- package/dist/adapters/prisma/pending-requests.js.map +1 -0
- package/dist/adapters/prisma/person-crews.d.ts +4 -0
- package/dist/adapters/prisma/person-crews.js +18 -0
- package/dist/adapters/prisma/person-crews.js.map +1 -0
- package/dist/adapters/prisma/tool-marks.d.ts +4 -0
- package/dist/adapters/prisma/tool-marks.js +15 -0
- package/dist/adapters/prisma/tool-marks.js.map +1 -0
- package/dist/adapters/timers/sleep.d.ts +3 -0
- package/dist/adapters/timers/sleep.js +11 -0
- package/dist/adapters/timers/sleep.js.map +1 -0
- package/dist/adapters/trpc/router.d.ts +606 -0
- package/dist/adapters/trpc/router.js +519 -0
- package/dist/adapters/trpc/router.js.map +1 -0
- package/dist/app.d.ts +43 -0
- package/dist/app.js +446 -0
- package/dist/app.js.map +1 -0
- package/dist/bin/aeolus-gateway.d.ts +2 -0
- package/dist/bin/aeolus-gateway.js +65 -0
- package/dist/bin/aeolus-gateway.js.map +1 -0
- package/dist/config.d.ts +41 -0
- package/dist/config.js +65 -0
- package/dist/config.js.map +1 -0
- package/dist/core/actors/authenticate-actor.d.ts +54 -0
- package/dist/core/actors/authenticate-actor.js +42 -0
- package/dist/core/actors/authenticate-actor.js.map +1 -0
- package/dist/core/actors/credential-of.d.ts +27 -0
- package/dist/core/actors/credential-of.js +25 -0
- package/dist/core/actors/credential-of.js.map +1 -0
- package/dist/core/connection/connect.d.ts +26 -0
- package/dist/core/connection/connect.js +58 -0
- package/dist/core/connection/connect.js.map +1 -0
- package/dist/core/connection/ports.d.ts +92 -0
- package/dist/core/connection/ports.js +2 -0
- package/dist/core/connection/ports.js.map +1 -0
- package/dist/core/connection/read-connection.d.ts +14 -0
- package/dist/core/connection/read-connection.js +24 -0
- package/dist/core/connection/read-connection.js.map +1 -0
- package/dist/core/installation/delete-fleet.d.ts +21 -0
- package/dist/core/installation/delete-fleet.js +21 -0
- package/dist/core/installation/delete-fleet.js.map +1 -0
- package/dist/core/installation/ports.d.ts +43 -0
- package/dist/core/installation/ports.js +2 -0
- package/dist/core/installation/ports.js.map +1 -0
- package/dist/core/installation/read-fleet.d.ts +18 -0
- package/dist/core/installation/read-fleet.js +9 -0
- package/dist/core/installation/read-fleet.js.map +1 -0
- package/dist/core/installation/request-id.d.ts +8 -0
- package/dist/core/installation/request-id.js +10 -0
- package/dist/core/installation/request-id.js.map +1 -0
- package/dist/core/installation/served.d.ts +12 -0
- package/dist/core/installation/served.js +8 -0
- package/dist/core/installation/served.js.map +1 -0
- package/dist/core/installation/set-fleet-enabled.d.ts +25 -0
- package/dist/core/installation/set-fleet-enabled.js +22 -0
- package/dist/core/installation/set-fleet-enabled.js.map +1 -0
- package/dist/core/mcp-in/call-tool.d.ts +42 -0
- package/dist/core/mcp-in/call-tool.js +82 -0
- package/dist/core/mcp-in/call-tool.js.map +1 -0
- package/dist/core/mcp-in/client-call.d.ts +51 -0
- package/dist/core/mcp-in/client-call.js +39 -0
- package/dist/core/mcp-in/client-call.js.map +1 -0
- package/dist/core/mcp-in/collect-replies.d.ts +22 -0
- package/dist/core/mcp-in/collect-replies.js +66 -0
- package/dist/core/mcp-in/collect-replies.js.map +1 -0
- package/dist/core/mcp-in/list-tools.d.ts +48 -0
- package/dist/core/mcp-in/list-tools.js +70 -0
- package/dist/core/mcp-in/list-tools.js.map +1 -0
- package/dist/core/mcp-in/ports.d.ts +108 -0
- package/dist/core/mcp-in/ports.js +2 -0
- package/dist/core/mcp-in/ports.js.map +1 -0
- package/dist/core/mcp-in/read-client-call.d.ts +23 -0
- package/dist/core/mcp-in/read-client-call.js +15 -0
- package/dist/core/mcp-in/read-client-call.js.map +1 -0
- package/dist/core/mcp-out/content-types.d.ts +12 -0
- package/dist/core/mcp-out/content-types.js +28 -0
- package/dist/core/mcp-out/content-types.js.map +1 -0
- package/dist/core/mcp-out/hand-call.d.ts +105 -0
- package/dist/core/mcp-out/hand-call.js +118 -0
- package/dist/core/mcp-out/hand-call.js.map +1 -0
- package/dist/core/mcp-out/mark-tool.d.ts +20 -0
- package/dist/core/mcp-out/mark-tool.js +17 -0
- package/dist/core/mcp-out/mark-tool.js.map +1 -0
- package/dist/core/mcp-out/ports.d.ts +66 -0
- package/dist/core/mcp-out/ports.js +2 -0
- package/dist/core/mcp-out/ports.js.map +1 -0
- package/dist/core/mcp-out/run-party.d.ts +26 -0
- package/dist/core/mcp-out/run-party.js +62 -0
- package/dist/core/mcp-out/run-party.js.map +1 -0
- package/dist/core/mcp-out/state-party.d.ts +39 -0
- package/dist/core/mcp-out/state-party.js +30 -0
- package/dist/core/mcp-out/state-party.js.map +1 -0
- package/dist/core/mcp-out/statement.d.ts +36 -0
- package/dist/core/mcp-out/statement.js +34 -0
- package/dist/core/mcp-out/statement.js.map +1 -0
- package/dist/core/oauth/authenticate-access-token.d.ts +25 -0
- package/dist/core/oauth/authenticate-access-token.js +19 -0
- package/dist/core/oauth/authenticate-access-token.js.map +1 -0
- package/dist/core/oauth/exchange-token.d.ts +32 -0
- package/dist/core/oauth/exchange-token.js +98 -0
- package/dist/core/oauth/exchange-token.js.map +1 -0
- package/dist/core/oauth/issue-code.d.ts +23 -0
- package/dist/core/oauth/issue-code.js +34 -0
- package/dist/core/oauth/issue-code.js.map +1 -0
- package/dist/core/oauth/ports.d.ts +105 -0
- package/dist/core/oauth/ports.js +2 -0
- package/dist/core/oauth/ports.js.map +1 -0
- package/dist/core/oauth/read-authorization.d.ts +43 -0
- package/dist/core/oauth/read-authorization.js +74 -0
- package/dist/core/oauth/read-authorization.js.map +1 -0
- package/dist/core/oauth/redirect-uri.d.ts +6 -0
- package/dist/core/oauth/redirect-uri.js +20 -0
- package/dist/core/oauth/redirect-uri.js.map +1 -0
- package/dist/core/oauth/register-client.d.ts +22 -0
- package/dist/core/oauth/register-client.js +20 -0
- package/dist/core/oauth/register-client.js.map +1 -0
- package/dist/core/operator/authenticate-operator.d.ts +22 -0
- package/dist/core/operator/authenticate-operator.js +26 -0
- package/dist/core/operator/authenticate-operator.js.map +1 -0
- package/dist/core/operator/ports.d.ts +15 -0
- package/dist/core/operator/ports.js +2 -0
- package/dist/core/operator/ports.js.map +1 -0
- package/dist/core/outside-parties/ports.d.ts +17 -0
- package/dist/core/outside-parties/ports.js +2 -0
- package/dist/core/outside-parties/ports.js.map +1 -0
- package/dist/core/outside-parties/set-outside-parties.d.ts +36 -0
- package/dist/core/outside-parties/set-outside-parties.js +38 -0
- package/dist/core/outside-parties/set-outside-parties.js.map +1 -0
- package/dist/core/parties/approve-party.d.ts +55 -0
- package/dist/core/parties/approve-party.js +127 -0
- package/dist/core/parties/approve-party.js.map +1 -0
- package/dist/core/parties/change-party.d.ts +42 -0
- package/dist/core/parties/change-party.js +49 -0
- package/dist/core/parties/change-party.js.map +1 -0
- package/dist/core/parties/check-server.d.ts +24 -0
- package/dist/core/parties/check-server.js +21 -0
- package/dist/core/parties/check-server.js.map +1 -0
- package/dist/core/parties/crew-party.d.ts +21 -0
- package/dist/core/parties/crew-party.js +29 -0
- package/dist/core/parties/crew-party.js.map +1 -0
- package/dist/core/parties/list-parties.d.ts +29 -0
- package/dist/core/parties/list-parties.js +39 -0
- package/dist/core/parties/list-parties.js.map +1 -0
- package/dist/core/parties/party.d.ts +52 -0
- package/dist/core/parties/party.js +24 -0
- package/dist/core/parties/party.js.map +1 -0
- package/dist/core/parties/ports.d.ts +74 -0
- package/dist/core/parties/ports.js +2 -0
- package/dist/core/parties/ports.js.map +1 -0
- package/dist/core/parties/read-party-tools.d.ts +22 -0
- package/dist/core/parties/read-party-tools.js +22 -0
- package/dist/core/parties/read-party-tools.js.map +1 -0
- package/dist/core/parties/retire-party.d.ts +29 -0
- package/dist/core/parties/retire-party.js +43 -0
- package/dist/core/parties/retire-party.js.map +1 -0
- package/dist/core/parties/shown-party.d.ts +27 -0
- package/dist/core/parties/shown-party.js +10 -0
- package/dist/core/parties/shown-party.js.map +1 -0
- package/dist/core/people/answer-delivery.d.ts +24 -0
- package/dist/core/people/answer-delivery.js +28 -0
- package/dist/core/people/answer-delivery.js.map +1 -0
- package/dist/core/people/crew-person-ship.d.ts +42 -0
- package/dist/core/people/crew-person-ship.js +59 -0
- package/dist/core/people/crew-person-ship.js.map +1 -0
- package/dist/core/people/done-delivery.d.ts +16 -0
- package/dist/core/people/done-delivery.js +9 -0
- package/dist/core/people/done-delivery.js.map +1 -0
- package/dist/core/people/inbox-entry.d.ts +14 -0
- package/dist/core/people/inbox-entry.js +11 -0
- package/dist/core/people/inbox-entry.js.map +1 -0
- package/dist/core/people/open-delivery.d.ts +30 -0
- package/dist/core/people/open-delivery.js +40 -0
- package/dist/core/people/open-delivery.js.map +1 -0
- package/dist/core/people/opened-of.d.ts +29 -0
- package/dist/core/people/opened-of.js +30 -0
- package/dist/core/people/opened-of.js.map +1 -0
- package/dist/core/people/person-crew.d.ts +39 -0
- package/dist/core/people/person-crew.js +61 -0
- package/dist/core/people/person-crew.js.map +1 -0
- package/dist/core/people/ports.d.ts +102 -0
- package/dist/core/people/ports.js +2 -0
- package/dist/core/people/ports.js.map +1 -0
- package/dist/core/people/read-inbox.d.ts +37 -0
- package/dist/core/people/read-inbox.js +36 -0
- package/dist/core/people/read-inbox.js.map +1 -0
- package/dist/core/requests/ask-for-client.d.ts +45 -0
- package/dist/core/requests/ask-for-client.js +33 -0
- package/dist/core/requests/ask-for-client.js.map +1 -0
- package/dist/core/requests/ask-for-server.d.ts +32 -0
- package/dist/core/requests/ask-for-server.js +42 -0
- package/dist/core/requests/ask-for-server.js.map +1 -0
- package/dist/core/requests/ask-owners.d.ts +28 -0
- package/dist/core/requests/ask-owners.js +85 -0
- package/dist/core/requests/ask-owners.js.map +1 -0
- package/dist/core/requests/decide-request.d.ts +53 -0
- package/dist/core/requests/decide-request.js +83 -0
- package/dist/core/requests/decide-request.js.map +1 -0
- package/dist/core/requests/expire-requests.d.ts +14 -0
- package/dist/core/requests/expire-requests.js +21 -0
- package/dist/core/requests/expire-requests.js.map +1 -0
- package/dist/core/requests/list-mine.d.ts +16 -0
- package/dist/core/requests/list-mine.js +20 -0
- package/dist/core/requests/list-mine.js.map +1 -0
- package/dist/core/requests/list-to-decide.d.ts +11 -0
- package/dist/core/requests/list-to-decide.js +13 -0
- package/dist/core/requests/list-to-decide.js.map +1 -0
- package/dist/core/requests/open-request.d.ts +21 -0
- package/dist/core/requests/open-request.js +26 -0
- package/dist/core/requests/open-request.js.map +1 -0
- package/dist/core/requests/outcome-notice.d.ts +13 -0
- package/dist/core/requests/outcome-notice.js +26 -0
- package/dist/core/requests/outcome-notice.js.map +1 -0
- package/dist/core/requests/ports.d.ts +191 -0
- package/dist/core/requests/ports.js +2 -0
- package/dist/core/requests/ports.js.map +1 -0
- package/dist/core/requests/read-waiting.d.ts +46 -0
- package/dist/core/requests/read-waiting.js +41 -0
- package/dist/core/requests/read-waiting.js.map +1 -0
- package/dist/core/requests/request-state.d.ts +5 -0
- package/dist/core/requests/request-state.js +10 -0
- package/dist/core/requests/request-state.js.map +1 -0
- package/dist/core/requests/tell-outcomes.d.ts +24 -0
- package/dist/core/requests/tell-outcomes.js +39 -0
- package/dist/core/requests/tell-outcomes.js.map +1 -0
- package/dist/core/requests/watch-waiting.d.ts +32 -0
- package/dist/core/requests/watch-waiting.js +31 -0
- package/dist/core/requests/watch-waiting.js.map +1 -0
- package/dist/core/shared/clock.d.ts +4 -0
- package/dist/core/shared/clock.js +2 -0
- package/dist/core/shared/clock.js.map +1 -0
- package/dist/core/shared/errors.d.ts +10 -0
- package/dist/core/shared/errors.js +6 -0
- package/dist/core/shared/errors.js.map +1 -0
- package/dist/core/shared/result.d.ts +16 -0
- package/dist/core/shared/result.js +7 -0
- package/dist/core/shared/result.js.map +1 -0
- package/dist/core/sign-in/account-token.d.ts +42 -0
- package/dist/core/sign-in/account-token.js +46 -0
- package/dist/core/sign-in/account-token.js.map +1 -0
- package/dist/core/sign-in/complete-sign-in.d.ts +66 -0
- package/dist/core/sign-in/complete-sign-in.js +73 -0
- package/dist/core/sign-in/complete-sign-in.js.map +1 -0
- package/dist/core/sign-in/end-sign-ins.d.ts +19 -0
- package/dist/core/sign-in/end-sign-ins.js +17 -0
- package/dist/core/sign-in/end-sign-ins.js.map +1 -0
- package/dist/core/sign-in/ports.d.ts +115 -0
- package/dist/core/sign-in/ports.js +2 -0
- package/dist/core/sign-in/ports.js.map +1 -0
- package/dist/core/sign-in/sign-out.d.ts +10 -0
- package/dist/core/sign-in/sign-out.js +9 -0
- package/dist/core/sign-in/sign-out.js.map +1 -0
- package/dist/core/sign-in/start-page-sign-in.d.ts +25 -0
- package/dist/core/sign-in/start-page-sign-in.js +30 -0
- package/dist/core/sign-in/start-page-sign-in.js.map +1 -0
- package/dist/core/sign-in/start-sign-in.d.ts +30 -0
- package/dist/core/sign-in/start-sign-in.js +25 -0
- package/dist/core/sign-in/start-sign-in.js.map +1 -0
- package/dist/core/vault/credential.d.ts +18 -0
- package/dist/core/vault/credential.js +2 -0
- package/dist/core/vault/credential.js.map +1 -0
- package/dist/outcome-worker.d.ts +29 -0
- package/dist/outcome-worker.js +60 -0
- package/dist/outcome-worker.js.map +1 -0
- package/dist/party-workers.d.ts +32 -0
- package/dist/party-workers.js +57 -0
- package/dist/party-workers.js.map +1 -0
- package/package.json +70 -4
- package/prisma.config.ts +18 -0
- package/src/adapters/prisma/migrations/20261018200000_init/migration.sql +35 -0
- package/src/adapters/prisma/migrations/20261018210000_parties/migration.sql +19 -0
- package/src/adapters/prisma/migrations/20261018220000_tool_marks/migration.sql +8 -0
- package/src/adapters/prisma/migrations/20261018230000_calls/migration.sql +13 -0
- package/src/adapters/prisma/migrations/20261019090000_oauth/migration.sql +60 -0
- package/src/adapters/prisma/migrations/20261019100000_client_parties/migration.sql +8 -0
- package/src/adapters/prisma/migrations/20261019110000_oauth_parties/migration.sql +5 -0
- package/src/adapters/prisma/migrations/20261019120000_client_calls/migration.sql +15 -0
- package/src/adapters/prisma/migrations/20261019130000_client_call_replies/migration.sql +20 -0
- package/src/adapters/prisma/migrations/20261019140000_identity_providers/migration.sql +10 -0
- package/src/adapters/prisma/migrations/20261020090000_no_identity_providers/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261020100000_account_grants_in_tokens/migration.sql +5 -0
- package/src/adapters/prisma/migrations/20261020110000_account_grants/migration.sql +15 -0
- package/src/adapters/prisma/migrations/20261020120000_person_crews/migration.sql +9 -0
- package/src/adapters/prisma/migrations/20261020130000_opened_deliveries/migration.sql +13 -0
- package/src/adapters/prisma/migrations/20261020140000_pending_requests/migration.sql +26 -0
- package/src/adapters/prisma/migrations/20261020150000_outside_party_switches/migration.sql +8 -0
- package/src/adapters/prisma/migrations/20261020160000_pending_requests_told/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261020170000_request_outcome_notices/migration.sql +17 -0
- package/src/adapters/prisma/migrations/20261020180000_owner_questions/migration.sql +11 -0
- package/src/adapters/prisma/migrations/20261020190000_request_changes/migration.sql +12 -0
- package/src/adapters/prisma/migrations/20261020200000_account_grant_scopes/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261020210000_party_owner_from_fleet/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261020220000_client_call_deadline_optional/migration.sql +2 -0
- package/src/adapters/prisma/migrations/migration_lock.toml +3 -0
- package/src/adapters/prisma/schema.prisma +312 -0
|
@@ -0,0 +1,519 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The gateway's API: one tRPC router, which the console's server and the
|
|
3
|
+
* gateway's page call with the console's session cookie, as the other
|
|
4
|
+
* plugins' (decision 0043), and any ship with its own crew token (decision
|
|
5
|
+
* 0057). Every procedure but the installation's is an actor's: argo or a
|
|
6
|
+
* viewer by a console session of a fleet at the fleet's URL, or a ship of a
|
|
7
|
+
* fleet the gateway is connected to, and the procedure works on that fleet.
|
|
8
|
+
* What it may call is the scopes the fleet holds for it. A fleet the gateway
|
|
9
|
+
* does not serve (switched off) gets only `connection.status`. The
|
|
10
|
+
* installation procedures take the installation token instead (decision 0021).
|
|
11
|
+
*/
|
|
12
|
+
import { timingSafeEqual } from 'node:crypto';
|
|
13
|
+
import { idempotencyKeySchema, idSchema, shipHandleSchema } from '@aeolus-fleet/common';
|
|
14
|
+
import { initTRPC, TRPCError } from '@trpc/server';
|
|
15
|
+
import { z } from 'zod';
|
|
16
|
+
/** What a caller reads of a failure: nothing of it, so no crew token, secret or query ever leaves; the log holds it whole. */
|
|
17
|
+
export const INTERNAL_ERROR_MESSAGE = 'Internal error';
|
|
18
|
+
const t = initTRPC.context().create({
|
|
19
|
+
isDev: false,
|
|
20
|
+
errorFormatter: ({ shape, error }) => (error.code === 'INTERNAL_SERVER_ERROR' ? { ...shape, message: INTERNAL_ERROR_MESSAGE } : shape),
|
|
21
|
+
});
|
|
22
|
+
const actorProcedure = t.procedure.use(async ({ ctx, next }) => {
|
|
23
|
+
const actor = await ctx.authenticateActor({ cookie: ctx.cookie, crewToken: ctx.crewToken });
|
|
24
|
+
if (!actor.isOk) {
|
|
25
|
+
throw new TRPCError({ code: 'UNAUTHORIZED', message: actor.error.message });
|
|
26
|
+
}
|
|
27
|
+
return next({ ctx: { actor: actor.value, fleetId: actor.value.fleetId, scopes: actor.value.scopes } });
|
|
28
|
+
});
|
|
29
|
+
/**
|
|
30
|
+
* What changes the fleet needs the actor to hold fleet:manage: argo does, a
|
|
31
|
+
* viewer session (fleet:read only, decision 0022) does not, so it is served
|
|
32
|
+
* reads only; a ship as its scopes say. Checked before the input is read.
|
|
33
|
+
*/
|
|
34
|
+
function managing(procedure) {
|
|
35
|
+
return procedure.use(({ ctx, next }) => {
|
|
36
|
+
if (!ctx.scopes.includes('fleet:manage')) {
|
|
37
|
+
throw new TRPCError({ code: 'FORBIDDEN', message: 'Needs fleet:manage' });
|
|
38
|
+
}
|
|
39
|
+
return next();
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
/** Whether the token sent is the installation token, compared in constant time. */
|
|
43
|
+
function isInstallationToken(sent, token) {
|
|
44
|
+
const expected = Buffer.from(token);
|
|
45
|
+
const given = Buffer.from(sent ?? '');
|
|
46
|
+
return given.length === expected.length && timingSafeEqual(given, expected);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The installation's procedures (decision 0021): with no installation token
|
|
50
|
+
* configured they do not exist (NOT_FOUND); with one, the caller presents it
|
|
51
|
+
* in `x-aeolus-installation-token` or is refused (UNAUTHORIZED).
|
|
52
|
+
*/
|
|
53
|
+
const installationProcedure = t.procedure.use(async ({ ctx, next }) => {
|
|
54
|
+
if (ctx.installation.mode === 'open' || ctx.installation.token === undefined) {
|
|
55
|
+
throw new TRPCError({ code: 'NOT_FOUND', message: 'No such procedure' });
|
|
56
|
+
}
|
|
57
|
+
if (!isInstallationToken(ctx.installationTokenSent, ctx.installation.token)) {
|
|
58
|
+
throw new TRPCError({ code: 'UNAUTHORIZED', message: 'The installation token is missing or wrong' });
|
|
59
|
+
}
|
|
60
|
+
return next();
|
|
61
|
+
});
|
|
62
|
+
/** Refuses a fleet the gateway does not serve: while it is off, FORBIDDEN. */
|
|
63
|
+
async function refuseUnlessServed(ctx) {
|
|
64
|
+
if (!(await ctx.isServed(ctx.fleetId))) {
|
|
65
|
+
throw new TRPCError({ code: 'FORBIDDEN', message: 'The gateway is off for this fleet' });
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/** The operator's procedures that need the gateway to serve their fleet. */
|
|
69
|
+
const servedProcedure = actorProcedure.use(async ({ ctx, next }) => {
|
|
70
|
+
await refuseUnlessServed(ctx);
|
|
71
|
+
return next();
|
|
72
|
+
});
|
|
73
|
+
/** The refusals of connecting, as the API states them. */
|
|
74
|
+
const CONNECT_CODES = {
|
|
75
|
+
ALREADY_CONNECTED: 'CONFLICT',
|
|
76
|
+
SECRET_REFUSED: 'BAD_REQUEST',
|
|
77
|
+
OTHER_FLEET: 'BAD_REQUEST',
|
|
78
|
+
MISSING_SCOPES: 'BAD_REQUEST',
|
|
79
|
+
SCOPE_REFUSED: 'CONFLICT',
|
|
80
|
+
FLEET_UNAVAILABLE: 'BAD_GATEWAY',
|
|
81
|
+
};
|
|
82
|
+
/** The refusals of switching a fleet, as the API states them: a fleet that does not answer is tried again with the same request id. */
|
|
83
|
+
const SET_ENABLED_CODES = {
|
|
84
|
+
REQUEST_ID_USED: 'CONFLICT',
|
|
85
|
+
};
|
|
86
|
+
/** The refusals of approving a party, as the API states them: a fleet that does not answer is tried again with the same request id. */
|
|
87
|
+
const APPROVE_CODES = {
|
|
88
|
+
OUTSIDE_PARTIES_OFF: 'PRECONDITION_FAILED',
|
|
89
|
+
NOT_CONNECTED: 'PRECONDITION_FAILED',
|
|
90
|
+
PARTY_EXISTS: 'CONFLICT',
|
|
91
|
+
COMMISSION_REFUSED: 'BAD_REQUEST',
|
|
92
|
+
FLEET_UNAVAILABLE: 'BAD_GATEWAY',
|
|
93
|
+
};
|
|
94
|
+
/** The refusals of crewing a party's proxy ship with a new secret, as the API states them. */
|
|
95
|
+
/** The refusals of retiring a party, as the API states them. */
|
|
96
|
+
/** The refusals of changing a party's owner or scopes, as the API states them. */
|
|
97
|
+
const CHANGE_CODES = {
|
|
98
|
+
SCOPE_NOT_HELD: 'FORBIDDEN',
|
|
99
|
+
NO_SUCH_PARTY: 'NOT_FOUND',
|
|
100
|
+
PARTY_NOT_COMMISSIONED: 'PRECONDITION_FAILED',
|
|
101
|
+
CHANGE_REFUSED: 'FORBIDDEN',
|
|
102
|
+
FLEET_UNAVAILABLE: 'BAD_GATEWAY',
|
|
103
|
+
NOT_AN_ACTOR: 'UNAUTHORIZED',
|
|
104
|
+
};
|
|
105
|
+
const RETIRE_CODES = {
|
|
106
|
+
NOT_A_MANAGER: 'FORBIDDEN',
|
|
107
|
+
NO_SUCH_PARTY: 'NOT_FOUND',
|
|
108
|
+
RETIRE_REFUSED: 'FORBIDDEN',
|
|
109
|
+
FLEET_UNAVAILABLE: 'BAD_GATEWAY',
|
|
110
|
+
NOT_AN_ACTOR: 'UNAUTHORIZED',
|
|
111
|
+
};
|
|
112
|
+
const CREW_CODES = {
|
|
113
|
+
NO_SUCH_PARTY: 'NOT_FOUND',
|
|
114
|
+
NOT_AWAITING_CREW: 'CONFLICT',
|
|
115
|
+
SECRET_REFUSED: 'BAD_REQUEST',
|
|
116
|
+
};
|
|
117
|
+
/** The refusals of reading an outside MCP server's tools, as the API states them. */
|
|
118
|
+
const TOOLS_CODES = {
|
|
119
|
+
NO_SUCH_PARTY: 'NOT_FOUND',
|
|
120
|
+
SERVER_UNREACHABLE: 'BAD_GATEWAY',
|
|
121
|
+
};
|
|
122
|
+
/** The refusals of checking an outside MCP server, as the API states them. */
|
|
123
|
+
const CHECK_CODES = {
|
|
124
|
+
OUTSIDE_PARTIES_OFF: 'PRECONDITION_FAILED',
|
|
125
|
+
SERVER_UNREACHABLE: 'BAD_GATEWAY',
|
|
126
|
+
};
|
|
127
|
+
/** The refusals of stating a party's proxy ship, as the API states them. */
|
|
128
|
+
const STATE_CODES = {
|
|
129
|
+
NO_SUCH_PARTY: 'NOT_FOUND',
|
|
130
|
+
NOT_CREWED: 'CONFLICT',
|
|
131
|
+
SERVER_UNREACHABLE: 'BAD_GATEWAY',
|
|
132
|
+
STATEMENT_REFUSED: 'BAD_REQUEST',
|
|
133
|
+
};
|
|
134
|
+
/** The longest name argo gives an MCP client. */
|
|
135
|
+
const CLIENT_NAME_MAX_LENGTH = 200;
|
|
136
|
+
/** The longest tool name MCP allows (2026-07-28), as a capability's name is capped too. */
|
|
137
|
+
const TOOL_NAME_MAX_LENGTH = 128;
|
|
138
|
+
/** What stating a party answers: the names of the capabilities its proxy ship now offers. */
|
|
139
|
+
const statedOutputSchema = z.object({ capabilities: z.array(z.string()) });
|
|
140
|
+
/** The fewest and most calls the gateway has in flight to one party at once, and the default. */
|
|
141
|
+
const CONCURRENCY_LIMIT_MIN = 1;
|
|
142
|
+
// The most core 0.27's pushReceive hands at once, own deliveries in flight first (orchestrator-1 on aeolus-fleet#876, Q8).
|
|
143
|
+
const CONCURRENCY_LIMIT_MAX = 10;
|
|
144
|
+
const CONCURRENCY_LIMIT_DEFAULT = 4;
|
|
145
|
+
/** The credential argo gives the vault for a party: a static bearer, or OAuth client credentials. */
|
|
146
|
+
const credentialInputSchema = z.discriminatedUnion('kind', [
|
|
147
|
+
z.strictObject({ kind: z.literal('bearer'), token: z.string().min(1) }),
|
|
148
|
+
z.strictObject({
|
|
149
|
+
kind: z.literal('clientCredentials'),
|
|
150
|
+
clientId: z.string().min(1),
|
|
151
|
+
clientSecret: z.string().min(1),
|
|
152
|
+
issuer: z.url({ protocol: /^https?$/ }),
|
|
153
|
+
scope: z.string().min(1).optional(),
|
|
154
|
+
}),
|
|
155
|
+
]);
|
|
156
|
+
/** A party as any actor reads it: never its credential or its crew token. */
|
|
157
|
+
const shownPartyBase = { name: z.string(), state: z.enum(['commissioning', 'awaitingCrew', 'crewed']), proxyShipId: z.string().nullable() };
|
|
158
|
+
const shownPartySchema = z.discriminatedUnion('kind', [
|
|
159
|
+
z.object({ ...shownPartyBase, kind: z.literal('mcpServer'), url: z.string(), credentialKind: z.enum(['bearer', 'clientCredentials']), concurrencyLimit: z.int() }),
|
|
160
|
+
z.object({ ...shownPartyBase, kind: z.literal('mcpClient'), clientId: z.string() }),
|
|
161
|
+
]);
|
|
162
|
+
/** A party with its proxy ship's owner and scopes, read from the fleet (decision 0056): null while unknown. */
|
|
163
|
+
const fromFleet = { ownerShipId: z.string().nullable(), scopes: z.array(z.string()).nullable() };
|
|
164
|
+
const listedPartySchema = z.discriminatedUnion('kind', [
|
|
165
|
+
z.object({ ...shownPartyBase, ...fromFleet, kind: z.literal('mcpServer'), url: z.string(), credentialKind: z.enum(['bearer', 'clientCredentials']), concurrencyLimit: z.int() }),
|
|
166
|
+
z.object({ ...shownPartyBase, ...fromFleet, kind: z.literal('mcpClient'), clientId: z.string() }),
|
|
167
|
+
]);
|
|
168
|
+
/** The connection as the console reads it: whether the gateway serves the fleet, and its connection. */
|
|
169
|
+
const connectionStatusOutputSchema = z.object({
|
|
170
|
+
enabled: z.boolean(),
|
|
171
|
+
state: z.enum(['not-connected', 'connected']),
|
|
172
|
+
ship: z.object({ shipId: z.string(), name: z.string() }).nullable(),
|
|
173
|
+
lastShipId: z.string().nullable(),
|
|
174
|
+
});
|
|
175
|
+
/** The refusals of deciding a request, as the API states them. */
|
|
176
|
+
const DECIDE_CODES = {
|
|
177
|
+
NOT_AN_APPROVER: 'FORBIDDEN',
|
|
178
|
+
SCOPE_NOT_HELD: 'FORBIDDEN',
|
|
179
|
+
NO_SUCH_REQUEST: 'NOT_FOUND',
|
|
180
|
+
ALREADY_DECIDED: 'CONFLICT',
|
|
181
|
+
EXPIRED: 'CONFLICT',
|
|
182
|
+
CLIENT_HAS_PARTY: 'CONFLICT',
|
|
183
|
+
PARTY_EXISTS: 'CONFLICT',
|
|
184
|
+
SERVER_DETAILS_MISSING: 'BAD_REQUEST',
|
|
185
|
+
COMMISSION_REFUSED: 'BAD_REQUEST',
|
|
186
|
+
OUTSIDE_PARTIES_OFF: 'PRECONDITION_FAILED',
|
|
187
|
+
NOT_CONNECTED: 'PRECONDITION_FAILED',
|
|
188
|
+
FLEET_UNAVAILABLE: 'BAD_GATEWAY',
|
|
189
|
+
};
|
|
190
|
+
/** The refusals of switching outside parties, as the API states them: an open network's warning is confirmed by calling again. */
|
|
191
|
+
const OUTSIDE_PARTIES_CODES = {
|
|
192
|
+
NOT_A_NETWORKER: 'FORBIDDEN',
|
|
193
|
+
OPEN_NETWORK: 'PRECONDITION_FAILED',
|
|
194
|
+
FLEET_UNAVAILABLE: 'BAD_GATEWAY',
|
|
195
|
+
NOT_AN_ACTOR: 'UNAUTHORIZED',
|
|
196
|
+
};
|
|
197
|
+
/** A pending request as the API answers it: its times as ISO text. */
|
|
198
|
+
const pendingRequestSchema = z.object({
|
|
199
|
+
fleetId: z.string(),
|
|
200
|
+
requestId: z.string(),
|
|
201
|
+
subject: z.discriminatedUnion('kind', [z.object({ kind: z.literal('client'), clientId: z.string(), clientName: z.string() }), z.object({ kind: z.literal('server'), url: z.string() })]),
|
|
202
|
+
requesters: z.array(z.object({ accountId: z.string(), personShipId: z.string().nullable() })),
|
|
203
|
+
askedAt: z.string(),
|
|
204
|
+
expiresAt: z.string(),
|
|
205
|
+
state: z.enum(['pending', 'approving', 'approved', 'denied', 'expired']),
|
|
206
|
+
decidedBy: z.union([z.object({ kind: z.literal('ship'), shipId: z.string() }), z.object({ kind: z.literal('account'), accountId: z.string() }), z.object({ kind: z.enum(['operator', 'viewer']) })]).nullable(),
|
|
207
|
+
decidedAt: z.string().nullable(),
|
|
208
|
+
});
|
|
209
|
+
function shownRequestOf(request) {
|
|
210
|
+
return { ...request, requesters: [...request.requesters], askedAt: request.askedAt.toISOString(), expiresAt: request.expiresAt.toISOString(), decidedAt: request.decidedAt?.toISOString() ?? null };
|
|
211
|
+
}
|
|
212
|
+
/** A decision as the API takes it: deny, or approve naming the proxy ship, its owner and its scopes, and for a server its credential. */
|
|
213
|
+
const decisionSchema = z.discriminatedUnion('kind', [
|
|
214
|
+
z.strictObject({ kind: z.literal('deny') }),
|
|
215
|
+
z.strictObject({
|
|
216
|
+
kind: z.literal('approve'),
|
|
217
|
+
party: z.strictObject({ name: shipHandleSchema, ownerShipId: idSchema('ship'), scopes: z.array(z.string()) }),
|
|
218
|
+
server: z.strictObject({ credential: credentialInputSchema, concurrencyLimit: z.int().min(CONCURRENCY_LIMIT_MIN).max(CONCURRENCY_LIMIT_MAX) }).optional(),
|
|
219
|
+
}),
|
|
220
|
+
]);
|
|
221
|
+
/** The largest payload a message carries. */
|
|
222
|
+
const PAYLOAD_MAX_BYTES = 64 * 1024;
|
|
223
|
+
/** The refusals of a person's own deliveries, as the API states them. */
|
|
224
|
+
const PERSON_CODES = {
|
|
225
|
+
NOT_A_PERSON: 'FORBIDDEN',
|
|
226
|
+
SIGNED_OUT: 'UNAUTHORIZED',
|
|
227
|
+
FLEET_UNAVAILABLE: 'BAD_GATEWAY',
|
|
228
|
+
NO_SUCH_DELIVERY: 'NOT_FOUND',
|
|
229
|
+
SEND_REFUSED: 'BAD_REQUEST',
|
|
230
|
+
};
|
|
231
|
+
function personAnswerOf(answered) {
|
|
232
|
+
if (!answered.isOk) {
|
|
233
|
+
throw new TRPCError({ code: PERSON_CODES[answered.error.kind], message: answered.error.message });
|
|
234
|
+
}
|
|
235
|
+
return answered.value;
|
|
236
|
+
}
|
|
237
|
+
/** A person signed in to the pages, acting on their own person ship: only an account has one. */
|
|
238
|
+
const personProcedure = actorProcedure.use(({ ctx, next }) => {
|
|
239
|
+
if (ctx.actor.kind !== 'account' || ctx.person === undefined) {
|
|
240
|
+
throw new TRPCError({ code: 'FORBIDDEN', message: "Only a person signed in to the gateway's pages has a person ship's deliveries here" });
|
|
241
|
+
}
|
|
242
|
+
return next({ ctx: { person: ctx.person, caller: { fleetId: ctx.actor.fleetId, grantId: ctx.actor.grantId } } });
|
|
243
|
+
});
|
|
244
|
+
export const gatewayRouter = t.router({
|
|
245
|
+
connection: t.router({
|
|
246
|
+
/** Whether the gateway is connected to the operator's fleet, as which ship, and the ship it was last connected as. */
|
|
247
|
+
status: actorProcedure.output(connectionStatusOutputSchema).query(async ({ ctx }) => {
|
|
248
|
+
// A fleet that is off is read from what the gateway holds: it asks its fleet nothing then.
|
|
249
|
+
const isServed = await ctx.isServed(ctx.fleetId);
|
|
250
|
+
const connection = isServed ? await ctx.readConnection(ctx.fleetId) : await ctx.heldConnection(ctx.fleetId);
|
|
251
|
+
return { enabled: isServed, ...connection };
|
|
252
|
+
}),
|
|
253
|
+
/**
|
|
254
|
+
* Connects the gateway with its ship's secret, which the console's server
|
|
255
|
+
* hands over server to server: it registers with it and keeps only the
|
|
256
|
+
* crew token. Only while not connected, and while the gateway serves the
|
|
257
|
+
* fleet.
|
|
258
|
+
*/
|
|
259
|
+
connect: managing(servedProcedure)
|
|
260
|
+
.input(z.object({ shipId: idSchema('ship'), secret: z.string().min(1) }))
|
|
261
|
+
.output(connectionStatusOutputSchema)
|
|
262
|
+
.mutation(async ({ ctx, input }) => {
|
|
263
|
+
const connected = await ctx.connect({ operatorFleetId: ctx.fleetId, ...input });
|
|
264
|
+
if (!connected.isOk) {
|
|
265
|
+
throw new TRPCError({ code: CONNECT_CODES[connected.error.kind], message: connected.error.message });
|
|
266
|
+
}
|
|
267
|
+
// Answered as connection.status answers: connect works only while the gateway serves the fleet.
|
|
268
|
+
return { enabled: true, ...connected.value };
|
|
269
|
+
}),
|
|
270
|
+
}),
|
|
271
|
+
parties: t.router({
|
|
272
|
+
/** The fleet's outside parties, by name, each with its proxy ship's owner and scopes from the fleet, read as the actor. Any actor reads them. */
|
|
273
|
+
list: servedProcedure.output(z.array(listedPartySchema)).query(({ ctx }) => ctx.listParties({ actor: ctx.actor, as: { cookie: ctx.cookie, crewToken: ctx.crewToken } })),
|
|
274
|
+
/** One outside party, as the list shows it. */
|
|
275
|
+
get: servedProcedure
|
|
276
|
+
.input(z.strictObject({ name: shipHandleSchema }))
|
|
277
|
+
.output(listedPartySchema)
|
|
278
|
+
.query(async ({ ctx, input }) => {
|
|
279
|
+
const read = await ctx.readParty({ actor: ctx.actor, as: { cookie: ctx.cookie, crewToken: ctx.crewToken }, ...input });
|
|
280
|
+
if (!read.isOk) {
|
|
281
|
+
throw new TRPCError({ code: 'NOT_FOUND', message: read.error.message });
|
|
282
|
+
}
|
|
283
|
+
return read.value;
|
|
284
|
+
}),
|
|
285
|
+
/** An outside MCP server's tools, as the server lists them now, asked with the credential the gateway keeps. Any actor reads them. */
|
|
286
|
+
tools: servedProcedure
|
|
287
|
+
.input(z.strictObject({ name: shipHandleSchema }))
|
|
288
|
+
.output(z.object({ tools: z.array(z.object({ name: z.string(), description: z.string().optional() })) }))
|
|
289
|
+
.query(async ({ ctx, input }) => {
|
|
290
|
+
const read = await ctx.readPartyTools({ fleetId: ctx.fleetId, ...input });
|
|
291
|
+
if (!read.isOk) {
|
|
292
|
+
throw new TRPCError({ code: TOOLS_CODES[read.error.kind], message: read.error.message });
|
|
293
|
+
}
|
|
294
|
+
return read.value;
|
|
295
|
+
}),
|
|
296
|
+
/**
|
|
297
|
+
* An actor holding fleet:manage checks an outside MCP server before
|
|
298
|
+
* approving it (F10): the tools it lists with the credential sent. The
|
|
299
|
+
* gateway keeps nothing and commissions nothing. A mutation, so the
|
|
300
|
+
* credential travels in the body, never in a URL.
|
|
301
|
+
*/
|
|
302
|
+
check: managing(servedProcedure)
|
|
303
|
+
.input(z.strictObject({ url: z.url({ protocol: /^https?$/ }), credential: credentialInputSchema }))
|
|
304
|
+
.output(z.object({ tools: z.array(z.object({ name: z.string(), description: z.string().optional() })) }))
|
|
305
|
+
.mutation(async ({ ctx, input }) => {
|
|
306
|
+
const checked = await ctx.checkServer({ fleetId: ctx.fleetId, ...input });
|
|
307
|
+
if (!checked.isOk) {
|
|
308
|
+
throw new TRPCError({ code: CHECK_CODES[checked.error.kind], message: checked.error.message });
|
|
309
|
+
}
|
|
310
|
+
return checked.value;
|
|
311
|
+
}),
|
|
312
|
+
/**
|
|
313
|
+
* argo approves an outside MCP server as a party: the gateway commissions
|
|
314
|
+
* its app proxy ship owned by the owner argo picked, crews it, and keeps
|
|
315
|
+
* the credential in its vault (interop I-5). A repeat with the same
|
|
316
|
+
* request id picks up where the last one stopped.
|
|
317
|
+
*/
|
|
318
|
+
approve: managing(servedProcedure)
|
|
319
|
+
.input(z.strictObject({
|
|
320
|
+
requestId: idempotencyKeySchema,
|
|
321
|
+
name: shipHandleSchema,
|
|
322
|
+
url: z.url({ protocol: /^https?$/ }),
|
|
323
|
+
credential: credentialInputSchema,
|
|
324
|
+
ownerShipId: idSchema('ship'),
|
|
325
|
+
concurrencyLimit: z.int().min(CONCURRENCY_LIMIT_MIN).max(CONCURRENCY_LIMIT_MAX).default(CONCURRENCY_LIMIT_DEFAULT),
|
|
326
|
+
}))
|
|
327
|
+
.output(shownPartySchema)
|
|
328
|
+
.mutation(async ({ ctx, input }) => {
|
|
329
|
+
const approved = await ctx.approveParty({ operatorFleetId: ctx.fleetId, ...input, scopes: [] });
|
|
330
|
+
if (!approved.isOk) {
|
|
331
|
+
throw new TRPCError({ code: APPROVE_CODES[approved.error.kind], message: approved.error.message });
|
|
332
|
+
}
|
|
333
|
+
return approved.value;
|
|
334
|
+
}),
|
|
335
|
+
/**
|
|
336
|
+
* An actor holding fleet:manage retires a party (decision 0056): its proxy
|
|
337
|
+
* ship is retired in the fleet as the actor, within its manage reach, and
|
|
338
|
+
* the gateway forgets the party. Adding it again is a new request.
|
|
339
|
+
*/
|
|
340
|
+
/** An actor holding fleet:owner sets a party's owner: its proxy ship's, in the fleet, as the actor (decision 0056). */
|
|
341
|
+
changeOwner: servedProcedure
|
|
342
|
+
.input(z.strictObject({ name: shipHandleSchema, ownerShipId: idSchema('ship') }))
|
|
343
|
+
.output(z.object({}))
|
|
344
|
+
.mutation(async ({ ctx, input }) => {
|
|
345
|
+
const changed = await ctx.changePartyOwner({ actor: ctx.actor, as: { cookie: ctx.cookie, crewToken: ctx.crewToken }, ...input });
|
|
346
|
+
if (!changed.isOk) {
|
|
347
|
+
throw new TRPCError({ code: CHANGE_CODES[changed.error.kind], message: changed.error.message });
|
|
348
|
+
}
|
|
349
|
+
return {};
|
|
350
|
+
}),
|
|
351
|
+
/** An actor holding scopes:grant grants and revokes a party's scopes, only scopes it holds: every scope its proxy ship holds now (decision 0056). */
|
|
352
|
+
changeScopes: servedProcedure
|
|
353
|
+
.input(z.strictObject({ name: shipHandleSchema, grant: z.array(z.string()), revoke: z.array(z.string()) }))
|
|
354
|
+
.output(z.object({ scopes: z.array(z.string()) }))
|
|
355
|
+
.mutation(async ({ ctx, input }) => {
|
|
356
|
+
const changed = await ctx.changePartyScopes({ actor: ctx.actor, as: { cookie: ctx.cookie, crewToken: ctx.crewToken }, ...input });
|
|
357
|
+
if (!changed.isOk) {
|
|
358
|
+
throw new TRPCError({ code: CHANGE_CODES[changed.error.kind], message: changed.error.message });
|
|
359
|
+
}
|
|
360
|
+
return changed.value;
|
|
361
|
+
}),
|
|
362
|
+
retire: servedProcedure
|
|
363
|
+
.input(z.strictObject({ name: shipHandleSchema }))
|
|
364
|
+
.output(z.object({}))
|
|
365
|
+
.mutation(async ({ ctx, input }) => {
|
|
366
|
+
const retired = await ctx.retireParty({ actor: ctx.actor, as: { cookie: ctx.cookie, crewToken: ctx.crewToken }, ...input });
|
|
367
|
+
if (!retired.isOk) {
|
|
368
|
+
throw new TRPCError({ code: RETIRE_CODES[retired.error.kind], message: retired.error.message });
|
|
369
|
+
}
|
|
370
|
+
return {};
|
|
371
|
+
}),
|
|
372
|
+
/** argo hands over a new secret, from a new starting prompt in the console, for a proxy ship that awaits crew. */
|
|
373
|
+
crew: managing(servedProcedure)
|
|
374
|
+
.input(z.strictObject({ name: shipHandleSchema, secret: z.string().min(1) }))
|
|
375
|
+
.output(shownPartySchema)
|
|
376
|
+
.mutation(async ({ ctx, input }) => {
|
|
377
|
+
const crewed = await ctx.crewParty({ operatorFleetId: ctx.fleetId, ...input });
|
|
378
|
+
if (!crewed.isOk) {
|
|
379
|
+
throw new TRPCError({ code: CREW_CODES[crewed.error.kind], message: crewed.error.message });
|
|
380
|
+
}
|
|
381
|
+
return crewed.value;
|
|
382
|
+
}),
|
|
383
|
+
/** The gateway states the party's proxy ship anew, from what its server lists now, with argo's marks. */
|
|
384
|
+
state: managing(servedProcedure)
|
|
385
|
+
.input(z.strictObject({ name: shipHandleSchema }))
|
|
386
|
+
.output(statedOutputSchema)
|
|
387
|
+
.mutation(async ({ ctx, input }) => {
|
|
388
|
+
const stated = await ctx.stateParty({ fleetId: ctx.fleetId, ...input });
|
|
389
|
+
if (!stated.isOk) {
|
|
390
|
+
throw new TRPCError({ code: STATE_CODES[stated.error.kind], message: stated.error.message });
|
|
391
|
+
}
|
|
392
|
+
return stated.value;
|
|
393
|
+
}),
|
|
394
|
+
/** argo marks a party's tool repeatable, or takes the mark off (interop 5.2): kept, then stated at once. */
|
|
395
|
+
markTool: managing(servedProcedure)
|
|
396
|
+
.input(z.strictObject({ name: shipHandleSchema, tool: z.string().min(1).max(TOOL_NAME_MAX_LENGTH), isRepeatable: z.boolean() }))
|
|
397
|
+
.output(statedOutputSchema)
|
|
398
|
+
.mutation(async ({ ctx, input }) => {
|
|
399
|
+
const stated = await ctx.markTool({ fleetId: ctx.fleetId, ...input });
|
|
400
|
+
if (!stated.isOk) {
|
|
401
|
+
throw new TRPCError({ code: STATE_CODES[stated.error.kind], message: stated.error.message });
|
|
402
|
+
}
|
|
403
|
+
return stated.value;
|
|
404
|
+
}),
|
|
405
|
+
}),
|
|
406
|
+
people: t.router({
|
|
407
|
+
/** What waits for the person's own ship, by titles only (Q20). */
|
|
408
|
+
inbox: personProcedure.query(async ({ ctx }) => personAnswerOf(await ctx.person.readInbox(ctx.caller))),
|
|
409
|
+
/** Opens one delivery, whole; the gateway acknowledges it for them. */
|
|
410
|
+
open: personProcedure.input(z.strictObject({ deliveryId: z.string().min(1) })).mutation(async ({ ctx, input }) => personAnswerOf(await ctx.person.openDelivery({ caller: ctx.caller, ...input }))),
|
|
411
|
+
/** Answers a delivery they opened, to its sender. */
|
|
412
|
+
answer: personProcedure
|
|
413
|
+
.input(z.strictObject({ deliveryId: z.string().min(1), contentType: z.string().min(1), payload: z.string().max(PAYLOAD_MAX_BYTES) }))
|
|
414
|
+
.mutation(async ({ ctx, input }) => personAnswerOf(await ctx.person.answerDelivery({ caller: ctx.caller, ...input }))),
|
|
415
|
+
/** Is done with a delivery they opened, with no answer. */
|
|
416
|
+
done: personProcedure.input(z.strictObject({ deliveryId: z.string().min(1) })).mutation(async ({ ctx, input }) => personAnswerOf(await ctx.person.doneDelivery({ caller: ctx.caller, ...input }))),
|
|
417
|
+
}),
|
|
418
|
+
requests: t.router({
|
|
419
|
+
/** The requests the account asked, in any state, the newest first (decision 0056: Your requests). */
|
|
420
|
+
mine: actorProcedure.output(z.array(pendingRequestSchema)).query(async ({ ctx }) => {
|
|
421
|
+
const listed = await ctx.listMine(ctx.actor);
|
|
422
|
+
if (!listed.isOk) {
|
|
423
|
+
throw new TRPCError({ code: 'FORBIDDEN', message: listed.error.message });
|
|
424
|
+
}
|
|
425
|
+
return listed.value.map(shownRequestOf);
|
|
426
|
+
}),
|
|
427
|
+
/** Every open request of the fleet, for an actor holding gateway:approve (decision 0056). */
|
|
428
|
+
toDecide: servedProcedure.output(z.array(pendingRequestSchema)).query(async ({ ctx }) => {
|
|
429
|
+
const listed = await ctx.listToDecide(ctx.actor);
|
|
430
|
+
if (!listed.isOk) {
|
|
431
|
+
throw new TRPCError({ code: 'FORBIDDEN', message: listed.error.message });
|
|
432
|
+
}
|
|
433
|
+
return listed.value.map(shownRequestOf);
|
|
434
|
+
}),
|
|
435
|
+
/** Decides a pending request as the actor: the first decision counts. */
|
|
436
|
+
decide: servedProcedure
|
|
437
|
+
.input(z.strictObject({ requestId: z.string().min(1), decision: decisionSchema }))
|
|
438
|
+
.output(z.object({ state: z.enum(['approved', 'denied']), party: shownPartySchema.nullable() }))
|
|
439
|
+
.mutation(async ({ ctx, input }) => {
|
|
440
|
+
const decided = await ctx.decideRequest({ actor: ctx.actor, ...input });
|
|
441
|
+
if (!decided.isOk) {
|
|
442
|
+
throw new TRPCError({ code: DECIDE_CODES[decided.error.kind], message: decided.error.message });
|
|
443
|
+
}
|
|
444
|
+
return decided.value;
|
|
445
|
+
}),
|
|
446
|
+
}),
|
|
447
|
+
outsideParties: t.router({
|
|
448
|
+
/** Whether the fleet's outside parties are on (interop I-3). */
|
|
449
|
+
status: servedProcedure.output(z.object({ isOn: z.boolean() })).query(({ ctx }) => ctx.readOutsideParties(ctx.actor)),
|
|
450
|
+
/** Turns them on or off as an actor holding fleet:network; on in an open network needs its warning confirmed. */
|
|
451
|
+
set: servedProcedure
|
|
452
|
+
.input(z.strictObject({ isOn: z.boolean(), isOpenNetworkConfirmed: z.boolean() }))
|
|
453
|
+
.output(z.object({ isOn: z.boolean() }))
|
|
454
|
+
.mutation(async ({ ctx, input }) => {
|
|
455
|
+
const set = await ctx.setOutsideParties({ actor: ctx.actor, as: { cookie: ctx.cookie, crewToken: ctx.crewToken }, ...input });
|
|
456
|
+
if (!set.isOk) {
|
|
457
|
+
throw new TRPCError({ code: OUTSIDE_PARTIES_CODES[set.error.kind], message: set.error.message });
|
|
458
|
+
}
|
|
459
|
+
return set.value;
|
|
460
|
+
}),
|
|
461
|
+
}),
|
|
462
|
+
oauth: t.router({
|
|
463
|
+
/**
|
|
464
|
+
* argo pre-registers an MCP client for its fleet: its name and redirect
|
|
465
|
+
* URIs, and whether it keeps a secret. The secret is answered this once.
|
|
466
|
+
*/
|
|
467
|
+
registerClient: managing(actorProcedure)
|
|
468
|
+
.input(z.strictObject({ name: z.string().min(1).max(CLIENT_NAME_MAX_LENGTH), redirectUris: z.array(z.string()), isConfidential: z.boolean() }))
|
|
469
|
+
.output(z.object({ clientId: z.string(), clientSecret: z.string().nullable() }))
|
|
470
|
+
.mutation(async ({ ctx, input }) => {
|
|
471
|
+
const registered = await ctx.registerClient({ fleetId: ctx.fleetId, ...input });
|
|
472
|
+
if (!registered.isOk) {
|
|
473
|
+
throw new TRPCError({ code: 'BAD_REQUEST', message: registered.error.message });
|
|
474
|
+
}
|
|
475
|
+
return registered.value;
|
|
476
|
+
}),
|
|
477
|
+
}),
|
|
478
|
+
installation: t.router({
|
|
479
|
+
/** Switches the gateway on or off for a fleet; off keeps everything of it. A replayed request id answers its first answer. */
|
|
480
|
+
setEnabled: installationProcedure
|
|
481
|
+
.input(z.strictObject({ requestId: idempotencyKeySchema, fleetId: idSchema('fleet'), enabled: z.boolean() }))
|
|
482
|
+
.output(z.object({ fleetId: z.string(), enabled: z.boolean() }))
|
|
483
|
+
.mutation(async ({ ctx, input }) => {
|
|
484
|
+
const set = await ctx.setFleetEnabled({ requestId: input.requestId, fleetId: input.fleetId, isEnabled: input.enabled });
|
|
485
|
+
if (!set.isOk) {
|
|
486
|
+
throw new TRPCError({ code: SET_ENABLED_CODES[set.error.kind], message: set.error.message });
|
|
487
|
+
}
|
|
488
|
+
return { fleetId: set.value.fleetId, enabled: set.value.isEnabled };
|
|
489
|
+
}),
|
|
490
|
+
/** Whether the gateway serves the fleet, and whether it is connected to it. */
|
|
491
|
+
get: installationProcedure
|
|
492
|
+
.input(z.strictObject({ fleetId: idSchema('fleet') }))
|
|
493
|
+
.output(z.object({ enabled: z.boolean(), connected: z.boolean() }))
|
|
494
|
+
.query(async ({ ctx, input }) => {
|
|
495
|
+
const fleet = await ctx.readFleet({ fleetId: input.fleetId });
|
|
496
|
+
return { enabled: fleet.isEnabled, connected: fleet.isConnected };
|
|
497
|
+
}),
|
|
498
|
+
/** Forgets everything the gateway holds of the fleet, telling the fleet nothing. A replayed request id answers its first answer. */
|
|
499
|
+
delete: installationProcedure
|
|
500
|
+
.input(z.strictObject({ requestId: idempotencyKeySchema, fleetId: idSchema('fleet') }))
|
|
501
|
+
.output(z.strictObject({}))
|
|
502
|
+
.mutation(async ({ ctx, input }) => {
|
|
503
|
+
const deleted = await ctx.deleteFleet(input);
|
|
504
|
+
if (!deleted.isOk) {
|
|
505
|
+
throw new TRPCError({ code: 'CONFLICT', message: deleted.error.message });
|
|
506
|
+
}
|
|
507
|
+
return {};
|
|
508
|
+
}),
|
|
509
|
+
/** pagasae disabled the account (decision 0055): every sign-in of it in the fleet ends, and its clients' tokens are revoked. Told again, it ends nothing more. */
|
|
510
|
+
accountDisabled: installationProcedure
|
|
511
|
+
.input(z.strictObject({ fleetId: idSchema('fleet'), accountId: z.string().min(1) }))
|
|
512
|
+
.output(z.strictObject({}))
|
|
513
|
+
.mutation(async ({ ctx, input }) => {
|
|
514
|
+
await ctx.endSignIns(input);
|
|
515
|
+
return {};
|
|
516
|
+
}),
|
|
517
|
+
}),
|
|
518
|
+
});
|
|
519
|
+
//# sourceMappingURL=router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/adapters/trpc/router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,gBAAgB,EAAgB,MAAM,sBAAsB,CAAC;AACtG,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAuExB,8HAA8H;AAC9H,MAAM,CAAC,MAAM,sBAAsB,GAAG,gBAAgB,CAAC;AAEvD,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAW,CAAC,MAAM,CAAC;IAC3C,KAAK,EAAE,KAAK;IACZ,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,uBAAuB,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;CACvI,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE;IAC7D,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;IAC5F,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChB,MAAM,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACzG,CAAC,CAAC,CAAC;AAEH;;;;GAIG;AACH,SAAS,QAAQ,CAAC,SAAgC;IAChD,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE;QACrC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,mFAAmF;AACnF,SAAS,mBAAmB,CAAC,IAAwB,EAAE,KAAa;IAClE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACtC,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,IAAI,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC9E,CAAC;AAED;;;;GAIG;AACH,MAAM,qBAAqB,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE;IACpE,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,YAAY,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7E,MAAM,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,qBAAqB,EAAE,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,4CAA4C,EAAE,CAAC,CAAC;IACvG,CAAC;IACD,OAAO,IAAI,EAAE,CAAC;AAChB,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,KAAK,UAAU,kBAAkB,CAAC,GAA6C;IAC7E,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,mCAAmC,EAAE,CAAC,CAAC;IAC3F,CAAC;AACH,CAAC;AAED,4EAA4E;AAC5E,MAAM,eAAe,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE;IACjE,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC9B,OAAO,IAAI,EAAE,CAAC;AAChB,CAAC,CAAC,CAAC;AAEH,0DAA0D;AAC1D,MAAM,aAAa,GAAG;IACpB,iBAAiB,EAAE,UAAU;IAC7B,cAAc,EAAE,aAAa;IAC7B,WAAW,EAAE,aAAa;IAC1B,cAAc,EAAE,aAAa;IAC7B,aAAa,EAAE,UAAU;IACzB,iBAAiB,EAAE,aAAa;CACoB,CAAC;AAEvD,uIAAuI;AACvI,MAAM,iBAAiB,GAAG;IACxB,eAAe,EAAE,UAAU;CACyB,CAAC;AAEvD,uIAAuI;AACvI,MAAM,aAAa,GAAG;IACpB,mBAAmB,EAAE,qBAAqB;IAC1C,aAAa,EAAE,qBAAqB;IACpC,YAAY,EAAE,UAAU;IACxB,kBAAkB,EAAE,aAAa;IACjC,iBAAiB,EAAE,aAAa;CACoB,CAAC;AAEvD,8FAA8F;AAC9F,gEAAgE;AAChE,kFAAkF;AAClF,MAAM,YAAY,GAAG;IACnB,cAAc,EAAE,WAAW;IAC3B,aAAa,EAAE,WAAW;IAC1B,sBAAsB,EAAE,qBAAqB;IAC7C,cAAc,EAAE,WAAW;IAC3B,iBAAiB,EAAE,aAAa;IAChC,YAAY,EAAE,cAAc;CAC4C,CAAC;AAE3E,MAAM,YAAY,GAAG;IACnB,aAAa,EAAE,WAAW;IAC1B,aAAa,EAAE,WAAW;IAC1B,cAAc,EAAE,WAAW;IAC3B,iBAAiB,EAAE,aAAa;IAChC,YAAY,EAAE,cAAc;CAC4C,CAAC;AAE3E,MAAM,UAAU,GAAG;IACjB,aAAa,EAAE,WAAW;IAC1B,iBAAiB,EAAE,UAAU;IAC7B,cAAc,EAAE,aAAa;CACuB,CAAC;AAEvD,qFAAqF;AACrF,MAAM,WAAW,GAAG;IAClB,aAAa,EAAE,WAAW;IAC1B,kBAAkB,EAAE,aAAa;CACmD,CAAC;AAEvF,8EAA8E;AAC9E,MAAM,WAAW,GAAG;IAClB,mBAAmB,EAAE,qBAAqB;IAC1C,kBAAkB,EAAE,aAAa;CACyD,CAAC;AAE7F,4EAA4E;AAC5E,MAAM,WAAW,GAAG;IAClB,aAAa,EAAE,WAAW;IAC1B,UAAU,EAAE,UAAU;IACtB,kBAAkB,EAAE,aAAa;IACjC,iBAAiB,EAAE,aAAa;CACoB,CAAC;AAEvD,iDAAiD;AACjD,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAEnC,2FAA2F;AAC3F,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAEjC,6FAA6F;AAC7F,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAE3E,iGAAiG;AACjG,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAChC,2HAA2H;AAC3H,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACjC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAEpC,qGAAqG;AACrG,MAAM,qBAAqB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IACzD,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,CAAC,CAAC,YAAY,CAAC;QACb,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC;QACpC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/B,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;QACvC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;KACpC,CAAC;CACH,CAAC,CAAC;AAEH,6EAA6E;AAC7E,MAAM,cAAc,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC5I,MAAM,gBAAgB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IACpD,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;IAClK,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;CACpF,CAAC,CAAC;AAEH,+GAA+G;AAC/G,MAAM,SAAS,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;AACjG,MAAM,iBAAiB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IACrD,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,cAAc,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;IAChL,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,cAAc,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;CAClG,CAAC,CAAC;AAEH,wGAAwG;AACxG,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAC7C,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;IACnE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEH,kEAAkE;AAClE,MAAM,YAAY,GAAG;IACnB,eAAe,EAAE,WAAW;IAC5B,cAAc,EAAE,WAAW;IAC3B,eAAe,EAAE,WAAW;IAC5B,eAAe,EAAE,UAAU;IAC3B,OAAO,EAAE,UAAU;IACnB,gBAAgB,EAAE,UAAU;IAC5B,YAAY,EAAE,UAAU;IACxB,sBAAsB,EAAE,aAAa;IACrC,kBAAkB,EAAE,aAAa;IACjC,mBAAmB,EAAE,qBAAqB;IAC1C,aAAa,EAAE,qBAAqB;IACpC,iBAAiB,EAAE,aAAa;CACmC,CAAC;AAEtE,kIAAkI;AAClI,MAAM,qBAAqB,GAAG;IAC5B,eAAe,EAAE,WAAW;IAC5B,YAAY,EAAE,qBAAqB;IACnC,iBAAiB,EAAE,aAAa;IAChC,YAAY,EAAE,cAAc;CACwB,CAAC;AAEvD,sEAAsE;AACtE,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,OAAO,EAAE,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IACxL,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC7F,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACxE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/M,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH,SAAS,cAAc,CAAC,OAAuB;IAC7C,OAAO,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC;AACtM,CAAC;AAED,yIAAyI;AACzI,MAAM,cAAc,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;IAC3C,CAAC,CAAC,YAAY,CAAC;QACb,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;QAC1B,KAAK,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;QAC7G,MAAM,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,UAAU,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;KAC1J,CAAC;CACH,CAAC,CAAC;AAEH,6CAA6C;AAC7C,MAAM,iBAAiB,GAAG,EAAE,GAAG,IAAI,CAAC;AAEpC,yEAAyE;AACzE,MAAM,YAAY,GAAG;IACnB,YAAY,EAAE,WAAW;IACzB,UAAU,EAAE,cAAc;IAC1B,iBAAiB,EAAE,aAAa;IAChC,gBAAgB,EAAE,WAAW;IAC7B,YAAY,EAAE,aAAa;CACyB,CAAC;AAEvD,SAAS,cAAc,CAAI,QAAyE;IAClG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACpG,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC;AACxB,CAAC;AAED,iGAAiG;AACjG,MAAM,eAAe,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE;IAC3D,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC7D,MAAM,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,oFAAoF,EAAE,CAAC,CAAC;IAC5I,CAAC;IACD,OAAO,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;AACnH,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,sHAAsH;QACtH,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;YAClF,2FAA2F;YAC3F,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACjD,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5G,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,CAAC;QAC9C,CAAC,CAAC;QACF;;;;;WAKG;QACH,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC;aAC/B,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aACxE,MAAM,CAAC,4BAA4B,CAAC;aACpC,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;YACjC,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,EAAE,eAAe,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YAChF,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBACpB,MAAM,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACvG,CAAC;YACD,gGAAgG;YAChG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/C,CAAC,CAAC;KACL,CAAC;IACF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,iJAAiJ;QACjJ,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACxK,+CAA+C;QAC/C,GAAG,EAAE,eAAe;aACjB,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;aACjD,MAAM,CAAC,iBAAiB,CAAC;aACzB,KAAK,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;YAC9B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YACvH,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACf,MAAM,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1E,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC,CAAC;QACJ,sIAAsI;QACtI,KAAK,EAAE,eAAe;aACnB,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;aACjD,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;aACxG,KAAK,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;YAC9B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACf,MAAM,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3F,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC,CAAC;QACJ;;;;;WAKG;QACH,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC;aAC7B,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,qBAAqB,EAAE,CAAC,CAAC;aAClG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;aACxG,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;YACjC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YAC1E,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAClB,MAAM,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACjG,CAAC;YACD,OAAO,OAAO,CAAC,KAAK,CAAC;QACvB,CAAC,CAAC;QACJ;;;;;WAKG;QACH,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC;aAC/B,KAAK,CACJ,CAAC,CAAC,YAAY,CAAC;YACb,SAAS,EAAE,oBAAoB;YAC/B,IAAI,EAAE,gBAAgB;YACtB,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;YACpC,UAAU,EAAE,qBAAqB;YACjC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC;YAC7B,gBAAgB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC;SACnH,CAAC,CACH;aACA,MAAM,CAAC,gBAAgB,CAAC;aACxB,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;YACjC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,EAAE,eAAe,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;YAChG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnB,MAAM,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACrG,CAAC;YACD,OAAO,QAAQ,CAAC,KAAK,CAAC;QACxB,CAAC,CAAC;QACJ;;;;WAIG;QACH,uHAAuH;QACvH,WAAW,EAAE,eAAe;aACzB,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;aAChF,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;aACpB,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;YACjC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YACjI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAClB,MAAM,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAClG,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QACJ,qJAAqJ;QACrJ,YAAY,EAAE,eAAe;aAC1B,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;aAC1G,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;aACjD,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;YACjC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YAClI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAClB,MAAM,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAClG,CAAC;YACD,OAAO,OAAO,CAAC,KAAK,CAAC;QACvB,CAAC,CAAC;QACJ,MAAM,EAAE,eAAe;aACpB,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;aACjD,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;aACpB,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;YACjC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YAC5H,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAClB,MAAM,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAClG,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QACJ,kHAAkH;QAClH,IAAI,EAAE,QAAQ,CAAC,eAAe,CAAC;aAC5B,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aAC5E,MAAM,CAAC,gBAAgB,CAAC;aACxB,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;YACjC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YAC/E,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9F,CAAC;YACD,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC,CAAC;QACJ,yGAAyG;QACzG,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC;aAC7B,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;aACjD,MAAM,CAAC,kBAAkB,CAAC;aAC1B,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;YACjC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YACxE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/F,CAAC;YACD,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC,CAAC;QACJ,4GAA4G;QAC5G,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC;aAChC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;aAC/H,MAAM,CAAC,kBAAkB,CAAC;aAC1B,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;YACjC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YACtE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/F,CAAC;YACD,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC,CAAC;KACL,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,kEAAkE;QAClE,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACvG,uEAAuE;QACvE,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;QAClM,qDAAqD;QACrD,MAAM,EAAE,eAAe;aACpB,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;aACpI,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;QACxH,2DAA2D;QAC3D,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;KACnM,CAAC;IACF,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC;QACjB,qGAAqG;QACrG,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;YACjF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5E,CAAC;YACD,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC1C,CAAC,CAAC;QACF,6FAA6F;QAC7F,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;YACtF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5E,CAAC;YACD,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC1C,CAAC,CAAC;QACF,yEAAyE;QACzE,MAAM,EAAE,eAAe;aACpB,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;aACjF,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;aAC/F,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;YACjC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YACxE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAClB,MAAM,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAClG,CAAC;YACD,OAAO,OAAO,CAAC,KAAK,CAAC;QACvB,CAAC,CAAC;KACL,CAAC;IACF,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC;QACvB,gEAAgE;QAChE,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrH,iHAAiH;QACjH,GAAG,EAAE,eAAe;aACjB,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,sBAAsB,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;aACjF,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;aACvC,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;YACjC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YAC9H,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBACd,MAAM,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACnG,CAAC;YACD,OAAO,GAAG,CAAC,KAAK,CAAC;QACnB,CAAC,CAAC;KACL,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd;;;WAGG;QACH,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC;aACrC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;aAC9I,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;aAC/E,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;YACjC,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YAChF,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBACrB,MAAM,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAClF,CAAC;YACD,OAAO,UAAU,CAAC,KAAK,CAAC;QAC1B,CAAC,CAAC;KACL,CAAC;IACF,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC;QACrB,8HAA8H;QAC9H,UAAU,EAAE,qBAAqB;aAC9B,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;aAC5G,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;aAC/D,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;YACjC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACxH,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBACd,MAAM,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/F,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QACtE,CAAC,CAAC;QACJ,+EAA+E;QAC/E,GAAG,EAAE,qBAAqB;aACvB,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;aACrD,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;aAClE,KAAK,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;YAC9B,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9D,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;QACpE,CAAC,CAAC;QACJ,oIAAoI;QACpI,MAAM,EAAE,qBAAqB;aAC1B,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;aACtF,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;aAC1B,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;YACjC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAClB,MAAM,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5E,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QACJ,kKAAkK;QAClK,eAAe,EAAE,qBAAqB;aACnC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aACnF,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;aAC1B,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;YACjC,MAAM,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;KACL,CAAC;CACH,CAAC,CAAC"}
|
package/dist/app.d.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { FleetId } from '@aeolus-fleet/common';
|
|
2
|
+
import { type FastifyInstance, type FastifyServerOptions } from 'fastify';
|
|
3
|
+
import type { Clock } from './core/shared/clock.js';
|
|
4
|
+
export declare const systemClock: Clock;
|
|
5
|
+
export interface GatewayAppOptions {
|
|
6
|
+
databaseUrl: string;
|
|
7
|
+
fleetUrl: string;
|
|
8
|
+
clock?: Clock;
|
|
9
|
+
logger?: FastifyServerOptions['logger'];
|
|
10
|
+
/** The installation token (decision 0021): unset, the installation is open and every fleet is served. */
|
|
11
|
+
installationToken?: string;
|
|
12
|
+
/** Where outside MCP clients reach the gateway: the OAuth issuer, with the MCP endpoint at /mcp. */
|
|
13
|
+
publicUrl?: string;
|
|
14
|
+
/** Keys ship aliases, result handles and idempotency keys: the same secret keeps every ship's alias across restarts. */
|
|
15
|
+
gatewaySecret: string;
|
|
16
|
+
/** How long an outside MCP client's call waits for its answer before it is answered its handle: 10 seconds unless set. */
|
|
17
|
+
mcpWaitMaxMs?: number;
|
|
18
|
+
/** How long the gateway waits for an outside tool's answer before the call counts as unanswered: 5 minutes unless set. */
|
|
19
|
+
toolCallTimeoutMs?: number;
|
|
20
|
+
/** pagasae, where people sign in, and the gateway's client there (decision 0054): unset, people do not sign in. */
|
|
21
|
+
pagasae?: {
|
|
22
|
+
url: string;
|
|
23
|
+
clientId: string;
|
|
24
|
+
clientSecret: string;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export interface GatewayApp {
|
|
28
|
+
/** The HTTP server: `/api/health` and `/api/version` for whoever operates the installation, and `/trpc`. */
|
|
29
|
+
server: FastifyInstance;
|
|
30
|
+
/**
|
|
31
|
+
* At start: reads every served fleet's kept connection, dropping a crew
|
|
32
|
+
* token its fleet no longer takes, and starts taking the calls of each
|
|
33
|
+
* crewed party of a served fleet; answers each fleet still connected, as
|
|
34
|
+
* which ship.
|
|
35
|
+
*/
|
|
36
|
+
restoreConnections: () => Promise<{
|
|
37
|
+
fleetId: FleetId;
|
|
38
|
+
ship: string;
|
|
39
|
+
}[]>;
|
|
40
|
+
/** Stops taking calls, once those in flight ended, then stops the server and disconnects the database. */
|
|
41
|
+
close(): Promise<void>;
|
|
42
|
+
}
|
|
43
|
+
export declare function createGatewayApp(options: GatewayAppOptions): GatewayApp;
|