@aeolus-fleet/core 0.27.1 → 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/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 +30 -0
- package/dist/adapters/prisma/generated/client.d.ts +30 -0
- package/dist/adapters/prisma/generated/commonInputTypes.d.ts +120 -0
- package/dist/adapters/prisma/generated/enums.d.ts +25 -0
- package/dist/adapters/prisma/generated/enums.js +22 -1
- package/dist/adapters/prisma/generated/enums.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/class.d.ts +44 -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 +372 -9
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js +38 -11
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +39 -8
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +38 -11
- 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 +871 -0
- 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/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 -255
- package/dist/adapters/prisma/generated/models/ReachRefusal.d.ts +1 -40
- package/dist/adapters/prisma/generated/models/Ship.d.ts +782 -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 +4 -0
- package/dist/adapters/prisma/history.js +1 -0
- 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/network.d.ts +7 -2
- package/dist/adapters/prisma/network.js +92 -65
- package/dist/adapters/prisma/network.js.map +1 -1
- package/dist/adapters/prisma/registry.js +19 -14
- package/dist/adapters/prisma/registry.js.map +1 -1
- package/dist/adapters/prisma/rows.d.ts +9 -4
- package/dist/adapters/prisma/rows.js +75 -19
- package/dist/adapters/prisma/rows.js.map +1 -1
- package/dist/adapters/prisma/unit-of-work.d.ts +4 -2
- package/dist/adapters/prisma/unit-of-work.js +5 -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 +22 -8
- package/dist/adapters/trpc/fleet.d.ts +259 -52
- package/dist/adapters/trpc/fleet.js +121 -84
- 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 +307 -43
- package/dist/adapters/trpc/ship-contract.js +6 -4
- package/dist/adapters/trpc/ship-contract.js.map +1 -1
- package/dist/adapters/trpc/ship.d.ts +32 -1
- package/dist/adapters/trpc/ship.js +4 -2
- package/dist/adapters/trpc/ship.js.map +1 -1
- package/dist/adapters/trpc/trpc.d.ts +36 -13
- package/dist/adapters/trpc/trpc.js +117 -26
- 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 +3 -1
- package/dist/domain/messaging/delivery.js +9 -6
- package/dist/domain/messaging/delivery.js.map +1 -1
- package/dist/domain/messaging/dismiss-delivery.d.ts +2 -2
- 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/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/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 +45 -24
- package/dist/domain/registry/check-reach.js +76 -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 +23 -14
- package/dist/domain/registry/commission-ship.js +167 -21
- 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 +5 -4
- package/dist/domain/registry/connect-plugin.js +6 -7
- package/dist/domain/registry/connect-plugin.js.map +1 -1
- 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 +11 -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 +21 -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/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 +92 -122
- package/dist/domain/registry/network-settings.js +99 -159
- package/dist/domain/registry/network-settings.js.map +1 -1
- package/dist/domain/registry/ports.d.ts +47 -11
- 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 +4 -3
- package/dist/domain/registry/read-built-in-rules.js +7 -6
- 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 +6 -8
- package/dist/domain/registry/read-reach.js +21 -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 +3 -3
- package/dist/domain/registry/recrew-ship.js.map +1 -1
- package/dist/domain/registry/release-ship.d.ts +3 -2
- package/dist/domain/registry/release-ship.js +4 -3
- 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 +16 -12
- package/dist/domain/registry/retire-ship.js +28 -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 +52 -18
- package/dist/domain/registry/ship.js +76 -18
- 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/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/history.d.ts +3 -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 +2 -2
- 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 +2 -2
- 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/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/fleet.d.ts +2 -2
- package/dist/testing/index.d.ts +1 -1
- package/dist/wiring.d.ts +21 -8
- package/dist/wiring.js +32 -13
- package/dist/wiring.js.map +1 -1
- package/package.json +2 -5
- 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 +132 -23
- package/dist/domain/registry/read-network-plugin.d.ts +0 -23
- package/dist/domain/registry/read-network-plugin.js +0 -15
- package/dist/domain/registry/read-network-plugin.js.map +0 -1
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope-grant.js","sourceRoot":"","sources":["../../../src/domain/registry/scope-grant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"scope-grant.js","sourceRoot":"","sources":["../../../src/domain/registry/scope-grant.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IdGenerator, SetBuiltInRuleInput } 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 EventLog } from '../shared/events.js';
|
|
5
5
|
import { type Result } from '../shared/result.js';
|
|
@@ -15,8 +15,8 @@ export type SetBuiltInRule = (caller: Caller, input: SetBuiltInRuleInput) => Pro
|
|
|
15
15
|
}, SetBuiltInRuleRefusal>>;
|
|
16
16
|
/**
|
|
17
17
|
* Use case: a built-in rule turned on or off (decision 0034): the viewer
|
|
18
|
-
* reading by
|
|
19
|
-
*
|
|
18
|
+
* reading, by any actor; every other one is refused. Its scope
|
|
19
|
+
* (fleet:network) is checked before this runs. In one
|
|
20
20
|
* unit of work, holding the settings exclusively so no send is checked
|
|
21
21
|
* halfway: the settings at their next version, and BuiltInRuleChanged. A rule
|
|
22
22
|
* already as asked answers the version it has.
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { actorOf } from '../shared/caller.js';
|
|
2
|
+
import { recordEvent } from '../shared/events.js';
|
|
2
3
|
import { ok } from '../shared/result.js';
|
|
3
4
|
import { setBuiltInRule } from './network-settings.js';
|
|
4
5
|
/**
|
|
5
6
|
* Use case: a built-in rule turned on or off (decision 0034): the viewer
|
|
6
|
-
* reading by
|
|
7
|
-
*
|
|
7
|
+
* reading, by any actor; every other one is refused. Its scope
|
|
8
|
+
* (fleet:network) is checked before this runs. In one
|
|
8
9
|
* unit of work, holding the settings exclusively so no send is checked
|
|
9
10
|
* halfway: the settings at their next version, and BuiltInRuleChanged. A rule
|
|
10
11
|
* already as asked answers the version it has.
|
|
@@ -12,12 +13,7 @@ import { setBuiltInRule } from './network-settings.js';
|
|
|
12
13
|
export function createSetBuiltInRule(deps) {
|
|
13
14
|
return (caller, input) => deps.uow.run(async (tx) => {
|
|
14
15
|
const current = await tx.networkSettings.findForUpdate(caller.fleetId);
|
|
15
|
-
const set = setBuiltInRule(current, {
|
|
16
|
-
input,
|
|
17
|
-
caller: { shipId: caller.shipId, isOperator: caller.kind === 'operator' },
|
|
18
|
-
at: deps.clock.now(),
|
|
19
|
-
actor: shipActor(caller.shipId),
|
|
20
|
-
});
|
|
16
|
+
const set = setBuiltInRule(current, { input, at: deps.clock.now(), actor: actorOf(caller) });
|
|
21
17
|
if (!set.isOk) {
|
|
22
18
|
return set;
|
|
23
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-built-in-rule.js","sourceRoot":"","sources":["../../../src/domain/registry/set-built-in-rule.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"set-built-in-rule.js","sourceRoot":"","sources":["../../../src/domain/registry/set-built-in-rule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAe,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAiB,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,cAAc,EAA8B,MAAM,uBAAuB,CAAC;AAUnF;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAA2E;IAC9G,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CACvB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAA+D,EAAE;QACrF,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,eAAe,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvE,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7F,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,GAAG,CAAC;QACb,CAAC;QACD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACpD,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACrC,MAAM,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,24 +1,27 @@
|
|
|
1
1
|
import type { IdGenerator, 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
|
+
import { type CheckManageTx, type NotReachable } from './check-reach.js';
|
|
8
9
|
import type { ShipRepository } from './ports.js';
|
|
9
10
|
import { type ChangeOwnerRefusal } from './ship.js';
|
|
10
|
-
export interface SetOwnerTx {
|
|
11
|
-
ships: Pick<ShipRepository, 'findForUpdate' | 'setOwner'>;
|
|
11
|
+
export interface SetOwnerTx extends Omit<CheckManageTx, 'ships'> {
|
|
12
|
+
ships: Pick<ShipRepository, 'find' | 'findForUpdate' | 'setOwner'>;
|
|
12
13
|
events: EventLog;
|
|
13
14
|
}
|
|
14
|
-
export type SetOwnerRefusal = DomainError<'
|
|
15
|
+
export type SetOwnerRefusal = DomainError<'SHIP_NOT_FOUND'> | NotReachable | ChangeOwnerRefusal;
|
|
15
16
|
export type SetOwner = (caller: Caller, input: {
|
|
16
17
|
shipId: ShipId;
|
|
17
18
|
ownerShipId: ShipId;
|
|
18
19
|
}) => Promise<Result<undefined, SetOwnerRefusal>>;
|
|
19
20
|
/**
|
|
20
|
-
* Use case:
|
|
21
|
-
* ship or argo (
|
|
21
|
+
* Use case: an actor holding fleet:owner gives a ship within its manage reach
|
|
22
|
+
* a new owner, an active person's ship or argo (decisions 0045, 0053), with
|
|
23
|
+
* OwnerChanged in the same unit of work. The scope is checked before this
|
|
24
|
+
* runs; a refused reach keeps its record.
|
|
22
25
|
* It locks the owner first, then the ship, as a retire of the owner locks it
|
|
23
26
|
* before the ships it owns, so the two never wait on each other: the new
|
|
24
27
|
* owner is never one a retire already passed by.
|
|
@@ -1,26 +1,32 @@
|
|
|
1
|
+
import { actorOf } 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';
|
|
5
|
+
import { checkManage, keepingReachRefusal } from './check-reach.js';
|
|
4
6
|
import { changeOwner } from './ship.js';
|
|
5
7
|
/**
|
|
6
|
-
* Use case:
|
|
7
|
-
* ship or argo (
|
|
8
|
+
* Use case: an actor holding fleet:owner gives a ship within its manage reach
|
|
9
|
+
* a new owner, an active person's ship or argo (decisions 0045, 0053), with
|
|
10
|
+
* OwnerChanged in the same unit of work. The scope is checked before this
|
|
11
|
+
* runs; a refused reach keeps its record.
|
|
8
12
|
* It locks the owner first, then the ship, as a retire of the owner locks it
|
|
9
13
|
* before the ships it owns, so the two never wait on each other: the new
|
|
10
14
|
* owner is never one a retire already passed by.
|
|
11
15
|
*/
|
|
12
16
|
export function createSetOwner(deps) {
|
|
13
|
-
return (caller, input) => deps.uow
|
|
14
|
-
if (caller.kind !== 'operator') {
|
|
15
|
-
return refuse('NOT_THE_OPERATOR_SHIP', "Only argo changes a ship's owner");
|
|
16
|
-
}
|
|
17
|
+
return (caller, input) => keepingReachRefusal(deps.uow, async (tx) => {
|
|
17
18
|
const { fleetId } = caller;
|
|
18
19
|
const owner = await tx.ships.findForUpdate(fleetId, input.ownerShipId);
|
|
19
20
|
const ship = await tx.ships.findForUpdate(fleetId, input.shipId);
|
|
20
21
|
if (!ship) {
|
|
21
22
|
return refuse('SHIP_NOT_FOUND', `Ship ${input.shipId} does not exist`);
|
|
22
23
|
}
|
|
23
|
-
const
|
|
24
|
+
const at = deps.clock.now();
|
|
25
|
+
const managed = await checkManage({ tx, ids: deps.ids }, { manager: caller, shipId: ship.id, at });
|
|
26
|
+
if (!managed.isOk) {
|
|
27
|
+
return managed;
|
|
28
|
+
}
|
|
29
|
+
const changed = changeOwner(ship, { owner, why: 'set', at, actor: actorOf(caller) });
|
|
24
30
|
if (!changed.isOk) {
|
|
25
31
|
return changed;
|
|
26
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-owner.js","sourceRoot":"","sources":["../../../src/domain/registry/set-owner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"set-owner.js","sourceRoot":"","sources":["../../../src/domain/registry/set-owner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAe,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAiB,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAyC,MAAM,kBAAkB,CAAC;AAE3G,OAAO,EAAE,WAAW,EAA2B,MAAM,WAAW,CAAC;AAWjE;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,IAAqE;IAClG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CACvB,mBAAmB,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAA+C,EAAE;QACtF,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAC3B,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QACvE,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,MAAM,CAAC,gBAAgB,EAAE,QAAQ,KAAK,CAAC,MAAM,iBAAiB,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACnG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;QAC9C,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YACvD,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -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,29 +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
|
|
37
|
-
*
|
|
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).
|
|
38
69
|
*/
|
|
39
|
-
export type OwnerSetHow = 'inherited' | 'argoByDefault' | 'askingShipOwner' | 'named';
|
|
70
|
+
export type OwnerSetHow = 'itself' | 'commissioner' | 'accountPersonShip' | 'inherited' | 'argoByDefault' | 'askingShipOwner' | 'named';
|
|
40
71
|
/** OwnerSet's details: the owner and how it was set, with the asking ship when a plugin named its owner. */
|
|
41
72
|
export type OwnerSet = {
|
|
42
73
|
ownerShipId: ShipId;
|
|
43
|
-
how: 'inherited' | 'argoByDefault' | 'named';
|
|
74
|
+
how: 'itself' | 'commissioner' | 'accountPersonShip' | 'inherited' | 'argoByDefault' | 'named';
|
|
44
75
|
} | {
|
|
45
76
|
ownerShipId: ShipId;
|
|
46
77
|
how: 'askingShipOwner';
|
|
@@ -77,17 +108,20 @@ export declare function viewerShip(input: {
|
|
|
77
108
|
export declare function isConsoleShip(ship: Pick<Ship, 'kind'>): boolean;
|
|
78
109
|
/** The scopes every agent ship gets at creation: it sends and receives; commissioning may add fleet scopes (ADR 0002). */
|
|
79
110
|
export declare const AGENT_SCOPES: readonly Scope[];
|
|
80
|
-
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'>;
|
|
81
112
|
/**
|
|
82
113
|
* A new ship, awaiting crew, and its ShipCommissioned event. An agent unless
|
|
83
|
-
* the commission states another kind
|
|
84
|
-
*
|
|
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,
|
|
85
117
|
* never `argo`, and unique among the fleet's active ships: `activeShipNamed`
|
|
86
118
|
* is the active ship that already holds it, if any, read while the name is
|
|
87
119
|
* locked. It gets the scopes every ship has and those asked for that the
|
|
88
120
|
* commissioner may grant (decision 0046): core scopes in their fixed order,
|
|
89
|
-
* then plugin scopes in name order, each once
|
|
90
|
-
*
|
|
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
|
|
91
125
|
* fleet:on-behalf, a plugin's ship, may name instead the ship that asked it,
|
|
92
126
|
* whose owner it gets (decision 0045).
|
|
93
127
|
*/
|
|
@@ -97,8 +131,8 @@ export declare function commissionShip(input: {
|
|
|
97
131
|
name: string;
|
|
98
132
|
type: string;
|
|
99
133
|
kind?: CommissionedShipKind;
|
|
100
|
-
/** The
|
|
101
|
-
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;
|
|
102
136
|
argoShipId: ShipId;
|
|
103
137
|
/** The ship that asked a plugin's ship for this one, whose owner the new ship gets (decision 0045). */
|
|
104
138
|
askingShip?: Ship;
|
|
@@ -111,7 +145,7 @@ export declare function commissionShip(input: {
|
|
|
111
145
|
at: Date;
|
|
112
146
|
actor: Actor;
|
|
113
147
|
commission: {
|
|
114
|
-
by:
|
|
148
|
+
by: Commissioner;
|
|
115
149
|
idempotencyKey: string;
|
|
116
150
|
requestHash: string;
|
|
117
151
|
};
|
|
@@ -127,7 +161,7 @@ export declare function commissionShip(input: {
|
|
|
127
161
|
events: NewEvent[];
|
|
128
162
|
}, CommissionRefusal>;
|
|
129
163
|
/** Why a ship's owner changed: argo set it, or its owner's ship retired and it fell to argo. */
|
|
130
|
-
export type OwnerChangedWhy = '
|
|
164
|
+
export type OwnerChangedWhy = 'set' | 'ownerRetired';
|
|
131
165
|
export type ChangeOwnerRefusal = DomainError<'SHIP_HAS_NO_OWNER' | 'SHIP_ALREADY_RETIRED' | 'INVALID_OWNER'>;
|
|
132
166
|
/**
|
|
133
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,24 +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
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
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;
|
|
84
101
|
}
|
|
85
102
|
const name = shipName(input.name);
|
|
86
103
|
if (!name.isOk) {
|
|
@@ -102,8 +119,10 @@ export function commissionShip(input, fleet) {
|
|
|
102
119
|
return refuse('SHIP_NAME_TAKEN', `An active ship is already named ${name.value}`);
|
|
103
120
|
}
|
|
104
121
|
const asked = input.scopes ?? [];
|
|
105
|
-
const
|
|
106
|
-
|
|
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))) {
|
|
107
126
|
const allowed = mayGrant(scope, { granter, namespaces: fleet.namespaces });
|
|
108
127
|
if (!allowed.isOk) {
|
|
109
128
|
return allowed;
|
|
@@ -119,7 +138,11 @@ export function commissionShip(input, fleet) {
|
|
|
119
138
|
}
|
|
120
139
|
}
|
|
121
140
|
const { id, fleetId, at, actor } = input;
|
|
122
|
-
const
|
|
141
|
+
const ownerSet = ownerAtCommission({ ...input, kind });
|
|
142
|
+
if (!ownerSet.isOk) {
|
|
143
|
+
return ownerSet;
|
|
144
|
+
}
|
|
145
|
+
const owner = ownerSet.value;
|
|
123
146
|
const ship = {
|
|
124
147
|
id,
|
|
125
148
|
fleetId,
|
|
@@ -182,6 +205,20 @@ export function changeOwner(ship, change) {
|
|
|
182
205
|
],
|
|
183
206
|
});
|
|
184
207
|
}
|
|
208
|
+
/**
|
|
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
|
+
}
|
|
185
222
|
/**
|
|
186
223
|
* The owner argo picked, named at commission: only for an app ship, only by a
|
|
187
224
|
* ship holding fleet:on-behalf, never beside an asking ship, and an active
|
|
@@ -204,19 +241,40 @@ function checkNamedOwner(named) {
|
|
|
204
241
|
return ok(undefined);
|
|
205
242
|
}
|
|
206
243
|
/**
|
|
207
|
-
*
|
|
208
|
-
*
|
|
209
|
-
*
|
|
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.
|
|
210
249
|
*/
|
|
211
250
|
function ownerAtCommission(input) {
|
|
212
251
|
const { commissioner, askingShip, namedOwner, argoShipId } = input;
|
|
252
|
+
if (input.kind === 'person') {
|
|
253
|
+
return ok({ ownerShipId: input.id, how: 'itself' });
|
|
254
|
+
}
|
|
213
255
|
if (namedOwner !== undefined) {
|
|
214
|
-
return { ownerShipId: namedOwner.id, how: 'named' };
|
|
256
|
+
return ok({ ownerShipId: namedOwner.id, how: 'named' });
|
|
215
257
|
}
|
|
216
258
|
if (askingShip !== undefined) {
|
|
217
|
-
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
|
+
}
|
|
218
277
|
}
|
|
219
|
-
return commissioner.owner === null ? { ownerShipId: argoShipId, how: 'argoByDefault' } : { ownerShipId: commissioner.owner, how: 'inherited' };
|
|
220
278
|
}
|
|
221
279
|
/**
|
|
222
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":"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"}
|
|
1
|
+
{"version":3,"file":"ship.js","sourceRoot":"","sources":["../../../src/domain/registry/ship.ts"],"names":[],"mappings":"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"}
|