@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,214 @@
|
|
|
1
|
+
import { ackInputSchema, ackOutputSchema, deregisterOutputSchema, inboxInputSchema, inboxOutputSchema, PING_CONTENT_TYPE, pongInputSchema, pongOutputSchema, reportInputSchema, reportLogOutputSchema, reportOutputSchema, receiveInputSchema, receiveOutputSchema, registerInputSchema, registerOutputSchema, sendInputSchema, sendOutputSchema, whoamiOutputSchema, } from '@aeolus-fleet/common';
|
|
2
|
+
import { TRPCError } from '@trpc/server';
|
|
3
|
+
import { authenticatedProcedure, crewProcedure, okOrThrow, publicProcedure, router, scopedCrewProcedure, scopedProcedure, } from './trpc.js';
|
|
4
|
+
/**
|
|
5
|
+
* Ship procedures: the ship contract. `register` takes the ship's id and
|
|
6
|
+
* secret and returns a crew token; every later call carries that token as
|
|
7
|
+
* `Authorization: Bearer` (ADR 0015), or as the `crewToken` argument of an MCP
|
|
8
|
+
* tool. REST and MCP map onto these (ship-contract.ts).
|
|
9
|
+
*
|
|
10
|
+
* Each description speaks to the agent crewing a ship, who reads it on every
|
|
11
|
+
* call as an MCP tool or a REST operation: what the call does and its own
|
|
12
|
+
* rules. When to make each call is the ship protocol's (ship-protocol.ts),
|
|
13
|
+
* which no description repeats. It names the calls, never the door, since
|
|
14
|
+
* both doors show it.
|
|
15
|
+
*/
|
|
16
|
+
export const shipRouter = router({
|
|
17
|
+
/**
|
|
18
|
+
* Claims the ship for the calling session, which reports where it runs. The
|
|
19
|
+
* secret travels in the body, never as a bearer; the crew token comes back
|
|
20
|
+
* once. Only a wrong ship id or secret counts against the client's limit, so
|
|
21
|
+
* one address can start many sessions (ADR 0015); a client over it is
|
|
22
|
+
* refused before its secret is even checked.
|
|
23
|
+
*/
|
|
24
|
+
register: publicProcedure
|
|
25
|
+
.meta({
|
|
26
|
+
description: [
|
|
27
|
+
'Claims your ship for this conversation, with the ship id and secret from your starting prompt',
|
|
28
|
+
'and where you run: location { "kind": "DEVICE" }, "CLOUD" or "SERVER", or { "kind": "OTHER", "description": "..." },',
|
|
29
|
+
'and the harness you run in: harness "claude-code", "claude-chat", "codex", or another name.',
|
|
30
|
+
'It answers with your crew token, and only this once.',
|
|
31
|
+
'The secret works only here. A ship another session crews is refused (CONFLICT) until the operator releases it.',
|
|
32
|
+
].join(' '),
|
|
33
|
+
})
|
|
34
|
+
.use(({ ctx, next }) => {
|
|
35
|
+
if (!ctx.registerFailures.hasRoom(ctx.clientKey)) {
|
|
36
|
+
throw new TRPCError({ code: 'TOO_MANY_REQUESTS', message: 'Too many failed register attempts. Wait a minute.' });
|
|
37
|
+
}
|
|
38
|
+
return next();
|
|
39
|
+
})
|
|
40
|
+
.input(registerInputSchema)
|
|
41
|
+
.output(registerOutputSchema)
|
|
42
|
+
.mutation(async ({ ctx, input }) => {
|
|
43
|
+
const claimed = await ctx.useCases.claimShip(input);
|
|
44
|
+
if (!claimed.isOk && claimed.error.kind === 'WRONG_SHIP_ID_OR_SECRET') {
|
|
45
|
+
ctx.registerFailures.count(ctx.clientKey);
|
|
46
|
+
}
|
|
47
|
+
return okOrThrow(claimed);
|
|
48
|
+
}),
|
|
49
|
+
/** The caller's ship: id, fleet, name and type. Any caller may ask about itself. */
|
|
50
|
+
whoami: authenticatedProcedure
|
|
51
|
+
.meta({
|
|
52
|
+
description: 'Tells you which ship you crew: its id, fleet, name and type. Other ships reach you by that name, or by your type.',
|
|
53
|
+
})
|
|
54
|
+
.output(whoamiOutputSchema)
|
|
55
|
+
.query(async ({ ctx }) => okOrThrow(await ctx.useCases.whoami(ctx.caller))),
|
|
56
|
+
/**
|
|
57
|
+
* Sends a message from the calling ship, `argo` included, to a selector.
|
|
58
|
+
* Answers with the message's id only once the message and its delivery are
|
|
59
|
+
* stored (ADR 0003); a repeat of the idempotency key answers with the
|
|
60
|
+
* original id.
|
|
61
|
+
*/
|
|
62
|
+
send: scopedProcedure('messages:send')
|
|
63
|
+
.meta({
|
|
64
|
+
description: [
|
|
65
|
+
'Sends a message from your ship. It answers with the messageId only once the message is stored:',
|
|
66
|
+
'from then on it reaches its recipient, even one that is not running now.',
|
|
67
|
+
'selector picks the recipient: one ship by name { "kind": "ship", "name": "..." } or by id { "kind": "ship", "shipId": "shp_..." },',
|
|
68
|
+
'or any one ship of a type { "kind": "type", "type": "..." }.',
|
|
69
|
+
'inReplyTo, for an answer, is the messageId of the message you answer: the message id, not the delivery id.',
|
|
70
|
+
'payload is text of at most 64 KB: a reference to the content and an instruction, not the content itself.',
|
|
71
|
+
'contentType is text/plain unless you say otherwise.',
|
|
72
|
+
'model is the exact model id you run now, such as claude-opus-5-5: state it on every send, as it is now, even after a switch. A send without it is refused (BAD_REQUEST); only argo, the operator, states none.',
|
|
73
|
+
'idempotencyKey is a new unique string for every message. Reuse one only to retry the same send after an error or a lost answer:',
|
|
74
|
+
'the retry answers with the original messageId instead of sending twice, and a different send with a used key is refused (CONFLICT).',
|
|
75
|
+
].join(' '),
|
|
76
|
+
})
|
|
77
|
+
.input(sendInputSchema)
|
|
78
|
+
.output(sendOutputSchema)
|
|
79
|
+
.mutation(async ({ ctx, input }) => okOrThrow(await ctx.useCases.sendMessage(ctx.caller, input))),
|
|
80
|
+
/**
|
|
81
|
+
* Hands the crew up to `max` deliveries, 1 to 10, one by default: its own
|
|
82
|
+
* in flight first, then the oldest pending for its ship or its type. Waits
|
|
83
|
+
* about 25 seconds when none is there, then answers with none. A mutation:
|
|
84
|
+
* every delivery it returns is claimed.
|
|
85
|
+
*/
|
|
86
|
+
receive: scopedCrewProcedure('messages:receive')
|
|
87
|
+
.meta({
|
|
88
|
+
description: [
|
|
89
|
+
'Hands you your next deliveries, up to max (1 to 10, one when left out), each with its message and its sender:',
|
|
90
|
+
'senderShipId, senderName (the name to answer to) and senderType.',
|
|
91
|
+
'With none there it waits about 25 seconds, then answers with none.',
|
|
92
|
+
'Until you ack it a delivery stays yours: your next receive hands it to you again,',
|
|
93
|
+
'and after four receives without an ack it goes to the operator as undeliverable.',
|
|
94
|
+
'So you may see a deliveryId twice: treat it as the key of the work.',
|
|
95
|
+
].join(' '),
|
|
96
|
+
})
|
|
97
|
+
.input(receiveInputSchema)
|
|
98
|
+
.output(receiveOutputSchema)
|
|
99
|
+
.mutation(async ({ ctx, input }) => {
|
|
100
|
+
const { deliveries } = okOrThrow(await ctx.useCases.receiveDeliveries(ctx.crew, { max: input?.max }));
|
|
101
|
+
return { deliveries: deliveries.map((delivery) => ({ ...delivery, sentAt: delivery.sentAt.toISOString() })) };
|
|
102
|
+
}),
|
|
103
|
+
/** Acknowledges a delivery the ship received: it is done. Acknowledging it again is OK. */
|
|
104
|
+
ack: scopedCrewProcedure('messages:receive')
|
|
105
|
+
.meta({
|
|
106
|
+
description: [
|
|
107
|
+
'Acknowledges a delivery: you take responsibility for it, and it is done; what you do next is your own business.',
|
|
108
|
+
'Pass its deliveryId (dlv_...), not its messageId. Acknowledging it again is fine.',
|
|
109
|
+
'Only the ship holding the delivery can ack it.',
|
|
110
|
+
].join(' '),
|
|
111
|
+
})
|
|
112
|
+
.input(ackInputSchema)
|
|
113
|
+
.output(ackOutputSchema)
|
|
114
|
+
.mutation(async ({ ctx, input }) => {
|
|
115
|
+
okOrThrow(await ctx.useCases.acknowledgeDelivery(ctx.crew, input));
|
|
116
|
+
return {};
|
|
117
|
+
}),
|
|
118
|
+
/**
|
|
119
|
+
* Answers a ping the ship received: acknowledges it and marks the session
|
|
120
|
+
* seen at that moment, so the operator sees the ship's model is working.
|
|
121
|
+
*/
|
|
122
|
+
pong: scopedCrewProcedure('messages:receive')
|
|
123
|
+
.meta({
|
|
124
|
+
description: [
|
|
125
|
+
`Answers a ping: a delivery whose contentType is ${PING_CONTENT_TYPE}.`,
|
|
126
|
+
'Pass its deliveryId (dlv_...). Call pong instead of ack: it acknowledges the ping and tells the operator your session is working.',
|
|
127
|
+
'Do not act on it and do not reply with a message. Answering again is fine; pong answers only a ping.',
|
|
128
|
+
].join(' '),
|
|
129
|
+
})
|
|
130
|
+
.input(pongInputSchema)
|
|
131
|
+
.output(pongOutputSchema)
|
|
132
|
+
.mutation(async ({ ctx, input }) => {
|
|
133
|
+
okOrThrow(await ctx.useCases.answerPing(ctx.crew, input));
|
|
134
|
+
return {};
|
|
135
|
+
}),
|
|
136
|
+
/**
|
|
137
|
+
* The crew says what it is doing: working, blocked or idle, with a short
|
|
138
|
+
* note and optionally its details, set whole or merge-patched. A check-in:
|
|
139
|
+
* an event only when the state, note or details change.
|
|
140
|
+
*/
|
|
141
|
+
report: crewProcedure
|
|
142
|
+
.meta({
|
|
143
|
+
description: [
|
|
144
|
+
'Says what you are doing, for the operator and anyone who reads the fleet: state working, blocked or idle, and an optional note',
|
|
145
|
+
'(one line, at most 200 characters) on what you work on or what blocks you.',
|
|
146
|
+
'For structured status, details: one JSON object of at most 16 KB. details sets it whole and null clears it;',
|
|
147
|
+
'detailsPatch applies a JSON Merge Patch to it (objects merge per key, null deletes a key, arrays are replaced whole).',
|
|
148
|
+
'Give one of them, not both; leave both out to keep your details as they are.',
|
|
149
|
+
'Call it whenever your state changes; calling it again with the same state, note and details is a check-in.',
|
|
150
|
+
].join(' '),
|
|
151
|
+
example: { state: 'working', note: 'reviewing PR 89' },
|
|
152
|
+
})
|
|
153
|
+
.input(reportInputSchema)
|
|
154
|
+
.output(reportOutputSchema)
|
|
155
|
+
.mutation(async ({ ctx, input }) => {
|
|
156
|
+
okOrThrow(await ctx.useCases.report(ctx.crew, input));
|
|
157
|
+
return {};
|
|
158
|
+
}),
|
|
159
|
+
/**
|
|
160
|
+
* The crew's own report whole, details included, and the last report of
|
|
161
|
+
* the ship's previous crew, read-only. No scope beyond being the crew.
|
|
162
|
+
*/
|
|
163
|
+
reportLog: crewProcedure
|
|
164
|
+
.meta({
|
|
165
|
+
description: [
|
|
166
|
+
'Hands you your own report as you last made it, details included, and the last report of the crew that held your ship before you,',
|
|
167
|
+
'read-only, so you can pick up where it left off. Each is null when there is none.',
|
|
168
|
+
].join(' '),
|
|
169
|
+
})
|
|
170
|
+
.output(reportLogOutputSchema)
|
|
171
|
+
.query(async ({ ctx }) => {
|
|
172
|
+
const { report, previousCrew } = okOrThrow(await ctx.useCases.reportLog(ctx.crew));
|
|
173
|
+
return { report: reportOutputOf(report), previousCrew: reportOutputOf(previousCrew) };
|
|
174
|
+
}),
|
|
175
|
+
/**
|
|
176
|
+
* How many deliveries wait for the crew: what its next receive would hand
|
|
177
|
+
* it. Claims nothing. With waitSeconds (0 to 25) it waits while none does.
|
|
178
|
+
* A mutation only so that REST takes its body; it changes nothing.
|
|
179
|
+
*/
|
|
180
|
+
inbox: scopedCrewProcedure('messages:receive')
|
|
181
|
+
.meta({
|
|
182
|
+
description: [
|
|
183
|
+
'Tells you how many deliveries wait for you: what your next receive would hand you, your own unacknowledged ones included.',
|
|
184
|
+
'It claims nothing, so call receive to get them.',
|
|
185
|
+
'With waitSeconds (0 to 25) it waits while none does, and answers as soon as one arrives.',
|
|
186
|
+
].join(' '),
|
|
187
|
+
})
|
|
188
|
+
.input(inboxInputSchema)
|
|
189
|
+
.output(inboxOutputSchema)
|
|
190
|
+
.mutation(async ({ ctx, input }) => okOrThrow(await ctx.useCases.checkInbox(ctx.crew, { waitSeconds: input?.waitSeconds }))),
|
|
191
|
+
/**
|
|
192
|
+
* Ends the calling crew's own lease, and with it its crew token: the ship
|
|
193
|
+
* awaits a new crew, its secret stops working, and what it held in flight
|
|
194
|
+
* returns to pending for the next crew. Needs only the crew token.
|
|
195
|
+
*/
|
|
196
|
+
deregister: crewProcedure
|
|
197
|
+
.meta({
|
|
198
|
+
description: [
|
|
199
|
+
'Ends your session cleanly: your crew token and your ship\'s secret stop working,',
|
|
200
|
+
'and any delivery you received but did not ack goes back to pending for the next crew.',
|
|
201
|
+
'The ship and its inbox stay; a new crew needs a new starting prompt from the operator.',
|
|
202
|
+
].join(' '),
|
|
203
|
+
})
|
|
204
|
+
.output(deregisterOutputSchema)
|
|
205
|
+
.mutation(async ({ ctx }) => {
|
|
206
|
+
okOrThrow(await ctx.useCases.deregister(ctx.crew));
|
|
207
|
+
return {};
|
|
208
|
+
}),
|
|
209
|
+
});
|
|
210
|
+
/** A report as a ship reads it: its time in ISO 8601, in UTC. */
|
|
211
|
+
function reportOutputOf(report) {
|
|
212
|
+
return report && { ...report, reportedAt: report.reportedAt.toISOString() };
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=ship.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ship.js","sourceRoot":"","sources":["../../../src/adapters/trpc/ship.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type ShipId, type StartingPromptOutput } from '@aeolus-fleet/common';
|
|
2
|
+
/** A starting prompt as the API hands it out: the prompt, its crew lines and the secret itself. */
|
|
3
|
+
export declare function presentStartingPrompt(input: {
|
|
4
|
+
fleetUrl: string;
|
|
5
|
+
shipId: ShipId;
|
|
6
|
+
secret: string;
|
|
7
|
+
}): StartingPromptOutput;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { mcpUrlOf } from '@aeolus-fleet/common';
|
|
2
|
+
/**
|
|
3
|
+
* How a starting prompt reads (docs/blueprint.md, "Launch a ship"): the text
|
|
4
|
+
* the operator pastes into a new session, and one crew line per harness with
|
|
5
|
+
* the aeolus plugin. Core issues only the secret; this is presentation, so it
|
|
6
|
+
* lives here, and tRPC, REST and MCP share it because they map onto the same
|
|
7
|
+
* procedures. It holds the secret, so it is shown once and never stored.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* The starting prompt's text: identity only. Where the fleet's MCP server is
|
|
11
|
+
* and how to add it, the ship's id and secret, how to pick the location, and
|
|
12
|
+
* to call register. The protocol comes from the fleet when the session
|
|
13
|
+
* connects, and each call's rules from its description; what the ship works
|
|
14
|
+
* on, the operator adds.
|
|
15
|
+
*/
|
|
16
|
+
function startingPromptText(input) {
|
|
17
|
+
const { mcpUrl, shipId, secret } = input;
|
|
18
|
+
return [
|
|
19
|
+
'You crew a ship in an Aeolus fleet.',
|
|
20
|
+
'',
|
|
21
|
+
`Fleet MCP URL: ${mcpUrl}`,
|
|
22
|
+
`Ship id: ${shipId}`,
|
|
23
|
+
`Ship secret: ${secret}`,
|
|
24
|
+
'',
|
|
25
|
+
"Its tools come from the fleet's MCP server at that URL. If this session has none of them, add the server with this command, then start the session again with this prompt:",
|
|
26
|
+
`claude mcp add --transport http --scope user aeolus ${mcpUrl}`,
|
|
27
|
+
'',
|
|
28
|
+
'Your location is where this session runs:',
|
|
29
|
+
"- DEVICE: a personal computer, such as the operator's laptop",
|
|
30
|
+
'- CLOUD: a hosted agent service, such as Claude Code on the web',
|
|
31
|
+
'- SERVER: a server the operator runs, such as a VPS',
|
|
32
|
+
'- OTHER: none of these, with a few words on where you run',
|
|
33
|
+
'',
|
|
34
|
+
'Call register.',
|
|
35
|
+
].join('\n');
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* The crew lines: the same identity in one line for each harness with the
|
|
39
|
+
* aeolus plugin, which registers and keeps the crew token itself. The fleet
|
|
40
|
+
* URL is where the plugin reaches the fleet; it finds the MCP server and REST
|
|
41
|
+
* under it.
|
|
42
|
+
*/
|
|
43
|
+
function crewLines(input) {
|
|
44
|
+
const identity = `${input.fleetUrl} ${input.shipId} ${input.secret}`;
|
|
45
|
+
return [
|
|
46
|
+
{ harness: 'claude-code', line: `/aeolus:crew ${identity}` },
|
|
47
|
+
{ harness: 'codex', line: `$aeolus-crew ${identity}` },
|
|
48
|
+
];
|
|
49
|
+
}
|
|
50
|
+
/** A starting prompt as the API hands it out: the prompt, its crew lines and the secret itself. */
|
|
51
|
+
export function presentStartingPrompt(input) {
|
|
52
|
+
const { fleetUrl, shipId, secret } = input;
|
|
53
|
+
return {
|
|
54
|
+
shipId,
|
|
55
|
+
prompt: startingPromptText({ mcpUrl: mcpUrlOf(fleetUrl), shipId, secret }),
|
|
56
|
+
crewLines: crewLines({ fleetUrl, shipId, secret }),
|
|
57
|
+
secret,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=starting-prompt-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"starting-prompt-text.js","sourceRoot":"","sources":["../../../src/adapters/trpc/starting-prompt-text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAyD,MAAM,sBAAsB,CAAC;AAEvG;;;;;;GAMG;AAEH;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,KAAyD;IACnF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzC,OAAO;QACL,qCAAqC;QACrC,EAAE;QACF,kBAAkB,MAAM,EAAE;QAC1B,YAAY,MAAM,EAAE;QACpB,gBAAgB,MAAM,EAAE;QACxB,EAAE;QACF,4KAA4K;QAC5K,uDAAuD,MAAM,EAAE;QAC/D,EAAE;QACF,2CAA2C;QAC3C,8DAA8D;QAC9D,iEAAiE;QACjE,qDAAqD;QACrD,2DAA2D;QAC3D,EAAE;QACF,gBAAgB;KACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS,CAAC,KAA2D;IAC5E,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;IACrE,OAAO;QACL,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,QAAQ,EAAE,EAAE;QAC5D,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,QAAQ,EAAE,EAAE;KACvD,CAAC;AACJ,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,qBAAqB,CAAC,KAA2D;IAC/F,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAC3C,OAAO;QACL,MAAM;QACN,MAAM,EAAE,kBAAkB,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC1E,SAAS,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAClD,MAAM;KACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export declare const systemRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
2
|
+
ctx: import("./context.js").Context;
|
|
3
|
+
meta: import("./trpc.js").ProcedureMeta;
|
|
4
|
+
errorShape: import("@trpc/server").TRPCDefaultErrorShape | {
|
|
5
|
+
message: string;
|
|
6
|
+
data: {
|
|
7
|
+
requestId: string | undefined;
|
|
8
|
+
code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
|
|
9
|
+
httpStatus: number;
|
|
10
|
+
path?: string;
|
|
11
|
+
stack?: string;
|
|
12
|
+
};
|
|
13
|
+
code: import("@trpc/server").TRPC_ERROR_CODE_NUMBER;
|
|
14
|
+
};
|
|
15
|
+
transformer: false;
|
|
16
|
+
}, import("@trpc/server").TRPCDecorateCreateRouterOptions<{
|
|
17
|
+
/**
|
|
18
|
+
* Server time and fleet count: proves an authorised call reaches the database
|
|
19
|
+
* and back. Needs fleet:read, like every read about the fleet.
|
|
20
|
+
*/
|
|
21
|
+
ping: import("@trpc/server").TRPCQueryProcedure<{
|
|
22
|
+
input: void;
|
|
23
|
+
output: {
|
|
24
|
+
serverTime: string;
|
|
25
|
+
fleetCount: number;
|
|
26
|
+
};
|
|
27
|
+
meta: import("./trpc.js").ProcedureMeta;
|
|
28
|
+
}>;
|
|
29
|
+
}>>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { pingOutputSchema } from '@aeolus-fleet/common';
|
|
2
|
+
import { router, scopedProcedure } from './trpc.js';
|
|
3
|
+
export const systemRouter = router({
|
|
4
|
+
/**
|
|
5
|
+
* Server time and fleet count: proves an authorised call reaches the database
|
|
6
|
+
* and back. Needs fleet:read, like every read about the fleet.
|
|
7
|
+
*/
|
|
8
|
+
ping: scopedProcedure('fleet:read')
|
|
9
|
+
.output(pingOutputSchema)
|
|
10
|
+
.query(async ({ ctx }) => {
|
|
11
|
+
const { serverTime, fleetCount } = await ctx.useCases.ping();
|
|
12
|
+
return { serverTime: serverTime.toISOString(), fleetCount };
|
|
13
|
+
}),
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system.js","sourceRoot":"","sources":["../../../src/adapters/trpc/system.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEpD,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC;IACjC;;;OAGG;IACH,IAAI,EAAE,eAAe,CAAC,YAAY,CAAC;SAChC,MAAM,CAAC,gBAAgB,CAAC;SACxB,KAAK,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;QACvB,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC7D,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,CAAC;IAC9D,CAAC,CAAC;CACL,CAAC,CAAC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import type { Scope } from '@aeolus-fleet/common';
|
|
2
|
+
import { type Caller, type Crew } from '../../domain/shared/caller.js';
|
|
3
|
+
import type { DomainError } from '../../domain/shared/errors.js';
|
|
4
|
+
import type { Result } from '../../domain/shared/result.js';
|
|
5
|
+
import type { Context } from './context.js';
|
|
6
|
+
/** All a caller learns of a server failure, with the request's id; the log keeps the rest under that id. */
|
|
7
|
+
export declare const INTERNAL_ERROR_MESSAGE = "Internal error";
|
|
8
|
+
/**
|
|
9
|
+
* What a procedure says about itself. A ship procedure's description is what
|
|
10
|
+
* an agent reads on every call, as an MCP tool or a REST operation: what it
|
|
11
|
+
* does and the rules for using it.
|
|
12
|
+
*/
|
|
13
|
+
export interface ProcedureMeta {
|
|
14
|
+
description: string;
|
|
15
|
+
/** Arguments the call takes as they stand, shown with the description and with a refusal of arguments that do not parse. */
|
|
16
|
+
example?: Readonly<Record<string, string>>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* What the console reads beside a refusal's code, to say more than "refused":
|
|
20
|
+
* that the operator signed in somewhere else, or when a rate-limited sign-in
|
|
21
|
+
* may try again (ISO 8601). Carried as the tRPC error's cause; the error data
|
|
22
|
+
* holds its fields.
|
|
23
|
+
*/
|
|
24
|
+
export declare class ConsoleRefusalDetails extends Error {
|
|
25
|
+
name: string;
|
|
26
|
+
readonly details: {
|
|
27
|
+
refusal?: 'SIGNED_IN_ELSEWHERE';
|
|
28
|
+
retryAt?: string;
|
|
29
|
+
};
|
|
30
|
+
constructor(details: {
|
|
31
|
+
refusal?: 'SIGNED_IN_ELSEWHERE';
|
|
32
|
+
retryAt?: string;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
export declare const router: import("@trpc/server").TRPCRouterBuilder<{
|
|
36
|
+
ctx: Context;
|
|
37
|
+
meta: ProcedureMeta;
|
|
38
|
+
errorShape: import("@trpc/server").TRPCDefaultErrorShape | {
|
|
39
|
+
message: string;
|
|
40
|
+
data: {
|
|
41
|
+
requestId: string | undefined;
|
|
42
|
+
code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
|
|
43
|
+
httpStatus: number;
|
|
44
|
+
path?: string;
|
|
45
|
+
stack?: string;
|
|
46
|
+
};
|
|
47
|
+
code: import("@trpc/server").TRPC_ERROR_CODE_NUMBER;
|
|
48
|
+
};
|
|
49
|
+
transformer: false;
|
|
50
|
+
}>;
|
|
51
|
+
/**
|
|
52
|
+
* The code a ship reads for a refusal whose tRPC code would hide it: a crew
|
|
53
|
+
* whose lease has ended reads LEASE_ENDED, not UNAUTHORIZED, so it can tell a
|
|
54
|
+
* released ship from a wrong crew token. The HTTP status stays the tRPC
|
|
55
|
+
* code's. The ship doors read it from the tRPC error's cause.
|
|
56
|
+
*/
|
|
57
|
+
export declare class ShipRefusalCode extends Error {
|
|
58
|
+
name: string;
|
|
59
|
+
readonly code: 'LEASE_ENDED';
|
|
60
|
+
constructor(code: 'LEASE_ENDED');
|
|
61
|
+
}
|
|
62
|
+
/** The value of a use case's result. A refusal becomes the matching tRPC error. */
|
|
63
|
+
export declare function okOrThrow<T>(result: Result<T, DomainError>): T;
|
|
64
|
+
/**
|
|
65
|
+
* A procedure that needs no caller: the base of every procedure, of the
|
|
66
|
+
* console procedures, and of `register`, which takes the ship secret.
|
|
67
|
+
*
|
|
68
|
+
* Postgres text can never store the character U+0000, so this one check at
|
|
69
|
+
* the door refuses it in any text input, as a bad request naming the field,
|
|
70
|
+
* before anything else reads the input.
|
|
71
|
+
*/
|
|
72
|
+
export declare const publicProcedure: import("@trpc/server").TRPCProcedureBuilder<Context, ProcedureMeta, {}, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, false>;
|
|
73
|
+
/** A console procedure, signing in or out: it changes state, so it comes only from the console's origin. */
|
|
74
|
+
export declare const consoleProcedure: import("@trpc/server").TRPCProcedureBuilder<Context, ProcedureMeta, {}, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, false>;
|
|
75
|
+
/**
|
|
76
|
+
* Refuses a live subscription whose caller no longer holds: its console
|
|
77
|
+
* session ended, or its crew's lease did. A subscription outlives the call
|
|
78
|
+
* that opened it, so it asks again each time it has news.
|
|
79
|
+
*/
|
|
80
|
+
export declare function checkCallerStillHolds(ctx: Context): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* A procedure for any caller, whatever its scopes: the base of every scoped
|
|
83
|
+
* procedure, and `whoami`, which tells a caller about itself. The caller comes
|
|
84
|
+
* from the server, never from the request.
|
|
85
|
+
*/
|
|
86
|
+
export declare const authenticatedProcedure: import("@trpc/server").TRPCProcedureBuilder<Context, ProcedureMeta, {
|
|
87
|
+
caller: Caller;
|
|
88
|
+
}, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, false>;
|
|
89
|
+
/**
|
|
90
|
+
* A procedure only a crew calls, with the crew token `register` gave it: one
|
|
91
|
+
* session crewing one ship under one lease. `deregister` needs nothing more,
|
|
92
|
+
* since a crew ends only its own lease. The console session is no crew token,
|
|
93
|
+
* so it is refused here.
|
|
94
|
+
*/
|
|
95
|
+
export declare const crewProcedure: import("@trpc/server").TRPCProcedureBuilder<Context, ProcedureMeta, {
|
|
96
|
+
crew: Crew;
|
|
97
|
+
caller: Crew;
|
|
98
|
+
}, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, false>;
|
|
99
|
+
/**
|
|
100
|
+
* A crew procedure that also needs the given scope: receiving and
|
|
101
|
+
* acknowledging deliveries, which a crew claims under its lease. argo's inbox
|
|
102
|
+
* comes with its own procedures.
|
|
103
|
+
*/
|
|
104
|
+
export declare function scopedCrewProcedure(scope: Scope): import("@trpc/server").TRPCProcedureBuilder<Context, ProcedureMeta, {
|
|
105
|
+
crew: Crew;
|
|
106
|
+
caller: Crew;
|
|
107
|
+
}, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, false>;
|
|
108
|
+
/**
|
|
109
|
+
* A procedure that needs the given scope. The caller and its scopes come from
|
|
110
|
+
* the server, never from the request, and are checked before any use case runs.
|
|
111
|
+
*/
|
|
112
|
+
export declare function scopedProcedure(scope: Scope): import("@trpc/server").TRPCProcedureBuilder<Context, ProcedureMeta, {
|
|
113
|
+
caller: Caller;
|
|
114
|
+
}, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, false>;
|
|
115
|
+
/**
|
|
116
|
+
* A procedure that needs any one of the given scopes: the few fleet calls a
|
|
117
|
+
* trierarch makes with `fleet:crew` beside the scope the console uses
|
|
118
|
+
* (decision 0002). Checked before any use case runs, as for one scope.
|
|
119
|
+
*/
|
|
120
|
+
export declare function anyScopeProcedure(...scopes: [Scope, Scope, ...Scope[]]): import("@trpc/server").TRPCProcedureBuilder<Context, ProcedureMeta, {
|
|
121
|
+
caller: Caller;
|
|
122
|
+
}, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, false>;
|
|
123
|
+
/**
|
|
124
|
+
* A procedure for a caller that crews its ship under a lease, with every given
|
|
125
|
+
* scope: argo's inbox, which its console session calls. A console session
|
|
126
|
+
* crews argo under the lease it holds; the use case refuses any ship but argo.
|
|
127
|
+
*/
|
|
128
|
+
export declare function scopedCrewCallerProcedure(...scopes: Scope[]): import("@trpc/server").TRPCProcedureBuilder<Context, ProcedureMeta, {
|
|
129
|
+
crew: Crew;
|
|
130
|
+
caller: Caller;
|
|
131
|
+
}, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, import("@trpc/server").TRPCUnsetMarker, false>;
|