@aeolus-fleet/core 0.27.0 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/adapters/crypto/account-token-signatures.d.ts +12 -0
- package/dist/adapters/crypto/account-token-signatures.js +104 -0
- package/dist/adapters/crypto/account-token-signatures.js.map +1 -0
- package/dist/adapters/http/request-credentials.d.ts +7 -1
- package/dist/adapters/http/request-credentials.js +18 -5
- package/dist/adapters/http/request-credentials.js.map +1 -1
- package/dist/adapters/http/server.js +4 -2
- package/dist/adapters/http/server.js.map +1 -1
- package/dist/adapters/prisma/event-log.js +13 -1
- package/dist/adapters/prisma/event-log.js.map +1 -1
- package/dist/adapters/prisma/generated/browser.d.ts +36 -0
- package/dist/adapters/prisma/generated/client.d.ts +36 -0
- package/dist/adapters/prisma/generated/commonInputTypes.d.ts +150 -0
- package/dist/adapters/prisma/generated/enums.d.ts +33 -0
- package/dist/adapters/prisma/generated/enums.js +29 -1
- package/dist/adapters/prisma/generated/enums.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/class.d.ts +55 -0
- package/dist/adapters/prisma/generated/internal/class.js +4 -4
- package/dist/adapters/prisma/generated/internal/class.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +463 -8
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js +45 -10
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +47 -7
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +45 -10
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
- package/dist/adapters/prisma/generated/models/AccountCutOff.d.ts +944 -0
- package/dist/adapters/prisma/generated/models/AccountCutOff.js +2 -0
- package/dist/adapters/prisma/generated/models/AccountCutOff.js.map +1 -0
- package/dist/adapters/prisma/generated/models/ConsoleSession.d.ts +59 -1
- package/dist/adapters/prisma/generated/models/Event.d.ts +426 -1
- package/dist/adapters/prisma/generated/models/Fleet.d.ts +1270 -116
- package/dist/adapters/prisma/generated/models/InstallationDeclaredNetworkRules.d.ts +1031 -0
- package/dist/adapters/prisma/generated/models/InstallationDeclaredNetworkRules.js +2 -0
- package/dist/adapters/prisma/generated/models/InstallationDeclaredNetworkRules.js.map +1 -0
- package/dist/adapters/prisma/generated/models/Label.d.ts +113 -39
- package/dist/adapters/prisma/generated/models/Lease.d.ts +60 -1
- package/dist/adapters/prisma/generated/models/NetworkRulesDraft.d.ts +1133 -0
- package/dist/adapters/prisma/generated/models/NetworkRulesDraft.js +2 -0
- package/dist/adapters/prisma/generated/models/NetworkRulesDraft.js.map +1 -0
- package/dist/adapters/prisma/generated/models/NetworkSettings.d.ts +24 -223
- package/dist/adapters/prisma/generated/models/PluginConnection.d.ts +1180 -0
- package/dist/adapters/prisma/generated/models/PluginConnection.js +2 -0
- package/dist/adapters/prisma/generated/models/PluginConnection.js.map +1 -0
- package/dist/adapters/prisma/generated/models/ReachRefusal.d.ts +1 -40
- package/dist/adapters/prisma/generated/models/Ship.d.ts +1072 -6
- package/dist/adapters/prisma/generated/models/SignInTicket.d.ts +39 -1
- package/dist/adapters/prisma/generated/models/VerifiedFacts.d.ts +1325 -0
- package/dist/adapters/prisma/generated/models/VerifiedFacts.js +2 -0
- package/dist/adapters/prisma/generated/models/VerifiedFacts.js.map +1 -0
- package/dist/adapters/prisma/generated/models.d.ts +5 -0
- package/dist/adapters/prisma/history.js +5 -2
- package/dist/adapters/prisma/history.js.map +1 -1
- package/dist/adapters/prisma/identity.d.ts +3 -1
- package/dist/adapters/prisma/identity.js +41 -8
- package/dist/adapters/prisma/identity.js.map +1 -1
- package/dist/adapters/prisma/messaging.js +5 -2
- package/dist/adapters/prisma/messaging.js.map +1 -1
- package/dist/adapters/prisma/network.d.ts +7 -2
- package/dist/adapters/prisma/network.js +92 -62
- package/dist/adapters/prisma/network.js.map +1 -1
- package/dist/adapters/prisma/overdue.js +4 -3
- package/dist/adapters/prisma/overdue.js.map +1 -1
- package/dist/adapters/prisma/plugin-connections.d.ts +4 -0
- package/dist/adapters/prisma/plugin-connections.js +20 -0
- package/dist/adapters/prisma/plugin-connections.js.map +1 -0
- package/dist/adapters/prisma/registry.js +22 -16
- package/dist/adapters/prisma/registry.js.map +1 -1
- package/dist/adapters/prisma/rows.d.ts +9 -4
- package/dist/adapters/prisma/rows.js +77 -19
- package/dist/adapters/prisma/rows.js.map +1 -1
- package/dist/adapters/prisma/unit-of-work.d.ts +5 -2
- package/dist/adapters/prisma/unit-of-work.js +7 -2
- package/dist/adapters/prisma/unit-of-work.js.map +1 -1
- package/dist/adapters/prisma/verified-facts.d.ts +4 -0
- package/dist/adapters/prisma/verified-facts.js +65 -0
- package/dist/adapters/prisma/verified-facts.js.map +1 -0
- package/dist/adapters/rest/rest-api.js +2 -2
- package/dist/adapters/rest/rest-api.js.map +1 -1
- package/dist/adapters/trpc/console.d.ts +3 -1
- package/dist/adapters/trpc/context.d.ts +28 -6
- package/dist/adapters/trpc/fleet.d.ts +314 -51
- package/dist/adapters/trpc/fleet.js +137 -75
- package/dist/adapters/trpc/fleet.js.map +1 -1
- package/dist/adapters/trpc/installation-token.d.ts +7 -0
- package/dist/adapters/trpc/installation-token.js +10 -0
- package/dist/adapters/trpc/installation-token.js.map +1 -0
- package/dist/adapters/trpc/installation.d.ts +32 -2
- package/dist/adapters/trpc/installation.js +14 -10
- package/dist/adapters/trpc/installation.js.map +1 -1
- package/dist/adapters/trpc/router.d.ts +435 -42
- package/dist/adapters/trpc/ship-contract.js +6 -3
- package/dist/adapters/trpc/ship-contract.js.map +1 -1
- package/dist/adapters/trpc/ship-protocol.js +1 -1
- package/dist/adapters/trpc/ship-protocol.js.map +1 -1
- package/dist/adapters/trpc/ship.d.ts +117 -1
- package/dist/adapters/trpc/ship.js +52 -6
- package/dist/adapters/trpc/ship.js.map +1 -1
- package/dist/adapters/trpc/trpc.d.ts +43 -17
- package/dist/adapters/trpc/trpc.js +131 -31
- package/dist/adapters/trpc/trpc.js.map +1 -1
- package/dist/app.d.ts +2 -0
- package/dist/app.js +22 -0
- package/dist/app.js.map +1 -1
- package/dist/config.d.ts +5 -0
- package/dist/config.js +3 -1
- package/dist/config.js.map +1 -1
- package/dist/domain/identity/authenticate-account.d.ts +35 -0
- package/dist/domain/identity/authenticate-account.js +54 -0
- package/dist/domain/identity/authenticate-account.js.map +1 -0
- package/dist/domain/identity/authenticate-installation.d.ts +23 -0
- package/dist/domain/identity/authenticate-installation.js +20 -0
- package/dist/domain/identity/authenticate-installation.js.map +1 -0
- package/dist/domain/identity/authenticate.d.ts +2 -2
- package/dist/domain/identity/console-session.d.ts +6 -3
- package/dist/domain/identity/console-session.js.map +1 -1
- package/dist/domain/identity/cut-off-account.d.ts +29 -0
- package/dist/domain/identity/cut-off-account.js +37 -0
- package/dist/domain/identity/cut-off-account.js.map +1 -0
- package/dist/domain/identity/dismiss-notice.d.ts +2 -2
- package/dist/domain/identity/issue-sign-in-ticket.d.ts +9 -3
- package/dist/domain/identity/issue-sign-in-ticket.js +8 -2
- package/dist/domain/identity/issue-sign-in-ticket.js.map +1 -1
- package/dist/domain/identity/ports.d.ts +52 -5
- package/dist/domain/identity/read-account.d.ts +8 -4
- package/dist/domain/identity/read-account.js +1 -1
- package/dist/domain/identity/read-account.js.map +1 -1
- package/dist/domain/identity/read-guide.d.ts +2 -2
- package/dist/domain/identity/read-notices.d.ts +2 -2
- package/dist/domain/identity/record-guide-progress.d.ts +2 -2
- package/dist/domain/identity/redeem-sign-in-ticket.d.ts +2 -1
- package/dist/domain/identity/redeem-sign-in-ticket.js +3 -2
- package/dist/domain/identity/redeem-sign-in-ticket.js.map +1 -1
- package/dist/domain/identity/set-theme.d.ts +2 -2
- package/dist/domain/identity/sign-in-ticket.d.ts +3 -1
- package/dist/domain/identity/sign-in.d.ts +2 -2
- package/dist/domain/identity/sign-in.js +2 -0
- package/dist/domain/identity/sign-in.js.map +1 -1
- package/dist/domain/identity/sign-out.d.ts +2 -2
- package/dist/domain/identity/sign-out.js +1 -1
- package/dist/domain/identity/sign-out.js.map +1 -1
- package/dist/domain/identity/start-console-session.d.ts +4 -2
- package/dist/domain/identity/start-console-session.js +6 -4
- package/dist/domain/identity/start-console-session.js.map +1 -1
- package/dist/domain/identity/start-viewer-session.js +1 -0
- package/dist/domain/identity/start-viewer-session.js.map +1 -1
- package/dist/domain/messaging/delivery.d.ts +11 -3
- package/dist/domain/messaging/delivery.js +23 -15
- package/dist/domain/messaging/delivery.js.map +1 -1
- package/dist/domain/messaging/dismiss-delivery.d.ts +2 -2
- package/dist/domain/messaging/hand-over-delivery.d.ts +1 -0
- package/dist/domain/messaging/hand-over-delivery.js +1 -0
- package/dist/domain/messaging/hand-over-delivery.js.map +1 -1
- package/dist/domain/messaging/message.d.ts +3 -1
- package/dist/domain/messaging/message.js +1 -1
- package/dist/domain/messaging/message.js.map +1 -1
- package/dist/domain/messaging/overdue.d.ts +2 -0
- package/dist/domain/messaging/overdue.js +3 -0
- package/dist/domain/messaging/overdue.js.map +1 -1
- package/dist/domain/messaging/ping-ship.d.ts +2 -2
- package/dist/domain/messaging/ping-ship.js +1 -1
- package/dist/domain/messaging/ping-ship.js.map +1 -1
- package/dist/domain/messaging/ports.d.ts +2 -0
- package/dist/domain/messaging/push-receive-deliveries.d.ts +4 -1
- package/dist/domain/messaging/push-receive-deliveries.js +5 -3
- package/dist/domain/messaging/push-receive-deliveries.js.map +1 -1
- package/dist/domain/messaging/receive-deliveries.d.ts +21 -0
- package/dist/domain/messaging/receive-deliveries.js +5 -3
- package/dist/domain/messaging/receive-deliveries.js.map +1 -1
- package/dist/domain/messaging/receive-reply.d.ts +32 -0
- package/dist/domain/messaging/receive-reply.js +25 -0
- package/dist/domain/messaging/receive-reply.js.map +1 -0
- package/dist/domain/messaging/resend-delivery.d.ts +2 -2
- package/dist/domain/messaging/resend-delivery.js +1 -0
- package/dist/domain/messaging/resend-delivery.js.map +1 -1
- package/dist/domain/messaging/send-message.d.ts +3 -3
- package/dist/domain/messaging/send-message.js +1 -0
- package/dist/domain/messaging/send-message.js.map +1 -1
- package/dist/domain/registry/apply-network-rules.d.ts +32 -0
- package/dist/domain/registry/apply-network-rules.js +33 -0
- package/dist/domain/registry/apply-network-rules.js.map +1 -0
- package/dist/domain/registry/assign-crew.d.ts +2 -2
- package/dist/domain/registry/assign-crew.js +3 -2
- package/dist/domain/registry/assign-crew.js.map +1 -1
- package/dist/domain/registry/assign-label.d.ts +7 -5
- package/dist/domain/registry/assign-label.js +16 -6
- package/dist/domain/registry/assign-label.js.map +1 -1
- package/dist/domain/registry/change-label-values.d.ts +1 -1
- package/dist/domain/registry/change-label-values.js +4 -3
- package/dist/domain/registry/change-label-values.js.map +1 -1
- package/dist/domain/registry/check-reach.d.ts +49 -24
- package/dist/domain/registry/check-reach.js +77 -42
- package/dist/domain/registry/check-reach.js.map +1 -1
- package/dist/domain/registry/clear-request.d.ts +1 -1
- package/dist/domain/registry/clear-request.js +1 -1
- package/dist/domain/registry/clear-request.js.map +1 -1
- package/dist/domain/registry/commission-ship.d.ts +26 -13
- package/dist/domain/registry/commission-ship.js +199 -22
- package/dist/domain/registry/commission-ship.js.map +1 -1
- package/dist/domain/registry/confirm-crew-release.d.ts +2 -2
- package/dist/domain/registry/confirm-crew-release.js +3 -2
- package/dist/domain/registry/confirm-crew-release.js.map +1 -1
- package/dist/domain/registry/confirm-worktree-cleared.d.ts +2 -2
- package/dist/domain/registry/confirm-worktree-cleared.js +3 -2
- package/dist/domain/registry/confirm-worktree-cleared.js.map +1 -1
- package/dist/domain/registry/connect-plugin.d.ts +31 -0
- package/dist/domain/registry/connect-plugin.js +34 -0
- package/dist/domain/registry/connect-plugin.js.map +1 -0
- package/dist/domain/registry/crew-request.d.ts +2 -2
- package/dist/domain/registry/crew-request.js.map +1 -1
- package/dist/domain/registry/declare-network-rules.d.ts +9 -6
- package/dist/domain/registry/declare-network-rules.js +13 -8
- package/dist/domain/registry/declare-network-rules.js.map +1 -1
- package/dist/domain/registry/declare-scopes.d.ts +2 -2
- package/dist/domain/registry/declared-network-rules.d.ts +30 -21
- package/dist/domain/registry/declared-network-rules.js +46 -22
- package/dist/domain/registry/declared-network-rules.js.map +1 -1
- package/dist/domain/registry/define-label.d.ts +1 -1
- package/dist/domain/registry/define-label.js +5 -5
- package/dist/domain/registry/define-label.js.map +1 -1
- package/dist/domain/registry/delete-label.d.ts +1 -1
- package/dist/domain/registry/delete-label.js +4 -3
- package/dist/domain/registry/delete-label.js.map +1 -1
- package/dist/domain/registry/discard-network-rules-draft.d.ts +23 -0
- package/dist/domain/registry/discard-network-rules-draft.js +24 -0
- package/dist/domain/registry/discard-network-rules-draft.js.map +1 -0
- package/dist/domain/registry/discover.d.ts +12 -10
- package/dist/domain/registry/discover.js +11 -5
- package/dist/domain/registry/discover.js.map +1 -1
- package/dist/domain/registry/explain-crew-request.d.ts +2 -2
- package/dist/domain/registry/explain-crew-request.js +3 -2
- package/dist/domain/registry/explain-crew-request.js.map +1 -1
- package/dist/domain/registry/explain-reach.d.ts +22 -14
- package/dist/domain/registry/explain-reach.js +53 -53
- package/dist/domain/registry/explain-reach.js.map +1 -1
- package/dist/domain/registry/get-ship.d.ts +2 -2
- package/dist/domain/registry/get-starting-prompt.d.ts +4 -2
- package/dist/domain/registry/get-starting-prompt.js +7 -5
- package/dist/domain/registry/get-starting-prompt.js.map +1 -1
- package/dist/domain/registry/give-back-crew-request.d.ts +2 -2
- package/dist/domain/registry/give-back-crew-request.js +3 -2
- package/dist/domain/registry/give-back-crew-request.js.map +1 -1
- package/dist/domain/registry/grant-scopes.d.ts +8 -5
- package/dist/domain/registry/grant-scopes.js +14 -5
- package/dist/domain/registry/grant-scopes.js.map +1 -1
- package/dist/domain/registry/label.d.ts +69 -18
- package/dist/domain/registry/label.js +79 -28
- package/dist/domain/registry/label.js.map +1 -1
- package/dist/domain/registry/lease.d.ts +1 -1
- package/dist/domain/registry/leases.d.ts +6 -3
- package/dist/domain/registry/leases.js +7 -5
- package/dist/domain/registry/leases.js.map +1 -1
- package/dist/domain/registry/list-fleet.d.ts +2 -0
- package/dist/domain/registry/list-fleet.js +1 -0
- package/dist/domain/registry/list-fleet.js.map +1 -1
- package/dist/domain/registry/list-scopes.d.ts +2 -1
- package/dist/domain/registry/list-scopes.js +2 -1
- package/dist/domain/registry/list-scopes.js.map +1 -1
- package/dist/domain/registry/managed-or-assigned.d.ts +12 -4
- package/dist/domain/registry/managed-or-assigned.js +25 -7
- package/dist/domain/registry/managed-or-assigned.js.map +1 -1
- package/dist/domain/registry/network-rules-draft.d.ts +45 -0
- package/dist/domain/registry/network-rules-draft.js +41 -0
- package/dist/domain/registry/network-rules-draft.js.map +1 -0
- package/dist/domain/registry/network-settings.d.ts +96 -115
- package/dist/domain/registry/network-settings.js +101 -150
- package/dist/domain/registry/network-settings.js.map +1 -1
- package/dist/domain/registry/plugin-connection.d.ts +48 -0
- package/dist/domain/registry/plugin-connection.js +35 -0
- package/dist/domain/registry/plugin-connection.js.map +1 -0
- package/dist/domain/registry/ports.d.ts +60 -12
- package/dist/domain/registry/reach-refusal.d.ts +18 -4
- package/dist/domain/registry/read-assigned-crew-requests.d.ts +2 -2
- package/dist/domain/registry/read-built-in-rules.d.ts +5 -4
- package/dist/domain/registry/read-built-in-rules.js +9 -7
- package/dist/domain/registry/read-built-in-rules.js.map +1 -1
- package/dist/domain/registry/read-clear-requests.d.ts +2 -2
- package/dist/domain/registry/read-clear-requests.js.map +1 -1
- package/dist/domain/registry/read-declared-network-rules.d.ts +5 -5
- package/dist/domain/registry/read-declared-network-rules.js +4 -4
- package/dist/domain/registry/read-declared-network-rules.js.map +1 -1
- package/dist/domain/registry/read-network-rules-draft-changes.d.ts +22 -0
- package/dist/domain/registry/read-network-rules-draft-changes.js +53 -0
- package/dist/domain/registry/read-network-rules-draft-changes.js.map +1 -0
- package/dist/domain/registry/read-network-rules.d.ts +30 -0
- package/dist/domain/registry/read-network-rules.js +18 -0
- package/dist/domain/registry/read-network-rules.js.map +1 -0
- package/dist/domain/registry/read-on-behalf.d.ts +3 -3
- package/dist/domain/registry/read-on-behalf.js.map +1 -1
- package/dist/domain/registry/read-reach-refusals.d.ts +6 -5
- package/dist/domain/registry/read-reach-refusals.js +13 -8
- package/dist/domain/registry/read-reach-refusals.js.map +1 -1
- package/dist/domain/registry/read-reach.d.ts +10 -10
- package/dist/domain/registry/read-reach.js +26 -16
- package/dist/domain/registry/read-reach.js.map +1 -1
- package/dist/domain/registry/recrew-ship.d.ts +2 -2
- package/dist/domain/registry/recrew-ship.js +5 -3
- package/dist/domain/registry/recrew-ship.js.map +1 -1
- package/dist/domain/registry/release-ship.d.ts +7 -4
- package/dist/domain/registry/release-ship.js +8 -4
- package/dist/domain/registry/release-ship.js.map +1 -1
- package/dist/domain/registry/remove-crew-request.d.ts +2 -2
- package/dist/domain/registry/remove-crew-request.js +4 -3
- package/dist/domain/registry/remove-crew-request.js.map +1 -1
- package/dist/domain/registry/rename-ship.d.ts +1 -1
- package/dist/domain/registry/rename-ship.js +4 -3
- package/dist/domain/registry/rename-ship.js.map +1 -1
- package/dist/domain/registry/report-crew-status.d.ts +2 -2
- package/dist/domain/registry/report-crew-status.js +3 -2
- package/dist/domain/registry/report-crew-status.js.map +1 -1
- package/dist/domain/registry/request-crew.d.ts +3 -3
- package/dist/domain/registry/request-crew.js +4 -3
- package/dist/domain/registry/request-crew.js.map +1 -1
- package/dist/domain/registry/request-worktree-clear.d.ts +2 -2
- package/dist/domain/registry/request-worktree-clear.js +4 -3
- package/dist/domain/registry/request-worktree-clear.js.map +1 -1
- package/dist/domain/registry/retire-ship.d.ts +17 -12
- package/dist/domain/registry/retire-ship.js +30 -21
- package/dist/domain/registry/retire-ship.js.map +1 -1
- package/dist/domain/registry/save-network-rules-draft.d.ts +31 -0
- package/dist/domain/registry/save-network-rules-draft.js +27 -0
- package/dist/domain/registry/save-network-rules-draft.js.map +1 -0
- package/dist/domain/registry/scope-grant.d.ts +19 -19
- package/dist/domain/registry/scope-grant.js +8 -9
- package/dist/domain/registry/scope-grant.js.map +1 -1
- package/dist/domain/registry/set-built-in-rule.d.ts +3 -3
- package/dist/domain/registry/set-built-in-rule.js +5 -9
- package/dist/domain/registry/set-built-in-rule.js.map +1 -1
- package/dist/domain/registry/set-owner.d.ts +9 -6
- package/dist/domain/registry/set-owner.js +14 -8
- package/dist/domain/registry/set-owner.js.map +1 -1
- package/dist/domain/registry/set-verified-facts.d.ts +36 -0
- package/dist/domain/registry/set-verified-facts.js +58 -0
- package/dist/domain/registry/set-verified-facts.js.map +1 -0
- package/dist/domain/registry/ship.d.ts +55 -17
- package/dist/domain/registry/ship.js +107 -16
- package/dist/domain/registry/ship.js.map +1 -1
- package/dist/domain/registry/statement.d.ts +2 -2
- package/dist/domain/registry/statement.js +2 -2
- package/dist/domain/registry/statement.js.map +1 -1
- package/dist/domain/registry/turn.d.ts +2 -2
- package/dist/domain/registry/turn.js +2 -2
- package/dist/domain/registry/turn.js.map +1 -1
- package/dist/domain/registry/unassign-label.d.ts +8 -5
- package/dist/domain/registry/unassign-label.js +17 -6
- package/dist/domain/registry/unassign-label.js.map +1 -1
- package/dist/domain/registry/verified-facts.d.ts +75 -0
- package/dist/domain/registry/verified-facts.js +107 -0
- package/dist/domain/registry/verified-facts.js.map +1 -0
- package/dist/domain/registry/whoami.d.ts +2 -2
- package/dist/domain/shared/caller.d.ts +40 -6
- package/dist/domain/shared/caller.js +20 -0
- package/dist/domain/shared/caller.js.map +1 -1
- package/dist/domain/shared/delivery-way.d.ts +9 -5
- package/dist/domain/shared/delivery-way.js +17 -5
- package/dist/domain/shared/delivery-way.js.map +1 -1
- package/dist/domain/shared/errors.d.ts +1 -1
- package/dist/domain/shared/errors.js.map +1 -1
- package/dist/domain/shared/events.d.ts +13 -2
- package/dist/domain/shared/events.js.map +1 -1
- package/dist/domain/shared/health.d.ts +3 -1
- package/dist/domain/shared/health.js +5 -3
- package/dist/domain/shared/health.js.map +1 -1
- package/dist/domain/shared/history.d.ts +5 -1
- package/dist/domain/shared/history.js.map +1 -1
- package/dist/domain/shared/read-fleet-limits.d.ts +2 -2
- package/dist/domain/shared/read-health.d.ts +4 -3
- package/dist/domain/shared/read-health.js +9 -3
- package/dist/domain/shared/read-health.js.map +1 -1
- package/dist/domain/shared/read-inbox.d.ts +2 -2
- package/dist/domain/shared/read-message.d.ts +2 -2
- package/dist/domain/shared/read-needs-attention.d.ts +2 -2
- package/dist/domain/shared/read-sent-message.d.ts +31 -0
- package/dist/domain/shared/read-sent-message.js +28 -0
- package/dist/domain/shared/read-sent-message.js.map +1 -0
- package/dist/domain/shared/read-ship-messages.d.ts +2 -2
- package/dist/domain/shared/read-ship-timeline.d.ts +2 -2
- package/dist/domain/shared/read-ship-way.d.ts +2 -2
- package/dist/domain/shared/read-ship-way.js +1 -1
- package/dist/domain/shared/read-ship-way.js.map +1 -1
- package/dist/domain/shared/stuck.js +4 -2
- package/dist/domain/shared/stuck.js.map +1 -1
- package/dist/start.js +1 -0
- package/dist/start.js.map +1 -1
- package/dist/testing/account-token-issuer.d.ts +30 -0
- package/dist/testing/account-token-issuer.js +48 -0
- package/dist/testing/account-token-issuer.js.map +1 -0
- package/dist/testing/container-images.d.ts +14 -0
- package/dist/testing/container-images.js +18 -0
- package/dist/testing/container-images.js.map +1 -0
- package/dist/testing/database.d.ts +14 -0
- package/dist/testing/database.js +48 -0
- package/dist/testing/database.js.map +1 -0
- package/dist/testing/fleet.d.ts +13 -0
- package/dist/testing/fleet.js +17 -0
- package/dist/testing/fleet.js.map +1 -0
- package/dist/testing/index.d.ts +12 -0
- package/dist/testing/index.js +12 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/keys.d.ts +1 -0
- package/dist/testing/keys.js +7 -0
- package/dist/testing/keys.js.map +1 -0
- package/dist/testing/migrate-lock.d.ts +12 -0
- package/dist/testing/migrate-lock.js +51 -0
- package/dist/testing/migrate-lock.js.map +1 -0
- package/dist/testing/migrated-template.d.ts +12 -0
- package/dist/testing/migrated-template.js +29 -0
- package/dist/testing/migrated-template.js.map +1 -0
- package/dist/testing/postgres-container.d.ts +16 -0
- package/dist/testing/postgres-container.js +30 -0
- package/dist/testing/postgres-container.js.map +1 -0
- package/dist/testing/postgres-global-setup.d.ts +15 -0
- package/dist/testing/postgres-global-setup.js +20 -0
- package/dist/testing/postgres-global-setup.js.map +1 -0
- package/dist/testing/prisma-cli.d.ts +5 -0
- package/dist/testing/prisma-cli.js +15 -0
- package/dist/testing/prisma-cli.js.map +1 -0
- package/dist/testing/result.d.ts +5 -0
- package/dist/testing/result.js +15 -0
- package/dist/testing/result.js.map +1 -0
- package/dist/wiring.d.ts +27 -6
- package/dist/wiring.js +44 -11
- package/dist/wiring.js.map +1 -1
- package/package.json +26 -3
- package/src/adapters/prisma/migrations/20261018250000_scope_catalogue/migration.sql +8 -7
- package/src/adapters/prisma/migrations/20261019100000_on_behalf_scope/migration.sql +3 -1
- package/src/adapters/prisma/migrations/20261019130000_plugin_connections/migration.sql +54 -0
- package/src/adapters/prisma/migrations/20261019150000_network_plugin_registered_at/migration.sql +23 -0
- package/src/adapters/prisma/migrations/20261019160000_lease_waker/migration.sql +4 -0
- package/src/adapters/prisma/migrations/20261019200000_account_cut_offs/migration.sql +10 -0
- package/src/adapters/prisma/migrations/20261019210000_event_actors/migration.sql +32 -0
- package/src/adapters/prisma/migrations/20261020090000_argos_jobs_as_scopes/migration.sql +65 -0
- package/src/adapters/prisma/migrations/20261020100000_installation_labels/migration.sql +7 -0
- package/src/adapters/prisma/migrations/20261020110000_installation_declared_network_rules/migration.sql +10 -0
- package/src/adapters/prisma/migrations/20261020120000_commissioning_actors/migration.sql +14 -0
- package/src/adapters/prisma/migrations/20261020130000_console_sign_in_accounts/migration.sql +4 -0
- package/src/adapters/prisma/migrations/20261020140000_event_signed_in_accounts/migration.sql +4 -0
- package/src/adapters/prisma/migrations/20261020150000_account_cut_off_ends_console_sessions/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261020160000_network_in_core/migration.sql +30 -0
- package/src/adapters/prisma/migrations/20261020170000_verify_scope/migration.sql +64 -0
- package/src/adapters/prisma/migrations/20261020180000_verified_facts/migration.sql +21 -0
- package/src/adapters/prisma/migrations/20261020190000_verified_facts_by_writer/migration.sql +3 -0
- package/src/adapters/prisma/schema.prisma +160 -22
- package/dist/domain/registry/register-network-plugin.d.ts +0 -28
- package/dist/domain/registry/register-network-plugin.js +0 -26
- package/dist/domain/registry/register-network-plugin.js.map +0 -1
- package/dist/domain/registry/set-network-rules.d.ts +0 -31
- package/dist/domain/registry/set-network-rules.js +0 -27
- package/dist/domain/registry/set-network-rules.js.map +0 -1
- package/dist/domain/registry/unregister-network-plugin.d.ts +0 -27
- package/dist/domain/registry/unregister-network-plugin.js +0 -25
- package/dist/domain/registry/unregister-network-plugin.js.map +0 -1
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { IdGenerator, ShipId, VerifiedFact } from '@aeolus-fleet/common';
|
|
2
|
+
import { type Caller } from '../shared/caller.js';
|
|
3
|
+
import type { Clock } from '../shared/clock.js';
|
|
4
|
+
import { type DomainError } from '../shared/errors.js';
|
|
5
|
+
import { type EventLog } from '../shared/events.js';
|
|
6
|
+
import { type Result } from '../shared/result.js';
|
|
7
|
+
import type { UnitOfWork } from '../shared/unit-of-work.js';
|
|
8
|
+
import { type CheckManageTx, type NotReachable } from './check-reach.js';
|
|
9
|
+
import type { ShipRepository, VerifiedFactsRepository } from './ports.js';
|
|
10
|
+
import { type SetVerifiedFactsRefusal } from './verified-facts.js';
|
|
11
|
+
export interface SetVerifiedFactsTx extends Omit<CheckManageTx, 'ships'> {
|
|
12
|
+
ships: Pick<ShipRepository, 'find' | 'findForUpdate'>;
|
|
13
|
+
verifiedFacts: VerifiedFactsRepository;
|
|
14
|
+
events: EventLog;
|
|
15
|
+
}
|
|
16
|
+
export type SetVerifiedFactsUseCaseRefusal = DomainError<'SHIP_NOT_FOUND'> | NotReachable | SetVerifiedFactsRefusal;
|
|
17
|
+
export type SetVerifiedFacts = (caller: Caller, input: {
|
|
18
|
+
shipId: ShipId;
|
|
19
|
+
facts: readonly VerifiedFact[];
|
|
20
|
+
}) => Promise<Result<undefined, SetVerifiedFactsUseCaseRefusal>>;
|
|
21
|
+
/**
|
|
22
|
+
* Use case: an actor holding fleet:verify sets its verified facts about a
|
|
23
|
+
* ship within its manage reach (decision 0059), whole, their shape checked
|
|
24
|
+
* at the edge; none withdraws them. Another writer's facts stay as they are.
|
|
25
|
+
* The scope is checked before this runs; a refused reach keeps its record.
|
|
26
|
+
* It locks the ship, as a retire does, so no fact is written about a ship a
|
|
27
|
+
* retire already passed by, and two sets by one writer take turns; then it
|
|
28
|
+
* holds a writer ship against its retire, refused once it is retired, so a
|
|
29
|
+
* retired writer leaves no fact behind.
|
|
30
|
+
* VerifiedFactsSet in the same unit of work.
|
|
31
|
+
*/
|
|
32
|
+
export declare function createSetVerifiedFacts(deps: {
|
|
33
|
+
uow: UnitOfWork<SetVerifiedFactsTx>;
|
|
34
|
+
clock: Clock;
|
|
35
|
+
ids: IdGenerator;
|
|
36
|
+
}): SetVerifiedFacts;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { actorOf } from '../shared/caller.js';
|
|
2
|
+
import { refuse } from '../shared/errors.js';
|
|
3
|
+
import { recordEvent } from '../shared/events.js';
|
|
4
|
+
import { ok } from '../shared/result.js';
|
|
5
|
+
import { checkManage, keepingReachRefusal } from './check-reach.js';
|
|
6
|
+
import { setVerifiedFacts, writerOf } from './verified-facts.js';
|
|
7
|
+
/**
|
|
8
|
+
* Use case: an actor holding fleet:verify sets its verified facts about a
|
|
9
|
+
* ship within its manage reach (decision 0059), whole, their shape checked
|
|
10
|
+
* at the edge; none withdraws them. Another writer's facts stay as they are.
|
|
11
|
+
* The scope is checked before this runs; a refused reach keeps its record.
|
|
12
|
+
* It locks the ship, as a retire does, so no fact is written about a ship a
|
|
13
|
+
* retire already passed by, and two sets by one writer take turns; then it
|
|
14
|
+
* holds a writer ship against its retire, refused once it is retired, so a
|
|
15
|
+
* retired writer leaves no fact behind.
|
|
16
|
+
* VerifiedFactsSet in the same unit of work.
|
|
17
|
+
*/
|
|
18
|
+
export function createSetVerifiedFacts(deps) {
|
|
19
|
+
return (caller, input) => keepingReachRefusal(deps.uow, async (tx) => {
|
|
20
|
+
const { fleetId } = caller;
|
|
21
|
+
const ship = await tx.ships.findForUpdate(fleetId, input.shipId);
|
|
22
|
+
if (!ship) {
|
|
23
|
+
return refuse('SHIP_NOT_FOUND', `Ship ${input.shipId} does not exist`);
|
|
24
|
+
}
|
|
25
|
+
const at = deps.clock.now();
|
|
26
|
+
const managed = await checkManage({ tx, ids: deps.ids }, { manager: caller, shipId: ship.id, at });
|
|
27
|
+
if (!managed.isOk) {
|
|
28
|
+
return managed;
|
|
29
|
+
}
|
|
30
|
+
const writer = writerOf(caller);
|
|
31
|
+
if (writer.kind === 'ship') {
|
|
32
|
+
// After the ship written about, as a retire takes the writer's lock after every ship it locks: no deadlock.
|
|
33
|
+
await tx.verifiedFacts.holdWriter(fleetId, writer.shipId);
|
|
34
|
+
if ((await tx.ships.find(fleetId, writer.shipId))?.retiredAt !== null) {
|
|
35
|
+
return refuse('SHIP_ALREADY_RETIRED', 'Your ship is retired: it writes no facts');
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const current = await tx.verifiedFacts.find(fleetId, { shipId: ship.id, writer });
|
|
39
|
+
const set = setVerifiedFacts(ship, { current, writer, facts: input.facts, at, actor: actorOf(caller) });
|
|
40
|
+
if (!set.isOk) {
|
|
41
|
+
return set;
|
|
42
|
+
}
|
|
43
|
+
const { written, events } = set.value;
|
|
44
|
+
if (events.length > 0) {
|
|
45
|
+
if (written === null) {
|
|
46
|
+
await tx.verifiedFacts.remove(fleetId, { shipId: ship.id, writer });
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
await tx.verifiedFacts.save(written);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
for (const event of events) {
|
|
53
|
+
await recordEvent({ events: tx.events, ids: deps.ids }, event);
|
|
54
|
+
}
|
|
55
|
+
return ok(undefined);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=set-verified-facts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-verified-facts.js","sourceRoot":"","sources":["../../../src/domain/registry/set-verified-facts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type CommissionedShipKind, type FleetId, type LeaseId, type Scope, type ScopeName, type ShipId, type ShipKind, type ShipStatus } from '@aeolus-fleet/common';
|
|
1
|
+
import { type AccountId, type CommissionedShipKind, type FleetId, type LeaseId, type Scope, type ScopeName, type ShipId, type ShipKind, type ShipStatus } from '@aeolus-fleet/common';
|
|
2
2
|
import { type DomainError } from '../shared/errors.js';
|
|
3
3
|
import { type Actor, type NewEvent } from '../shared/events.js';
|
|
4
4
|
import { type Result } from '../shared/result.js';
|
|
@@ -18,28 +18,60 @@ export interface Ship {
|
|
|
18
18
|
createdAt: Date;
|
|
19
19
|
retiredAt: Date | null;
|
|
20
20
|
/**
|
|
21
|
-
* How
|
|
21
|
+
* How a ship was commissioned: by which actor, under which of its
|
|
22
22
|
* idempotency keys, and the hash of the request, so a repeat is known.
|
|
23
23
|
* Null for the operator ship, which the fleet's initialisation creates.
|
|
24
24
|
*/
|
|
25
25
|
commission: {
|
|
26
|
-
by:
|
|
26
|
+
by: Commissioner;
|
|
27
27
|
idempotencyKey: string;
|
|
28
28
|
requestHash: string;
|
|
29
29
|
} | null;
|
|
30
30
|
/** The ship that answers for it, a person's ship or argo (decision 0045); null for argo and the viewer. */
|
|
31
31
|
owner: ShipId | null;
|
|
32
32
|
}
|
|
33
|
+
/** The actor that commissioned a ship (decision 0057): a ship, an account by its id only, or the installation. */
|
|
34
|
+
export type Commissioner = {
|
|
35
|
+
kind: 'ship';
|
|
36
|
+
shipId: ShipId;
|
|
37
|
+
} | {
|
|
38
|
+
kind: 'account';
|
|
39
|
+
accountId: AccountId;
|
|
40
|
+
} | {
|
|
41
|
+
kind: 'installation';
|
|
42
|
+
};
|
|
43
|
+
/** Whether two commissioners are the same actor: each keeps its own idempotency keys. */
|
|
44
|
+
export declare function isSameCommissioner(commissioner: Commissioner, other: Commissioner): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* The commissioning actor as a commission checks it: a ship as the fleet
|
|
47
|
+
* holds it, its scopes read from the server; an account with the scopes its
|
|
48
|
+
* token carries and its person ship, held, if it has one; or the
|
|
49
|
+
* installation with its scopes.
|
|
50
|
+
*/
|
|
51
|
+
export type CommissioningActor = {
|
|
52
|
+
kind: 'ship';
|
|
53
|
+
ship: Ship;
|
|
54
|
+
} | {
|
|
55
|
+
kind: 'account';
|
|
56
|
+
scopes: readonly ScopeName[];
|
|
57
|
+
personShip: Ship | undefined;
|
|
58
|
+
} | {
|
|
59
|
+
kind: 'installation';
|
|
60
|
+
scopes: readonly ScopeName[];
|
|
61
|
+
};
|
|
33
62
|
/**
|
|
34
|
-
* How a ship got its owner at commission:
|
|
35
|
-
* the commissioner
|
|
36
|
-
* ship
|
|
63
|
+
* How a ship got its owner at commission: itself, for a person ship (decision
|
|
64
|
+
* 0052); the commissioner, when a person ship commissions it; the account's
|
|
65
|
+
* person ship, when an account commissions it (decision 0057); its
|
|
66
|
+
* commissioner's owner, argo when the commissioner has none; the owner of
|
|
67
|
+
* the ship that asked a plugin's ship for it, which the plugin named; or for
|
|
68
|
+
* an app ship the owner argo picked, which the gateway named (decision 0045).
|
|
37
69
|
*/
|
|
38
|
-
export type OwnerSetHow = 'inherited' | 'argoByDefault' | 'askingShipOwner';
|
|
70
|
+
export type OwnerSetHow = 'itself' | 'commissioner' | 'accountPersonShip' | 'inherited' | 'argoByDefault' | 'askingShipOwner' | 'named';
|
|
39
71
|
/** OwnerSet's details: the owner and how it was set, with the asking ship when a plugin named its owner. */
|
|
40
72
|
export type OwnerSet = {
|
|
41
73
|
ownerShipId: ShipId;
|
|
42
|
-
how: 'inherited' | 'argoByDefault';
|
|
74
|
+
how: 'itself' | 'commissioner' | 'accountPersonShip' | 'inherited' | 'argoByDefault' | 'named';
|
|
43
75
|
} | {
|
|
44
76
|
ownerShipId: ShipId;
|
|
45
77
|
how: 'askingShipOwner';
|
|
@@ -76,17 +108,20 @@ export declare function viewerShip(input: {
|
|
|
76
108
|
export declare function isConsoleShip(ship: Pick<Ship, 'kind'>): boolean;
|
|
77
109
|
/** The scopes every agent ship gets at creation: it sends and receives; commissioning may add fleet scopes (ADR 0002). */
|
|
78
110
|
export declare const AGENT_SCOPES: readonly Scope[];
|
|
79
|
-
export type CommissionRefusal = DomainError<'INVALID_SHIP_NAME' | 'SHIP_NAME_RESERVED' | 'INVALID_SHIP_TYPE' | 'INVALID_SHIP_NOTE' | 'SHIP_NAME_TAKEN' | '
|
|
111
|
+
export type CommissionRefusal = DomainError<'INVALID_SHIP_NAME' | 'SHIP_NAME_RESERVED' | 'INVALID_SHIP_TYPE' | 'INVALID_SHIP_NOTE' | 'SHIP_NAME_TAKEN' | 'INVALID_SCOPE' | 'SCOPE_NOT_DECLARED' | 'SCOPE_NOT_HELD' | 'INVALID_OWNER'>;
|
|
80
112
|
/**
|
|
81
113
|
* A new ship, awaiting crew, and its ShipCommissioned event. An agent unless
|
|
82
|
-
* the commission states another kind
|
|
83
|
-
*
|
|
114
|
+
* the commission states another kind, and the commissioner holds the scope
|
|
115
|
+
* for the kind: fleet:commission for an agent, with fleet:on-behalf for an
|
|
116
|
+
* app ship, fleet:person for a person ship (decisions 0044, 0053). The name is a handle,
|
|
84
117
|
* never `argo`, and unique among the fleet's active ships: `activeShipNamed`
|
|
85
118
|
* is the active ship that already holds it, if any, read while the name is
|
|
86
119
|
* locked. It gets the scopes every ship has and those asked for that the
|
|
87
120
|
* commissioner may grant (decision 0046): core scopes in their fixed order,
|
|
88
|
-
* then plugin scopes in name order, each once
|
|
89
|
-
*
|
|
121
|
+
* then plugin scopes in name order, each once; the scopes every ship has are
|
|
122
|
+
* always its to name. A person ship owns itself; a person ship's commission
|
|
123
|
+
* is owned by it, an account's by its person ship, which it must have; any
|
|
124
|
+
* other by the commissioner's owner, argo by default; a commissioner holding
|
|
90
125
|
* fleet:on-behalf, a plugin's ship, may name instead the ship that asked it,
|
|
91
126
|
* whose owner it gets (decision 0045).
|
|
92
127
|
*/
|
|
@@ -96,18 +131,21 @@ export declare function commissionShip(input: {
|
|
|
96
131
|
name: string;
|
|
97
132
|
type: string;
|
|
98
133
|
kind?: CommissionedShipKind;
|
|
99
|
-
/** The
|
|
100
|
-
commissioner:
|
|
134
|
+
/** The actor that commissions it, and the fleet's argo: the new ship's owner is the commissioner's owner, argo by default (decision 0045). */
|
|
135
|
+
commissioner: CommissioningActor;
|
|
101
136
|
argoShipId: ShipId;
|
|
102
137
|
/** The ship that asked a plugin's ship for this one, whose owner the new ship gets (decision 0045). */
|
|
103
138
|
askingShip?: Ship;
|
|
139
|
+
/** The id of the owner argo picked for an app ship, as the gateway named it, and that ship as the fleet holds it, if it does (decision 0045). */
|
|
140
|
+
owner?: ShipId;
|
|
141
|
+
namedOwner?: Ship;
|
|
104
142
|
note?: string;
|
|
105
143
|
/** Scopes added to the agent scopes (decision 0046). */
|
|
106
144
|
scopes?: readonly string[];
|
|
107
145
|
at: Date;
|
|
108
146
|
actor: Actor;
|
|
109
147
|
commission: {
|
|
110
|
-
by:
|
|
148
|
+
by: Commissioner;
|
|
111
149
|
idempotencyKey: string;
|
|
112
150
|
requestHash: string;
|
|
113
151
|
};
|
|
@@ -123,7 +161,7 @@ export declare function commissionShip(input: {
|
|
|
123
161
|
events: NewEvent[];
|
|
124
162
|
}, CommissionRefusal>;
|
|
125
163
|
/** Why a ship's owner changed: argo set it, or its owner's ship retired and it fell to argo. */
|
|
126
|
-
export type OwnerChangedWhy = '
|
|
164
|
+
export type OwnerChangedWhy = 'set' | 'ownerRetired';
|
|
127
165
|
export type ChangeOwnerRefusal = DomainError<'SHIP_HAS_NO_OWNER' | 'SHIP_ALREADY_RETIRED' | 'INVALID_OWNER'>;
|
|
128
166
|
/**
|
|
129
167
|
* The ship with its new owner and OwnerChanged (decision 0045). The owner is
|
|
@@ -6,6 +6,20 @@ import { refuseEndedLease } from './lease.js';
|
|
|
6
6
|
import { mayGrant } from './scope-grant.js';
|
|
7
7
|
import { shipName, shipType } from './ship-handle.js';
|
|
8
8
|
import { shipNote } from './ship-note.js';
|
|
9
|
+
/** Whether two commissioners are the same actor: each keeps its own idempotency keys. */
|
|
10
|
+
export function isSameCommissioner(commissioner, other) {
|
|
11
|
+
switch (commissioner.kind) {
|
|
12
|
+
case 'ship':
|
|
13
|
+
return other.kind === 'ship' && other.shipId === commissioner.shipId;
|
|
14
|
+
case 'account':
|
|
15
|
+
return other.kind === 'account' && other.accountId === commissioner.accountId;
|
|
16
|
+
case 'installation':
|
|
17
|
+
return other.kind === 'installation';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function scopesOf(commissioner) {
|
|
21
|
+
return commissioner.kind === 'ship' ? commissioner.ship.scopes : commissioner.scopes;
|
|
22
|
+
}
|
|
9
23
|
/** The operator ship's name. Reserved: no other ship can take it. */
|
|
10
24
|
export const OPERATOR_SHIP_NAME = 'argo';
|
|
11
25
|
/** The operator ship's type label, the same word as its kind. */
|
|
@@ -63,21 +77,27 @@ function isCoreScope(scope) {
|
|
|
63
77
|
}
|
|
64
78
|
/**
|
|
65
79
|
* A new ship, awaiting crew, and its ShipCommissioned event. An agent unless
|
|
66
|
-
* the commission states another kind
|
|
67
|
-
*
|
|
80
|
+
* the commission states another kind, and the commissioner holds the scope
|
|
81
|
+
* for the kind: fleet:commission for an agent, with fleet:on-behalf for an
|
|
82
|
+
* app ship, fleet:person for a person ship (decisions 0044, 0053). The name is a handle,
|
|
68
83
|
* never `argo`, and unique among the fleet's active ships: `activeShipNamed`
|
|
69
84
|
* is the active ship that already holds it, if any, read while the name is
|
|
70
85
|
* locked. It gets the scopes every ship has and those asked for that the
|
|
71
86
|
* commissioner may grant (decision 0046): core scopes in their fixed order,
|
|
72
|
-
* then plugin scopes in name order, each once
|
|
73
|
-
*
|
|
87
|
+
* then plugin scopes in name order, each once; the scopes every ship has are
|
|
88
|
+
* always its to name. A person ship owns itself; a person ship's commission
|
|
89
|
+
* is owned by it, an account's by its person ship, which it must have; any
|
|
90
|
+
* other by the commissioner's owner, argo by default; a commissioner holding
|
|
74
91
|
* fleet:on-behalf, a plugin's ship, may name instead the ship that asked it,
|
|
75
92
|
* whose owner it gets (decision 0045).
|
|
76
93
|
*/
|
|
77
94
|
export function commissionShip(input, fleet) {
|
|
78
95
|
const { kind = 'agent' } = input;
|
|
79
|
-
|
|
80
|
-
|
|
96
|
+
const held = scopesOf(input.commissioner);
|
|
97
|
+
const isOnBehalf = held.includes('fleet:on-behalf');
|
|
98
|
+
const mayCommission = checkKindScope(kind, held);
|
|
99
|
+
if (!mayCommission.isOk) {
|
|
100
|
+
return mayCommission;
|
|
81
101
|
}
|
|
82
102
|
const name = shipName(input.name);
|
|
83
103
|
if (!name.isOk) {
|
|
@@ -99,18 +119,30 @@ export function commissionShip(input, fleet) {
|
|
|
99
119
|
return refuse('SHIP_NAME_TAKEN', `An active ship is already named ${name.value}`);
|
|
100
120
|
}
|
|
101
121
|
const asked = input.scopes ?? [];
|
|
102
|
-
const
|
|
103
|
-
|
|
122
|
+
const commissioningShip = input.commissioner.kind === 'ship' ? input.commissioner.ship : undefined;
|
|
123
|
+
const granter = { shipId: commissioningShip?.id ?? null, isOperator: commissioningShip?.kind === 'operator', scopes: held };
|
|
124
|
+
// Every ship has the agent scopes, so naming one grants nothing.
|
|
125
|
+
for (const scope of asked.filter((each) => !AGENT_SCOPES.some((agentScope) => agentScope === each))) {
|
|
104
126
|
const allowed = mayGrant(scope, { granter, namespaces: fleet.namespaces });
|
|
105
127
|
if (!allowed.isOk) {
|
|
106
128
|
return allowed;
|
|
107
129
|
}
|
|
108
130
|
}
|
|
109
|
-
if (input.askingShip !== undefined && !
|
|
131
|
+
if (input.askingShip !== undefined && !isOnBehalf) {
|
|
110
132
|
return refuse('SCOPE_NOT_HELD', 'Naming the ship that asked for this one needs the fleet:on-behalf scope: commission without ownerOf');
|
|
111
133
|
}
|
|
134
|
+
if (input.owner !== undefined) {
|
|
135
|
+
const named = checkNamedOwner({ kind, isOnBehalf, askingShip: input.askingShip, namedOwner: input.namedOwner });
|
|
136
|
+
if (!named.isOk) {
|
|
137
|
+
return named;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
112
140
|
const { id, fleetId, at, actor } = input;
|
|
113
|
-
const
|
|
141
|
+
const ownerSet = ownerAtCommission({ ...input, kind });
|
|
142
|
+
if (!ownerSet.isOk) {
|
|
143
|
+
return ownerSet;
|
|
144
|
+
}
|
|
145
|
+
const owner = ownerSet.value;
|
|
114
146
|
const ship = {
|
|
115
147
|
id,
|
|
116
148
|
fleetId,
|
|
@@ -174,16 +206,75 @@ export function changeOwner(ship, change) {
|
|
|
174
206
|
});
|
|
175
207
|
}
|
|
176
208
|
/**
|
|
177
|
-
* The
|
|
178
|
-
*
|
|
179
|
-
*
|
|
209
|
+
* The scope the kind needs (decisions 0044, 0046, 0053): fleet:person for a
|
|
210
|
+
* person ship; fleet:commission for an agent, and with fleet:on-behalf for an
|
|
211
|
+
* app ship, the gateway's.
|
|
212
|
+
*/
|
|
213
|
+
function checkKindScope(kind, held) {
|
|
214
|
+
if (kind === 'person') {
|
|
215
|
+
return held.includes('fleet:person') ? ok(undefined) : refuse('SCOPE_NOT_HELD', 'Commissioning a person ship needs the fleet:person scope (decision 0053)');
|
|
216
|
+
}
|
|
217
|
+
if (kind === 'app' && !held.includes('fleet:on-behalf')) {
|
|
218
|
+
return refuse('SCOPE_NOT_HELD', 'Commissioning an app ship needs the fleet:on-behalf scope (decision 0044)');
|
|
219
|
+
}
|
|
220
|
+
return held.includes('fleet:commission') ? ok(undefined) : refuse('SCOPE_NOT_HELD', `Commissioning an ${kind} ship needs the fleet:commission scope (decision 0046)`);
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* The owner argo picked, named at commission: only for an app ship, only by a
|
|
224
|
+
* ship holding fleet:on-behalf, never beside an asking ship, and an active
|
|
225
|
+
* person's ship or argo, as any owner is (decision 0045).
|
|
226
|
+
*/
|
|
227
|
+
function checkNamedOwner(named) {
|
|
228
|
+
if (!named.isOnBehalf) {
|
|
229
|
+
return refuse('SCOPE_NOT_HELD', 'Naming the owner of a new ship needs the fleet:on-behalf scope: commission without owner');
|
|
230
|
+
}
|
|
231
|
+
if (named.kind !== 'app') {
|
|
232
|
+
return refuse('INVALID_OWNER', "Only an app ship gets the owner argo picked at commission: commission without owner, and argo sets an owner later");
|
|
233
|
+
}
|
|
234
|
+
if (named.askingShip !== undefined) {
|
|
235
|
+
return refuse('INVALID_OWNER', 'Name the owner or the ship that asked, not both');
|
|
236
|
+
}
|
|
237
|
+
const { namedOwner } = named;
|
|
238
|
+
if (namedOwner?.retiredAt !== null || (namedOwner.kind !== 'person' && namedOwner.kind !== 'operator')) {
|
|
239
|
+
return refuse('INVALID_OWNER', "An owner is an active person's ship or argo");
|
|
240
|
+
}
|
|
241
|
+
return ok(undefined);
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* A person ship itself (decision 0052). Else the owner named, or the asking
|
|
245
|
+
* ship's owner, when a plugin's ship named them; else an account's active
|
|
246
|
+
* person ship (decision 0057); the commissioner when it
|
|
247
|
+
* is a person ship, or the commissioner's owner, inherited. argo for a ship
|
|
248
|
+
* that has none, as argo itself and the installation have none.
|
|
180
249
|
*/
|
|
181
250
|
function ownerAtCommission(input) {
|
|
182
|
-
const { commissioner, askingShip, argoShipId } = input;
|
|
251
|
+
const { commissioner, askingShip, namedOwner, argoShipId } = input;
|
|
252
|
+
if (input.kind === 'person') {
|
|
253
|
+
return ok({ ownerShipId: input.id, how: 'itself' });
|
|
254
|
+
}
|
|
255
|
+
if (namedOwner !== undefined) {
|
|
256
|
+
return ok({ ownerShipId: namedOwner.id, how: 'named' });
|
|
257
|
+
}
|
|
183
258
|
if (askingShip !== undefined) {
|
|
184
|
-
return { ownerShipId: askingShip.owner ?? argoShipId, how: 'askingShipOwner', askingShipId: askingShip.id };
|
|
259
|
+
return ok({ ownerShipId: askingShip.owner ?? argoShipId, how: 'askingShipOwner', askingShipId: askingShip.id });
|
|
260
|
+
}
|
|
261
|
+
switch (commissioner.kind) {
|
|
262
|
+
case 'account': {
|
|
263
|
+
const { personShip } = commissioner;
|
|
264
|
+
return personShip?.kind === 'person' && personShip.retiredAt === null
|
|
265
|
+
? ok({ ownerShipId: personShip.id, how: 'accountPersonShip' })
|
|
266
|
+
: refuse('INVALID_OWNER', 'The person ship your account token names is no active person ship in this fleet (decision 0057)');
|
|
267
|
+
}
|
|
268
|
+
case 'installation':
|
|
269
|
+
return ok({ ownerShipId: argoShipId, how: 'argoByDefault' });
|
|
270
|
+
case 'ship': {
|
|
271
|
+
const { ship } = commissioner;
|
|
272
|
+
if (ship.kind === 'person') {
|
|
273
|
+
return ok({ ownerShipId: ship.id, how: 'commissioner' });
|
|
274
|
+
}
|
|
275
|
+
return ok(ship.owner === null ? { ownerShipId: argoShipId, how: 'argoByDefault' } : { ownerShipId: ship.owner, how: 'inherited' });
|
|
276
|
+
}
|
|
185
277
|
}
|
|
186
|
-
return commissioner.owner === null ? { ownerShipId: argoShipId, how: 'argoByDefault' } : { ownerShipId: commissioner.owner, how: 'inherited' };
|
|
187
278
|
}
|
|
188
279
|
/**
|
|
189
280
|
* Awaiting crew, crewed or retired: derived from whether a session holds the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ship.js","sourceRoot":"","sources":["../../../src/domain/registry/ship.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,GAQP,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAA6B,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAA8C,MAAM,YAAY,CAAC;AAC1F,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAoC1C,qEAAqE;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAEzC,iEAAiE;AACjE,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAC;AAE7C,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAAC,KAAwD;IACnF,OAAO;QACL,GAAG,KAAK;QACR,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC;QACnB,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,IAAI;KACZ,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AAEzC,+DAA+D;AAC/D,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AAEzC;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,KAAwD;IACjF,OAAO;QACL,GAAG,KAAK;QACR,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,CAAC,YAAY,CAAC;QACtB,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,IAAI;KACZ,CAAC;AACJ,CAAC;AAED,0HAA0H;AAC1H,MAAM,eAAe,GAAsC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;AAExH;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,IAAwB;IACpD,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;AAClD,CAAC;AAED,0HAA0H;AAC1H,MAAM,CAAC,MAAM,YAAY,GAAqB,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;AAEpF,0DAA0D;AAC1D,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;AAC/C,CAAC;AAeD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAC5B,KAiBC,EACD,KAIC;IAED,MAAM,EAAE,IAAI,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC;IACjC,IAAI,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC/D,OAAO,MAAM,CAAC,gCAAgC,EAAE,2BAA2B,IAAI,yCAAyC,CAAC,CAAC;IAC5H,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,WAAW,GAAG,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvD,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACtB,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,iBAAiB,EAAE,mCAAmC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;IACpH,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC7F,OAAO,MAAM,CAAC,gBAAgB,EAAE,qGAAqG,CAAC,CAAC;IACzI,CAAC;IAED,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACzC,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,IAAI,GAAS;QACjB,EAAE;QACF,OAAO;QACP,IAAI,EAAE,IAAI,CAAC,KAAK;QAChB,IAAI,EAAE,IAAI,CAAC,KAAK;QAChB,IAAI;QACJ,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACtK,IAAI,EAAE,IAAI,CAAC,KAAK;QAChB,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,KAAK,EAAE,KAAK,CAAC,WAAW;KACzB,CAAC;IACF,OAAO,EAAE,CAAC;QACR,IAAI;QACJ,MAAM,EAAE;YACN;gBACE,OAAO;gBACP,IAAI,EAAE,kBAAkB;gBACxB,UAAU,EAAE,EAAE;gBACd,KAAK;gBACL,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;aAC9F;YACD,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;SACjF;KACF,CAAC,CAAC;AACL,CAAC;AAOD;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CACzB,IAAU,EACV,MAAiF;IAEjF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IACzB,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,IAAI,6CAA6C,CAAC,CAAC;IAChG,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,sBAAsB,EAAE,GAAG,IAAI,CAAC,IAAI,wCAAwC,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,KAAK,EAAE,SAAS,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;QACxF,OAAO,MAAM,CAAC,eAAe,EAAE,6CAA6C,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,EAAE,CAAC;QACR,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;QAClC,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,IAAI,EAAE,cAAc;gBACpB,UAAU,EAAE,MAAM,CAAC,EAAE;gBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE;aACzE;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,KAAoE;IAC7F,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IACvD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,KAAK,IAAI,UAAU,EAAE,GAAG,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC;IAC9G,CAAC;IACD,OAAO,YAAY,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;AACjJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,IAAU,EAAE,KAA4B;IACjE,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,+FAA+F;IAC/F,uFAAuF;IACvF,OAAO,KAAK,CAAC,QAAQ,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC;AAC3E,CAAC;AAED,MAAM,YAAY,GAA+B;IAC/C,YAAY,EAAE,eAAe;IAC7B,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,IAAU,EACV,KAA4B;IAE5B,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,MAAM,CACX,uCAAuC,EACvC,GAAG,IAAI,CAAC,IAAI,6FAA6F,CAC1G,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvC,OAAO,MAAM,KAAK,cAAc;QAC9B,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;QACf,CAAC,CAAC,MAAM,CACJ,wBAAwB,EACxB,GAAG,IAAI,CAAC,IAAI,OAAO,YAAY,CAAC,MAAM,CAAC,6DAA6D,CACrG,CAAC;AACR,CAAC;AAID;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAU,EAAE,KAA4B;IACvE,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC7B,OAAO,MAAM,CAAC,6BAA6B,EAAE,GAAG,IAAI,CAAC,IAAI,wDAAwD,CAAC,CAAC;IACrH,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC,6BAA6B,EAAE,GAAG,IAAI,CAAC,IAAI,4DAA4D,CAAC,CAAC;IACzH,CAAC;IACD,QAAQ,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QAChC,KAAK,QAAQ;YACX,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;QACvB,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC,sBAAsB,EAAE,GAAG,IAAI,CAAC,IAAI,oDAAoD,CAAC,CAAC;QAC1G,KAAK,cAAc;YACjB,OAAO,MAAM,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,IAAI,mDAAmD,CAAC,CAAC;IACtG,CAAC;AACH,CAAC;AAID;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CACvB,IAAkD,EAClD,KAAiG;IAEjG,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IACjC,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC7B,OAAO,MAAM,CAAC,6BAA6B,EAAE,GAAG,IAAI,CAAC,IAAI,8DAA8D,CAAC,CAAC;IAC3H,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC,6BAA6B,EAAE,GAAG,IAAI,CAAC,IAAI,kFAAkF,CAAC,CAAC;IAC/I,CAAC;IACD,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC,CAAC;IACvE,IAAI,MAAM,KAAK,cAAc,EAAE,CAAC;QAC9B,OAAO,MAAM,CACX,wBAAwB,EACxB,GAAG,IAAI,CAAC,IAAI,OAAO,YAAY,CAAC,MAAM,CAAC,qDAAqD,CAC7F,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC;IACvD,MAAM,KAAK,GAAU;QACnB,EAAE,EAAE,OAAO;QACX,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,IAAI,CAAC,EAAE;QACf,QAAQ;QACR,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,aAAa;QACb,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,IAAI;KACd,CAAC;IACF,OAAO,EAAE,CAAC;QACR,KAAK;QACL,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE,EAAE;gBACd,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;aACjH;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,IAAU;IACpC,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC,uBAAuB,EAAE,GAAG,IAAI,CAAC,IAAI,oEAAoE,CAAC,CAAC;IAC3H,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI;QAC5B,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;QACvC,CAAC,CAAC,MAAM,CAAC,uBAAuB,EAAE,GAAG,IAAI,CAAC,IAAI,sDAAsD,CAAC,CAAC;AAC1G,CAAC;AAED,6DAA6D;AAC7D,MAAM,cAAc,GAAgC,IAAI,GAAG,CAAC;IAC1D,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;IACzC,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;CACtC,CAAC,CAAC;AAEH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAKD,gGAAgG;AAChG,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,oBAAoB,EAAE,YAAY,IAAI,oBAAoB,OAAO,EAAE,CAAC,CAAC;AAC7H,CAAC;AAMD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAU;IACvC,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACxD,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI;QAC5B,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;QACf,CAAC,CAAC,MAAM,CAAC,sBAAsB,EAAE,GAAG,IAAI,CAAC,IAAI,mDAAmD,CAAC,CAAC;AACtG,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,IAAU,EAAE,SAA4B;IACtE,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACzD,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC,CAAC;IACvE,IAAI,SAAS,KAAK,SAAS,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACnD,MAAM,OAAO,GAAG,MAAM,KAAK,cAAc,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,EAAE,CAAC;QACrG,OAAO,MAAM,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,IAAI,OAAO,YAAY,CAAC,MAAM,CAAC,mCAAmC,OAAO,EAAE,CAAC,CAAC;IACxH,CAAC;IACD,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;AACvB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAU,EACV,IAAwD;IAExD,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACzD,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IACpC,OAAO,SAAS,EAAE,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAU,EAAE,OAAe;IACxD,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACxD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACtE,CAAC;AAOD;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CACxB,IAAU,EACV,MAAmF;IAEnF,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,sBAAsB,EAAE,GAAG,IAAI,CAAC,IAAI,mDAAmD,CAAC,CAAC;IACzG,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;QACpE,OAAO,MAAM,CAAC,iBAAiB,EAAE,mCAAmC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,EAAE,CAAC;QACR,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE;QACnC,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE,MAAM,CAAC,EAAE;gBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE;aAC7C;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAID,kIAAkI;AAClI,MAAM,UAAU,uBAAuB,CAAC,IAAU;IAChD,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IAClE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI;QAC5B,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;QACf,CAAC,CAAC,MAAM,CAAC,sBAAsB,EAAE,GAAG,IAAI,CAAC,IAAI,wCAAwC,CAAC,CAAC;AAC3F,CAAC;AAED,2HAA2H;AAC3H,SAAS,oBAAoB,CAAC,IAAU,EAAE,MAAgE;IACxG,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,4BAA4B,EAAE,GAAG,IAAI,CAAC,IAAI,OAAO,SAAS,qBAAqB,MAAM,EAAE,CAAC,CAAC;AACnJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"ship.js","sourceRoot":"","sources":["../../../src/domain/registry/ship.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* acts on it. Until a crew states one, the commission note stands in.
|
|
6
6
|
*/
|
|
7
7
|
import type { DiscoveredStatement, Statement } from '@aeolus-fleet/common';
|
|
8
|
-
import type
|
|
9
|
-
import {
|
|
8
|
+
import { type Crew } from '../shared/caller.js';
|
|
9
|
+
import type { NewEvent } from '../shared/events.js';
|
|
10
10
|
/** The statement a lease holds, with its version: 1 for the first, one more on every change. */
|
|
11
11
|
export interface StatedStatement {
|
|
12
12
|
statement: Statement;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { actorOf } from '../shared/caller.js';
|
|
2
2
|
/**
|
|
3
3
|
* The crew states its statement, whole: at the next version, with
|
|
4
4
|
* StatementSet caused by its ship, holding the lease, the version and how
|
|
@@ -18,7 +18,7 @@ export function stateStatement(current, input) {
|
|
|
18
18
|
fleetId: crew.fleetId,
|
|
19
19
|
type: 'StatementSet',
|
|
20
20
|
occurredAt: at,
|
|
21
|
-
actor:
|
|
21
|
+
actor: actorOf(crew),
|
|
22
22
|
shipId: crew.shipId,
|
|
23
23
|
details: { leaseId: crew.leaseId, version: stated.version, capabilities: statement.capabilities.length },
|
|
24
24
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statement.js","sourceRoot":"","sources":["../../../src/domain/registry/statement.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"statement.js","sourceRoot":"","sources":["../../../src/domain/registry/statement.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAa,MAAM,qBAAqB,CAAC;AASzD;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,OAA+B,EAC/B,KAAqD;IAErD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC;IACtC,IAAI,OAAO,KAAK,IAAI,IAAI,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;QACtF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACzC,CAAC;IACD,MAAM,MAAM,GAAoB,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IACpF,OAAO;QACL,MAAM;QACN,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,IAAI,EAAE,cAAc;gBACpB,UAAU,EAAE,EAAE;gBACd,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC;gBACpB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE;aACzG;SACF;KACF,CAAC;AACJ,CAAC;AAED,qHAAqH;AACrH,MAAM,UAAU,qBAAqB,CAAC,IAA6B,EAAE,MAA8B;IACjG,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;IACtE,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AAC3E,CAAC;AAED,4GAA4G;AAC5G,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAa,EAAE,EAAE,CACnD,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CACvK,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { TurnState } from '@aeolus-fleet/common';
|
|
2
|
-
import type
|
|
3
|
-
import {
|
|
2
|
+
import { type Crew } from '../shared/caller.js';
|
|
3
|
+
import type { NewEvent } from '../shared/events.js';
|
|
4
4
|
/** The turn a lease holds: idle or busy, since the time the hooks saw it change. */
|
|
5
5
|
export interface Turn {
|
|
6
6
|
state: TurnState;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { actorOf } from '../shared/caller.js';
|
|
2
2
|
/**
|
|
3
3
|
* The hooks report the turn with the time they saw it (decision 0040): the
|
|
4
4
|
* lease keeps it at that time, and TurnReported is written then, so a report
|
|
@@ -20,7 +20,7 @@ export function reportTurn(held, report) {
|
|
|
20
20
|
fleetId: crew.fleetId,
|
|
21
21
|
type: 'TurnReported',
|
|
22
22
|
occurredAt: at,
|
|
23
|
-
actor:
|
|
23
|
+
actor: actorOf(crew),
|
|
24
24
|
shipId: crew.shipId,
|
|
25
25
|
details: { leaseId: crew.leaseId, turn },
|
|
26
26
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turn.js","sourceRoot":"","sources":["../../../src/domain/registry/turn.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"turn.js","sourceRoot":"","sources":["../../../src/domain/registry/turn.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAa,MAAM,qBAAqB,CAAC;AASzD;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CACxB,IAAiB,EACjB,MAA4D;IAE5D,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IACnC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IAC7C,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAC3D,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACpC,CAAC;IACD,OAAO;QACL,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;QACzB,MAAM,EAAE;YACN;gBACE,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,IAAI,EAAE,cAAc;gBACpB,UAAU,EAAE,EAAE;gBACd,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC;gBACpB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;aACzC;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,24 +1,27 @@
|
|
|
1
1
|
import type { IdGenerator, LabelValueId, ShipId } from '@aeolus-fleet/common';
|
|
2
|
-
import type
|
|
2
|
+
import { type Caller } from '../shared/caller.js';
|
|
3
3
|
import type { Clock } from '../shared/clock.js';
|
|
4
4
|
import { type DomainError } from '../shared/errors.js';
|
|
5
5
|
import { type EventLog } from '../shared/events.js';
|
|
6
6
|
import { type Result } from '../shared/result.js';
|
|
7
7
|
import type { UnitOfWork } from '../shared/unit-of-work.js';
|
|
8
8
|
import { type UnassignLabelRefusal } from './label.js';
|
|
9
|
+
import { type CheckManageTx, type NotReachable } from './check-reach.js';
|
|
9
10
|
import type { LabelRepository, ShipRepository } from './ports.js';
|
|
10
|
-
export interface UnassignLabelTx {
|
|
11
|
+
export interface UnassignLabelTx extends Omit<CheckManageTx, 'ships' | 'labels'> {
|
|
11
12
|
ships: Pick<ShipRepository, 'find' | 'findForUpdate'>;
|
|
12
|
-
labels: Pick<LabelRepository, 'findByValueForShare' | 'carriedBy' | 'unassign'
|
|
13
|
+
labels: Pick<LabelRepository, 'findByValueForShare' | 'carriedBy' | 'unassign'> & CheckManageTx['labels'];
|
|
13
14
|
events: EventLog;
|
|
14
15
|
}
|
|
15
|
-
export type UnassignLabelFailure = DomainError<'SHIP_NOT_FOUND' | 'LABEL_VALUE_NOT_FOUND'> | UnassignLabelRefusal;
|
|
16
|
+
export type UnassignLabelFailure = DomainError<'SHIP_NOT_FOUND' | 'LABEL_VALUE_NOT_FOUND'> | UnassignLabelRefusal | NotReachable;
|
|
16
17
|
export type UnassignLabel = (caller: Caller, input: {
|
|
17
18
|
shipId: ShipId;
|
|
18
19
|
valueId: LabelValueId;
|
|
19
20
|
}) => Promise<Result<undefined, UnassignLabelFailure>>;
|
|
20
21
|
/**
|
|
21
|
-
* Use case: a label's owner takes one of its values off a ship, by the value's id (decision 0031)
|
|
22
|
+
* Use case: a label's owner takes one of its values off a ship, by the value's id (decision 0031),
|
|
23
|
+
* or an actor holding labels:any any label's value off a ship within its
|
|
24
|
+
* manage reach (decision 0053). Its scope
|
|
22
25
|
* (labels:assign) is checked before this runs. In one unit of work, locking
|
|
23
26
|
* the ship, then holding the label, as an assignment does: the assignment
|
|
24
27
|
* goes, with LabelUnassigned.
|
|
@@ -1,15 +1,19 @@
|
|
|
1
|
+
import { actorOf, hasScope, isShipCaller } from '../shared/caller.js';
|
|
1
2
|
import { refuse } from '../shared/errors.js';
|
|
2
|
-
import { recordEvent
|
|
3
|
+
import { recordEvent } from '../shared/events.js';
|
|
3
4
|
import { ok } from '../shared/result.js';
|
|
4
|
-
import { unassignLabel } from './label.js';
|
|
5
|
+
import { labelOwnerOf, ownerNameOf, unassignLabel } from './label.js';
|
|
6
|
+
import { checkManage, keepingReachRefusal } from './check-reach.js';
|
|
5
7
|
/**
|
|
6
|
-
* Use case: a label's owner takes one of its values off a ship, by the value's id (decision 0031)
|
|
8
|
+
* Use case: a label's owner takes one of its values off a ship, by the value's id (decision 0031),
|
|
9
|
+
* or an actor holding labels:any any label's value off a ship within its
|
|
10
|
+
* manage reach (decision 0053). Its scope
|
|
7
11
|
* (labels:assign) is checked before this runs. In one unit of work, locking
|
|
8
12
|
* the ship, then holding the label, as an assignment does: the assignment
|
|
9
13
|
* goes, with LabelUnassigned.
|
|
10
14
|
*/
|
|
11
15
|
export function createUnassignLabel(deps) {
|
|
12
|
-
return (caller, input) => deps.uow
|
|
16
|
+
return (caller, input) => keepingReachRefusal(deps.uow, async (tx) => {
|
|
13
17
|
const { fleetId } = caller;
|
|
14
18
|
const ship = await tx.ships.findForUpdate(fleetId, input.shipId);
|
|
15
19
|
if (!ship) {
|
|
@@ -20,8 +24,15 @@ export function createUnassignLabel(deps) {
|
|
|
20
24
|
if (!label?.values.some((value) => value.id === input.valueId)) {
|
|
21
25
|
return refuse('LABEL_VALUE_NOT_FOUND', `The fleet has no label value ${input.valueId}`);
|
|
22
26
|
}
|
|
23
|
-
const
|
|
24
|
-
const
|
|
27
|
+
const at = deps.clock.now();
|
|
28
|
+
const labeller = { owner: labelOwnerOf(caller), shipId: isShipCaller(caller) ? caller.shipId : null, canLabelAnyShip: hasScope(caller, 'labels:any') };
|
|
29
|
+
if (labeller.canLabelAnyShip) {
|
|
30
|
+
const managed = await checkManage({ tx, ids: deps.ids }, { manager: caller, shipId: ship.id, at });
|
|
31
|
+
if (!managed.isOk) {
|
|
32
|
+
return managed;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const unassigned = unassignLabel({ label, ownerName: await ownerNameOf(label.owner, async (shipId) => (await tx.ships.find(fleetId, shipId))?.name), ship, carried: await tx.labels.carriedBy(fleetId, ship.id) }, { caller: labeller, valueId: input.valueId, at, actor: actorOf(caller) });
|
|
25
36
|
if (!unassigned.isOk) {
|
|
26
37
|
return unassigned;
|
|
27
38
|
}
|