@aeolus-fleet/core 0.0.0 → 0.18.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/README.md +98 -1
- package/dist/adapters/cli/fleet-init.d.ts +14 -0
- package/dist/adapters/cli/fleet-init.js +68 -0
- package/dist/adapters/cli/fleet-init.js.map +1 -0
- package/dist/adapters/cli/io.d.ts +35 -0
- package/dist/adapters/cli/io.js +21 -0
- package/dist/adapters/cli/io.js.map +1 -0
- package/dist/adapters/cli/migrate.d.ts +11 -0
- package/dist/adapters/cli/migrate.js +12 -0
- package/dist/adapters/cli/migrate.js.map +1 -0
- package/dist/adapters/cli/operator-reset-password.d.ts +12 -0
- package/dist/adapters/cli/operator-reset-password.js +49 -0
- package/dist/adapters/cli/operator-reset-password.js.map +1 -0
- package/dist/adapters/cli/run.d.ts +14 -0
- package/dist/adapters/cli/run.js +40 -0
- package/dist/adapters/cli/run.js.map +1 -0
- package/dist/adapters/cli/terminal.d.ts +20 -0
- package/dist/adapters/cli/terminal.js +68 -0
- package/dist/adapters/cli/terminal.js.map +1 -0
- package/dist/adapters/crypto/passwords.d.ts +2 -0
- package/dist/adapters/crypto/passwords.js +59 -0
- package/dist/adapters/crypto/passwords.js.map +1 -0
- package/dist/adapters/crypto/secrets.d.ts +5 -0
- package/dist/adapters/crypto/secrets.js +10 -0
- package/dist/adapters/crypto/secrets.js.map +1 -0
- package/dist/adapters/http/device-label.d.ts +9 -0
- package/dist/adapters/http/device-label.js +39 -0
- package/dist/adapters/http/device-label.js.map +1 -0
- package/dist/adapters/http/rate-limiter.d.ts +21 -0
- package/dist/adapters/http/rate-limiter.js +44 -0
- package/dist/adapters/http/rate-limiter.js.map +1 -0
- package/dist/adapters/http/request-credentials.d.ts +23 -0
- package/dist/adapters/http/request-credentials.js +45 -0
- package/dist/adapters/http/request-credentials.js.map +1 -0
- package/dist/adapters/http/server.d.ts +47 -0
- package/dist/adapters/http/server.js +216 -0
- package/dist/adapters/http/server.js.map +1 -0
- package/dist/adapters/http/version.d.ts +9 -0
- package/dist/adapters/http/version.js +23 -0
- package/dist/adapters/http/version.js.map +1 -0
- package/dist/adapters/mcp/mcp-endpoint.d.ts +8 -0
- package/dist/adapters/mcp/mcp-endpoint.js +127 -0
- package/dist/adapters/mcp/mcp-endpoint.js.map +1 -0
- package/dist/adapters/prisma/client.d.ts +10 -0
- package/dist/adapters/prisma/client.js +20 -0
- package/dist/adapters/prisma/client.js.map +1 -0
- package/dist/adapters/prisma/delivery-notices.d.ts +34 -0
- package/dist/adapters/prisma/delivery-notices.js +113 -0
- package/dist/adapters/prisma/delivery-notices.js.map +1 -0
- package/dist/adapters/prisma/event-log.d.ts +11 -0
- package/dist/adapters/prisma/event-log.js +61 -0
- package/dist/adapters/prisma/event-log.js.map +1 -0
- package/dist/adapters/prisma/failure-log.d.ts +22 -0
- package/dist/adapters/prisma/failure-log.js +70 -0
- package/dist/adapters/prisma/failure-log.js.map +1 -0
- package/dist/adapters/prisma/fleet-counter.d.ts +3 -0
- package/dist/adapters/prisma/fleet-counter.js +6 -0
- package/dist/adapters/prisma/fleet-counter.js.map +1 -0
- package/dist/adapters/prisma/fleet-event-wakeups.d.ts +33 -0
- package/dist/adapters/prisma/fleet-event-wakeups.js +86 -0
- package/dist/adapters/prisma/fleet-event-wakeups.js.map +1 -0
- package/dist/adapters/prisma/generated/browser.d.ts +127 -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 +146 -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 +879 -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 +75 -0
- package/dist/adapters/prisma/generated/enums.js +73 -0
- package/dist/adapters/prisma/generated/enums.js.map +1 -0
- package/dist/adapters/prisma/generated/internal/class.d.ts +308 -0
- package/dist/adapters/prisma/generated/internal/class.js +52 -0
- package/dist/adapters/prisma/generated/internal/class.js.map +1 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +2131 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js +295 -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 +265 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -0
- package/dist/adapters/prisma/generated/models/ConsoleSession.d.ts +2137 -0
- package/dist/adapters/prisma/generated/models/ConsoleSession.js +2 -0
- package/dist/adapters/prisma/generated/models/ConsoleSession.js.map +1 -0
- package/dist/adapters/prisma/generated/models/Credential.d.ts +1360 -0
- package/dist/adapters/prisma/generated/models/Credential.js +2 -0
- package/dist/adapters/prisma/generated/models/Credential.js.map +1 -0
- package/dist/adapters/prisma/generated/models/CrewRequest.d.ts +1558 -0
- package/dist/adapters/prisma/generated/models/CrewRequest.js +2 -0
- package/dist/adapters/prisma/generated/models/CrewRequest.js.map +1 -0
- package/dist/adapters/prisma/generated/models/Delivery.d.ts +2211 -0
- package/dist/adapters/prisma/generated/models/Delivery.js +2 -0
- package/dist/adapters/prisma/generated/models/Delivery.js.map +1 -0
- package/dist/adapters/prisma/generated/models/Event.d.ts +1991 -0
- package/dist/adapters/prisma/generated/models/Event.js +2 -0
- package/dist/adapters/prisma/generated/models/Event.js.map +1 -0
- package/dist/adapters/prisma/generated/models/Fleet.d.ts +3032 -0
- package/dist/adapters/prisma/generated/models/Fleet.js +2 -0
- package/dist/adapters/prisma/generated/models/Fleet.js.map +1 -0
- package/dist/adapters/prisma/generated/models/Guide.d.ts +943 -0
- package/dist/adapters/prisma/generated/models/Guide.js +2 -0
- package/dist/adapters/prisma/generated/models/Guide.js.map +1 -0
- package/dist/adapters/prisma/generated/models/GuideProgress.d.ts +1323 -0
- package/dist/adapters/prisma/generated/models/GuideProgress.js +2 -0
- package/dist/adapters/prisma/generated/models/GuideProgress.js.map +1 -0
- package/dist/adapters/prisma/generated/models/InstallationRequest.d.ts +1036 -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/InstallationSettings.d.ts +1027 -0
- package/dist/adapters/prisma/generated/models/InstallationSettings.js +2 -0
- package/dist/adapters/prisma/generated/models/InstallationSettings.js.map +1 -0
- package/dist/adapters/prisma/generated/models/Lease.d.ts +2076 -0
- package/dist/adapters/prisma/generated/models/Lease.js +2 -0
- package/dist/adapters/prisma/generated/models/Lease.js.map +1 -0
- package/dist/adapters/prisma/generated/models/Message.d.ts +2869 -0
- package/dist/adapters/prisma/generated/models/Message.js +2 -0
- package/dist/adapters/prisma/generated/models/Message.js.map +1 -0
- package/dist/adapters/prisma/generated/models/Notice.d.ts +1068 -0
- package/dist/adapters/prisma/generated/models/Notice.js +2 -0
- package/dist/adapters/prisma/generated/models/Notice.js.map +1 -0
- package/dist/adapters/prisma/generated/models/NoticeDismissal.d.ts +1245 -0
- package/dist/adapters/prisma/generated/models/NoticeDismissal.js +2 -0
- package/dist/adapters/prisma/generated/models/NoticeDismissal.js.map +1 -0
- package/dist/adapters/prisma/generated/models/Operator.d.ts +1173 -0
- package/dist/adapters/prisma/generated/models/Operator.js +2 -0
- package/dist/adapters/prisma/generated/models/Operator.js.map +1 -0
- package/dist/adapters/prisma/generated/models/Ship.d.ts +3320 -0
- package/dist/adapters/prisma/generated/models/Ship.js +2 -0
- package/dist/adapters/prisma/generated/models/Ship.js.map +1 -0
- package/dist/adapters/prisma/generated/models/SignInTicket.d.ts +1222 -0
- package/dist/adapters/prisma/generated/models/SignInTicket.js +2 -0
- package/dist/adapters/prisma/generated/models/SignInTicket.js.map +1 -0
- package/dist/adapters/prisma/generated/models.d.ts +18 -0
- package/dist/adapters/prisma/generated/models.js +2 -0
- package/dist/adapters/prisma/generated/models.js.map +1 -0
- package/dist/adapters/prisma/history.d.ts +3 -0
- package/dist/adapters/prisma/history.js +289 -0
- package/dist/adapters/prisma/history.js.map +1 -0
- package/dist/adapters/prisma/identity.d.ts +10 -0
- package/dist/adapters/prisma/identity.js +213 -0
- package/dist/adapters/prisma/identity.js.map +1 -0
- package/dist/adapters/prisma/installation.d.ts +13 -0
- package/dist/adapters/prisma/installation.js +155 -0
- package/dist/adapters/prisma/installation.js.map +1 -0
- package/dist/adapters/prisma/messaging.d.ts +4 -0
- package/dist/adapters/prisma/messaging.js +156 -0
- package/dist/adapters/prisma/messaging.js.map +1 -0
- package/dist/adapters/prisma/migrate.d.ts +5 -0
- package/dist/adapters/prisma/migrate.js +40 -0
- package/dist/adapters/prisma/migrate.js.map +1 -0
- package/dist/adapters/prisma/receiver-wakeups.d.ts +26 -0
- package/dist/adapters/prisma/receiver-wakeups.js +79 -0
- package/dist/adapters/prisma/receiver-wakeups.js.map +1 -0
- package/dist/adapters/prisma/registry.d.ts +8 -0
- package/dist/adapters/prisma/registry.js +427 -0
- package/dist/adapters/prisma/registry.js.map +1 -0
- package/dist/adapters/prisma/rows.d.ts +58 -0
- package/dist/adapters/prisma/rows.js +408 -0
- package/dist/adapters/prisma/rows.js.map +1 -0
- package/dist/adapters/prisma/unit-of-work.d.ts +36 -0
- package/dist/adapters/prisma/unit-of-work.js +66 -0
- package/dist/adapters/prisma/unit-of-work.js.map +1 -0
- package/dist/adapters/rest/openapi.d.ts +12 -0
- package/dist/adapters/rest/openapi.js +62 -0
- package/dist/adapters/rest/openapi.js.map +1 -0
- package/dist/adapters/rest/rest-api.d.ts +8 -0
- package/dist/adapters/rest/rest-api.js +61 -0
- package/dist/adapters/rest/rest-api.js.map +1 -0
- package/dist/adapters/trpc/console.d.ts +150 -0
- package/dist/adapters/trpc/console.js +102 -0
- package/dist/adapters/trpc/console.js.map +1 -0
- package/dist/adapters/trpc/context.d.ts +201 -0
- package/dist/adapters/trpc/context.js +2 -0
- package/dist/adapters/trpc/context.js.map +1 -0
- package/dist/adapters/trpc/fleet.d.ts +637 -0
- package/dist/adapters/trpc/fleet.js +437 -0
- package/dist/adapters/trpc/fleet.js.map +1 -0
- package/dist/adapters/trpc/installation.d.ts +414 -0
- package/dist/adapters/trpc/installation.js +138 -0
- package/dist/adapters/trpc/installation.js.map +1 -0
- package/dist/adapters/trpc/router.d.ts +1263 -0
- package/dist/adapters/trpc/router.js +15 -0
- package/dist/adapters/trpc/router.js.map +1 -0
- package/dist/adapters/trpc/ship-contract.d.ts +107 -0
- package/dist/adapters/trpc/ship-contract.js +165 -0
- package/dist/adapters/trpc/ship-contract.js.map +1 -0
- package/dist/adapters/trpc/ship-protocol.d.ts +9 -0
- package/dist/adapters/trpc/ship-protocol.js +25 -0
- package/dist/adapters/trpc/ship-protocol.js.map +1 -0
- package/dist/adapters/trpc/ship.d.ts +209 -0
- package/dist/adapters/trpc/ship.js +214 -0
- package/dist/adapters/trpc/ship.js.map +1 -0
- package/dist/adapters/trpc/starting-prompt-text.d.ts +7 -0
- package/dist/adapters/trpc/starting-prompt-text.js +60 -0
- package/dist/adapters/trpc/starting-prompt-text.js.map +1 -0
- package/dist/adapters/trpc/system.d.ts +29 -0
- package/dist/adapters/trpc/system.js +15 -0
- package/dist/adapters/trpc/system.js.map +1 -0
- package/dist/adapters/trpc/trpc.d.ts +131 -0
- package/dist/adapters/trpc/trpc.js +350 -0
- package/dist/adapters/trpc/trpc.js.map +1 -0
- package/dist/app.d.ts +31 -0
- package/dist/app.js +80 -0
- package/dist/app.js.map +1 -0
- package/dist/bin/aeolus-core.d.ts +2 -0
- package/dist/bin/aeolus-core.js +45 -0
- package/dist/bin/aeolus-core.js.map +1 -0
- package/dist/config.d.ts +35 -0
- package/dist/config.js +74 -0
- package/dist/config.js.map +1 -0
- package/dist/domain/identity/authenticate.d.ts +46 -0
- package/dist/domain/identity/authenticate.js +18 -0
- package/dist/domain/identity/authenticate.js.map +1 -0
- package/dist/domain/identity/console-session.d.ts +54 -0
- package/dist/domain/identity/console-session.js +29 -0
- package/dist/domain/identity/console-session.js.map +1 -0
- package/dist/domain/identity/credential.d.ts +76 -0
- package/dist/domain/identity/credential.js +63 -0
- package/dist/domain/identity/credential.js.map +1 -0
- package/dist/domain/identity/dismiss-notice.d.ts +19 -0
- package/dist/domain/identity/dismiss-notice.js +23 -0
- package/dist/domain/identity/dismiss-notice.js.map +1 -0
- package/dist/domain/identity/get-guide.d.ts +7 -0
- package/dist/domain/identity/get-guide.js +5 -0
- package/dist/domain/identity/get-guide.js.map +1 -0
- package/dist/domain/identity/get-notices.d.ts +7 -0
- package/dist/domain/identity/get-notices.js +5 -0
- package/dist/domain/identity/get-notices.js.map +1 -0
- package/dist/domain/identity/guide.d.ts +24 -0
- package/dist/domain/identity/guide.js +3 -0
- package/dist/domain/identity/guide.js.map +1 -0
- package/dist/domain/identity/issue-sign-in-ticket.d.ts +38 -0
- package/dist/domain/identity/issue-sign-in-ticket.js +39 -0
- package/dist/domain/identity/issue-sign-in-ticket.js.map +1 -0
- package/dist/domain/identity/notice.d.ts +16 -0
- package/dist/domain/identity/notice.js +12 -0
- package/dist/domain/identity/notice.js.map +1 -0
- package/dist/domain/identity/operator-account.d.ts +28 -0
- package/dist/domain/identity/operator-account.js +21 -0
- package/dist/domain/identity/operator-account.js.map +1 -0
- package/dist/domain/identity/ports.d.ts +193 -0
- package/dist/domain/identity/ports.js +2 -0
- package/dist/domain/identity/ports.js.map +1 -0
- package/dist/domain/identity/public.d.ts +3 -0
- package/dist/domain/identity/public.js +5 -0
- package/dist/domain/identity/public.js.map +1 -0
- package/dist/domain/identity/read-account.d.ts +35 -0
- package/dist/domain/identity/read-account.js +27 -0
- package/dist/domain/identity/read-account.js.map +1 -0
- package/dist/domain/identity/read-guide.d.ts +18 -0
- package/dist/domain/identity/read-guide.js +21 -0
- package/dist/domain/identity/read-guide.js.map +1 -0
- package/dist/domain/identity/read-notices.d.ts +13 -0
- package/dist/domain/identity/read-notices.js +17 -0
- package/dist/domain/identity/read-notices.js.map +1 -0
- package/dist/domain/identity/record-guide-progress.d.ts +19 -0
- package/dist/domain/identity/record-guide-progress.js +24 -0
- package/dist/domain/identity/record-guide-progress.js.map +1 -0
- package/dist/domain/identity/redeem-sign-in-ticket.d.ts +34 -0
- package/dist/domain/identity/redeem-sign-in-ticket.js +25 -0
- package/dist/domain/identity/redeem-sign-in-ticket.js.map +1 -0
- package/dist/domain/identity/reset-operator-password.d.ts +34 -0
- package/dist/domain/identity/reset-operator-password.js +55 -0
- package/dist/domain/identity/reset-operator-password.js.map +1 -0
- package/dist/domain/identity/set-guide.d.ts +13 -0
- package/dist/domain/identity/set-guide.js +12 -0
- package/dist/domain/identity/set-guide.js.map +1 -0
- package/dist/domain/identity/set-notices.d.ts +13 -0
- package/dist/domain/identity/set-notices.js +12 -0
- package/dist/domain/identity/set-notices.js.map +1 -0
- package/dist/domain/identity/set-theme.d.ts +21 -0
- package/dist/domain/identity/set-theme.js +19 -0
- package/dist/domain/identity/set-theme.js.map +1 -0
- package/dist/domain/identity/sign-in-ticket.d.ts +21 -0
- package/dist/domain/identity/sign-in-ticket.js +5 -0
- package/dist/domain/identity/sign-in-ticket.js.map +1 -0
- package/dist/domain/identity/sign-in.d.ts +51 -0
- package/dist/domain/identity/sign-in.js +43 -0
- package/dist/domain/identity/sign-in.js.map +1 -0
- package/dist/domain/identity/sign-out.d.ts +20 -0
- package/dist/domain/identity/sign-out.js +32 -0
- package/dist/domain/identity/sign-out.js.map +1 -0
- package/dist/domain/identity/start-console-session.d.ts +27 -0
- package/dist/domain/identity/start-console-session.js +54 -0
- package/dist/domain/identity/start-console-session.js.map +1 -0
- package/dist/domain/identity/start-viewer-session.d.ts +29 -0
- package/dist/domain/identity/start-viewer-session.js +42 -0
- package/dist/domain/identity/start-viewer-session.js.map +1 -0
- package/dist/domain/messaging/acknowledge-delivery.d.ts +30 -0
- package/dist/domain/messaging/acknowledge-delivery.js +31 -0
- package/dist/domain/messaging/acknowledge-delivery.js.map +1 -0
- package/dist/domain/messaging/answer-ping.d.ts +33 -0
- package/dist/domain/messaging/answer-ping.js +37 -0
- package/dist/domain/messaging/answer-ping.js.map +1 -0
- package/dist/domain/messaging/check-inbox.d.ts +33 -0
- package/dist/domain/messaging/check-inbox.js +61 -0
- package/dist/domain/messaging/check-inbox.js.map +1 -0
- package/dist/domain/messaging/content-type.d.ts +9 -0
- package/dist/domain/messaging/content-type.js +18 -0
- package/dist/domain/messaging/content-type.js.map +1 -0
- package/dist/domain/messaging/daily-message-limit.d.ts +19 -0
- package/dist/domain/messaging/daily-message-limit.js +24 -0
- package/dist/domain/messaging/daily-message-limit.js.map +1 -0
- package/dist/domain/messaging/delivery.d.ts +116 -0
- package/dist/domain/messaging/delivery.js +201 -0
- package/dist/domain/messaging/delivery.js.map +1 -0
- package/dist/domain/messaging/dismiss-delivery.d.ts +28 -0
- package/dist/domain/messaging/dismiss-delivery.js +29 -0
- package/dist/domain/messaging/dismiss-delivery.js.map +1 -0
- package/dist/domain/messaging/inbox-wait.d.ts +8 -0
- package/dist/domain/messaging/inbox-wait.js +19 -0
- package/dist/domain/messaging/inbox-wait.js.map +1 -0
- package/dist/domain/messaging/mark-done.d.ts +45 -0
- package/dist/domain/messaging/mark-done.js +49 -0
- package/dist/domain/messaging/mark-done.js.map +1 -0
- package/dist/domain/messaging/mark-read.d.ts +27 -0
- package/dist/domain/messaging/mark-read.js +34 -0
- package/dist/domain/messaging/mark-read.js.map +1 -0
- package/dist/domain/messaging/message.d.ts +104 -0
- package/dist/domain/messaging/message.js +84 -0
- package/dist/domain/messaging/message.js.map +1 -0
- package/dist/domain/messaging/payload.d.ts +9 -0
- package/dist/domain/messaging/payload.js +16 -0
- package/dist/domain/messaging/payload.js.map +1 -0
- package/dist/domain/messaging/ping-ship.d.ts +38 -0
- package/dist/domain/messaging/ping-ship.js +42 -0
- package/dist/domain/messaging/ping-ship.js.map +1 -0
- package/dist/domain/messaging/ports.d.ts +116 -0
- package/dist/domain/messaging/ports.js +2 -0
- package/dist/domain/messaging/ports.js.map +1 -0
- package/dist/domain/messaging/receive-deliveries.d.ts +68 -0
- package/dist/domain/messaging/receive-deliveries.js +119 -0
- package/dist/domain/messaging/receive-deliveries.js.map +1 -0
- package/dist/domain/messaging/receive-max.d.ts +8 -0
- package/dist/domain/messaging/receive-max.js +17 -0
- package/dist/domain/messaging/receive-max.js.map +1 -0
- package/dist/domain/messaging/reply-to-message.d.ts +35 -0
- package/dist/domain/messaging/reply-to-message.js +49 -0
- package/dist/domain/messaging/reply-to-message.js.map +1 -0
- package/dist/domain/messaging/resend-delivery.d.ts +48 -0
- package/dist/domain/messaging/resend-delivery.js +97 -0
- package/dist/domain/messaging/resend-delivery.js.map +1 -0
- package/dist/domain/messaging/send-message.d.ts +88 -0
- package/dist/domain/messaging/send-message.js +115 -0
- package/dist/domain/messaging/send-message.js.map +1 -0
- package/dist/domain/messaging/send-request.d.ts +16 -0
- package/dist/domain/messaging/send-request.js +18 -0
- package/dist/domain/messaging/send-request.js.map +1 -0
- package/dist/domain/registry/applied-limits.d.ts +15 -0
- package/dist/domain/registry/applied-limits.js +15 -0
- package/dist/domain/registry/applied-limits.js.map +1 -0
- package/dist/domain/registry/assign-crew.d.ts +31 -0
- package/dist/domain/registry/assign-crew.js +35 -0
- package/dist/domain/registry/assign-crew.js.map +1 -0
- package/dist/domain/registry/claim-ship.d.ts +49 -0
- package/dist/domain/registry/claim-ship.js +59 -0
- package/dist/domain/registry/claim-ship.js.map +1 -0
- package/dist/domain/registry/commission-ship.d.ts +54 -0
- package/dist/domain/registry/commission-ship.js +70 -0
- package/dist/domain/registry/commission-ship.js.map +1 -0
- package/dist/domain/registry/confirm-crew-release.d.ts +28 -0
- package/dist/domain/registry/confirm-crew-release.js +28 -0
- package/dist/domain/registry/confirm-crew-release.js.map +1 -0
- package/dist/domain/registry/create-fleet.d.ts +39 -0
- package/dist/domain/registry/create-fleet.js +56 -0
- package/dist/domain/registry/create-fleet.js.map +1 -0
- package/dist/domain/registry/crew-request.d.ts +148 -0
- package/dist/domain/registry/crew-request.js +175 -0
- package/dist/domain/registry/crew-request.js.map +1 -0
- package/dist/domain/registry/delete-fleet.d.ts +46 -0
- package/dist/domain/registry/delete-fleet.js +34 -0
- package/dist/domain/registry/delete-fleet.js.map +1 -0
- package/dist/domain/registry/deregister.d.ts +32 -0
- package/dist/domain/registry/deregister.js +38 -0
- package/dist/domain/registry/deregister.js.map +1 -0
- package/dist/domain/registry/explain-crew-request.d.ts +30 -0
- package/dist/domain/registry/explain-crew-request.js +31 -0
- package/dist/domain/registry/explain-crew-request.js.map +1 -0
- package/dist/domain/registry/fleet.d.ts +12 -0
- package/dist/domain/registry/fleet.js +12 -0
- package/dist/domain/registry/fleet.js.map +1 -0
- package/dist/domain/registry/found-fleet.d.ts +32 -0
- package/dist/domain/registry/found-fleet.js +43 -0
- package/dist/domain/registry/found-fleet.js.map +1 -0
- package/dist/domain/registry/get-fleet-limits.d.ts +17 -0
- package/dist/domain/registry/get-fleet-limits.js +14 -0
- package/dist/domain/registry/get-fleet-limits.js.map +1 -0
- package/dist/domain/registry/get-installation-fleet.d.ts +15 -0
- package/dist/domain/registry/get-installation-fleet.js +12 -0
- package/dist/domain/registry/get-installation-fleet.js.map +1 -0
- package/dist/domain/registry/get-installation-settings.d.ts +7 -0
- package/dist/domain/registry/get-installation-settings.js +5 -0
- package/dist/domain/registry/get-installation-settings.js.map +1 -0
- package/dist/domain/registry/get-ship.d.ts +34 -0
- package/dist/domain/registry/get-ship.js +36 -0
- package/dist/domain/registry/get-ship.js.map +1 -0
- package/dist/domain/registry/get-starting-prompt.d.ts +24 -0
- package/dist/domain/registry/get-starting-prompt.js +46 -0
- package/dist/domain/registry/get-starting-prompt.js.map +1 -0
- package/dist/domain/registry/initialise-fleet.d.ts +28 -0
- package/dist/domain/registry/initialise-fleet.js +39 -0
- package/dist/domain/registry/initialise-fleet.js.map +1 -0
- package/dist/domain/registry/installation-fleet.d.ts +36 -0
- package/dist/domain/registry/installation-fleet.js +22 -0
- package/dist/domain/registry/installation-fleet.js.map +1 -0
- package/dist/domain/registry/installation-request.d.ts +23 -0
- package/dist/domain/registry/installation-request.js +5 -0
- package/dist/domain/registry/installation-request.js.map +1 -0
- package/dist/domain/registry/lease.d.ts +51 -0
- package/dist/domain/registry/lease.js +39 -0
- package/dist/domain/registry/lease.js.map +1 -0
- package/dist/domain/registry/leases.d.ts +66 -0
- package/dist/domain/registry/leases.js +80 -0
- package/dist/domain/registry/leases.js.map +1 -0
- package/dist/domain/registry/limits.d.ts +50 -0
- package/dist/domain/registry/limits.js +24 -0
- package/dist/domain/registry/limits.js.map +1 -0
- package/dist/domain/registry/list-fleet.d.ts +70 -0
- package/dist/domain/registry/list-fleet.js +47 -0
- package/dist/domain/registry/list-fleet.js.map +1 -0
- package/dist/domain/registry/list-fleets.d.ts +11 -0
- package/dist/domain/registry/list-fleets.js +9 -0
- package/dist/domain/registry/list-fleets.js.map +1 -0
- package/dist/domain/registry/list-installation-fleets.d.ts +15 -0
- package/dist/domain/registry/list-installation-fleets.js +15 -0
- package/dist/domain/registry/list-installation-fleets.js.map +1 -0
- package/dist/domain/registry/ping-status.d.ts +17 -0
- package/dist/domain/registry/ping-status.js +28 -0
- package/dist/domain/registry/ping-status.js.map +1 -0
- package/dist/domain/registry/pingable-ship.d.ts +22 -0
- package/dist/domain/registry/pingable-ship.js +21 -0
- package/dist/domain/registry/pingable-ship.js.map +1 -0
- package/dist/domain/registry/ports.d.ts +318 -0
- package/dist/domain/registry/ports.js +2 -0
- package/dist/domain/registry/ports.js.map +1 -0
- package/dist/domain/registry/public.d.ts +8 -0
- package/dist/domain/registry/public.js +10 -0
- package/dist/domain/registry/public.js.map +1 -0
- package/dist/domain/registry/read-assigned-crew-requests.d.ts +14 -0
- package/dist/domain/registry/read-assigned-crew-requests.js +15 -0
- package/dist/domain/registry/read-assigned-crew-requests.js.map +1 -0
- package/dist/domain/registry/recrew-ship.d.ts +33 -0
- package/dist/domain/registry/recrew-ship.js +34 -0
- package/dist/domain/registry/recrew-ship.js.map +1 -0
- package/dist/domain/registry/release-ship.d.ts +38 -0
- package/dist/domain/registry/release-ship.js +47 -0
- package/dist/domain/registry/release-ship.js.map +1 -0
- package/dist/domain/registry/remove-crew-request.d.ts +28 -0
- package/dist/domain/registry/remove-crew-request.js +36 -0
- package/dist/domain/registry/remove-crew-request.js.map +1 -0
- package/dist/domain/registry/rename-ship.d.ts +30 -0
- package/dist/domain/registry/rename-ship.js +39 -0
- package/dist/domain/registry/rename-ship.js.map +1 -0
- package/dist/domain/registry/report-crew-status.d.ts +29 -0
- package/dist/domain/registry/report-crew-status.js +30 -0
- package/dist/domain/registry/report-crew-status.js.map +1 -0
- package/dist/domain/registry/report-details.d.ts +18 -0
- package/dist/domain/registry/report-details.js +41 -0
- package/dist/domain/registry/report-details.js.map +1 -0
- package/dist/domain/registry/report-log.d.ts +21 -0
- package/dist/domain/registry/report-log.js +16 -0
- package/dist/domain/registry/report-log.js.map +1 -0
- package/dist/domain/registry/report.d.ts +30 -0
- package/dist/domain/registry/report.js +30 -0
- package/dist/domain/registry/report.js.map +1 -0
- package/dist/domain/registry/request-crew.d.ts +32 -0
- package/dist/domain/registry/request-crew.js +29 -0
- package/dist/domain/registry/request-crew.js.map +1 -0
- package/dist/domain/registry/resolve-selector.d.ts +25 -0
- package/dist/domain/registry/resolve-selector.js +32 -0
- package/dist/domain/registry/resolve-selector.js.map +1 -0
- package/dist/domain/registry/retire-ship.d.ts +42 -0
- package/dist/domain/registry/retire-ship.js +68 -0
- package/dist/domain/registry/retire-ship.js.map +1 -0
- package/dist/domain/registry/set-fleet-limits.d.ts +30 -0
- package/dist/domain/registry/set-fleet-limits.js +54 -0
- package/dist/domain/registry/set-fleet-limits.js.map +1 -0
- package/dist/domain/registry/set-installation-settings.d.ts +18 -0
- package/dist/domain/registry/set-installation-settings.js +31 -0
- package/dist/domain/registry/set-installation-settings.js.map +1 -0
- package/dist/domain/registry/ship-handle.d.ts +5 -0
- package/dist/domain/registry/ship-handle.js +20 -0
- package/dist/domain/registry/ship-handle.js.map +1 -0
- package/dist/domain/registry/ship-note.d.ts +7 -0
- package/dist/domain/registry/ship-note.js +15 -0
- package/dist/domain/registry/ship-note.js.map +1 -0
- package/dist/domain/registry/ship-report.d.ts +42 -0
- package/dist/domain/registry/ship-report.js +93 -0
- package/dist/domain/registry/ship-report.js.map +1 -0
- package/dist/domain/registry/ship.d.ts +190 -0
- package/dist/domain/registry/ship.js +334 -0
- package/dist/domain/registry/ship.js.map +1 -0
- package/dist/domain/registry/ships.d.ts +25 -0
- package/dist/domain/registry/ships.js +22 -0
- package/dist/domain/registry/ships.js.map +1 -0
- package/dist/domain/registry/starting-prompt.d.ts +32 -0
- package/dist/domain/registry/starting-prompt.js +22 -0
- package/dist/domain/registry/starting-prompt.js.map +1 -0
- package/dist/domain/registry/whoami.d.ts +20 -0
- package/dist/domain/registry/whoami.js +15 -0
- package/dist/domain/registry/whoami.js.map +1 -0
- package/dist/domain/shared/caller.d.ts +25 -0
- package/dist/domain/shared/caller.js +8 -0
- package/dist/domain/shared/caller.js.map +1 -0
- package/dist/domain/shared/clock.d.ts +4 -0
- package/dist/domain/shared/clock.js +2 -0
- package/dist/domain/shared/clock.js.map +1 -0
- package/dist/domain/shared/errors.d.ts +13 -0
- package/dist/domain/shared/errors.js +6 -0
- package/dist/domain/shared/errors.js.map +1 -0
- package/dist/domain/shared/events.d.ts +75 -0
- package/dist/domain/shared/events.js +9 -0
- package/dist/domain/shared/events.js.map +1 -0
- package/dist/domain/shared/follow-fleet.d.ts +32 -0
- package/dist/domain/shared/follow-fleet.js +65 -0
- package/dist/domain/shared/follow-fleet.js.map +1 -0
- package/dist/domain/shared/history.d.ts +124 -0
- package/dist/domain/shared/history.js +16 -0
- package/dist/domain/shared/history.js.map +1 -0
- package/dist/domain/shared/idempotency-key.d.ts +8 -0
- package/dist/domain/shared/idempotency-key.js +14 -0
- package/dist/domain/shared/idempotency-key.js.map +1 -0
- package/dist/domain/shared/notifier.d.ts +17 -0
- package/dist/domain/shared/notifier.js +2 -0
- package/dist/domain/shared/notifier.js.map +1 -0
- package/dist/domain/shared/ping.d.ts +18 -0
- package/dist/domain/shared/ping.js +8 -0
- package/dist/domain/shared/ping.js.map +1 -0
- package/dist/domain/shared/read-fleet-events.d.ts +29 -0
- package/dist/domain/shared/read-fleet-events.js +25 -0
- package/dist/domain/shared/read-fleet-events.js.map +1 -0
- package/dist/domain/shared/read-fleet-limits.d.ts +39 -0
- package/dist/domain/shared/read-fleet-limits.js +24 -0
- package/dist/domain/shared/read-fleet-limits.js.map +1 -0
- package/dist/domain/shared/read-inbox.d.ts +20 -0
- package/dist/domain/shared/read-inbox.js +16 -0
- package/dist/domain/shared/read-inbox.js.map +1 -0
- package/dist/domain/shared/read-message.d.ts +21 -0
- package/dist/domain/shared/read-message.js +18 -0
- package/dist/domain/shared/read-message.js.map +1 -0
- package/dist/domain/shared/read-needs-attention.d.ts +12 -0
- package/dist/domain/shared/read-needs-attention.js +10 -0
- package/dist/domain/shared/read-needs-attention.js.map +1 -0
- package/dist/domain/shared/read-ship-messages.d.ts +28 -0
- package/dist/domain/shared/read-ship-messages.js +30 -0
- package/dist/domain/shared/read-ship-messages.js.map +1 -0
- package/dist/domain/shared/read-ship-timeline.d.ts +18 -0
- package/dist/domain/shared/read-ship-timeline.js +16 -0
- package/dist/domain/shared/read-ship-timeline.js.map +1 -0
- package/dist/domain/shared/result.d.ts +16 -0
- package/dist/domain/shared/result.js +7 -0
- package/dist/domain/shared/result.js.map +1 -0
- package/dist/domain/shared/secrets.d.ts +26 -0
- package/dist/domain/shared/secrets.js +2 -0
- package/dist/domain/shared/secrets.js.map +1 -0
- package/dist/domain/shared/selector.d.ts +29 -0
- package/dist/domain/shared/selector.js +2 -0
- package/dist/domain/shared/selector.js.map +1 -0
- package/dist/domain/shared/unit-of-work.d.ts +13 -0
- package/dist/domain/shared/unit-of-work.js +2 -0
- package/dist/domain/shared/unit-of-work.js.map +1 -0
- package/dist/domain/shared/utc-day.d.ts +4 -0
- package/dist/domain/shared/utc-day.js +9 -0
- package/dist/domain/shared/utc-day.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/start.d.ts +6 -0
- package/dist/start.js +29 -0
- package/dist/start.js.map +1 -0
- package/dist/wiring.d.ts +158 -0
- package/dist/wiring.js +185 -0
- package/dist/wiring.js.map +1 -0
- package/package.json +56 -3
- package/prisma.config.ts +18 -0
- package/src/adapters/prisma/migrations/20260929124818_init/migration.sql +201 -0
- package/src/adapters/prisma/migrations/20260929160000_fleet_argo_console_session/migration.sql +130 -0
- package/src/adapters/prisma/migrations/20260929220017_operator_login/migration.sql +27 -0
- package/src/adapters/prisma/migrations/20260930090000_crew_token/migration.sql +5 -0
- package/src/adapters/prisma/migrations/20260930120000_send/migration.sql +30 -0
- package/src/adapters/prisma/migrations/20260930150000_receive/migration.sql +24 -0
- package/src/adapters/prisma/migrations/20261001010000_event_seq/migration.sql +34 -0
- package/src/adapters/prisma/migrations/20261001020000_console_session_end_reason/migration.sql +14 -0
- package/src/adapters/prisma/migrations/20261001030000_account_theme_session_device/migration.sql +8 -0
- package/src/adapters/prisma/migrations/20261001040000_lease_last_seen/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261002190000_lease_report/migration.sql +7 -0
- package/src/adapters/prisma/migrations/20261003140000_commission_key/migration.sql +7 -0
- package/src/adapters/prisma/migrations/20261003200000_message_model/migration.sql +5 -0
- package/src/adapters/prisma/migrations/20261003201000_lease_harness/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261004120000_operator_without_password/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261004121000_installation_requests/migration.sql +21 -0
- package/src/adapters/prisma/migrations/20261004122000_events_deleted_with_their_fleet/migration.sql +11 -0
- package/src/adapters/prisma/migrations/20261004130000_sign_in_tickets/migration.sql +16 -0
- package/src/adapters/prisma/migrations/20261004140000_fleet_limits/migration.sql +6 -0
- package/src/adapters/prisma/migrations/20261004141000_installation_settings/migration.sql +12 -0
- package/src/adapters/prisma/migrations/20261005090000_viewer_ship/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261005100000_viewer_sessions/migration.sql +20 -0
- package/src/adapters/prisma/migrations/20261005110000_notices/migration.sql +37 -0
- package/src/adapters/prisma/migrations/20261005120000_guide/migration.sql +34 -0
- package/src/adapters/prisma/migrations/20261006100000_fleet_crew_scope/migration.sql +8 -0
- package/src/adapters/prisma/migrations/20261006140000_lease_report_details/migration.sql +3 -0
- package/src/adapters/prisma/migrations/20261006160000_crew_requests/migration.sql +20 -0
- package/src/adapters/prisma/migrations/20261006180000_crew_scopes/migration.sql +9 -0
- package/src/adapters/prisma/migrations/20261006190000_crew_assignment/migration.sql +13 -0
- package/src/adapters/prisma/migrations/20261006200000_crew_request_reason/migration.sql +3 -0
- package/src/adapters/prisma/migrations/migration_lock.toml +3 -0
- package/src/adapters/prisma/schema.prisma +558 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { consoleRouter } from './console.js';
|
|
2
|
+
import { fleetRouter } from './fleet.js';
|
|
3
|
+
import { installationRouter } from './installation.js';
|
|
4
|
+
import { shipRouter } from './ship.js';
|
|
5
|
+
import { systemRouter } from './system.js';
|
|
6
|
+
import { router } from './trpc.js';
|
|
7
|
+
/** The single API door (ADR 0004). REST and MCP map onto its ship procedures (ship-contract.ts). */
|
|
8
|
+
export const appRouter = router({
|
|
9
|
+
console: consoleRouter,
|
|
10
|
+
fleet: fleetRouter,
|
|
11
|
+
installation: installationRouter,
|
|
12
|
+
ship: shipRouter,
|
|
13
|
+
system: systemRouter,
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/adapters/trpc/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,oGAAoG;AACpG,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC;IAC9B,OAAO,EAAE,aAAa;IACtB,KAAK,EAAE,WAAW;IAClB,YAAY,EAAE,kBAAkB;IAChC,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,YAAY;CACrB,CAAC,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ship contract as the REST and MCP doors see it (ADR 0004): every
|
|
3
|
+
* procedure under `ship` in the router, then the fleet actions a ship with
|
|
4
|
+
* fleet scopes may call, read from the router itself. For each
|
|
5
|
+
* one: its name, what it says about itself, and the JSON Schema of its input
|
|
6
|
+
* and output, generated from the procedure's own Zod parsers. A call goes
|
|
7
|
+
* through the router with the raw input, so its middlewares and its input
|
|
8
|
+
* parsing run exactly as they do for `/trpc`; the doors hold no logic of
|
|
9
|
+
* their own.
|
|
10
|
+
*/
|
|
11
|
+
import { type TRPC_ERROR_CODE_KEY } from '@trpc/server';
|
|
12
|
+
import { z } from 'zod';
|
|
13
|
+
import { type LoggedFailure } from '../prisma/failure-log.js';
|
|
14
|
+
import type { Context } from './context.js';
|
|
15
|
+
import { ShipRefusalCode } from './trpc.js';
|
|
16
|
+
type JsonValue = z.infer<ReturnType<typeof z.json>>;
|
|
17
|
+
/** A JSON Schema for an object: what a ship call takes or answers. */
|
|
18
|
+
export interface ObjectSchema {
|
|
19
|
+
type: 'object';
|
|
20
|
+
properties: Record<string, Record<string, JsonValue>>;
|
|
21
|
+
required: string[];
|
|
22
|
+
[keyword: string]: unknown;
|
|
23
|
+
}
|
|
24
|
+
/** One call of the ship contract, as a door offers it. */
|
|
25
|
+
export interface ShipCall {
|
|
26
|
+
/** The name agents call it by, the MCP tool's: `send`, `ack`, or `fleet_list` for a fleet action. */
|
|
27
|
+
name: string;
|
|
28
|
+
/** Where REST serves it, under `/api/v1`: `/ship/send`, `/fleet/list`. */
|
|
29
|
+
route: string;
|
|
30
|
+
/** GET for a query without input, POST with a JSON body for the others. */
|
|
31
|
+
method: 'GET' | 'POST';
|
|
32
|
+
/** The procedure's path in the router, such as `ship.send`. */
|
|
33
|
+
path: string;
|
|
34
|
+
type: 'query' | 'mutation';
|
|
35
|
+
/** What it does and its rules, from the procedure's meta, with its example when it has one. */
|
|
36
|
+
description: string;
|
|
37
|
+
/** Arguments it takes as they stand, as JSON, when its procedure gives an example. */
|
|
38
|
+
example?: string;
|
|
39
|
+
/** How the caller says who it is: the ship secret in the input (`register`), or the crew token. */
|
|
40
|
+
credential: 'secret' | 'crewToken';
|
|
41
|
+
/** What it takes, if anything, and whether it may be left out (`receive`). */
|
|
42
|
+
input?: {
|
|
43
|
+
schema: ObjectSchema;
|
|
44
|
+
isRequired: boolean;
|
|
45
|
+
};
|
|
46
|
+
/** What it answers: an object, or a list for `fleet_list`. */
|
|
47
|
+
output: JsonSchema;
|
|
48
|
+
}
|
|
49
|
+
/** A JSON Schema of any shape: what a call answers. */
|
|
50
|
+
export type JsonSchema = Record<string, unknown>;
|
|
51
|
+
/**
|
|
52
|
+
* Every procedure under `ship`, in the router's order, then the fleet actions.
|
|
53
|
+
* Built once: the router never changes while the server runs.
|
|
54
|
+
*/
|
|
55
|
+
export declare const SHIP_CALLS: readonly ShipCall[];
|
|
56
|
+
/**
|
|
57
|
+
* What a caller learns of a call that did not succeed: the code, its HTTP
|
|
58
|
+
* status and a message it may read. The code is tRPC's, or LEASE_ENDED for a
|
|
59
|
+
* crew whose ship was released.
|
|
60
|
+
*/
|
|
61
|
+
export interface ShipCallRefusal {
|
|
62
|
+
code: TRPC_ERROR_CODE_KEY | ShipRefusalCode['code'];
|
|
63
|
+
httpStatus: number;
|
|
64
|
+
message: string;
|
|
65
|
+
/** Only for a server failure: the request's id, under which the server log holds the whole failure. */
|
|
66
|
+
requestId?: string;
|
|
67
|
+
}
|
|
68
|
+
export type ShipCallResult = {
|
|
69
|
+
isOk: true;
|
|
70
|
+
output: unknown;
|
|
71
|
+
} | {
|
|
72
|
+
isOk: false;
|
|
73
|
+
refusal: ShipCallRefusal;
|
|
74
|
+
};
|
|
75
|
+
/** Where a failure is logged whole: the request's own logger, which labels it with the request's id. */
|
|
76
|
+
export interface FailureLog {
|
|
77
|
+
error(details: {
|
|
78
|
+
path?: string;
|
|
79
|
+
} & LoggedFailure, message: string): void;
|
|
80
|
+
}
|
|
81
|
+
/** A refusal as a JSON body: its code and message, and for a server failure the request's id. */
|
|
82
|
+
export declare function refusalBody(refusal: ShipCallRefusal): {
|
|
83
|
+
code: string;
|
|
84
|
+
message: string;
|
|
85
|
+
requestId?: string;
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* A failure in a door itself, outside any procedure: the log holds it whole,
|
|
89
|
+
* under the request's id, and the caller learns only that it failed, as for
|
|
90
|
+
* a procedure's server failure.
|
|
91
|
+
*/
|
|
92
|
+
export declare function unexpectedFailure(thrown: unknown, request: {
|
|
93
|
+
log: FailureLog;
|
|
94
|
+
requestId: string;
|
|
95
|
+
}): ShipCallRefusal;
|
|
96
|
+
/**
|
|
97
|
+
* Calls the procedure with the raw input, as the context's caller. The
|
|
98
|
+
* credentials in the context are the door's: a bearer crew token for REST, the
|
|
99
|
+
* `crewToken` argument for MCP. A server failure goes to the log whole, as
|
|
100
|
+
* `/trpc` logs it; the caller learns only that it failed.
|
|
101
|
+
*/
|
|
102
|
+
export declare function callShip(call: ShipCall, request: {
|
|
103
|
+
ctx: Context;
|
|
104
|
+
input: unknown;
|
|
105
|
+
log: FailureLog;
|
|
106
|
+
}): Promise<ShipCallResult>;
|
|
107
|
+
export {};
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ship contract as the REST and MCP doors see it (ADR 0004): every
|
|
3
|
+
* procedure under `ship` in the router, then the fleet actions a ship with
|
|
4
|
+
* fleet scopes may call, read from the router itself. For each
|
|
5
|
+
* one: its name, what it says about itself, and the JSON Schema of its input
|
|
6
|
+
* and output, generated from the procedure's own Zod parsers. A call goes
|
|
7
|
+
* through the router with the raw input, so its middlewares and its input
|
|
8
|
+
* parsing run exactly as they do for `/trpc`; the doors hold no logic of
|
|
9
|
+
* their own.
|
|
10
|
+
*/
|
|
11
|
+
import { callTRPCProcedure, getTRPCErrorFromUnknown } from '@trpc/server';
|
|
12
|
+
import { getHTTPStatusCodeFromError } from '@trpc/server/http';
|
|
13
|
+
import { z } from 'zod';
|
|
14
|
+
import { failureForLog } from '../prisma/failure-log.js';
|
|
15
|
+
import { appRouter } from './router.js';
|
|
16
|
+
import { INTERNAL_ERROR_MESSAGE, ShipRefusalCode } from './trpc.js';
|
|
17
|
+
const objectSchema = z.looseObject({
|
|
18
|
+
type: z.literal('object'),
|
|
19
|
+
properties: z.record(z.string(), z.record(z.string(), z.json())).default({}),
|
|
20
|
+
required: z.array(z.string()).default([]),
|
|
21
|
+
});
|
|
22
|
+
const metaSchema = z.object({ description: z.string().min(1), example: z.record(z.string(), z.string()).optional() });
|
|
23
|
+
/** A procedure's parser, which must be Zod so its JSON Schema can be generated. */
|
|
24
|
+
function zodParser(parser) {
|
|
25
|
+
if (!(parser instanceof z.ZodType)) {
|
|
26
|
+
throw new TypeError('A ship procedure parses its input and output with Zod, so its JSON Schema can be generated');
|
|
27
|
+
}
|
|
28
|
+
return parser;
|
|
29
|
+
}
|
|
30
|
+
/** The JSON Schema of a procedure's parser: what it takes (`input`) or what it answers (`output`). */
|
|
31
|
+
function jsonSchemaOf(parser, io) {
|
|
32
|
+
// JSON Schema 2020-12, the dialect of OpenAPI 3.1 and MCP alike; naming it is left to the document holding it.
|
|
33
|
+
const schema = { ...z.toJSONSchema(parser, { io }) };
|
|
34
|
+
delete schema.$schema;
|
|
35
|
+
return objectSchema.parse(schema);
|
|
36
|
+
}
|
|
37
|
+
/** What a procedure takes: none without an input parser; optional when its parser takes nothing at all. */
|
|
38
|
+
function inputOf(parser) {
|
|
39
|
+
if (parser === undefined) {
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
const input = zodParser(parser);
|
|
43
|
+
return { schema: jsonSchemaOf(input, 'input'), isRequired: !input.safeParse(undefined).success };
|
|
44
|
+
}
|
|
45
|
+
/** What a procedure answers, as a JSON Schema of any shape. */
|
|
46
|
+
function outputSchemaOf(parser) {
|
|
47
|
+
const schema = { ...z.toJSONSchema(parser, { io: 'output' }) };
|
|
48
|
+
delete schema.$schema;
|
|
49
|
+
return schema;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The fleet actions the doors offer a ship with fleet scopes (#85): reading
|
|
53
|
+
* the fleet and the actions that manage its ships. The router checks the
|
|
54
|
+
* scope of each; the other fleet procedures stay the console's.
|
|
55
|
+
*/
|
|
56
|
+
const FLEET_ACTIONS = [
|
|
57
|
+
'list',
|
|
58
|
+
'ship',
|
|
59
|
+
'commission',
|
|
60
|
+
'getStartingPrompt',
|
|
61
|
+
'release',
|
|
62
|
+
'recrew',
|
|
63
|
+
'retire',
|
|
64
|
+
'ping',
|
|
65
|
+
'follow',
|
|
66
|
+
'crewRequest',
|
|
67
|
+
'removeCrewRequest',
|
|
68
|
+
'assignCrew',
|
|
69
|
+
'explainCrewRequest',
|
|
70
|
+
'reportCrewStatus',
|
|
71
|
+
'confirmCrewRelease',
|
|
72
|
+
'assignedCrewRequests',
|
|
73
|
+
];
|
|
74
|
+
/** One procedure as a door offers it, under its tool name and REST route. */
|
|
75
|
+
function callOf(procedure, at) {
|
|
76
|
+
const { type, inputs, meta } = procedure._def;
|
|
77
|
+
// The output parser is on the procedure at runtime, though tRPC's types leave it out.
|
|
78
|
+
const output = 'output' in procedure._def ? procedure._def.output : undefined;
|
|
79
|
+
const input = inputOf(inputs[0]);
|
|
80
|
+
const { description, example } = metaSchema.parse(meta);
|
|
81
|
+
const exampleJson = example === undefined ? undefined : JSON.stringify(example);
|
|
82
|
+
return {
|
|
83
|
+
...at,
|
|
84
|
+
method: type === 'query' && input === undefined ? 'GET' : 'POST',
|
|
85
|
+
type,
|
|
86
|
+
description: exampleJson === undefined ? description : `${description} Example: ${exampleJson}`,
|
|
87
|
+
...(exampleJson !== undefined && { example: exampleJson }),
|
|
88
|
+
input,
|
|
89
|
+
output: outputSchemaOf(zodParser(output)),
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Every procedure under `ship`, in the router's order, then the fleet actions.
|
|
94
|
+
* Built once: the router never changes while the server runs.
|
|
95
|
+
*/
|
|
96
|
+
export const SHIP_CALLS = [
|
|
97
|
+
...Object.entries(appRouter.ship).map(([name, procedure]) => callOf(procedure, { name, route: `/ship/${name}`, path: `ship.${name}`, credential: name === 'register' ? 'secret' : 'crewToken' })),
|
|
98
|
+
...FLEET_ACTIONS.map((name) => callOf(appRouter.fleet[name], { name: `fleet_${name}`, route: `/fleet/${name}`, path: `fleet.${name}`, credential: 'crewToken' })),
|
|
99
|
+
];
|
|
100
|
+
/** A refusal as a JSON body: its code and message, and for a server failure the request's id. */
|
|
101
|
+
export function refusalBody(refusal) {
|
|
102
|
+
const { code, message, requestId } = refusal;
|
|
103
|
+
return requestId === undefined ? { code, message } : { code, message, requestId };
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* A failure in a door itself, outside any procedure: the log holds it whole,
|
|
107
|
+
* under the request's id, and the caller learns only that it failed, as for
|
|
108
|
+
* a procedure's server failure.
|
|
109
|
+
*/
|
|
110
|
+
export function unexpectedFailure(thrown, request) {
|
|
111
|
+
const error = getTRPCErrorFromUnknown(thrown);
|
|
112
|
+
request.log.error(failureForLog(error), 'request failed');
|
|
113
|
+
return { code: 'INTERNAL_SERVER_ERROR', httpStatus: 500, message: INTERNAL_ERROR_MESSAGE, requestId: request.requestId };
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* What a caller reads of an error. A refusal keeps its code and message, an
|
|
117
|
+
* input that does not parse reads as one line per problem and field, then the
|
|
118
|
+
* call's example when it has one, and a server failure says only that it
|
|
119
|
+
* failed, with the request's id, as the router's error formatter does for
|
|
120
|
+
* `/trpc`.
|
|
121
|
+
*/
|
|
122
|
+
function refusalOf(error, at) {
|
|
123
|
+
const { call, requestId } = at;
|
|
124
|
+
const httpStatus = getHTTPStatusCodeFromError(error);
|
|
125
|
+
if (error.code === 'INTERNAL_SERVER_ERROR') {
|
|
126
|
+
return { code: error.code, httpStatus, message: INTERNAL_ERROR_MESSAGE, requestId };
|
|
127
|
+
}
|
|
128
|
+
const message = error.cause instanceof z.ZodError ? inputRefusalOf(error.cause, call) : error.message;
|
|
129
|
+
const code = error.cause instanceof ShipRefusalCode ? error.cause.code : error.code;
|
|
130
|
+
return { code, httpStatus, message };
|
|
131
|
+
}
|
|
132
|
+
/** Input that does not parse: one line per problem and field, then how the call takes it when it has an example. */
|
|
133
|
+
function inputRefusalOf(error, call) {
|
|
134
|
+
const problems = z.prettifyError(error);
|
|
135
|
+
return call.example === undefined ? problems : `${problems}\nCall ${call.name} like this: ${call.example}`;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Calls the procedure with the raw input, as the context's caller. The
|
|
139
|
+
* credentials in the context are the door's: a bearer crew token for REST, the
|
|
140
|
+
* `crewToken` argument for MCP. A server failure goes to the log whole, as
|
|
141
|
+
* `/trpc` logs it; the caller learns only that it failed.
|
|
142
|
+
*/
|
|
143
|
+
export async function callShip(call, request) {
|
|
144
|
+
const { ctx, input, log } = request;
|
|
145
|
+
try {
|
|
146
|
+
const output = await callTRPCProcedure({
|
|
147
|
+
router: appRouter,
|
|
148
|
+
path: call.path,
|
|
149
|
+
type: call.type,
|
|
150
|
+
ctx,
|
|
151
|
+
getRawInput: () => Promise.resolve(input),
|
|
152
|
+
signal: undefined,
|
|
153
|
+
batchIndex: 0,
|
|
154
|
+
});
|
|
155
|
+
return { isOk: true, output };
|
|
156
|
+
}
|
|
157
|
+
catch (thrown) {
|
|
158
|
+
const error = getTRPCErrorFromUnknown(thrown);
|
|
159
|
+
if (error.code === 'INTERNAL_SERVER_ERROR') {
|
|
160
|
+
log.error({ path: call.path, ...failureForLog(error) }, 'procedure failed');
|
|
161
|
+
}
|
|
162
|
+
return { isOk: false, refusal: refusalOf(error, { call, requestId: ctx.requestId }) };
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=ship-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ship-contract.js","sourceRoot":"","sources":["../../../src/adapters/trpc/ship-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ship protocol: how a session crewing a ship uses the ship calls, and
|
|
3
|
+
* when. The MCP server sends it as its instructions when a client connects,
|
|
4
|
+
* and the OpenAPI spec opens with it, so both doors state it in one text
|
|
5
|
+
* (ADR 0004). It is one of three layers, and none repeats another: the
|
|
6
|
+
* starting prompt says which ship the session crews, this says how to crew
|
|
7
|
+
* it, and each call's description (ship.ts) states that call's own rules.
|
|
8
|
+
*/
|
|
9
|
+
export declare const SHIP_PROTOCOL: string;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { PING_CONTENT_TYPE } from '@aeolus-fleet/common';
|
|
2
|
+
/**
|
|
3
|
+
* The ship protocol: how a session crewing a ship uses the ship calls, and
|
|
4
|
+
* when. The MCP server sends it as its instructions when a client connects,
|
|
5
|
+
* and the OpenAPI spec opens with it, so both doors state it in one text
|
|
6
|
+
* (ADR 0004). It is one of three layers, and none repeats another: the
|
|
7
|
+
* starting prompt says which ship the session crews, this says how to crew
|
|
8
|
+
* it, and each call's description (ship.ts) states that call's own rules.
|
|
9
|
+
*/
|
|
10
|
+
export const SHIP_PROTOCOL = [
|
|
11
|
+
'Aeolus carries messages between ships. You crew one of them.',
|
|
12
|
+
'',
|
|
13
|
+
'1. Call register once at the start, with your location and harness. Keep the crew token; every other call needs it.',
|
|
14
|
+
'2. Loop: receive, then ack each delivery. Act only if the ack succeeded.',
|
|
15
|
+
'3. To answer, send to its senderName with inReplyTo set to its messageId.',
|
|
16
|
+
'4. Every send states the model you are running now.',
|
|
17
|
+
'5. If the content is over 64 KB, send where it lives (a path, a URL, a PR link), not the content itself.',
|
|
18
|
+
`6. A ping (${PING_CONTENT_TYPE}): call pong with its deliveryId instead of ack. Don't act on it and don't reply.`,
|
|
19
|
+
'7. Report your status when it changes.',
|
|
20
|
+
'8. While you wait for an answer, keep receiving. An empty receive only means nothing has arrived yet.',
|
|
21
|
+
'9. When your work is done and you expect no answer, end your turn. Anything that arrives later waits for you.',
|
|
22
|
+
'10. Deregister only when this session ends for good, never between tasks.',
|
|
23
|
+
'11. LEASE_ENDED while passing your crew token: your ship was released. Stop calling the fleet and say so.',
|
|
24
|
+
].join('\n');
|
|
25
|
+
//# sourceMappingURL=ship-protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ship-protocol.js","sourceRoot":"","sources":["../../../src/adapters/trpc/ship-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,8DAA8D;IAC9D,EAAE;IACF,qHAAqH;IACrH,0EAA0E;IAC1E,2EAA2E;IAC3E,qDAAqD;IACrD,0GAA0G;IAC1G,cAAc,iBAAiB,mFAAmF;IAClH,wCAAwC;IACxC,uGAAuG;IACvG,+GAA+G;IAC/G,2EAA2E;IAC3E,2GAA2G;CAC5G,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ship procedures: the ship contract. `register` takes the ship's id and
|
|
3
|
+
* secret and returns a crew token; every later call carries that token as
|
|
4
|
+
* `Authorization: Bearer` (ADR 0015), or as the `crewToken` argument of an MCP
|
|
5
|
+
* tool. REST and MCP map onto these (ship-contract.ts).
|
|
6
|
+
*
|
|
7
|
+
* Each description speaks to the agent crewing a ship, who reads it on every
|
|
8
|
+
* call as an MCP tool or a REST operation: what the call does and its own
|
|
9
|
+
* rules. When to make each call is the ship protocol's (ship-protocol.ts),
|
|
10
|
+
* which no description repeats. It names the calls, never the door, since
|
|
11
|
+
* both doors show it.
|
|
12
|
+
*/
|
|
13
|
+
export declare const shipRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
14
|
+
ctx: import("./context.js").Context;
|
|
15
|
+
meta: import("./trpc.js").ProcedureMeta;
|
|
16
|
+
errorShape: import("@trpc/server").TRPCDefaultErrorShape | {
|
|
17
|
+
message: string;
|
|
18
|
+
data: {
|
|
19
|
+
requestId: string | undefined;
|
|
20
|
+
code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
|
|
21
|
+
httpStatus: number;
|
|
22
|
+
path?: string;
|
|
23
|
+
stack?: string;
|
|
24
|
+
};
|
|
25
|
+
code: import("@trpc/server").TRPC_ERROR_CODE_NUMBER;
|
|
26
|
+
};
|
|
27
|
+
transformer: false;
|
|
28
|
+
}, import("@trpc/server").TRPCDecorateCreateRouterOptions<{
|
|
29
|
+
/**
|
|
30
|
+
* Claims the ship for the calling session, which reports where it runs. The
|
|
31
|
+
* secret travels in the body, never as a bearer; the crew token comes back
|
|
32
|
+
* once. Only a wrong ship id or secret counts against the client's limit, so
|
|
33
|
+
* one address can start many sessions (ADR 0015); a client over it is
|
|
34
|
+
* refused before its secret is even checked.
|
|
35
|
+
*/
|
|
36
|
+
register: import("@trpc/server").TRPCMutationProcedure<{
|
|
37
|
+
input: {
|
|
38
|
+
shipId: unknown;
|
|
39
|
+
secret: string;
|
|
40
|
+
location: {
|
|
41
|
+
kind: "DEVICE" | "CLOUD" | "SERVER";
|
|
42
|
+
} | {
|
|
43
|
+
kind: "OTHER";
|
|
44
|
+
description: string;
|
|
45
|
+
};
|
|
46
|
+
harness: string;
|
|
47
|
+
};
|
|
48
|
+
output: {
|
|
49
|
+
crewToken: string;
|
|
50
|
+
};
|
|
51
|
+
meta: import("./trpc.js").ProcedureMeta;
|
|
52
|
+
}>;
|
|
53
|
+
/** The caller's ship: id, fleet, name and type. Any caller may ask about itself. */
|
|
54
|
+
whoami: import("@trpc/server").TRPCQueryProcedure<{
|
|
55
|
+
input: void;
|
|
56
|
+
output: {
|
|
57
|
+
shipId: `shp_${string}`;
|
|
58
|
+
fleetId: `flt_${string}`;
|
|
59
|
+
name: string;
|
|
60
|
+
type: string;
|
|
61
|
+
};
|
|
62
|
+
meta: import("./trpc.js").ProcedureMeta;
|
|
63
|
+
}>;
|
|
64
|
+
/**
|
|
65
|
+
* Sends a message from the calling ship, `argo` included, to a selector.
|
|
66
|
+
* Answers with the message's id only once the message and its delivery are
|
|
67
|
+
* stored (ADR 0003); a repeat of the idempotency key answers with the
|
|
68
|
+
* original id.
|
|
69
|
+
*/
|
|
70
|
+
send: import("@trpc/server").TRPCMutationProcedure<{
|
|
71
|
+
input: {
|
|
72
|
+
selector: {
|
|
73
|
+
kind: "ship";
|
|
74
|
+
shipId: unknown;
|
|
75
|
+
} | {
|
|
76
|
+
kind: "ship";
|
|
77
|
+
name: string;
|
|
78
|
+
} | {
|
|
79
|
+
kind: "type";
|
|
80
|
+
type: string;
|
|
81
|
+
};
|
|
82
|
+
payload: string;
|
|
83
|
+
idempotencyKey: string;
|
|
84
|
+
contentType?: string | undefined;
|
|
85
|
+
model?: string | undefined;
|
|
86
|
+
inReplyTo?: unknown;
|
|
87
|
+
};
|
|
88
|
+
output: {
|
|
89
|
+
messageId: `msg_${string}`;
|
|
90
|
+
};
|
|
91
|
+
meta: import("./trpc.js").ProcedureMeta;
|
|
92
|
+
}>;
|
|
93
|
+
/**
|
|
94
|
+
* Hands the crew up to `max` deliveries, 1 to 10, one by default: its own
|
|
95
|
+
* in flight first, then the oldest pending for its ship or its type. Waits
|
|
96
|
+
* about 25 seconds when none is there, then answers with none. A mutation:
|
|
97
|
+
* every delivery it returns is claimed.
|
|
98
|
+
*/
|
|
99
|
+
receive: import("@trpc/server").TRPCMutationProcedure<{
|
|
100
|
+
input: {
|
|
101
|
+
max?: number | undefined;
|
|
102
|
+
} | undefined;
|
|
103
|
+
output: {
|
|
104
|
+
deliveries: {
|
|
105
|
+
deliveryId: `dlv_${string}`;
|
|
106
|
+
messageId: `msg_${string}`;
|
|
107
|
+
senderShipId: `shp_${string}`;
|
|
108
|
+
senderName: string;
|
|
109
|
+
senderType: string;
|
|
110
|
+
recipient: {
|
|
111
|
+
kind: "ship";
|
|
112
|
+
shipId: `shp_${string}`;
|
|
113
|
+
} | {
|
|
114
|
+
kind: "type";
|
|
115
|
+
type: string;
|
|
116
|
+
};
|
|
117
|
+
payload: string;
|
|
118
|
+
contentType: string;
|
|
119
|
+
model: string | null;
|
|
120
|
+
inReplyTo: `msg_${string}` | null;
|
|
121
|
+
sentAt: string;
|
|
122
|
+
attempts: number;
|
|
123
|
+
}[];
|
|
124
|
+
};
|
|
125
|
+
meta: import("./trpc.js").ProcedureMeta;
|
|
126
|
+
}>;
|
|
127
|
+
/** Acknowledges a delivery the ship received: it is done. Acknowledging it again is OK. */
|
|
128
|
+
ack: import("@trpc/server").TRPCMutationProcedure<{
|
|
129
|
+
input: {
|
|
130
|
+
deliveryId: unknown;
|
|
131
|
+
};
|
|
132
|
+
output: Record<string, never>;
|
|
133
|
+
meta: import("./trpc.js").ProcedureMeta;
|
|
134
|
+
}>;
|
|
135
|
+
/**
|
|
136
|
+
* Answers a ping the ship received: acknowledges it and marks the session
|
|
137
|
+
* seen at that moment, so the operator sees the ship's model is working.
|
|
138
|
+
*/
|
|
139
|
+
pong: import("@trpc/server").TRPCMutationProcedure<{
|
|
140
|
+
input: {
|
|
141
|
+
deliveryId: unknown;
|
|
142
|
+
};
|
|
143
|
+
output: Record<string, never>;
|
|
144
|
+
meta: import("./trpc.js").ProcedureMeta;
|
|
145
|
+
}>;
|
|
146
|
+
/**
|
|
147
|
+
* The crew says what it is doing: working, blocked or idle, with a short
|
|
148
|
+
* note and optionally its details, set whole or merge-patched. A check-in:
|
|
149
|
+
* an event only when the state, note or details change.
|
|
150
|
+
*/
|
|
151
|
+
report: import("@trpc/server").TRPCMutationProcedure<{
|
|
152
|
+
input: {
|
|
153
|
+
state: "working" | "blocked" | "idle";
|
|
154
|
+
note?: string | undefined;
|
|
155
|
+
details?: Record<string, import("zod").JSONType> | null | undefined;
|
|
156
|
+
detailsPatch?: Record<string, import("zod").JSONType> | null | undefined;
|
|
157
|
+
};
|
|
158
|
+
output: Record<string, never>;
|
|
159
|
+
meta: import("./trpc.js").ProcedureMeta;
|
|
160
|
+
}>;
|
|
161
|
+
/**
|
|
162
|
+
* The crew's own report whole, details included, and the last report of
|
|
163
|
+
* the ship's previous crew, read-only. No scope beyond being the crew.
|
|
164
|
+
*/
|
|
165
|
+
reportLog: import("@trpc/server").TRPCQueryProcedure<{
|
|
166
|
+
input: void;
|
|
167
|
+
output: {
|
|
168
|
+
report: {
|
|
169
|
+
state: "working" | "blocked" | "idle";
|
|
170
|
+
note: string | null;
|
|
171
|
+
reportedAt: string;
|
|
172
|
+
detailsVersion: number;
|
|
173
|
+
details: Record<string, import("zod").JSONType> | null;
|
|
174
|
+
} | null;
|
|
175
|
+
previousCrew: {
|
|
176
|
+
state: "working" | "blocked" | "idle";
|
|
177
|
+
note: string | null;
|
|
178
|
+
reportedAt: string;
|
|
179
|
+
detailsVersion: number;
|
|
180
|
+
details: Record<string, import("zod").JSONType> | null;
|
|
181
|
+
} | null;
|
|
182
|
+
};
|
|
183
|
+
meta: import("./trpc.js").ProcedureMeta;
|
|
184
|
+
}>;
|
|
185
|
+
/**
|
|
186
|
+
* How many deliveries wait for the crew: what its next receive would hand
|
|
187
|
+
* it. Claims nothing. With waitSeconds (0 to 25) it waits while none does.
|
|
188
|
+
* A mutation only so that REST takes its body; it changes nothing.
|
|
189
|
+
*/
|
|
190
|
+
inbox: import("@trpc/server").TRPCMutationProcedure<{
|
|
191
|
+
input: {
|
|
192
|
+
waitSeconds?: number | undefined;
|
|
193
|
+
} | undefined;
|
|
194
|
+
output: {
|
|
195
|
+
waiting: number;
|
|
196
|
+
};
|
|
197
|
+
meta: import("./trpc.js").ProcedureMeta;
|
|
198
|
+
}>;
|
|
199
|
+
/**
|
|
200
|
+
* Ends the calling crew's own lease, and with it its crew token: the ship
|
|
201
|
+
* awaits a new crew, its secret stops working, and what it held in flight
|
|
202
|
+
* returns to pending for the next crew. Needs only the crew token.
|
|
203
|
+
*/
|
|
204
|
+
deregister: import("@trpc/server").TRPCMutationProcedure<{
|
|
205
|
+
input: void;
|
|
206
|
+
output: Record<string, never>;
|
|
207
|
+
meta: import("./trpc.js").ProcedureMeta;
|
|
208
|
+
}>;
|
|
209
|
+
}>>;
|