@aeolus-fleet/core 0.26.1 → 0.27.1
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/http/request-credentials.d.ts +2 -9
- package/dist/adapters/http/request-credentials.js +8 -1
- package/dist/adapters/http/request-credentials.js.map +1 -1
- package/dist/adapters/http/server.js +2 -1
- package/dist/adapters/http/server.js.map +1 -1
- package/dist/adapters/mcp/mcp-endpoint.js +11 -1
- package/dist/adapters/mcp/mcp-endpoint.js.map +1 -1
- package/dist/adapters/prisma/generated/browser.d.ts +14 -0
- package/dist/adapters/prisma/generated/client.d.ts +14 -0
- package/dist/adapters/prisma/generated/commonInputTypes.d.ts +30 -0
- package/dist/adapters/prisma/generated/enums.d.ts +10 -0
- package/dist/adapters/prisma/generated/enums.js +10 -1
- package/dist/adapters/prisma/generated/enums.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/class.d.ts +22 -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 +186 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js +27 -2
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +27 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +27 -2
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
- package/dist/adapters/prisma/generated/models/Delivery.d.ts +71 -1
- package/dist/adapters/prisma/generated/models/Fleet.d.ts +558 -0
- package/dist/adapters/prisma/generated/models/Lease.d.ts +172 -1
- package/dist/adapters/prisma/generated/models/NetworkSettings.d.ts +185 -21
- 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 +71 -1
- package/dist/adapters/prisma/generated/models/ScopeNamespace.d.ts +1220 -0
- package/dist/adapters/prisma/generated/models/ScopeNamespace.js +2 -0
- package/dist/adapters/prisma/generated/models/ScopeNamespace.js.map +1 -0
- package/dist/adapters/prisma/generated/models/Ship.d.ts +1269 -51
- package/dist/adapters/prisma/generated/models.d.ts +2 -0
- package/dist/adapters/prisma/health.js +27 -7
- package/dist/adapters/prisma/health.js.map +1 -1
- package/dist/adapters/prisma/history.js +18 -72
- package/dist/adapters/prisma/history.js.map +1 -1
- package/dist/adapters/prisma/messaging.js +31 -35
- package/dist/adapters/prisma/messaging.js.map +1 -1
- package/dist/adapters/prisma/network.js +45 -15
- 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 +68 -13
- package/dist/adapters/prisma/registry.js.map +1 -1
- package/dist/adapters/prisma/rows.d.ts +3 -0
- package/dist/adapters/prisma/rows.js +22 -7
- package/dist/adapters/prisma/rows.js.map +1 -1
- package/dist/adapters/prisma/scope-namespaces.d.ts +4 -0
- package/dist/adapters/prisma/scope-namespaces.js +39 -0
- package/dist/adapters/prisma/scope-namespaces.js.map +1 -0
- package/dist/adapters/prisma/unit-of-work.d.ts +3 -1
- package/dist/adapters/prisma/unit-of-work.js +4 -0
- package/dist/adapters/prisma/unit-of-work.js.map +1 -1
- 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 +1 -1
- package/dist/adapters/trpc/console.js +6 -4
- package/dist/adapters/trpc/console.js.map +1 -1
- package/dist/adapters/trpc/context.d.ts +28 -4
- package/dist/adapters/trpc/fleet.d.ts +243 -90
- package/dist/adapters/trpc/fleet.js +146 -57
- package/dist/adapters/trpc/fleet.js.map +1 -1
- package/dist/adapters/trpc/router.d.ts +366 -86
- package/dist/adapters/trpc/ship-contract.js +5 -0
- package/dist/adapters/trpc/ship-contract.js.map +1 -1
- package/dist/adapters/trpc/ship-protocol.js +7 -5
- package/dist/adapters/trpc/ship-protocol.js.map +1 -1
- package/dist/adapters/trpc/ship.d.ts +156 -3
- package/dist/adapters/trpc/ship.js +89 -8
- package/dist/adapters/trpc/ship.js.map +1 -1
- package/dist/adapters/trpc/trpc.d.ts +13 -9
- package/dist/adapters/trpc/trpc.js +90 -26
- package/dist/adapters/trpc/trpc.js.map +1 -1
- package/dist/domain/messaging/check-inbox.d.ts +5 -5
- package/dist/domain/messaging/check-inbox.js +9 -7
- package/dist/domain/messaging/check-inbox.js.map +1 -1
- package/dist/domain/messaging/delivery.d.ts +8 -2
- package/dist/domain/messaging/delivery.js +14 -9
- package/dist/domain/messaging/delivery.js.map +1 -1
- package/dist/domain/messaging/dismiss-delivery.d.ts +9 -4
- package/dist/domain/messaging/dismiss-delivery.js +26 -19
- package/dist/domain/messaging/dismiss-delivery.js.map +1 -1
- 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 +11 -5
- package/dist/domain/messaging/message.js +11 -4
- 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 +3 -3
- package/dist/domain/messaging/ping-ship.js +6 -2
- package/dist/domain/messaging/ping-ship.js.map +1 -1
- package/dist/domain/messaging/ports.d.ts +11 -3
- 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 +23 -0
- package/dist/domain/messaging/receive-deliveries.js +6 -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 +5 -2
- package/dist/domain/messaging/resend-delivery.js +8 -4
- package/dist/domain/messaging/resend-delivery.js.map +1 -1
- package/dist/domain/messaging/send-message.d.ts +9 -2
- package/dist/domain/messaging/send-message.js +12 -2
- package/dist/domain/messaging/send-message.js.map +1 -1
- package/dist/domain/messaging/send-request.d.ts +3 -1
- package/dist/domain/messaging/send-request.js +4 -2
- package/dist/domain/messaging/send-request.js.map +1 -1
- package/dist/domain/registry/assign-label.d.ts +2 -1
- package/dist/domain/registry/assign-label.js +3 -2
- package/dist/domain/registry/assign-label.js.map +1 -1
- package/dist/domain/registry/check-reach.d.ts +69 -6
- package/dist/domain/registry/check-reach.js +109 -12
- package/dist/domain/registry/check-reach.js.map +1 -1
- package/dist/domain/registry/commission-ship.d.ts +21 -8
- package/dist/domain/registry/commission-ship.js +55 -10
- package/dist/domain/registry/commission-ship.js.map +1 -1
- package/dist/domain/registry/connect-plugin.d.ts +30 -0
- package/dist/domain/registry/connect-plugin.js +35 -0
- package/dist/domain/registry/connect-plugin.js.map +1 -0
- package/dist/domain/registry/crew-request.d.ts +1 -1
- package/dist/domain/registry/declare-scopes.d.ts +38 -0
- package/dist/domain/registry/declare-scopes.js +34 -0
- package/dist/domain/registry/declare-scopes.js.map +1 -0
- package/dist/domain/registry/declared-network-rules.d.ts +2 -1
- package/dist/domain/registry/declared-network-rules.js +11 -5
- package/dist/domain/registry/declared-network-rules.js.map +1 -1
- package/dist/domain/registry/discover.d.ts +29 -0
- package/dist/domain/registry/discover.js +54 -0
- package/dist/domain/registry/discover.js.map +1 -0
- package/dist/domain/registry/explain-reach.d.ts +13 -12
- package/dist/domain/registry/explain-reach.js +35 -12
- package/dist/domain/registry/explain-reach.js.map +1 -1
- package/dist/domain/registry/get-ship.d.ts +11 -3
- package/dist/domain/registry/get-ship.js +8 -2
- package/dist/domain/registry/get-ship.js.map +1 -1
- package/dist/domain/registry/get-starting-prompt.d.ts +18 -2
- package/dist/domain/registry/get-starting-prompt.js +7 -7
- package/dist/domain/registry/get-starting-prompt.js.map +1 -1
- package/dist/domain/registry/grant-scopes.d.ts +34 -0
- package/dist/domain/registry/grant-scopes.js +35 -0
- package/dist/domain/registry/grant-scopes.js.map +1 -0
- package/dist/domain/registry/label.d.ts +12 -7
- package/dist/domain/registry/label.js +21 -4
- package/dist/domain/registry/label.js.map +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 +19 -6
- package/dist/domain/registry/list-fleet.js +18 -3
- package/dist/domain/registry/list-fleet.js.map +1 -1
- package/dist/domain/registry/list-scopes.d.ts +24 -0
- package/dist/domain/registry/list-scopes.js +22 -0
- package/dist/domain/registry/list-scopes.js.map +1 -0
- package/dist/domain/registry/managed-or-assigned.d.ts +25 -0
- package/dist/domain/registry/managed-or-assigned.js +23 -0
- package/dist/domain/registry/managed-or-assigned.js.map +1 -0
- package/dist/domain/registry/named-namespaces.d.ts +19 -0
- package/dist/domain/registry/named-namespaces.js +19 -0
- package/dist/domain/registry/named-namespaces.js.map +1 -0
- package/dist/domain/registry/network-settings.d.ts +95 -24
- package/dist/domain/registry/network-settings.js +146 -46
- 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 +75 -1
- package/dist/domain/registry/public.d.ts +3 -2
- package/dist/domain/registry/public.js +3 -2
- package/dist/domain/registry/public.js.map +1 -1
- package/dist/domain/registry/reach-refusal.d.ts +12 -4
- package/dist/domain/registry/read-assigned-crew-requests.d.ts +12 -3
- package/dist/domain/registry/read-assigned-crew-requests.js +8 -8
- package/dist/domain/registry/read-assigned-crew-requests.js.map +1 -1
- package/dist/domain/registry/read-built-in-rules.d.ts +20 -0
- package/dist/domain/registry/read-built-in-rules.js +24 -0
- package/dist/domain/registry/read-built-in-rules.js.map +1 -0
- package/dist/domain/registry/read-clear-requests.d.ts +5 -3
- package/dist/domain/registry/read-clear-requests.js +7 -5
- package/dist/domain/registry/read-clear-requests.js.map +1 -1
- package/dist/domain/registry/read-network-plugin.d.ts +23 -0
- package/dist/domain/registry/read-network-plugin.js +15 -0
- package/dist/domain/registry/read-network-plugin.js.map +1 -0
- package/dist/domain/registry/read-on-behalf.d.ts +20 -0
- package/dist/domain/registry/read-on-behalf.js +31 -0
- package/dist/domain/registry/read-on-behalf.js.map +1 -0
- package/dist/domain/registry/read-reach.d.ts +64 -0
- package/dist/domain/registry/read-reach.js +83 -0
- package/dist/domain/registry/read-reach.js.map +1 -0
- package/dist/domain/registry/recrew-ship.d.ts +3 -2
- package/dist/domain/registry/recrew-ship.js +8 -1
- package/dist/domain/registry/recrew-ship.js.map +1 -1
- package/dist/domain/registry/release-ship.d.ts +10 -5
- package/dist/domain/registry/release-ship.js +11 -8
- package/dist/domain/registry/release-ship.js.map +1 -1
- package/dist/domain/registry/remove-crew-request.d.ts +4 -3
- package/dist/domain/registry/remove-crew-request.js +6 -1
- package/dist/domain/registry/remove-crew-request.js.map +1 -1
- package/dist/domain/registry/rename-ship.d.ts +7 -5
- package/dist/domain/registry/rename-ship.js +9 -3
- package/dist/domain/registry/rename-ship.js.map +1 -1
- package/dist/domain/registry/request-crew.d.ts +5 -4
- package/dist/domain/registry/request-crew.js +6 -1
- package/dist/domain/registry/request-crew.js.map +1 -1
- package/dist/domain/registry/request-worktree-clear.d.ts +3 -2
- package/dist/domain/registry/request-worktree-clear.js +6 -1
- package/dist/domain/registry/request-worktree-clear.js.map +1 -1
- package/dist/domain/registry/retire-ship.d.ts +17 -7
- package/dist/domain/registry/retire-ship.js +48 -5
- package/dist/domain/registry/retire-ship.js.map +1 -1
- package/dist/domain/registry/scope-grant.d.ts +53 -0
- package/dist/domain/registry/scope-grant.js +74 -0
- package/dist/domain/registry/scope-grant.js.map +1 -0
- package/dist/domain/registry/scope-namespace.d.ts +68 -0
- package/dist/domain/registry/scope-namespace.js +82 -0
- package/dist/domain/registry/scope-namespace.js.map +1 -0
- package/dist/domain/registry/set-built-in-rule.d.ts +28 -0
- package/dist/domain/registry/set-built-in-rule.js +33 -0
- package/dist/domain/registry/set-built-in-rule.js.map +1 -0
- package/dist/domain/registry/set-network-rules.d.ts +3 -3
- package/dist/domain/registry/set-network-rules.js +2 -2
- package/dist/domain/registry/set-owner.d.ts +30 -0
- package/dist/domain/registry/set-owner.js +37 -0
- package/dist/domain/registry/set-owner.js.map +1 -0
- package/dist/domain/registry/set-statement.d.ts +27 -0
- package/dist/domain/registry/set-statement.js +28 -0
- package/dist/domain/registry/set-statement.js.map +1 -0
- package/dist/domain/registry/ship.d.ts +74 -10
- package/dist/domain/registry/ship.js +128 -10
- package/dist/domain/registry/ship.js.map +1 -1
- package/dist/domain/registry/statement.d.ts +32 -0
- package/dist/domain/registry/statement.js +39 -0
- package/dist/domain/registry/statement.js.map +1 -0
- package/dist/domain/registry/unassign-label.js +1 -1
- package/dist/domain/registry/unassign-label.js.map +1 -1
- package/dist/domain/registry/whoami.d.ts +5 -1
- package/dist/domain/registry/whoami.js +7 -4
- package/dist/domain/registry/whoami.js.map +1 -1
- package/dist/domain/shared/caller.d.ts +5 -2
- 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-read.d.ts +16 -0
- package/dist/domain/shared/events-read.js +15 -0
- package/dist/domain/shared/events-read.js.map +1 -0
- package/dist/domain/shared/follow-fleet.d.ts +8 -2
- package/dist/domain/shared/follow-fleet.js +14 -4
- package/dist/domain/shared/follow-fleet.js.map +1 -1
- package/dist/domain/shared/health.d.ts +11 -2
- package/dist/domain/shared/health.js +11 -3
- package/dist/domain/shared/health.js.map +1 -1
- package/dist/domain/shared/history.d.ts +11 -42
- package/dist/domain/shared/history.js +9 -0
- package/dist/domain/shared/history.js.map +1 -1
- package/dist/domain/shared/read-fleet-events.d.ts +8 -2
- package/dist/domain/shared/read-fleet-events.js +10 -4
- package/dist/domain/shared/read-fleet-events.js.map +1 -1
- package/dist/domain/shared/read-health.d.ts +5 -1
- package/dist/domain/shared/read-health.js +13 -2
- package/dist/domain/shared/read-health.js.map +1 -1
- package/dist/domain/shared/read-inbox.d.ts +6 -3
- package/dist/domain/shared/read-inbox.js +14 -4
- package/dist/domain/shared/read-inbox.js.map +1 -1
- package/dist/domain/shared/read-message.d.ts +6 -2
- package/dist/domain/shared/read-message.js +6 -2
- package/dist/domain/shared/read-message.js.map +1 -1
- package/dist/domain/shared/read-needs-attention.d.ts +4 -1
- package/dist/domain/shared/read-needs-attention.js +8 -3
- package/dist/domain/shared/read-needs-attention.js.map +1 -1
- 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 +6 -2
- package/dist/domain/shared/read-ship-messages.js +7 -2
- package/dist/domain/shared/read-ship-messages.js.map +1 -1
- package/dist/domain/shared/read-ship-timeline.d.ts +5 -2
- package/dist/domain/shared/read-ship-timeline.js +11 -6
- package/dist/domain/shared/read-ship-timeline.js.map +1 -1
- package/dist/domain/shared/read-ship-way.d.ts +11 -4
- package/dist/domain/shared/read-ship-way.js +9 -2
- package/dist/domain/shared/read-ship-way.js.map +1 -1
- package/dist/domain/shared/stuck.d.ts +10 -1
- package/dist/domain/shared/stuck.js +5 -3
- package/dist/domain/shared/stuck.js.map +1 -1
- 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 +26 -4
- package/dist/wiring.js +51 -18
- package/dist/wiring.js.map +1 -1
- package/package.json +28 -2
- package/src/adapters/prisma/migrations/20261018100000_force_scope/migration.sql +8 -0
- package/src/adapters/prisma/migrations/20261018110000_forced_delivery/migration.sql +4 -0
- package/src/adapters/prisma/migrations/20261018120000_person_and_app_ships/migration.sql +3 -0
- package/src/adapters/prisma/migrations/20261018130000_owners/migration.sql +14 -0
- package/src/adapters/prisma/migrations/20261018140000_owners_on_reach_refusals/migration.sql +14 -0
- package/src/adapters/prisma/migrations/20261018150000_network_verbs/migration.sql +9 -0
- package/src/adapters/prisma/migrations/20261018160000_built_in_rules/migration.sql +13 -0
- package/src/adapters/prisma/migrations/20261018170000_network_rules_a_list/migration.sql +5 -0
- package/src/adapters/prisma/migrations/20261018180000_verb_on_reach_refusals/migration.sql +4 -0
- package/src/adapters/prisma/migrations/20261018200000_lease_statements/migration.sql +3 -0
- package/src/adapters/prisma/migrations/20261018210000_declare_and_grant_scopes/migration.sql +8 -0
- package/src/adapters/prisma/migrations/20261018220000_plugin_scopes/migration.sql +14 -0
- package/src/adapters/prisma/migrations/20261018230000_scope_namespaces/migration.sql +20 -0
- package/src/adapters/prisma/migrations/20261018240000_trierarch_plugin_crew_run/migration.sql +44 -0
- package/src/adapters/prisma/migrations/20261018250000_scope_catalogue/migration.sql +67 -0
- package/src/adapters/prisma/migrations/20261019090000_reach_refusal_asked_by/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261019100000_on_behalf_scope/migration.sql +61 -0
- package/src/adapters/prisma/migrations/20261019110000_events_fleet_id_occurred_at/migration.sql +2 -0
- 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/schema.prisma +81 -7
- package/dist/domain/shared/read-no-ship-can-take.d.ts +0 -13
- package/dist/domain/shared/read-no-ship-can-take.js +0 -12
- package/dist/domain/shared/read-no-ship-can-take.js.map +0 -1
- package/dist/domain/shared/read-overdue.d.ts +0 -13
- package/dist/domain/shared/read-overdue.js +0 -12
- package/dist/domain/shared/read-overdue.js.map +0 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { refuse } from '../shared/errors.js';
|
|
2
|
+
import { recordEvent, shipActor } from '../shared/events.js';
|
|
3
|
+
import { ok } from '../shared/result.js';
|
|
4
|
+
import { changeOwner } from './ship.js';
|
|
5
|
+
/**
|
|
6
|
+
* Use case: argo, and only argo, gives a ship a new owner, an active person's
|
|
7
|
+
* ship or argo (decision 0045), with OwnerChanged in the same unit of work.
|
|
8
|
+
* It locks the owner first, then the ship, as a retire of the owner locks it
|
|
9
|
+
* before the ships it owns, so the two never wait on each other: the new
|
|
10
|
+
* owner is never one a retire already passed by.
|
|
11
|
+
*/
|
|
12
|
+
export function createSetOwner(deps) {
|
|
13
|
+
return (caller, input) => deps.uow.run(async (tx) => {
|
|
14
|
+
if (caller.kind !== 'operator') {
|
|
15
|
+
return refuse('NOT_THE_OPERATOR_SHIP', "Only argo changes a ship's owner");
|
|
16
|
+
}
|
|
17
|
+
const { fleetId } = caller;
|
|
18
|
+
const owner = await tx.ships.findForUpdate(fleetId, input.ownerShipId);
|
|
19
|
+
const ship = await tx.ships.findForUpdate(fleetId, input.shipId);
|
|
20
|
+
if (!ship) {
|
|
21
|
+
return refuse('SHIP_NOT_FOUND', `Ship ${input.shipId} does not exist`);
|
|
22
|
+
}
|
|
23
|
+
const changed = changeOwner(ship, { owner, why: 'setByArgo', at: deps.clock.now(), actor: shipActor(caller.shipId) });
|
|
24
|
+
if (!changed.isOk) {
|
|
25
|
+
return changed;
|
|
26
|
+
}
|
|
27
|
+
const { ship: owned, events } = changed.value;
|
|
28
|
+
if (owned.owner !== null && owned.owner !== ship.owner) {
|
|
29
|
+
await tx.ships.setOwner({ fleetId, shipId: ship.id, ownerShipId: owned.owner });
|
|
30
|
+
}
|
|
31
|
+
for (const event of events) {
|
|
32
|
+
await recordEvent({ events: tx.events, ids: deps.ids }, event);
|
|
33
|
+
}
|
|
34
|
+
return ok(undefined);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=set-owner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-owner.js","sourceRoot":"","sources":["../../../src/domain/registry/set-owner.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,SAAS,EAAiB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,WAAW,EAA2B,MAAM,WAAW,CAAC;AAWjE;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,IAAqE;IAClG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CACvB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAA+C,EAAE;QACrE,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,OAAO,MAAM,CAAC,uBAAuB,EAAE,kCAAkC,CAAC,CAAC;QAC7E,CAAC;QACD,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,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtH,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,27 @@
|
|
|
1
|
+
import type { IdGenerator, Statement } from '@aeolus-fleet/common';
|
|
2
|
+
import type { Crew } from '../shared/caller.js';
|
|
3
|
+
import type { Clock } from '../shared/clock.js';
|
|
4
|
+
import { type EventLog } from '../shared/events.js';
|
|
5
|
+
import { type Result } from '../shared/result.js';
|
|
6
|
+
import type { UnitOfWork } from '../shared/unit-of-work.js';
|
|
7
|
+
import { type LeaseEnded } from './lease.js';
|
|
8
|
+
import type { LeaseRepository } from './ports.js';
|
|
9
|
+
export interface SetStatementTx {
|
|
10
|
+
leases: Pick<LeaseRepository, 'findStatementForUpdate' | 'saveStatement'>;
|
|
11
|
+
events: EventLog;
|
|
12
|
+
}
|
|
13
|
+
export type SetStatement = (crew: Crew, statement: Statement) => Promise<Result<{
|
|
14
|
+
version: number;
|
|
15
|
+
}, LeaseEnded>>;
|
|
16
|
+
/**
|
|
17
|
+
* Use case: the crew states what its ship is and offers (`setStatement`,
|
|
18
|
+
* decision 0047), whole, its shape checked at the edge. No scope beyond being
|
|
19
|
+
* the crew: it speaks only for its own ship. Kept with the crew's lease,
|
|
20
|
+
* locked meanwhile, with StatementSet on a change, in one unit of work.
|
|
21
|
+
* Answers the version; refused once the lease has ended.
|
|
22
|
+
*/
|
|
23
|
+
export declare function createSetStatement(deps: {
|
|
24
|
+
uow: UnitOfWork<SetStatementTx>;
|
|
25
|
+
clock: Clock;
|
|
26
|
+
ids: IdGenerator;
|
|
27
|
+
}): SetStatement;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { recordEvent } from '../shared/events.js';
|
|
2
|
+
import { ok } from '../shared/result.js';
|
|
3
|
+
import { refuseEndedLease } from './lease.js';
|
|
4
|
+
import { stateStatement } from './statement.js';
|
|
5
|
+
/**
|
|
6
|
+
* Use case: the crew states what its ship is and offers (`setStatement`,
|
|
7
|
+
* decision 0047), whole, its shape checked at the edge. No scope beyond being
|
|
8
|
+
* the crew: it speaks only for its own ship. Kept with the crew's lease,
|
|
9
|
+
* locked meanwhile, with StatementSet on a change, in one unit of work.
|
|
10
|
+
* Answers the version; refused once the lease has ended.
|
|
11
|
+
*/
|
|
12
|
+
export function createSetStatement(deps) {
|
|
13
|
+
return (crew, statement) => deps.uow.run(async (tx) => {
|
|
14
|
+
const held = await tx.leases.findStatementForUpdate(crew.fleetId, crew.leaseId);
|
|
15
|
+
if (!held) {
|
|
16
|
+
return refuseEndedLease();
|
|
17
|
+
}
|
|
18
|
+
const { stated, events } = stateStatement(held.stated, { crew, statement, at: deps.clock.now() });
|
|
19
|
+
if (events.length > 0) {
|
|
20
|
+
await tx.leases.saveStatement({ fleetId: crew.fleetId, leaseId: crew.leaseId, stated });
|
|
21
|
+
}
|
|
22
|
+
for (const event of events) {
|
|
23
|
+
await recordEvent({ events: tx.events, ids: deps.ids }, event);
|
|
24
|
+
}
|
|
25
|
+
return ok({ version: stated.version });
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=set-statement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-statement.js","sourceRoot":"","sources":["../../../src/domain/registry/set-statement.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAiB,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAmB,MAAM,YAAY,CAAC;AAE/D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAShD;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAyE;IAC1G,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CACzB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAoD,EAAE;QAC1E,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAChF,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,gBAAgB,EAAE,CAAC;QAC5B,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAClG,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1F,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,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { 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';
|
|
5
5
|
import type { Recipient } from '../shared/selector.js';
|
|
6
6
|
import { type Lease, type LeaseEnded, type Location } from './lease.js';
|
|
7
|
+
import type { ScopeNamespace } from './scope-namespace.js';
|
|
7
8
|
/** A durable, addressable identity with an inbox. Outlives any session. */
|
|
8
9
|
export interface Ship {
|
|
9
10
|
id: ShipId;
|
|
@@ -11,7 +12,8 @@ export interface Ship {
|
|
|
11
12
|
name: string;
|
|
12
13
|
type: string;
|
|
13
14
|
kind: ShipKind;
|
|
14
|
-
scopes
|
|
15
|
+
/** Core scopes and plugin scopes (decision 0046). */
|
|
16
|
+
scopes: readonly ScopeName[];
|
|
15
17
|
note: string | null;
|
|
16
18
|
createdAt: Date;
|
|
17
19
|
retiredAt: Date | null;
|
|
@@ -25,7 +27,25 @@ export interface Ship {
|
|
|
25
27
|
idempotencyKey: string;
|
|
26
28
|
requestHash: string;
|
|
27
29
|
} | null;
|
|
30
|
+
/** The ship that answers for it, a person's ship or argo (decision 0045); null for argo and the viewer. */
|
|
31
|
+
owner: ShipId | null;
|
|
28
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* How a ship got its owner at commission: its commissioner's owner, argo when
|
|
35
|
+
* the commissioner has none, the owner of the ship that asked a plugin's
|
|
36
|
+
* ship for it, which the plugin named, or for an app ship the owner argo
|
|
37
|
+
* picked, which the gateway named (decision 0045).
|
|
38
|
+
*/
|
|
39
|
+
export type OwnerSetHow = 'inherited' | 'argoByDefault' | 'askingShipOwner' | 'named';
|
|
40
|
+
/** OwnerSet's details: the owner and how it was set, with the asking ship when a plugin named its owner. */
|
|
41
|
+
export type OwnerSet = {
|
|
42
|
+
ownerShipId: ShipId;
|
|
43
|
+
how: 'inherited' | 'argoByDefault' | 'named';
|
|
44
|
+
} | {
|
|
45
|
+
ownerShipId: ShipId;
|
|
46
|
+
how: 'askingShipOwner';
|
|
47
|
+
askingShipId: ShipId;
|
|
48
|
+
};
|
|
29
49
|
/** The operator ship's name. Reserved: no other ship can take it. */
|
|
30
50
|
export declare const OPERATOR_SHIP_NAME = "argo";
|
|
31
51
|
/** The operator ship's type label, the same word as its kind. */
|
|
@@ -50,23 +70,44 @@ export declare function viewerShip(input: {
|
|
|
50
70
|
fleetId: FleetId;
|
|
51
71
|
createdAt: Date;
|
|
52
72
|
}): Ship;
|
|
73
|
+
/**
|
|
74
|
+
* Whether the ship is the console's own, argo or the viewer: always crewed,
|
|
75
|
+
* with no secret. Every other kind is crewed through its lease (decision 0044).
|
|
76
|
+
*/
|
|
77
|
+
export declare function isConsoleShip(ship: Pick<Ship, 'kind'>): boolean;
|
|
53
78
|
/** The scopes every agent ship gets at creation: it sends and receives; commissioning may add fleet scopes (ADR 0002). */
|
|
54
79
|
export declare const AGENT_SCOPES: readonly Scope[];
|
|
55
|
-
export type CommissionRefusal = DomainError<'INVALID_SHIP_NAME' | 'SHIP_NAME_RESERVED' | 'INVALID_SHIP_TYPE' | 'INVALID_SHIP_NOTE' | 'SHIP_NAME_TAKEN'>;
|
|
80
|
+
export type CommissionRefusal = DomainError<'INVALID_SHIP_NAME' | 'SHIP_NAME_RESERVED' | 'INVALID_SHIP_TYPE' | 'INVALID_SHIP_NOTE' | 'SHIP_NAME_TAKEN' | 'KIND_COMMISSIONED_BY_ARGO_ONLY' | 'INVALID_SCOPE' | 'SCOPE_NOT_DECLARED' | 'SCOPE_NOT_HELD' | 'PLUGIN_SCOPE_NOT_YOURS' | 'INVALID_OWNER'>;
|
|
56
81
|
/**
|
|
57
|
-
* A new
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
82
|
+
* A new ship, awaiting crew, and its ShipCommissioned event. An agent unless
|
|
83
|
+
* the commission states another kind; only argo commissions a person or app
|
|
84
|
+
* ship, to be true to what the ship is (decision 0044). The name is a handle,
|
|
85
|
+
* never `argo`, and unique among the fleet's active ships: `activeShipNamed`
|
|
86
|
+
* is the active ship that already holds it, if any, read while the name is
|
|
87
|
+
* locked. It gets the scopes every ship has and those asked for that the
|
|
88
|
+
* commissioner may grant (decision 0046): core scopes in their fixed order,
|
|
89
|
+
* then plugin scopes in name order, each once. Its owner is the
|
|
90
|
+
* commissioner's owner, argo by default; a commissioner holding
|
|
91
|
+
* fleet:on-behalf, a plugin's ship, may name instead the ship that asked it,
|
|
92
|
+
* whose owner it gets (decision 0045).
|
|
61
93
|
*/
|
|
62
|
-
export declare function
|
|
94
|
+
export declare function commissionShip(input: {
|
|
63
95
|
id: ShipId;
|
|
64
96
|
fleetId: FleetId;
|
|
65
97
|
name: string;
|
|
66
98
|
type: string;
|
|
99
|
+
kind?: CommissionedShipKind;
|
|
100
|
+
/** The ship that commissions it, and the fleet's argo: the new ship's owner is the commissioner's owner, argo by default (decision 0045). */
|
|
101
|
+
commissioner: Ship;
|
|
102
|
+
argoShipId: ShipId;
|
|
103
|
+
/** The ship that asked a plugin's ship for this one, whose owner the new ship gets (decision 0045). */
|
|
104
|
+
askingShip?: Ship;
|
|
105
|
+
/** 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). */
|
|
106
|
+
owner?: ShipId;
|
|
107
|
+
namedOwner?: Ship;
|
|
67
108
|
note?: string;
|
|
68
|
-
/**
|
|
69
|
-
|
|
109
|
+
/** Scopes added to the agent scopes (decision 0046). */
|
|
110
|
+
scopes?: readonly string[];
|
|
70
111
|
at: Date;
|
|
71
112
|
actor: Actor;
|
|
72
113
|
commission: {
|
|
@@ -76,10 +117,33 @@ export declare function commissionAgentShip(input: {
|
|
|
76
117
|
};
|
|
77
118
|
}, fleet: {
|
|
78
119
|
activeShipNamed: Ship | undefined;
|
|
120
|
+
/** The plugin namespaces the scopes name, with their declarers' names, by namespace. */
|
|
121
|
+
namespaces: ReadonlyMap<string, {
|
|
122
|
+
namespace: ScopeNamespace;
|
|
123
|
+
declarerName: string;
|
|
124
|
+
}>;
|
|
79
125
|
}): Result<{
|
|
80
126
|
ship: Ship;
|
|
81
127
|
events: NewEvent[];
|
|
82
128
|
}, CommissionRefusal>;
|
|
129
|
+
/** Why a ship's owner changed: argo set it, or its owner's ship retired and it fell to argo. */
|
|
130
|
+
export type OwnerChangedWhy = 'setByArgo' | 'ownerRetired';
|
|
131
|
+
export type ChangeOwnerRefusal = DomainError<'SHIP_HAS_NO_OWNER' | 'SHIP_ALREADY_RETIRED' | 'INVALID_OWNER'>;
|
|
132
|
+
/**
|
|
133
|
+
* The ship with its new owner and OwnerChanged (decision 0045). The owner is
|
|
134
|
+
* an active person's ship or argo; argo and the viewer have none, and a
|
|
135
|
+
* retired ship keeps the owner it had. The same owner again changes nothing
|
|
136
|
+
* and writes no event.
|
|
137
|
+
*/
|
|
138
|
+
export declare function changeOwner(ship: Ship, change: {
|
|
139
|
+
owner: Ship | undefined;
|
|
140
|
+
why: OwnerChangedWhy;
|
|
141
|
+
at: Date;
|
|
142
|
+
actor: Actor;
|
|
143
|
+
}): Result<{
|
|
144
|
+
ship: Ship;
|
|
145
|
+
events: NewEvent[];
|
|
146
|
+
}, ChangeOwnerRefusal>;
|
|
83
147
|
/**
|
|
84
148
|
* Awaiting crew, crewed or retired: derived from whether a session holds the
|
|
85
149
|
* ship's lease and whether the ship is retired, never set by hand.
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SCOPES, } from '@aeolus-fleet/common';
|
|
2
2
|
import { refuse } from '../shared/errors.js';
|
|
3
3
|
import { shipActor } from '../shared/events.js';
|
|
4
4
|
import { ok } from '../shared/result.js';
|
|
5
5
|
import { refuseEndedLease } from './lease.js';
|
|
6
|
+
import { mayGrant } from './scope-grant.js';
|
|
6
7
|
import { shipName, shipType } from './ship-handle.js';
|
|
7
8
|
import { shipNote } from './ship-note.js';
|
|
8
9
|
/** The operator ship's name. Reserved: no other ship can take it. */
|
|
@@ -20,6 +21,7 @@ export function operatorShip(input) {
|
|
|
20
21
|
note: null,
|
|
21
22
|
retiredAt: null,
|
|
22
23
|
commission: null,
|
|
24
|
+
owner: null,
|
|
23
25
|
};
|
|
24
26
|
}
|
|
25
27
|
/** The viewer ship's name, reserved as argo's is (decision 0022). */
|
|
@@ -41,19 +43,45 @@ export function viewerShip(input) {
|
|
|
41
43
|
note: null,
|
|
42
44
|
retiredAt: null,
|
|
43
45
|
commission: null,
|
|
46
|
+
owner: null,
|
|
44
47
|
};
|
|
45
48
|
}
|
|
46
49
|
/** The ships no session crews with a secret and no fleet action ends or renames, by kind, as their refusals name them. */
|
|
47
50
|
const PERMANENT_SHIPS = { operator: 'the operator ship', viewer: 'the viewer ship' };
|
|
51
|
+
/**
|
|
52
|
+
* Whether the ship is the console's own, argo or the viewer: always crewed,
|
|
53
|
+
* with no secret. Every other kind is crewed through its lease (decision 0044).
|
|
54
|
+
*/
|
|
55
|
+
export function isConsoleShip(ship) {
|
|
56
|
+
return PERMANENT_SHIPS[ship.kind] !== undefined;
|
|
57
|
+
}
|
|
48
58
|
/** The scopes every agent ship gets at creation: it sends and receives; commissioning may add fleet scopes (ADR 0002). */
|
|
49
59
|
export const AGENT_SCOPES = ['messages:send', 'messages:receive'];
|
|
60
|
+
/** Whether the scope is one of core's, not a plugin's. */
|
|
61
|
+
function isCoreScope(scope) {
|
|
62
|
+
return SCOPES.some((core) => core === scope);
|
|
63
|
+
}
|
|
50
64
|
/**
|
|
51
|
-
* A new
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
65
|
+
* A new ship, awaiting crew, and its ShipCommissioned event. An agent unless
|
|
66
|
+
* the commission states another kind; only argo commissions a person or app
|
|
67
|
+
* ship, to be true to what the ship is (decision 0044). The name is a handle,
|
|
68
|
+
* never `argo`, and unique among the fleet's active ships: `activeShipNamed`
|
|
69
|
+
* is the active ship that already holds it, if any, read while the name is
|
|
70
|
+
* locked. It gets the scopes every ship has and those asked for that the
|
|
71
|
+
* commissioner may grant (decision 0046): core scopes in their fixed order,
|
|
72
|
+
* then plugin scopes in name order, each once. Its owner is the
|
|
73
|
+
* commissioner's owner, argo by default; a commissioner holding
|
|
74
|
+
* fleet:on-behalf, a plugin's ship, may name instead the ship that asked it,
|
|
75
|
+
* whose owner it gets (decision 0045).
|
|
55
76
|
*/
|
|
56
|
-
export function
|
|
77
|
+
export function commissionShip(input, fleet) {
|
|
78
|
+
const { kind = 'agent' } = input;
|
|
79
|
+
const isOnBehalf = input.commissioner.scopes.includes('fleet:on-behalf');
|
|
80
|
+
if (kind !== 'agent' && input.commissioner.kind !== 'operator' && !(kind === 'app' && isOnBehalf)) {
|
|
81
|
+
return refuse('KIND_COMMISSIONED_BY_ARGO_ONLY', kind === 'app'
|
|
82
|
+
? 'Only argo, or a ship holding fleet:on-behalf such as the gateway, commissions an app ship: commission an agent ship instead'
|
|
83
|
+
: `Only argo commissions a ${kind} ship: commission an agent ship instead`);
|
|
84
|
+
}
|
|
57
85
|
const name = shipName(input.name);
|
|
58
86
|
if (!name.isOk) {
|
|
59
87
|
return name;
|
|
@@ -73,18 +101,37 @@ export function commissionAgentShip(input, fleet) {
|
|
|
73
101
|
if (fleet.activeShipNamed) {
|
|
74
102
|
return refuse('SHIP_NAME_TAKEN', `An active ship is already named ${name.value}`);
|
|
75
103
|
}
|
|
104
|
+
const asked = input.scopes ?? [];
|
|
105
|
+
const granter = { shipId: input.commissioner.id, kind: input.commissioner.kind, scopes: input.commissioner.scopes };
|
|
106
|
+
for (const scope of asked) {
|
|
107
|
+
const allowed = mayGrant(scope, { granter, namespaces: fleet.namespaces });
|
|
108
|
+
if (!allowed.isOk) {
|
|
109
|
+
return allowed;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (input.askingShip !== undefined && !isOnBehalf) {
|
|
113
|
+
return refuse('SCOPE_NOT_HELD', 'Naming the ship that asked for this one needs the fleet:on-behalf scope: commission without ownerOf');
|
|
114
|
+
}
|
|
115
|
+
if (input.owner !== undefined) {
|
|
116
|
+
const named = checkNamedOwner({ kind, isOnBehalf, askingShip: input.askingShip, namedOwner: input.namedOwner });
|
|
117
|
+
if (!named.isOk) {
|
|
118
|
+
return named;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
76
121
|
const { id, fleetId, at, actor } = input;
|
|
122
|
+
const owner = ownerAtCommission(input);
|
|
77
123
|
const ship = {
|
|
78
124
|
id,
|
|
79
125
|
fleetId,
|
|
80
126
|
name: name.value,
|
|
81
127
|
type: type.value,
|
|
82
|
-
kind
|
|
83
|
-
scopes: [...AGENT_SCOPES, ...
|
|
128
|
+
kind,
|
|
129
|
+
scopes: [...SCOPES.filter((scope) => AGENT_SCOPES.includes(scope) || asked.includes(scope)), ...[...new Set(asked.filter((scope) => !isCoreScope(scope)))].toSorted()],
|
|
84
130
|
note: note.value,
|
|
85
131
|
createdAt: at,
|
|
86
132
|
retiredAt: null,
|
|
87
133
|
commission: input.commission,
|
|
134
|
+
owner: owner.ownerShipId,
|
|
88
135
|
};
|
|
89
136
|
return ok({
|
|
90
137
|
ship,
|
|
@@ -97,9 +144,80 @@ export function commissionAgentShip(input, fleet) {
|
|
|
97
144
|
shipId: id,
|
|
98
145
|
details: { name: ship.name, type: ship.type, kind: ship.kind, scopes: ship.scopes.join(' ') },
|
|
99
146
|
},
|
|
147
|
+
{ fleetId, type: 'OwnerSet', occurredAt: at, actor, shipId: id, details: owner },
|
|
100
148
|
],
|
|
101
149
|
});
|
|
102
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* The ship with its new owner and OwnerChanged (decision 0045). The owner is
|
|
153
|
+
* an active person's ship or argo; argo and the viewer have none, and a
|
|
154
|
+
* retired ship keeps the owner it had. The same owner again changes nothing
|
|
155
|
+
* and writes no event.
|
|
156
|
+
*/
|
|
157
|
+
export function changeOwner(ship, change) {
|
|
158
|
+
const { owner } = change;
|
|
159
|
+
if (isConsoleShip(ship)) {
|
|
160
|
+
return refuse('SHIP_HAS_NO_OWNER', `${ship.name} is the console's own ship: it has no owner`);
|
|
161
|
+
}
|
|
162
|
+
if (ship.retiredAt !== null) {
|
|
163
|
+
return refuse('SHIP_ALREADY_RETIRED', `${ship.name} is retired: it keeps the owner it had`);
|
|
164
|
+
}
|
|
165
|
+
if (owner?.retiredAt !== null || (owner.kind !== 'person' && owner.kind !== 'operator')) {
|
|
166
|
+
return refuse('INVALID_OWNER', "An owner is an active person's ship or argo");
|
|
167
|
+
}
|
|
168
|
+
if (ship.owner === owner.id) {
|
|
169
|
+
return ok({ ship, events: [] });
|
|
170
|
+
}
|
|
171
|
+
return ok({
|
|
172
|
+
ship: { ...ship, owner: owner.id },
|
|
173
|
+
events: [
|
|
174
|
+
{
|
|
175
|
+
fleetId: ship.fleetId,
|
|
176
|
+
type: 'OwnerChanged',
|
|
177
|
+
occurredAt: change.at,
|
|
178
|
+
actor: change.actor,
|
|
179
|
+
shipId: ship.id,
|
|
180
|
+
details: { fromShipId: ship.owner, toShipId: owner.id, why: change.why },
|
|
181
|
+
},
|
|
182
|
+
],
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* The owner argo picked, named at commission: only for an app ship, only by a
|
|
187
|
+
* ship holding fleet:on-behalf, never beside an asking ship, and an active
|
|
188
|
+
* person's ship or argo, as any owner is (decision 0045).
|
|
189
|
+
*/
|
|
190
|
+
function checkNamedOwner(named) {
|
|
191
|
+
if (!named.isOnBehalf) {
|
|
192
|
+
return refuse('SCOPE_NOT_HELD', 'Naming the owner of a new ship needs the fleet:on-behalf scope: commission without owner');
|
|
193
|
+
}
|
|
194
|
+
if (named.kind !== 'app') {
|
|
195
|
+
return refuse('INVALID_OWNER', "Only an app ship gets the owner argo picked at commission: commission without owner, and argo sets an owner later");
|
|
196
|
+
}
|
|
197
|
+
if (named.askingShip !== undefined) {
|
|
198
|
+
return refuse('INVALID_OWNER', 'Name the owner or the ship that asked, not both');
|
|
199
|
+
}
|
|
200
|
+
const { namedOwner } = named;
|
|
201
|
+
if (namedOwner?.retiredAt !== null || (namedOwner.kind !== 'person' && namedOwner.kind !== 'operator')) {
|
|
202
|
+
return refuse('INVALID_OWNER', "An owner is an active person's ship or argo");
|
|
203
|
+
}
|
|
204
|
+
return ok(undefined);
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* The asking ship's owner, when a plugin's ship named it; else the
|
|
208
|
+
* commissioner's owner, inherited. argo for a ship that has none, as argo
|
|
209
|
+
* itself has none.
|
|
210
|
+
*/
|
|
211
|
+
function ownerAtCommission(input) {
|
|
212
|
+
const { commissioner, askingShip, namedOwner, argoShipId } = input;
|
|
213
|
+
if (namedOwner !== undefined) {
|
|
214
|
+
return { ownerShipId: namedOwner.id, how: 'named' };
|
|
215
|
+
}
|
|
216
|
+
if (askingShip !== undefined) {
|
|
217
|
+
return { ownerShipId: askingShip.owner ?? argoShipId, how: 'askingShipOwner', askingShipId: askingShip.id };
|
|
218
|
+
}
|
|
219
|
+
return commissioner.owner === null ? { ownerShipId: argoShipId, how: 'argoByDefault' } : { ownerShipId: commissioner.owner, how: 'inherited' };
|
|
220
|
+
}
|
|
103
221
|
/**
|
|
104
222
|
* Awaiting crew, crewed or retired: derived from whether a session holds the
|
|
105
223
|
* ship's lease and whether the ship is retired, never set by hand.
|
|
@@ -110,7 +228,7 @@ export function shipStatus(ship, lease) {
|
|
|
110
228
|
}
|
|
111
229
|
// argo and the viewer ship are the console's own: argo's crew is the console, signed in or not
|
|
112
230
|
// (decision 0012), and the viewer ship is a door into it, always open (decision 0022).
|
|
113
|
-
return lease.isCrewed || ship
|
|
231
|
+
return lease.isCrewed || isConsoleShip(ship) ? 'crewed' : 'awaitingCrew';
|
|
114
232
|
}
|
|
115
233
|
const STATUS_WORDS = {
|
|
116
234
|
awaitingCrew: 'awaiting crew',
|
|
@@ -122,7 +240,7 @@ const STATUS_WORDS = {
|
|
|
122
240
|
* it has no secret, and only the operator's console sign-in crews it (ADR 0012).
|
|
123
241
|
*/
|
|
124
242
|
export function checkCanIssueStartingPrompt(ship, lease) {
|
|
125
|
-
if (ship
|
|
243
|
+
if (isConsoleShip(ship)) {
|
|
126
244
|
return refuse('OPERATOR_SHIP_GETS_NO_STARTING_PROMPT', `${ship.name} has no secret: only the operator's console sign-in crews it, so it gets no starting prompt`);
|
|
127
245
|
}
|
|
128
246
|
const status = shipStatus(ship, lease);
|
|
@@ -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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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A crew's statement (decision 0047): what its ship is and offers, kept with
|
|
3
|
+
* the lease and versioned, so it goes when the lease ends and the next crew
|
|
4
|
+
* starts with none. Its shape is common's, checked at the edge; nothing here
|
|
5
|
+
* acts on it. Until a crew states one, the commission note stands in.
|
|
6
|
+
*/
|
|
7
|
+
import type { DiscoveredStatement, Statement } from '@aeolus-fleet/common';
|
|
8
|
+
import type { Crew } from '../shared/caller.js';
|
|
9
|
+
import { type NewEvent } from '../shared/events.js';
|
|
10
|
+
/** The statement a lease holds, with its version: 1 for the first, one more on every change. */
|
|
11
|
+
export interface StatedStatement {
|
|
12
|
+
statement: Statement;
|
|
13
|
+
version: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The crew states its statement, whole: at the next version, with
|
|
17
|
+
* StatementSet caused by its ship, holding the lease, the version and how
|
|
18
|
+
* many capabilities, never the statement. The same statement again changes
|
|
19
|
+
* nothing and writes no event.
|
|
20
|
+
*/
|
|
21
|
+
export declare function stateStatement(current: StatedStatement | null, input: {
|
|
22
|
+
crew: Crew;
|
|
23
|
+
statement: Statement;
|
|
24
|
+
at: Date;
|
|
25
|
+
}): {
|
|
26
|
+
stated: StatedStatement;
|
|
27
|
+
events: NewEvent[];
|
|
28
|
+
};
|
|
29
|
+
/** A ship's statement as discovery shows it: its crew's while one is stated, else its commission note, else none. */
|
|
30
|
+
export declare function discoveredStatementOf(ship: {
|
|
31
|
+
note: string | null;
|
|
32
|
+
}, stated: StatedStatement | null): DiscoveredStatement;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { shipActor } from '../shared/events.js';
|
|
2
|
+
/**
|
|
3
|
+
* The crew states its statement, whole: at the next version, with
|
|
4
|
+
* StatementSet caused by its ship, holding the lease, the version and how
|
|
5
|
+
* many capabilities, never the statement. The same statement again changes
|
|
6
|
+
* nothing and writes no event.
|
|
7
|
+
*/
|
|
8
|
+
export function stateStatement(current, input) {
|
|
9
|
+
const { crew, statement, at } = input;
|
|
10
|
+
if (current !== null && canonicalJson(current.statement) === canonicalJson(statement)) {
|
|
11
|
+
return { stated: current, events: [] };
|
|
12
|
+
}
|
|
13
|
+
const stated = { statement, version: (current?.version ?? 0) + 1 };
|
|
14
|
+
return {
|
|
15
|
+
stated,
|
|
16
|
+
events: [
|
|
17
|
+
{
|
|
18
|
+
fleetId: crew.fleetId,
|
|
19
|
+
type: 'StatementSet',
|
|
20
|
+
occurredAt: at,
|
|
21
|
+
actor: shipActor(crew.shipId),
|
|
22
|
+
shipId: crew.shipId,
|
|
23
|
+
details: { leaseId: crew.leaseId, version: stated.version, capabilities: statement.capabilities.length },
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/** A ship's statement as discovery shows it: its crew's while one is stated, else its commission note, else none. */
|
|
29
|
+
export function discoveredStatementOf(ship, stated) {
|
|
30
|
+
if (stated !== null) {
|
|
31
|
+
return { by: 'crew', version: stated.version, ...stated.statement };
|
|
32
|
+
}
|
|
33
|
+
return ship.note === null ? null : { by: 'commission', note: ship.note };
|
|
34
|
+
}
|
|
35
|
+
/** JSON with every object's keys in order, so two statements that differ only in key order are the same. */
|
|
36
|
+
function canonicalJson(value) {
|
|
37
|
+
return JSON.stringify(value, (_key, held) => held !== null && typeof held === 'object' && !Array.isArray(held) ? Object.fromEntries(Object.entries(held).sort(([one], [other]) => one.localeCompare(other))) : held);
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=statement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statement.js","sourceRoot":"","sources":["../../../src/domain/registry/statement.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAiB,MAAM,qBAAqB,CAAC;AAQ/D;;;;;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,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC7B,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"}
|
|
@@ -21,7 +21,7 @@ export function createUnassignLabel(deps) {
|
|
|
21
21
|
return refuse('LABEL_VALUE_NOT_FOUND', `The fleet has no label value ${input.valueId}`);
|
|
22
22
|
}
|
|
23
23
|
const owner = await tx.ships.find(fleetId, label.ownerShipId);
|
|
24
|
-
const unassigned = unassignLabel({ label, ownerName: owner?.name ?? label.ownerShipId, carried: await tx.labels.carriedBy(fleetId, ship.id) }, { callerShipId: caller.shipId, valueId: input.valueId, at: deps.clock.now(), actor: shipActor(caller.shipId) });
|
|
24
|
+
const unassigned = unassignLabel({ label, ownerName: owner?.name ?? label.ownerShipId, ship, carried: await tx.labels.carriedBy(fleetId, ship.id) }, { callerShipId: caller.shipId, callerKind: caller.kind, valueId: input.valueId, at: deps.clock.now(), actor: shipActor(caller.shipId) });
|
|
25
25
|
if (!unassigned.isOk) {
|
|
26
26
|
return unassigned;
|
|
27
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unassign-label.js","sourceRoot":"","sources":["../../../src/domain/registry/unassign-label.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,SAAS,EAAiB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,aAAa,EAA6B,MAAM,YAAY,CAAC;AAatE;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAA0E;IAC5G,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CACvB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAoD,EAAE;QAC1E,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAC3B,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,KAAK,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1E,sFAAsF;QACtF,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/D,OAAO,MAAM,CAAC,uBAAuB,EAAE,gCAAgC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,aAAa,CAC9B,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,IAAI,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"unassign-label.js","sourceRoot":"","sources":["../../../src/domain/registry/unassign-label.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,SAAS,EAAiB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,aAAa,EAA6B,MAAM,YAAY,CAAC;AAatE;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAA0E;IAC5G,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CACvB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAoD,EAAE;QAC1E,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAC3B,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,KAAK,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1E,sFAAsF;QACtF,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/D,OAAO,MAAM,CAAC,uBAAuB,EAAE,gCAAgC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,aAAa,CAC9B,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAClH,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CACxI,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACrB,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YAChC,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACxD,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC5C,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"}
|
|
@@ -9,10 +9,14 @@ export interface ShipIdentity {
|
|
|
9
9
|
fleetId: FleetId;
|
|
10
10
|
name: string;
|
|
11
11
|
type: string;
|
|
12
|
+
/** Its owner's id and name, both null for argo and the viewer (decision 0045). */
|
|
13
|
+
ownerShipId: ShipId | null;
|
|
14
|
+
ownerName: string | null;
|
|
12
15
|
}
|
|
13
16
|
export type Whoami = (caller: Caller) => Promise<Result<ShipIdentity, DomainError<'SHIP_NOT_FOUND'>>>;
|
|
14
17
|
/**
|
|
15
|
-
* Use case: tells the caller which ship it crews: id, fleet, name and
|
|
18
|
+
* Use case: tells the caller which ship it crews: id, fleet, name, type and
|
|
19
|
+
* owner.
|
|
16
20
|
* Any caller may ask, whatever its scopes: it learns only about itself.
|
|
17
21
|
*/
|
|
18
22
|
export declare function createWhoami(deps: {
|