@aeolus-fleet/gateway 0.0.0-stage → 0.0.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 +104 -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/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 +14 -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 +27 -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/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 +59 -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 +44 -0
- package/dist/adapters/fleet/fleet-network.js.map +1 -0
- package/dist/adapters/fleet/rest-fleet-door.d.ts +14 -0
- package/dist/adapters/fleet/rest-fleet-door.js +189 -0
- package/dist/adapters/fleet/rest-fleet-door.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 +35 -0
- package/dist/adapters/http/oauth-routes.js +305 -0
- package/dist/adapters/http/oauth-routes.js.map +1 -0
- package/dist/adapters/http/outside-parties-page.d.ts +6 -0
- package/dist/adapters/http/outside-parties-page.js +149 -0
- package/dist/adapters/http/outside-parties-page.js.map +1 -0
- package/dist/adapters/http/overview-page.d.ts +16 -0
- package/dist/adapters/http/overview-page.js +255 -0
- package/dist/adapters/http/overview-page.js.map +1 -0
- package/dist/adapters/http/parties-page.d.ts +6 -0
- package/dist/adapters/http/parties-page.js +141 -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/signal.d.ts +52 -0
- package/dist/adapters/http/signal.js +220 -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 +90 -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 +50 -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 +1056 -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 +1338 -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 +82 -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 +73 -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 +122 -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 +408 -0
- package/dist/adapters/trpc/router.js +367 -0
- package/dist/adapters/trpc/router.js.map +1 -0
- package/dist/app.d.ts +43 -0
- package/dist/app.js +400 -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 +38 -0
- package/dist/core/actors/authenticate-actor.js +30 -0
- package/dist/core/actors/authenticate-actor.js.map +1 -0
- package/dist/core/connection/connect.d.ts +26 -0
- package/dist/core/connection/connect.js +57 -0
- package/dist/core/connection/connect.js.map +1 -0
- package/dist/core/connection/ports.d.ts +87 -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 +29 -0
- package/dist/core/mcp-in/collect-replies.js +44 -0
- package/dist/core/mcp-in/collect-replies.js.map +1 -0
- package/dist/core/mcp-in/list-tools.d.ts +44 -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 +85 -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 +103 -0
- package/dist/core/mcp-out/hand-call.js +116 -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 +38 -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 +26 -0
- package/dist/core/mcp-out/statement.js +32 -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 +103 -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 +21 -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 +34 -0
- package/dist/core/outside-parties/set-outside-parties.js +34 -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 +111 -0
- package/dist/core/parties/approve-party.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 +8 -0
- package/dist/core/parties/list-parties.js +8 -0
- package/dist/core/parties/list-parties.js.map +1 -0
- package/dist/core/parties/party.d.ts +46 -0
- package/dist/core/parties/party.js +2 -0
- package/dist/core/parties/party.js.map +1 -0
- package/dist/core/parties/ports.d.ts +39 -0
- package/dist/core/parties/ports.js +2 -0
- package/dist/core/parties/ports.js.map +1 -0
- package/dist/core/parties/shown-party.d.ts +21 -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 +75 -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-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 +186 -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 +38 -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 +55 -0
- package/dist/core/sign-in/complete-sign-in.js +50 -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 +85 -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/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/migration_lock.toml +3 -0
- package/src/adapters/prisma/schema.prisma +311 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console-sessions.js","sourceRoot":"","sources":["../../../src/adapters/fleet/console-sessions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAC;AAEtD,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,EAAE,CAAC,CAAC;AAE3F,MAAM,UAAU,0BAA0B,CAAC,QAAgB;IACzD,OAAO;QACL,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACtB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,uBAAuB,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YAC1F,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAC;YAChF,CAAC;YACD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;YACzF,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACvC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** The oldest core the gateway runs against: the ship contract it calls (docs/compatibility.md). */
|
|
2
|
+
export declare const MINIMUM_CORE_VERSION = "0.27.0";
|
|
3
|
+
/** The part of `fetch` the check uses, so a test hands in its own core. */
|
|
4
|
+
export type VersionFetch = (url: string, init: {
|
|
5
|
+
signal: AbortSignal;
|
|
6
|
+
}) => Promise<{
|
|
7
|
+
status: number;
|
|
8
|
+
json(): Promise<unknown>;
|
|
9
|
+
}>;
|
|
10
|
+
/** Stops the start when the fleet's core is older than the gateway needs, or does not say its version. */
|
|
11
|
+
export declare function requireCoreVersion(fleetUrl: string, fetch?: VersionFetch): Promise<void>;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The minimum core version check (decision 0049, docs/compatibility.md): the
|
|
3
|
+
* gateway reads core's version at start and refuses to run against an older
|
|
4
|
+
* core, saying both versions. It follows @aeolus-fleet/common's
|
|
5
|
+
* coreVersionRefusal, which no released common carries yet; the gateway
|
|
6
|
+
* takes common's once it is on npm.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
import { ConfigError } from '../../config.js';
|
|
10
|
+
import { runningVersion } from '../http/version.js';
|
|
11
|
+
/** The oldest core the gateway runs against: the ship contract it calls (docs/compatibility.md). */
|
|
12
|
+
export const MINIMUM_CORE_VERSION = '0.27.0';
|
|
13
|
+
/** Where core says its version, without authentication. */
|
|
14
|
+
const CORE_VERSION_PATH = '/api/version';
|
|
15
|
+
/** How long the gateway waits for core's version before it counts the fleet as not answering. */
|
|
16
|
+
const CORE_VERSION_TIMEOUT_MS = 10_000;
|
|
17
|
+
/** The HTTP statuses that answer a version. */
|
|
18
|
+
const HTTP_OK_FIRST = 200;
|
|
19
|
+
const HTTP_OK_LAST = 299;
|
|
20
|
+
/** A plain release version; core `0.0.0` is a build from main. */
|
|
21
|
+
const VERSION_PATTERN = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;
|
|
22
|
+
const coreVersionAnswerSchema = z.object({ server: z.string() });
|
|
23
|
+
function versionOf(text) {
|
|
24
|
+
const match = VERSION_PATTERN.exec(text);
|
|
25
|
+
return match === null ? undefined : [Number(match[1]), Number(match[2]), Number(match[3])];
|
|
26
|
+
}
|
|
27
|
+
function isOlder(version, than) {
|
|
28
|
+
const differing = version.findIndex((part, index) => part !== than[index]);
|
|
29
|
+
return differing !== -1 && (version[differing] ?? 0) < (than[differing] ?? 0);
|
|
30
|
+
}
|
|
31
|
+
/** Core's version, or why it could not be read. */
|
|
32
|
+
async function readCoreVersion(fleetUrl, fetch) {
|
|
33
|
+
try {
|
|
34
|
+
const response = await fetch(`${fleetUrl.replace(/\/+$/, '')}${CORE_VERSION_PATH}`, { signal: AbortSignal.timeout(CORE_VERSION_TIMEOUT_MS) });
|
|
35
|
+
if (response.status < HTTP_OK_FIRST || response.status > HTTP_OK_LAST) {
|
|
36
|
+
return { unread: `HTTP ${String(response.status)}` };
|
|
37
|
+
}
|
|
38
|
+
const answer = coreVersionAnswerSchema.safeParse(await response.json());
|
|
39
|
+
const parsed = answer.success ? versionOf(answer.data.server) : undefined;
|
|
40
|
+
return answer.success && parsed !== undefined ? { core: answer.data.server, parsed } : { unread: `its ${CORE_VERSION_PATH} answered no core version` };
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
return { unread: error instanceof Error ? error.message : String(error) };
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/** Stops the start when the fleet's core is older than the gateway needs, or does not say its version. */
|
|
47
|
+
export async function requireCoreVersion(fleetUrl, fetch = globalThis.fetch) {
|
|
48
|
+
const needs = `gateway ${runningVersion()} needs core ${MINIMUM_CORE_VERSION} or later`;
|
|
49
|
+
const minimum = versionOf(MINIMUM_CORE_VERSION) ?? [0, 0, 0];
|
|
50
|
+
const read = await readCoreVersion(fleetUrl, fetch);
|
|
51
|
+
if ('unread' in read) {
|
|
52
|
+
throw new ConfigError(`${needs}, and could not read the version of the fleet at ${fleetUrl}: ${read.unread}`);
|
|
53
|
+
}
|
|
54
|
+
const isMainBuild = read.parsed.every((part) => part === 0);
|
|
55
|
+
if (!isMainBuild && isOlder(read.parsed, minimum)) {
|
|
56
|
+
throw new ConfigError(`${needs}; the fleet at ${fleetUrl} runs core ${read.core}: upgrade core first`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=core-version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-version.js","sourceRoot":"","sources":["../../../src/adapters/fleet/core-version.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads whether the fleet applies network rules with `fleet.networkRules`
|
|
3
|
+
* (aeolus-fleet #997), as the actor who asked (decision 0057): a ship with its
|
|
4
|
+
* crew token over REST, argo with the console session over tRPC. The answer's
|
|
5
|
+
* schema stands in for common's until core 0.28 publishes it (aeolus-fleet#991).
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { err, ok } from '../../core/shared/result.js';
|
|
9
|
+
const networkRulesSchema = z.object({ applied: z.object({ rules: z.array(z.unknown()).nullable() }) });
|
|
10
|
+
const trpcAnswerSchema = z.object({ result: z.object({ data: networkRulesSchema }) }).transform(({ result }) => result.data);
|
|
11
|
+
const refusalSchema = z.object({ code: z.string(), message: z.string() });
|
|
12
|
+
const trpcRefusalSchema = z.object({ error: z.object({ message: z.string(), data: z.object({ code: z.string() }) }) });
|
|
13
|
+
/** The fleet's refusal as its code and message, whichever door answered it. */
|
|
14
|
+
function refusalOf(status, body) {
|
|
15
|
+
const rest = refusalSchema.safeParse(body);
|
|
16
|
+
if (rest.success) {
|
|
17
|
+
return rest.data;
|
|
18
|
+
}
|
|
19
|
+
const trpc = trpcRefusalSchema.safeParse(body);
|
|
20
|
+
return trpc.success ? { code: trpc.data.error.data.code, message: trpc.data.error.message } : { code: 'UNAVAILABLE', message: `The fleet answered ${String(status)}` };
|
|
21
|
+
}
|
|
22
|
+
export function createFleetNetwork(fleetUrl) {
|
|
23
|
+
return {
|
|
24
|
+
isOpen: async (as) => {
|
|
25
|
+
const request = as.crewToken === undefined
|
|
26
|
+
? { url: `${fleetUrl}/trpc/fleet.networkRules`, headers: { cookie: as.cookie ?? '' } }
|
|
27
|
+
: { url: `${fleetUrl}/api/v1/fleet/networkRules`, headers: { authorization: `Bearer ${as.crewToken}` } };
|
|
28
|
+
let response;
|
|
29
|
+
try {
|
|
30
|
+
response = await fetch(request.url, { headers: request.headers });
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
return err({ code: 'UNAVAILABLE', message: error instanceof Error ? error.message : 'The fleet did not answer' });
|
|
34
|
+
}
|
|
35
|
+
const body = await response.json().catch(() => null);
|
|
36
|
+
if (!response.ok) {
|
|
37
|
+
return err(refusalOf(response.status, body));
|
|
38
|
+
}
|
|
39
|
+
const rules = (as.crewToken === undefined ? trpcAnswerSchema : networkRulesSchema).safeParse(body);
|
|
40
|
+
return rules.success ? ok(rules.data.applied.rules === null) : err({ code: 'UNAVAILABLE', message: 'The fleet answered no network rules' });
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=fleet-network.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet-network.js","sourceRoot":"","sources":["../../../src/adapters/fleet/fleet-network.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { FleetDoor } from '../../core/connection/ports.js';
|
|
2
|
+
import type { CallSender, Discovery } from '../../core/mcp-in/ports.js';
|
|
3
|
+
import type { ProxyShipCrew } from '../../core/mcp-out/hand-call.js';
|
|
4
|
+
import type { StatementDoor } from '../../core/mcp-out/state-party.js';
|
|
5
|
+
import type { ProxyShipDoor } from '../../core/parties/ports.js';
|
|
6
|
+
import type { AccountDoor, PersonShipDoor } from '../../core/people/ports.js';
|
|
7
|
+
import type { Owners } from '../../core/requests/ports.js';
|
|
8
|
+
export declare function createRestFleetDoor(fleetUrl: string, options?: {
|
|
9
|
+
busyWaitsMs?: readonly number[];
|
|
10
|
+
random?: () => number;
|
|
11
|
+
wait?: (waitMs: number) => Promise<void>;
|
|
12
|
+
}): FleetDoor & ProxyShipDoor & StatementDoor & ProxyShipCrew & Discovery & CallSender & AccountDoor & Owners & {
|
|
13
|
+
person: PersonShipDoor;
|
|
14
|
+
};
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The fleet's ship calls over its REST API (`/api/v1`), as any ship that is
|
|
3
|
+
* not TypeScript-bound may make them: the gateway uses the public API like
|
|
4
|
+
* any client. A refusal reads as the fleet's code and message. While the
|
|
5
|
+
* fleet is busy (nothing stored), each call is made again by itself with the
|
|
6
|
+
* same body, after each of the busy waits (each drawn by `busyWaitMs`).
|
|
7
|
+
*/
|
|
8
|
+
import { setTimeout as wait } from 'node:timers/promises';
|
|
9
|
+
import { busyWaitMs, commissionShipOutputSchema, discoverOutputSchema, FLEET_BUSY_WAITS_MS, handedOutputSchema, idSchema, inboxOutputSchema, pushReceiveOutputSchema, QUESTION_CONTENT_TYPE, questionSchema, sendOutputSchema, shipDetailOutputSchema, startingPromptOutputSchema, } from '@aeolus-fleet/common';
|
|
10
|
+
import { z } from 'zod';
|
|
11
|
+
import { err, ok } from '../../core/shared/result.js';
|
|
12
|
+
const refusalSchema = z.object({ code: z.string(), message: z.string() });
|
|
13
|
+
/** The fleet's code for a call it could not start: nothing was stored, so the same call may be made again. */
|
|
14
|
+
const FLEET_BUSY = 'SERVICE_UNAVAILABLE';
|
|
15
|
+
/** Where the gateway says its ships run: on a server the operator runs. */
|
|
16
|
+
const LOCATION = { kind: 'SERVER' };
|
|
17
|
+
/** The harness the gateway states when it registers a ship: it is software, not a model. */
|
|
18
|
+
const HARNESS = 'aeolus-gateway';
|
|
19
|
+
/** The header an account's token travels in; common's ACCOUNT_TOKEN_HEADER replaces it once published (aeolus-fleet#991). */
|
|
20
|
+
const ACCOUNT_TOKEN_HEADER = 'aeolus-account-token';
|
|
21
|
+
async function callFleet({ fleetUrl, busyWaitsMs, random, wait: waitBusy }, request) {
|
|
22
|
+
for (const waitMs of busyWaitsMs) {
|
|
23
|
+
const answered = await callOnce(fleetUrl, request);
|
|
24
|
+
if (answered.isOk || answered.error.code !== FLEET_BUSY) {
|
|
25
|
+
return answered;
|
|
26
|
+
}
|
|
27
|
+
await waitBusy(busyWaitMs(waitMs, random));
|
|
28
|
+
}
|
|
29
|
+
return callOnce(fleetUrl, request);
|
|
30
|
+
}
|
|
31
|
+
async function callOnce(fleetUrl, request) {
|
|
32
|
+
const headers = {};
|
|
33
|
+
if (request.crewToken !== undefined) {
|
|
34
|
+
headers.authorization = `Bearer ${request.crewToken}`;
|
|
35
|
+
}
|
|
36
|
+
if (request.accountToken !== undefined) {
|
|
37
|
+
headers[ACCOUNT_TOKEN_HEADER] = request.accountToken;
|
|
38
|
+
}
|
|
39
|
+
if (request.body !== undefined) {
|
|
40
|
+
headers['content-type'] = 'application/json';
|
|
41
|
+
}
|
|
42
|
+
let response;
|
|
43
|
+
let body;
|
|
44
|
+
try {
|
|
45
|
+
response = await fetch(`${fleetUrl}/api/v1${request.path}`, {
|
|
46
|
+
method: request.method,
|
|
47
|
+
headers,
|
|
48
|
+
body: request.body === undefined ? undefined : JSON.stringify(request.body),
|
|
49
|
+
...(request.signal === undefined ? {} : { signal: request.signal }),
|
|
50
|
+
});
|
|
51
|
+
body = await response.json();
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
return err({ code: 'UNAVAILABLE', message: `The fleet did not answer: ${error instanceof Error ? error.message : String(error)}` });
|
|
55
|
+
}
|
|
56
|
+
return response.ok ? ok(request.answers.parse(body)) : err(refusalSchema.parse(body));
|
|
57
|
+
}
|
|
58
|
+
/** A question's payload, if it parses as one. */
|
|
59
|
+
function questionOf(payload) {
|
|
60
|
+
try {
|
|
61
|
+
return questionSchema.safeParse(JSON.parse(payload)).data;
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
export function createRestFleetDoor(fleetUrl, options = {}) {
|
|
68
|
+
const door = { fleetUrl, busyWaitsMs: options.busyWaitsMs ?? FLEET_BUSY_WAITS_MS, random: options.random ?? Math.random, wait: options.wait ?? ((waitMs) => wait(waitMs)) };
|
|
69
|
+
const call = (request) => callFleet(door, request);
|
|
70
|
+
const done = async (crewToken, request) => {
|
|
71
|
+
const answered = await call({ ...request, method: 'POST', crewToken, answers: z.unknown() });
|
|
72
|
+
return answered.isOk ? ok(undefined) : answered;
|
|
73
|
+
};
|
|
74
|
+
return {
|
|
75
|
+
startingPrompt: async ({ crewToken, accountToken, shipId }) => {
|
|
76
|
+
const issued = await call({ path: '/fleet/getStartingPrompt', method: 'POST', crewToken, accountToken, body: { shipId }, answers: startingPromptOutputSchema });
|
|
77
|
+
return issued.isOk ? ok({ secret: issued.value.secret }) : issued;
|
|
78
|
+
},
|
|
79
|
+
release: async ({ crewToken, accountToken, shipId }) => {
|
|
80
|
+
const released = await call({ path: '/fleet/release', method: 'POST', crewToken, accountToken, body: { shipId }, answers: z.unknown() });
|
|
81
|
+
return released.isOk ? ok(undefined) : released;
|
|
82
|
+
},
|
|
83
|
+
register: ({ shipId, secret }) => call({ path: '/ship/register', method: 'POST', body: { shipId, secret, location: LOCATION, harness: HARNESS }, answers: z.object({ crewToken: z.string() }) }),
|
|
84
|
+
whoami: (crewToken) => call({
|
|
85
|
+
path: '/ship/whoami',
|
|
86
|
+
method: 'GET',
|
|
87
|
+
crewToken,
|
|
88
|
+
answers: z.object({ shipId: idSchema('ship'), fleetId: idSchema('fleet'), name: z.string(), type: z.string() }),
|
|
89
|
+
}),
|
|
90
|
+
ownerOf: async (crewToken, shipId) => {
|
|
91
|
+
const read = await call({ path: '/fleet/ship', method: 'POST', crewToken, body: { shipId }, answers: shipDetailOutputSchema });
|
|
92
|
+
return read.isOk ? ok(read.value.owner?.id ?? null) : read;
|
|
93
|
+
},
|
|
94
|
+
getShip: async (crewToken, ship) => {
|
|
95
|
+
const read = await call({ path: '/fleet/ship', method: 'POST', crewToken, body: ship, answers: shipDetailOutputSchema });
|
|
96
|
+
if (!read.isOk) {
|
|
97
|
+
return read;
|
|
98
|
+
}
|
|
99
|
+
const { status, scopes } = read.value;
|
|
100
|
+
return ok({ status, scopes });
|
|
101
|
+
},
|
|
102
|
+
// An app ship owned by the owner argo picked: core 0.28's commission (aeolus-fleet#959).
|
|
103
|
+
commissionAppShip: async (crewToken, { name, type, owner, idempotencyKey, scopes }) => {
|
|
104
|
+
const commissioned = await call({
|
|
105
|
+
path: '/fleet/commission',
|
|
106
|
+
method: 'POST',
|
|
107
|
+
crewToken,
|
|
108
|
+
body: { name, type, kind: 'app', owner, idempotencyKey, scopes },
|
|
109
|
+
answers: commissionShipOutputSchema,
|
|
110
|
+
});
|
|
111
|
+
return commissioned.isOk ? ok({ shipId: commissioned.value.shipId, secret: commissioned.value.secret }) : commissioned;
|
|
112
|
+
},
|
|
113
|
+
deregister: async (crewToken) => {
|
|
114
|
+
const ended = await call({ path: '/ship/deregister', method: 'POST', crewToken, body: {}, answers: z.unknown() });
|
|
115
|
+
return ended.isOk ? ok(undefined) : ended;
|
|
116
|
+
},
|
|
117
|
+
// The whole statement, as the proxy ship's crew; core 0.27 refuses the fields it does not know yet (aeolus-fleet#956).
|
|
118
|
+
setStatement: async (crewToken, statement) => {
|
|
119
|
+
const stated = await call({ path: '/ship/setStatement', method: 'POST', crewToken, body: statement, answers: z.object({ version: z.int() }) });
|
|
120
|
+
return stated.isOk ? ok(undefined) : stated;
|
|
121
|
+
},
|
|
122
|
+
// A proxy ship's crew calls (decision 0040), as the gateway's computer side makes them.
|
|
123
|
+
pushReceive: async (crewToken, { max, signal }) => {
|
|
124
|
+
const taken = await call({ path: '/ship/pushReceive', method: 'POST', crewToken, body: { max }, answers: pushReceiveOutputSchema, signal });
|
|
125
|
+
return taken.isOk
|
|
126
|
+
? ok(taken.value.deliveries.map(({ deliveryId, messageId, senderShipId, contentType, payload, state, handOverNumber, inReplyTo }) => ({
|
|
127
|
+
deliveryId,
|
|
128
|
+
messageId,
|
|
129
|
+
senderShipId,
|
|
130
|
+
contentType,
|
|
131
|
+
payload,
|
|
132
|
+
state,
|
|
133
|
+
handOverNumber,
|
|
134
|
+
inReplyTo,
|
|
135
|
+
})))
|
|
136
|
+
: taken;
|
|
137
|
+
},
|
|
138
|
+
// A person ship's crew calls, as the gateway makes them for the person (decision 0057).
|
|
139
|
+
person: {
|
|
140
|
+
inbox: (crewToken) => call({ path: '/ship/inbox', method: 'POST', crewToken, body: { waitSeconds: 0 }, answers: inboxOutputSchema }),
|
|
141
|
+
pushReceive: async (crewToken, { max }) => {
|
|
142
|
+
const taken = await call({ path: '/ship/pushReceive', method: 'POST', crewToken, body: { max }, answers: pushReceiveOutputSchema });
|
|
143
|
+
return taken.isOk
|
|
144
|
+
? ok(taken.value.deliveries.map(({ deliveryId, messageId, senderShipId, senderName, contentType, payload, sentAt, inReplyTo }) => ({
|
|
145
|
+
deliveryId,
|
|
146
|
+
messageId,
|
|
147
|
+
senderShipId,
|
|
148
|
+
senderName,
|
|
149
|
+
contentType,
|
|
150
|
+
payload,
|
|
151
|
+
questionTitle: contentType === QUESTION_CONTENT_TYPE ? (questionOf(payload)?.title ?? null) : null,
|
|
152
|
+
sentAt: new Date(sentAt),
|
|
153
|
+
inReplyTo,
|
|
154
|
+
})))
|
|
155
|
+
: taken;
|
|
156
|
+
},
|
|
157
|
+
ack: (crewToken, deliveryId) => done(crewToken, { path: '/ship/ack', body: { deliveryId } }),
|
|
158
|
+
reply: (crewToken, { to, inReplyTo, contentType, payload, idempotencyKey }) => done(crewToken, { path: '/ship/send', body: { selector: { kind: 'ship', shipId: to }, inReplyTo, contentType, payload, idempotencyKey } }),
|
|
159
|
+
handled: (crewToken, deliveryId) => done(crewToken, { path: '/ship/handled', body: { deliveryId } }),
|
|
160
|
+
},
|
|
161
|
+
handed: async (crewToken, handOver) => {
|
|
162
|
+
const answered = await call({ path: '/ship/handed', method: 'POST', crewToken, body: handOver, answers: handedOutputSchema });
|
|
163
|
+
return answered.isOk ? ok(answered.value.state) : answered;
|
|
164
|
+
},
|
|
165
|
+
reply: async (crewToken, { to, inReplyTo, contentType, payload, idempotencyKey }) => {
|
|
166
|
+
const sent = await call({
|
|
167
|
+
path: '/ship/send',
|
|
168
|
+
method: 'POST',
|
|
169
|
+
crewToken,
|
|
170
|
+
body: { selector: { kind: 'ship', shipId: to }, inReplyTo, contentType, payload, idempotencyKey },
|
|
171
|
+
answers: sendOutputSchema,
|
|
172
|
+
});
|
|
173
|
+
return sent.isOk ? ok(undefined) : sent;
|
|
174
|
+
},
|
|
175
|
+
ack: (crewToken, deliveryId) => done(crewToken, { path: '/ship/ack', body: { deliveryId } }),
|
|
176
|
+
handled: (crewToken, deliveryId) => done(crewToken, { path: '/ship/handled', body: { deliveryId } }),
|
|
177
|
+
notHandled: (crewToken, report) => done(crewToken, { path: '/ship/notHandled', body: report }),
|
|
178
|
+
send: async (crewToken, { to, contentType, payload, idempotencyKey }) => call({ path: '/ship/send', method: 'POST', crewToken, body: { selector: { kind: 'ship', shipId: to }, contentType, payload, idempotencyKey }, answers: sendOutputSchema }),
|
|
179
|
+
discover: async (crewToken) => {
|
|
180
|
+
const found = await call({ path: '/ship/discover', method: 'GET', crewToken, answers: discoverOutputSchema });
|
|
181
|
+
return found.isOk ? ok(found.value.ships.map(({ id, kind, statement }) => ({ shipId: id, kind, statement }))) : found;
|
|
182
|
+
},
|
|
183
|
+
declareScopes: async (crewToken, declaration) => {
|
|
184
|
+
const declared = await call({ path: '/fleet/declareScopes', method: 'POST', crewToken, body: declaration, answers: z.unknown() });
|
|
185
|
+
return declared.isOk ? ok(undefined) : declared;
|
|
186
|
+
},
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=rest-fleet-door.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rest-fleet-door.js","sourceRoot":"","sources":["../../../src/adapters/fleet/rest-fleet-door.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the gateway's server-rendered pages share: escaping, the page
|
|
3
|
+
* layout and its style, forms, and the check that a form came from them.
|
|
4
|
+
*/
|
|
5
|
+
import type { TRPCError } from '@trpc/server';
|
|
6
|
+
import type { FastifyInstance, FastifyRequest } from 'fastify';
|
|
7
|
+
export declare function escaped(text: string): string;
|
|
8
|
+
/** A whole page of the gateway's: its title, its body, and the shared style. */
|
|
9
|
+
export declare function layout(title: string, body: string): string;
|
|
10
|
+
/** A form from the gateway's own pages: its Origin is the gateway's, so no other site can send one with argo's cookie. */
|
|
11
|
+
export declare function isSameOrigin(request: FastifyRequest): boolean;
|
|
12
|
+
/** Parses form posts into their fields, once per server whichever page asks first. */
|
|
13
|
+
export declare function acceptForms(server: FastifyInstance): void;
|
|
14
|
+
/** Why the API refused, as a page says it: the form's fields that are not valid, or the API's message. */
|
|
15
|
+
export declare function refusalMessage(error: TRPCError): string;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export function escaped(text) {
|
|
3
|
+
return text.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>').replaceAll('"', '"').replaceAll("'", ''');
|
|
4
|
+
}
|
|
5
|
+
const STYLE = `
|
|
6
|
+
:root { color-scheme: light dark; --ink: #1b1f24; --muted: #5b6470; --line: #d5dae0; --paper: #ffffff; --accent: #0b5cad; --warn: #a3261b; }
|
|
7
|
+
@media (prefers-color-scheme: dark) { :root { --ink: #e6e9ed; --muted: #9aa3ad; --line: #39414a; --paper: #14181c; --accent: #6aa8ec; --warn: #f08a7e; } }
|
|
8
|
+
body { margin: 0 auto; max-width: 960px; padding: 24px 16px; font: 15px/1.5 system-ui, sans-serif; color: var(--ink); background: var(--paper); }
|
|
9
|
+
h1 { font-size: 22px; } h2 { font-size: 17px; margin-top: 32px; }
|
|
10
|
+
table { width: 100%; border-collapse: collapse; } th, td { text-align: left; padding: 8px; border-bottom: 1px solid var(--line); vertical-align: top; overflow-wrap: anywhere; }
|
|
11
|
+
form { display: grid; gap: 8px; margin: 8px 0; } form.inline { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
|
|
12
|
+
label { display: grid; gap: 2px; color: var(--muted); } input, select, button { font: inherit; padding: 6px 8px; }
|
|
13
|
+
button { color: var(--paper); background: var(--accent); border: 0; border-radius: 4px; cursor: pointer; }
|
|
14
|
+
.error { color: var(--warn); border: 1px solid var(--warn); padding: 8px 12px; border-radius: 4px; } .muted { color: var(--muted); }
|
|
15
|
+
`;
|
|
16
|
+
/** A whole page of the gateway's: its title, its body, and the shared style. */
|
|
17
|
+
export function layout(title, body) {
|
|
18
|
+
return documentOf({ title, head: '', body });
|
|
19
|
+
}
|
|
20
|
+
/** A page of the gateway: its title, its head and its body, with the shared style. */
|
|
21
|
+
function documentOf(page) {
|
|
22
|
+
return `<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">${page.head}<title>${escaped(page.title)}</title><style>${STYLE}</style></head><body>${page.body}</body></html>`;
|
|
23
|
+
}
|
|
24
|
+
/** A form from the gateway's own pages: its Origin is the gateway's, so no other site can send one with argo's cookie. */
|
|
25
|
+
export function isSameOrigin(request) {
|
|
26
|
+
const origin = request.headers.origin;
|
|
27
|
+
if (origin === undefined) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
return new URL(origin).host === request.headers.host;
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/** Parses form posts into their fields, once per server whichever page asks first. */
|
|
38
|
+
export function acceptForms(server) {
|
|
39
|
+
if (!server.hasContentTypeParser('application/x-www-form-urlencoded')) {
|
|
40
|
+
// eslint-disable-next-line @typescript-eslint/max-params -- Fastify's parser signature.
|
|
41
|
+
server.addContentTypeParser('application/x-www-form-urlencoded', { parseAs: 'string' }, (_request, body, done) => {
|
|
42
|
+
done(null, Object.fromEntries(new URLSearchParams(String(body))));
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/** Why the API refused, as a page says it: the form's fields that are not valid, or the API's message. */
|
|
47
|
+
export function refusalMessage(error) {
|
|
48
|
+
if (error.cause instanceof z.ZodError) {
|
|
49
|
+
return `The form is not valid: ${error.cause.issues.map((issue) => `${issue.path.join('.') || 'form'}: ${issue.message}`).join('; ')}`;
|
|
50
|
+
}
|
|
51
|
+
return error.code === 'INTERNAL_SERVER_ERROR' ? 'Internal error' : error.message;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=html.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../../src/adapters/http/html.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC1I,CAAC;AAED,MAAM,KAAK,GAAG;;;;;;;;;;CAUb,CAAC;AAEF,gFAAgF;AAChF,MAAM,UAAU,MAAM,CAAC,KAAa,EAAE,IAAY;IAChD,OAAO,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,sFAAsF;AACtF,SAAS,UAAU,CAAC,IAAmD;IACrE,OAAO,kIAAkI,IAAI,CAAC,IAAI,UAAU,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,KAAK,wBAAwB,IAAI,CAAC,IAAI,gBAAgB,CAAC;AAC1P,CAAC;AAED,0HAA0H;AAC1H,MAAM,UAAU,YAAY,CAAC,OAAuB;IAClD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;IACtC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,WAAW,CAAC,MAAuB;IACjD,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,mCAAmC,CAAC,EAAE,CAAC;QACtE,wFAAwF;QACxF,MAAM,CAAC,oBAAoB,CAAC,mCAAmC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;YAC/G,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,0GAA0G;AAC1G,MAAM,UAAU,cAAc,CAAC,KAAgB;IAC7C,IAAI,KAAK,CAAC,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;QACtC,OAAO,0BAA0B,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACzI,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,KAAK,uBAAuB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;AACnF,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { FleetId } from '@aeolus-fleet/common';
|
|
2
|
+
import type { FastifyInstance } from 'fastify';
|
|
3
|
+
import type { Change } from '../prisma/changes.js';
|
|
4
|
+
import type { Context } from '../trpc/router.js';
|
|
5
|
+
/** A page the live channel serves: its sections' HTML by name, read as the caller, from the page's query. */
|
|
6
|
+
export interface LivePage {
|
|
7
|
+
render(context: Context, params: URLSearchParams): Promise<Record<string, string>>;
|
|
8
|
+
}
|
|
9
|
+
interface Listener {
|
|
10
|
+
readonly fleetId: FleetId;
|
|
11
|
+
readonly read: () => void;
|
|
12
|
+
}
|
|
13
|
+
/** Hands each change to the sockets of its fleet, on this gateway. */
|
|
14
|
+
export interface ChangeHub {
|
|
15
|
+
publish: (change: Change) => void;
|
|
16
|
+
/** Every socket reads its page again: changes may have been missed. */
|
|
17
|
+
resync: () => void;
|
|
18
|
+
subscribe: (listener: Listener) => () => void;
|
|
19
|
+
listeners: () => number;
|
|
20
|
+
}
|
|
21
|
+
export declare function createChangeHub(): ChangeHub;
|
|
22
|
+
/** Serves websockets on the server, once whichever route asks first; its routes register once it is loaded. */
|
|
23
|
+
export declare function acceptWebsockets(server: FastifyInstance, routes: () => void): void;
|
|
24
|
+
export declare function registerLive(server: FastifyInstance, deps: {
|
|
25
|
+
contextFor: (cookie: string | undefined) => Context;
|
|
26
|
+
hub: ChangeHub;
|
|
27
|
+
pages: Record<string, LivePage>;
|
|
28
|
+
}): void;
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The pages' live channel: a page whose content changes opens a websocket
|
|
3
|
+
* on /live naming itself, and is sent its sections again whenever its
|
|
4
|
+
* fleet's requests change, so it never reloads itself or polls. A change
|
|
5
|
+
* carries no content: each socket reads its page again through the
|
|
6
|
+
* gateway's API as its own caller, so it is never sent what its actor may
|
|
7
|
+
* not see. Only the gateway's own pages open it: a socket from another
|
|
8
|
+
* origin, with no session, or for a page that is not live is closed.
|
|
9
|
+
*/
|
|
10
|
+
import websocket from '@fastify/websocket';
|
|
11
|
+
import { isSameOrigin } from './html.js';
|
|
12
|
+
/** Why a socket was closed, as the page reads it: it does not open again for these. */
|
|
13
|
+
const CLOSE_NO_SESSION = 4401;
|
|
14
|
+
const CLOSE_OTHER_ORIGIN = 4403;
|
|
15
|
+
const CLOSE_NOT_LIVE = 4404;
|
|
16
|
+
export function createChangeHub() {
|
|
17
|
+
const listening = new Set();
|
|
18
|
+
return {
|
|
19
|
+
publish: (change) => {
|
|
20
|
+
for (const listener of listening) {
|
|
21
|
+
if (listener.fleetId === change.fleetId) {
|
|
22
|
+
listener.read();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
resync: () => {
|
|
27
|
+
for (const listener of listening) {
|
|
28
|
+
listener.read();
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
subscribe: (listener) => {
|
|
32
|
+
listening.add(listener);
|
|
33
|
+
return () => listening.delete(listener);
|
|
34
|
+
},
|
|
35
|
+
listeners: () => listening.size,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/** Reads a page again and sends it, one read at a time per socket, so an older read never lands after a newer one. */
|
|
39
|
+
function reader(send) {
|
|
40
|
+
let isReading = false;
|
|
41
|
+
let isWanted = false;
|
|
42
|
+
const run = async () => {
|
|
43
|
+
isReading = true;
|
|
44
|
+
while (isWanted) {
|
|
45
|
+
isWanted = false;
|
|
46
|
+
try {
|
|
47
|
+
const sections = await send.read();
|
|
48
|
+
if (send.socket.readyState === send.socket.OPEN) {
|
|
49
|
+
send.socket.send(JSON.stringify({ sections }));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
// A read that failed leaves the page as it was; the next change reads it again.
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
isReading = false;
|
|
57
|
+
};
|
|
58
|
+
return () => {
|
|
59
|
+
isWanted = true;
|
|
60
|
+
if (!isReading) {
|
|
61
|
+
void run();
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
const servingWebsockets = new WeakSet();
|
|
66
|
+
/** Serves websockets on the server, once whichever route asks first; its routes register once it is loaded. */
|
|
67
|
+
export function acceptWebsockets(server, routes) {
|
|
68
|
+
if (!servingWebsockets.has(server)) {
|
|
69
|
+
servingWebsockets.add(server);
|
|
70
|
+
void server.register(websocket);
|
|
71
|
+
}
|
|
72
|
+
void server.after(routes);
|
|
73
|
+
}
|
|
74
|
+
export function registerLive(server, deps) {
|
|
75
|
+
acceptWebsockets(server, () => {
|
|
76
|
+
server.get('/live', { websocket: true }, async (socket, request) => {
|
|
77
|
+
if (!isSameOrigin(request)) {
|
|
78
|
+
socket.close(CLOSE_OTHER_ORIGIN, 'Opened only from the gateway pages');
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
const params = new URLSearchParams(request.url.slice(request.url.indexOf('?') + 1));
|
|
82
|
+
const page = deps.pages[params.get('page') ?? ''];
|
|
83
|
+
if (page === undefined) {
|
|
84
|
+
socket.close(CLOSE_NOT_LIVE, 'No such live page');
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const context = deps.contextFor(request.headers.cookie);
|
|
88
|
+
const actor = await context.authenticateActor({ cookie: context.cookie, crewToken: context.crewToken });
|
|
89
|
+
if (!actor.isOk) {
|
|
90
|
+
socket.close(CLOSE_NO_SESSION, 'Sign in again');
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const read = reader({ socket, read: () => page.render(context, params) });
|
|
94
|
+
const unsubscribe = deps.hub.subscribe({ fleetId: actor.value.fleetId, read });
|
|
95
|
+
socket.on('close', unsubscribe);
|
|
96
|
+
read();
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=live.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live.js","sourceRoot":"","sources":["../../../src/adapters/http/live.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { FastifyInstance } from 'fastify';
|
|
2
|
+
import type { FleetId } from '@aeolus-fleet/common';
|
|
3
|
+
import type { AuthenticateAccessToken } from '../../core/oauth/authenticate-access-token.js';
|
|
4
|
+
import type { CallTool } from '../../core/mcp-in/call-tool.js';
|
|
5
|
+
import type { ListTools } from '../../core/mcp-in/list-tools.js';
|
|
6
|
+
import type { ReadClientCall } from '../../core/mcp-in/read-client-call.js';
|
|
7
|
+
import { type PersonToolsDeps } from './person-tools.js';
|
|
8
|
+
export interface McpEndpointDeps {
|
|
9
|
+
/** The MCP endpoint's URL, as tokens are bound to it. */
|
|
10
|
+
resource: string;
|
|
11
|
+
authenticateAccessToken: AuthenticateAccessToken;
|
|
12
|
+
listTools: ListTools;
|
|
13
|
+
callTool: CallTool;
|
|
14
|
+
readClientCall: ReadClientCall;
|
|
15
|
+
/** Whether the fleet's outside parties are on (interop I-3). */
|
|
16
|
+
servesOutsideParties: (fleetId: FleetId) => Promise<boolean>;
|
|
17
|
+
/** A signed-in person's tools, where people sign in (decision 0054). */
|
|
18
|
+
person?: PersonToolsDeps;
|
|
19
|
+
}
|
|
20
|
+
export declare function registerMcpEndpoint(server: FastifyInstance, deps: McpEndpointDeps): void;
|