@aeolus-fleet/core 0.26.1 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/adapters/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 +8 -0
- package/dist/adapters/prisma/generated/client.d.ts +8 -0
- package/dist/adapters/prisma/generated/enums.d.ts +2 -0
- package/dist/adapters/prisma/generated/enums.js +3 -1
- package/dist/adapters/prisma/generated/enums.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/class.d.ts +11 -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 +94 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js +18 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +18 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +18 -1
- 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 +275 -0
- package/dist/adapters/prisma/generated/models/Lease.d.ts +113 -1
- package/dist/adapters/prisma/generated/models/NetworkSettings.d.ts +151 -19
- 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 +983 -55
- package/dist/adapters/prisma/generated/models.d.ts +1 -0
- package/dist/adapters/prisma/health.js +27 -7
- package/dist/adapters/prisma/health.js.map +1 -1
- package/dist/adapters/prisma/history.js +14 -70
- package/dist/adapters/prisma/history.js.map +1 -1
- package/dist/adapters/prisma/messaging.js +27 -34
- package/dist/adapters/prisma/messaging.js.map +1 -1
- package/dist/adapters/prisma/network.js +39 -12
- package/dist/adapters/prisma/network.js.map +1 -1
- package/dist/adapters/prisma/registry.js +65 -11
- package/dist/adapters/prisma/registry.js.map +1 -1
- package/dist/adapters/prisma/rows.d.ts +3 -0
- package/dist/adapters/prisma/rows.js +20 -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 +2 -1
- package/dist/adapters/prisma/unit-of-work.js +2 -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 +20 -4
- package/dist/adapters/trpc/fleet.d.ts +179 -82
- package/dist/adapters/trpc/fleet.js +117 -53
- package/dist/adapters/trpc/fleet.js.map +1 -1
- package/dist/adapters/trpc/router.d.ts +231 -80
- package/dist/adapters/trpc/ship-contract.js +4 -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 +71 -3
- package/dist/adapters/trpc/ship.js +42 -5
- package/dist/adapters/trpc/ship.js.map +1 -1
- package/dist/adapters/trpc/trpc.d.ts +6 -5
- package/dist/adapters/trpc/trpc.js +76 -21
- 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/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/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/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 +9 -3
- package/dist/domain/messaging/receive-deliveries.d.ts +2 -0
- package/dist/domain/messaging/receive-deliveries.js +1 -0
- package/dist/domain/messaging/receive-deliveries.js.map +1 -1
- 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 +63 -4
- package/dist/domain/registry/check-reach.js +107 -11
- package/dist/domain/registry/check-reach.js.map +1 -1
- package/dist/domain/registry/commission-ship.d.ts +17 -8
- package/dist/domain/registry/commission-ship.js +24 -10
- package/dist/domain/registry/commission-ship.js.map +1 -1
- 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 +28 -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 +12 -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/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 +84 -24
- package/dist/domain/registry/network-settings.js +134 -45
- package/dist/domain/registry/network-settings.js.map +1 -1
- package/dist/domain/registry/ports.d.ts +63 -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 +23 -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-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 +62 -0
- package/dist/domain/registry/read-reach.js +78 -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 +6 -1
- package/dist/domain/registry/recrew-ship.js.map +1 -1
- package/dist/domain/registry/release-ship.d.ts +6 -3
- package/dist/domain/registry/release-ship.js +7 -7
- 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 +16 -7
- package/dist/domain/registry/retire-ship.js +46 -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 +70 -10
- package/dist/domain/registry/ship.js +95 -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/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 +9 -2
- package/dist/domain/shared/health.js +9 -3
- package/dist/domain/shared/health.js.map +1 -1
- package/dist/domain/shared/history.d.ts +9 -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 +4 -1
- package/dist/domain/shared/read-health.js +7 -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-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 +1 -1
- package/dist/domain/shared/stuck.js.map +1 -1
- package/dist/wiring.d.ts +18 -4
- package/dist/wiring.js +37 -18
- package/dist/wiring.js.map +1 -1
- package/package.json +2 -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 +66 -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 +59 -0
- package/src/adapters/prisma/migrations/20261019110000_events_fleet_id_occurred_at/migration.sql +2 -0
- package/src/adapters/prisma/schema.prisma +47 -2
- 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
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The fleet's network settings (decision 0034): which ships may send to
|
|
3
|
-
* which. A rule says that the ships
|
|
4
|
-
* the ships matching another; allow-only,
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* The fleet's network settings (decision 0034): which ships may send to,
|
|
3
|
+
* read or manage which. A rule names its verb and says that the ships
|
|
4
|
+
* matching one selector may do it to the ships matching another; allow-only,
|
|
5
|
+
* no deny rules, no precedence. Beside its rules a fleet holds the switches
|
|
6
|
+
* of the built-in rules that can be off, with a version that moves on every
|
|
7
|
+
* change, so a refusal names the settings that refused it.
|
|
7
8
|
*/
|
|
8
|
-
import { ANY_LABEL_VALUE, NETWORK_RULES_MAX, SAME_LABEL_VALUE, SHIP_LABELS_MAX, } from '@aeolus-fleet/common';
|
|
9
|
+
import { ANY_LABEL_VALUE, NETWORK_RULES_MAX, NETWORK_VERBS, SAME_LABEL_VALUE, SHIP_LABELS_MAX, isOwnerTerm, } from '@aeolus-fleet/common';
|
|
9
10
|
import { refuse } from '../shared/errors.js';
|
|
10
11
|
import { ok } from '../shared/result.js';
|
|
11
|
-
/**
|
|
12
|
+
/** Every built-in rule on: what a fleet starts with, and what no networking plugin leaves. */
|
|
13
|
+
export const BUILT_INS_ON = { isViewerReadOn: true, open: { send: true, read: true, manage: true } };
|
|
14
|
+
/** A fleet that never set rules: none, every built-in rule on, at version 0, without a plugin. */
|
|
12
15
|
export function noNetworkSettings(fleetId) {
|
|
13
|
-
return { fleetId, rules:
|
|
16
|
+
return { fleetId, rules: [], builtIns: BUILT_INS_ON, version: 0, plugin: null };
|
|
14
17
|
}
|
|
15
18
|
function refuseNotThePlugin() {
|
|
16
19
|
return refuse('NOT_THE_NETWORK_PLUGIN', "Only the fleet's networking plugin does this (decision 0035)");
|
|
@@ -47,15 +50,16 @@ export function registerNetworkPlugin(current, change) {
|
|
|
47
50
|
});
|
|
48
51
|
}
|
|
49
52
|
/**
|
|
50
|
-
* The fleet's plugin goes, and its rules with it
|
|
51
|
-
* (decision 0035), at the next version, with
|
|
53
|
+
* The fleet's plugin goes, and its rules with it, and the open rules are on
|
|
54
|
+
* again: no plugin is all-to-all (decision 0035), at the next version, with
|
|
55
|
+
* NetworkPluginUnregistered. The viewer reading stays as argo set it. Only
|
|
52
56
|
* the plugin's own ship unregisters it; its retirement does too.
|
|
53
57
|
*/
|
|
54
58
|
export function unregisterNetworkPlugin(current, change) {
|
|
55
59
|
if (current.plugin?.shipId !== change.shipId) {
|
|
56
60
|
return refuseNotThePlugin();
|
|
57
61
|
}
|
|
58
|
-
const settings = { fleetId: current.fleetId, rules:
|
|
62
|
+
const settings = { fleetId: current.fleetId, rules: [], builtIns: { ...current.builtIns, open: BUILT_INS_ON.open }, version: current.version + 1, plugin: null };
|
|
59
63
|
return ok({
|
|
60
64
|
settings,
|
|
61
65
|
events: [
|
|
@@ -86,16 +90,14 @@ export function setNetworkRules(current, change) {
|
|
|
86
90
|
if (current.plugin?.shipId !== change.shipId) {
|
|
87
91
|
return refuseNotThePlugin();
|
|
88
92
|
}
|
|
89
|
-
if (rules
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
return refuse('INVALID_NETWORK_RULES', `${invalid} (decision 0034)`);
|
|
96
|
-
}
|
|
93
|
+
if (rules.length > NETWORK_RULES_MAX + declaredRules) {
|
|
94
|
+
return refuse('INVALID_NETWORK_RULES', `A fleet holds at most ${String(NETWORK_RULES_MAX)} network rules of argo's plus the ${String(declaredRules)} its ships declared (decision 0037)`);
|
|
95
|
+
}
|
|
96
|
+
const invalid = rules.map(invalidRule).find((broken) => broken !== undefined);
|
|
97
|
+
if (invalid !== undefined) {
|
|
98
|
+
return refuse('INVALID_NETWORK_RULES', `${invalid} (decision 0034)`);
|
|
97
99
|
}
|
|
98
|
-
const settings = { ...current, rules: rules
|
|
100
|
+
const settings = { ...current, rules: rules.map(copyOfRule), version: current.version + 1 };
|
|
99
101
|
return ok({
|
|
100
102
|
settings,
|
|
101
103
|
events: [
|
|
@@ -104,7 +106,47 @@ export function setNetworkRules(current, change) {
|
|
|
104
106
|
fleetId: current.fleetId,
|
|
105
107
|
occurredAt: change.at,
|
|
106
108
|
actor: change.actor,
|
|
107
|
-
details: { version: settings.version, rules: rules
|
|
109
|
+
details: { version: settings.version, rules: rules.length },
|
|
110
|
+
},
|
|
111
|
+
],
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* A built-in rule turned on or off, as its own action (decision 0034): the
|
|
116
|
+
* viewer reading by argo, open for one verb by the fleet's networking plugin.
|
|
117
|
+
* argo, the owner and the answer are never off, so turning them is refused.
|
|
118
|
+
* A change moves the version and writes BuiltInRuleChanged; a rule already
|
|
119
|
+
* as asked changes nothing.
|
|
120
|
+
*/
|
|
121
|
+
export function setBuiltInRule(current, change) {
|
|
122
|
+
const { input, caller } = change;
|
|
123
|
+
if (input.rule === 'argo' || input.rule === 'owner' || input.rule === 'answer') {
|
|
124
|
+
return refuse('BUILT_IN_RULE_FIXED', `The built-in rule ${input.rule} is never off (decision 0034)`);
|
|
125
|
+
}
|
|
126
|
+
if (input.rule === 'viewerRead' && !caller.isOperator) {
|
|
127
|
+
return refuse('NOT_THE_OPERATOR_SHIP', 'Only argo turns the viewer reading on or off (decision 0034)');
|
|
128
|
+
}
|
|
129
|
+
if (input.rule === 'open' && current.plugin?.shipId !== caller.shipId) {
|
|
130
|
+
return refuseNotThePlugin();
|
|
131
|
+
}
|
|
132
|
+
// The input names a verb for open and for open only (common's schema).
|
|
133
|
+
const { verb } = input;
|
|
134
|
+
const builtIns = input.rule === 'viewerRead' || verb === undefined
|
|
135
|
+
? { ...current.builtIns, isViewerReadOn: input.rule === 'viewerRead' ? input.isOn : current.builtIns.isViewerReadOn }
|
|
136
|
+
: { ...current.builtIns, open: { ...current.builtIns.open, [verb]: input.isOn } };
|
|
137
|
+
if (builtIns.isViewerReadOn === current.builtIns.isViewerReadOn && NETWORK_VERBS.every((verb) => builtIns.open[verb] === current.builtIns.open[verb])) {
|
|
138
|
+
return ok({ settings: current, events: [] });
|
|
139
|
+
}
|
|
140
|
+
const settings = { ...current, builtIns, version: current.version + 1 };
|
|
141
|
+
return ok({
|
|
142
|
+
settings,
|
|
143
|
+
events: [
|
|
144
|
+
{
|
|
145
|
+
type: 'BuiltInRuleChanged',
|
|
146
|
+
fleetId: current.fleetId,
|
|
147
|
+
occurredAt: change.at,
|
|
148
|
+
actor: change.actor,
|
|
149
|
+
details: { rule: input.rule, ...(verb === undefined ? {} : { verb }), isOn: input.isOn, version: settings.version },
|
|
108
150
|
},
|
|
109
151
|
],
|
|
110
152
|
});
|
|
@@ -124,18 +166,29 @@ function invalidSelector(selector) {
|
|
|
124
166
|
function sameValueOnOneSide(rule) {
|
|
125
167
|
const [from, to] = [sameValueLabels(rule.from), sameValueLabels(rule.to)];
|
|
126
168
|
const alone = [...from.filter((labelId) => !to.includes(labelId)), ...to.filter((labelId) => !from.includes(labelId))][0];
|
|
127
|
-
|
|
169
|
+
if (alone !== undefined) {
|
|
170
|
+
return `A term of the same value binds its label on both sides: ${termText({ labelId: alone, value: SAME_LABEL_VALUE })} is on one side only`;
|
|
171
|
+
}
|
|
172
|
+
return hasSameOwner(rule.from) === hasSameOwner(rule.to)
|
|
173
|
+
? undefined
|
|
174
|
+
: `A term of the same owner binds the owner on both sides: ${termText({ owner: SAME_LABEL_VALUE })} is on one side only`;
|
|
128
175
|
}
|
|
129
|
-
/** A term as a refusal names it: an exact value by its id,
|
|
130
|
-
function termText(term) {
|
|
131
|
-
|
|
176
|
+
/** A term as a refusal names it: an exact value by its id, a label term by its label id and symbol, an owner term by `owner` and its value. */
|
|
177
|
+
export function termText(term) {
|
|
178
|
+
if (typeof term === 'string') {
|
|
179
|
+
return term;
|
|
180
|
+
}
|
|
181
|
+
return isOwnerTerm(term) ? `owner=${term.owner}` : `${term.labelId}=${term.value}`;
|
|
132
182
|
}
|
|
133
183
|
function sameValueLabels(selector) {
|
|
134
|
-
return selector.flatMap((term) => (typeof term !== 'string' && term.value === SAME_LABEL_VALUE ? [term.labelId] : []));
|
|
184
|
+
return selector.flatMap((term) => (typeof term !== 'string' && !isOwnerTerm(term) && term.value === SAME_LABEL_VALUE ? [term.labelId] : []));
|
|
185
|
+
}
|
|
186
|
+
function hasSameOwner(selector) {
|
|
187
|
+
return selector.some((term) => isOwnerTerm(term) && term.owner === SAME_LABEL_VALUE);
|
|
135
188
|
}
|
|
136
189
|
/** A copy of the rule, so what is kept never changes with what was given. */
|
|
137
190
|
export function copyOfRule(rule) {
|
|
138
|
-
return { from: rule.from.map(copyOfTerm), to: rule.to.map(copyOfTerm) };
|
|
191
|
+
return { verb: rule.verb, from: rule.from.map(copyOfTerm), to: rule.to.map(copyOfTerm) };
|
|
139
192
|
}
|
|
140
193
|
function copyOfTerm(term) {
|
|
141
194
|
return typeof term === 'string' ? term : { ...term };
|
|
@@ -154,36 +207,60 @@ export function isNetworkPluginResponding(plugin, crew) {
|
|
|
154
207
|
/**
|
|
155
208
|
* The rules in force: the settings' own, unless the fleet's networking plugin
|
|
156
209
|
* is not responding. Then what it declared applies: block-all leaves only
|
|
157
|
-
* the
|
|
158
|
-
*
|
|
210
|
+
* the built-in rules that are never off and the viewer reading, open-all
|
|
211
|
+
* open on for every verb (all-to-all), keep-latest the rules and switches it
|
|
212
|
+
* left last.
|
|
159
213
|
*/
|
|
160
214
|
export function rulesInForce(settings, isPluginResponding) {
|
|
161
|
-
const { plugin, rules } = settings;
|
|
215
|
+
const { plugin, rules, builtIns } = settings;
|
|
162
216
|
if (plugin === null || isPluginResponding) {
|
|
163
|
-
return { rules, whilePluginUnavailable: null };
|
|
217
|
+
return { rules, builtIns, whilePluginUnavailable: null };
|
|
164
218
|
}
|
|
165
219
|
switch (plugin.whileUnavailable) {
|
|
166
220
|
case 'block-all':
|
|
167
|
-
return { rules: [], whilePluginUnavailable: 'block-all' };
|
|
221
|
+
return { rules: [], builtIns: { ...builtIns, open: { send: false, read: false, manage: false } }, whilePluginUnavailable: 'block-all' };
|
|
168
222
|
case 'open-all':
|
|
169
|
-
return { rules:
|
|
223
|
+
return { rules, builtIns: { ...builtIns, open: BUILT_INS_ON.open }, whilePluginUnavailable: null };
|
|
170
224
|
case 'keep-latest':
|
|
171
|
-
return { rules, whilePluginUnavailable: 'keep-latest' };
|
|
225
|
+
return { rules, builtIns, whilePluginUnavailable: 'keep-latest' };
|
|
172
226
|
}
|
|
173
227
|
}
|
|
174
228
|
/**
|
|
175
|
-
*
|
|
176
|
-
*
|
|
177
|
-
* rules: argo reaches every ship and every ship reaches argo,
|
|
178
|
-
*
|
|
179
|
-
* the
|
|
229
|
+
* The rule that lets the sender do the verb to the recipient, or undefined
|
|
230
|
+
* when none does. The built-in rules that are never off hold whatever the
|
|
231
|
+
* rules: argo reaches every ship and every ship reaches argo, but reads argo
|
|
232
|
+
* only by a rule, so argo's messages are not every ship's to read; an owner's
|
|
233
|
+
* ship reaches the ships it owns (decision 0045), and a ship answers the sender of
|
|
234
|
+
* a message it received. The viewer reads every ship while that is on, and
|
|
235
|
+
* every ship reaches every ship by a verb while open is on for it. Otherwise
|
|
236
|
+
* a rule of the verb must match the sender with its `from` and the recipient
|
|
237
|
+
* with its `to`, named by its place in the list. The built-in rules come
|
|
238
|
+
* first, in that order, as the rule list shows them.
|
|
180
239
|
*/
|
|
181
|
-
export function
|
|
182
|
-
const { sender, recipient, isAnswerToSender } = send;
|
|
183
|
-
|
|
184
|
-
|
|
240
|
+
export function reachRuleOf(settings, send) {
|
|
241
|
+
const { verb, sender, recipient, isAnswerToSender } = send;
|
|
242
|
+
const { rules, builtIns } = settings;
|
|
243
|
+
if (sender.kind === 'operator' || (recipient.kind === 'operator' && verb !== 'read')) {
|
|
244
|
+
return { builtIn: 'argo' };
|
|
185
245
|
}
|
|
186
|
-
|
|
246
|
+
if (recipient.owner === sender.id) {
|
|
247
|
+
return { builtIn: 'owner' };
|
|
248
|
+
}
|
|
249
|
+
if (verb === 'send' && isAnswerToSender) {
|
|
250
|
+
return { builtIn: 'answer' };
|
|
251
|
+
}
|
|
252
|
+
if (verb === 'read' && sender.kind === 'viewer' && builtIns.isViewerReadOn) {
|
|
253
|
+
return { builtIn: 'viewerRead' };
|
|
254
|
+
}
|
|
255
|
+
if (builtIns.open[verb]) {
|
|
256
|
+
return { builtIn: 'open' };
|
|
257
|
+
}
|
|
258
|
+
const index = rules.findIndex((rule) => rule.verb === verb && matches(rule.from, { ship: sender, otherSide: recipient }) && matches(rule.to, { ship: recipient, otherSide: sender }));
|
|
259
|
+
return index === -1 ? undefined : { index };
|
|
260
|
+
}
|
|
261
|
+
/** Whether the settings let the sender do the verb to the recipient: some rule does (see reachRuleOf). */
|
|
262
|
+
export function allowsReach(settings, send) {
|
|
263
|
+
return reachRuleOf(settings, send) !== undefined;
|
|
187
264
|
}
|
|
188
265
|
/** A ship matches a selector when every term of it holds, combined with AND. */
|
|
189
266
|
function matches(selector, sides) {
|
|
@@ -193,13 +270,25 @@ function matches(selector, sides) {
|
|
|
193
270
|
* An exact value holds for a ship carrying it; any value for a ship carrying
|
|
194
271
|
* a value of the label; the same value when the ship and the other side carry
|
|
195
272
|
* one value of the label both, each such term on its own (a ship may carry
|
|
196
|
-
* several values of one label, decision 0031).
|
|
273
|
+
* several values of one label, decision 0031). A term of the owner holds for
|
|
274
|
+
* a ship owned by that ship, for a ship with an owner, or for a ship with the
|
|
275
|
+
* same owner as the other side.
|
|
197
276
|
*/
|
|
198
277
|
function holds(term, sides) {
|
|
199
278
|
const { ship, otherSide } = sides;
|
|
200
279
|
if (typeof term === 'string') {
|
|
201
280
|
return ship.labels.some((label) => label.valueId === term);
|
|
202
281
|
}
|
|
282
|
+
if (isOwnerTerm(term)) {
|
|
283
|
+
switch (term.owner) {
|
|
284
|
+
case ANY_LABEL_VALUE:
|
|
285
|
+
return ship.owner !== null;
|
|
286
|
+
case SAME_LABEL_VALUE:
|
|
287
|
+
return ship.owner !== null && ship.owner === otherSide.owner;
|
|
288
|
+
default:
|
|
289
|
+
return ship.owner === term.owner;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
203
292
|
const values = ship.labels.filter((label) => label.labelId === term.labelId);
|
|
204
293
|
switch (term.value) {
|
|
205
294
|
case ANY_LABEL_VALUE:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network-settings.js","sourceRoot":"","sources":["../../../src/domain/registry/network-settings.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"network-settings.js","sourceRoot":"","sources":["../../../src/domain/registry/network-settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DeliveryId, DeliveryState, FleetId, LabelId, LabelValueId, LeaseId, MessageId, ShipId } from '@aeolus-fleet/common';
|
|
1
|
+
import type { DeliveryId, DeliveryState, FleetId, LabelId, LabelValueId, LeaseId, MessageId, ScopeName, ShipId } from '@aeolus-fleet/common';
|
|
2
2
|
import type { Recipient } from '../shared/selector.js';
|
|
3
3
|
import type { ClearRequest } from './clear-request.js';
|
|
4
4
|
import type { CrewRequest } from './crew-request.js';
|
|
@@ -10,8 +10,10 @@ import type { Lease, Location } from './lease.js';
|
|
|
10
10
|
import type { DeclaredNetworkRules } from './declared-network-rules.js';
|
|
11
11
|
import type { NetworkSettings } from './network-settings.js';
|
|
12
12
|
import type { ReachRefusal } from './reach-refusal.js';
|
|
13
|
+
import type { ScopeNamespace } from './scope-namespace.js';
|
|
13
14
|
import type { Ship } from './ship.js';
|
|
14
15
|
import type { ShipReport } from './ship-report.js';
|
|
16
|
+
import type { StatedStatement } from './statement.js';
|
|
15
17
|
import type { Turn } from './turn.js';
|
|
16
18
|
/** The crew a report speaks for: its ship and lease, in its fleet. */
|
|
17
19
|
export interface CrewOfLease {
|
|
@@ -112,6 +114,8 @@ export interface ShipRepository {
|
|
|
112
114
|
findActiveByNameForShare(fleetId: FleetId, name: string): Promise<Ship | undefined>;
|
|
113
115
|
/** Whether at least one ship of the fleet with this type is not retired and receives: the viewer ship receives nothing (decision 0022). */
|
|
114
116
|
hasActiveShipOfType(fleetId: FleetId, type: string): Promise<boolean>;
|
|
117
|
+
/** Every ship of the fleet, retired ones and the viewer ship included. By id. */
|
|
118
|
+
list(fleetId: FleetId): Promise<Ship[]>;
|
|
115
119
|
/** The fleet's ships that are not retired and receive, argo included, never the viewer ship (decision 0022). By id. */
|
|
116
120
|
listActive(fleetId: FleetId): Promise<Ship[]>;
|
|
117
121
|
/** The fleet's ships of the type that may take a type delivery: not retired, never the viewer ship. By id. */
|
|
@@ -122,12 +126,49 @@ export interface ShipRepository {
|
|
|
122
126
|
shipId: ShipId;
|
|
123
127
|
name: string;
|
|
124
128
|
}): Promise<void>;
|
|
129
|
+
/** The active ships the owner owns, each locked as findForUpdate locks it, by id (decision 0045). */
|
|
130
|
+
listActiveOwnedByForUpdate(fleetId: FleetId, ownerShipId: ShipId): Promise<Ship[]>;
|
|
131
|
+
/** Gives the ship a new owner (decision 0045). */
|
|
132
|
+
setOwner(change: {
|
|
133
|
+
fleetId: FleetId;
|
|
134
|
+
shipId: ShipId;
|
|
135
|
+
ownerShipId: ShipId;
|
|
136
|
+
}): Promise<void>;
|
|
125
137
|
/** Marks the ship retired at `at`: never claimed or addressed again, its name free. */
|
|
126
138
|
retire(change: {
|
|
127
139
|
fleetId: FleetId;
|
|
128
140
|
shipId: ShipId;
|
|
129
141
|
at: Date;
|
|
130
142
|
}): Promise<void>;
|
|
143
|
+
/** Gives the ship these scopes, in this order, in place of the ones it held (decision 0046). */
|
|
144
|
+
setScopes(change: {
|
|
145
|
+
fleetId: FleetId;
|
|
146
|
+
shipId: ShipId;
|
|
147
|
+
scopes: readonly ScopeName[];
|
|
148
|
+
}): Promise<void>;
|
|
149
|
+
/** The ships not retired that hold any scope of this plugin namespace, each locked as findForUpdate locks it, by id (decision 0046). */
|
|
150
|
+
listActiveHoldingInForUpdate(fleetId: FleetId, namespace: string): Promise<Ship[]>;
|
|
151
|
+
/** The scopes of this plugin namespace that a ship not retired holds, each once, by name (decision 0046). */
|
|
152
|
+
scopesHeldIn(fleetId: FleetId, namespace: string): Promise<ScopeName[]>;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Outbound port: the plugin namespaces of a fleet (decision 0046), one per
|
|
156
|
+
* declaring ship, unique in the fleet. Lock order: the declaring or granted
|
|
157
|
+
* ship, then the namespace.
|
|
158
|
+
*/
|
|
159
|
+
export interface ScopeNamespaceRepository {
|
|
160
|
+
/** Holds the lock on this namespace in the fleet until the unit of work ends: a declaration, and a grant of its scopes, wait for each other. */
|
|
161
|
+
lockNamespace(fleetId: FleetId, namespace: string): Promise<void>;
|
|
162
|
+
/** The namespace, read without a lock. */
|
|
163
|
+
find(fleetId: FleetId, namespace: string): Promise<ScopeNamespace | undefined>;
|
|
164
|
+
/** The namespace this ship declared, if any. */
|
|
165
|
+
findByDeclarer(fleetId: FleetId, shipId: ShipId): Promise<ScopeNamespace | undefined>;
|
|
166
|
+
/** Every plugin namespace of the fleet, by namespace. */
|
|
167
|
+
list(fleetId: FleetId): Promise<ScopeNamespace[]>;
|
|
168
|
+
/** Stores the namespace with its whole list of scopes, replacing the list it had. */
|
|
169
|
+
save(namespace: ScopeNamespace): Promise<void>;
|
|
170
|
+
/** The namespace goes, freed for another ship. */
|
|
171
|
+
remove(fleetId: FleetId, namespace: string): Promise<void>;
|
|
131
172
|
}
|
|
132
173
|
/** Outbound port: leases, always within one fleet. */
|
|
133
174
|
export interface LeaseRepository {
|
|
@@ -167,6 +208,20 @@ export interface LeaseRepository {
|
|
|
167
208
|
leaseId: LeaseId;
|
|
168
209
|
report: ShipReport;
|
|
169
210
|
}): Promise<void>;
|
|
211
|
+
/** The lease's statement, the lease locked until the unit of work ends; undefined once it has ended (decision 0047). */
|
|
212
|
+
findStatementForUpdate(fleetId: FleetId, leaseId: LeaseId): Promise<{
|
|
213
|
+
stated: StatedStatement | null;
|
|
214
|
+
} | undefined>;
|
|
215
|
+
saveStatement(change: {
|
|
216
|
+
fleetId: FleetId;
|
|
217
|
+
leaseId: LeaseId;
|
|
218
|
+
stated: StatedStatement;
|
|
219
|
+
}): Promise<void>;
|
|
220
|
+
/** Every open lease of the fleet by its ship, with the statement it holds, read without a lock: who is crewed now, and what each crew stated. */
|
|
221
|
+
listOpenStatements(fleetId: FleetId): Promise<{
|
|
222
|
+
shipId: ShipId;
|
|
223
|
+
stated: StatedStatement | null;
|
|
224
|
+
}[]>;
|
|
170
225
|
/** The open lease's turn, locked until the unit of work ends, so two turn reports take turns; undefined once it has ended. */
|
|
171
226
|
findTurnForUpdate(fleetId: FleetId, leaseId: LeaseId): Promise<{
|
|
172
227
|
turn: Turn | null;
|
|
@@ -245,6 +300,8 @@ export interface ClearRequestRepository {
|
|
|
245
300
|
export interface NetworkSettingsRepository {
|
|
246
301
|
/** The fleet's settings, held shared until the unit of work ends; none at version 0 when it never set rules. */
|
|
247
302
|
findForShare(fleetId: FleetId): Promise<NetworkSettings>;
|
|
303
|
+
/** The fleet's settings as they stand, with no lock: for a call that takes them exclusively later, which a shared hold would deadlock against. */
|
|
304
|
+
find(fleetId: FleetId): Promise<NetworkSettings>;
|
|
248
305
|
/** The fleet's settings, held exclusively until the unit of work ends, even before the fleet first set rules. */
|
|
249
306
|
findForUpdate(fleetId: FleetId): Promise<NetworkSettings>;
|
|
250
307
|
save(settings: NetworkSettings): Promise<void>;
|
|
@@ -352,6 +409,11 @@ export interface ShipFacts {
|
|
|
352
409
|
id: ShipId;
|
|
353
410
|
name: string;
|
|
354
411
|
} | null;
|
|
412
|
+
/** The ship's owner by id and name; null for argo and the viewer (decision 0045). */
|
|
413
|
+
owner: {
|
|
414
|
+
id: ShipId;
|
|
415
|
+
name: string;
|
|
416
|
+
} | null;
|
|
355
417
|
/** The trierarchs that gave its crew request back, by id and name, oldest first (#382); none without a request. */
|
|
356
418
|
crewRequestGivenBack: {
|
|
357
419
|
trierarch: {
|
|
@@ -2,8 +2,9 @@ export { location, refuseEndedLease, type Lease, type LeaseEnded, type LeaseEndR
|
|
|
2
2
|
export { endLease, holdLease, isLeasePushed, markLeasePushed, takeOverOperatorLease, type HoldLeaseTx, type LeaseTx } from './leases.js';
|
|
3
3
|
export type { FleetRepository, InFlightDeliveries, LeaseRepository, ShipRepository } from './ports.js';
|
|
4
4
|
export { findPingableShip, type PingableShipTx, type UnpingableShip } from './pingable-ship.js';
|
|
5
|
-
export { checkReach, type CheckReachTx, type NotReachable } from './check-reach.js';
|
|
5
|
+
export { checkManage, checkRead, checkReach, keepingReachRefusal, type CheckManageTx, type CheckReachTx, type CheckReadTx, type NotReachable } from './check-reach.js';
|
|
6
6
|
export { resolveSelector, type ResolveSelectorTx, type UnresolvableSelector } from './resolve-selector.js';
|
|
7
7
|
export { findOperatorShip, findShip, findViewerShip, type FindShipTx, type ShipTx } from './ships.js';
|
|
8
|
-
export { OPERATOR_SHIP_NAME, type Ship } from './ship.js';
|
|
8
|
+
export { isConsoleShip, OPERATOR_SHIP_NAME, type Ship } from './ship.js';
|
|
9
9
|
export { appliedLimits, type AppliedLimitsTx } from './applied-limits.js';
|
|
10
|
+
export { readsEvent, readsMessage, readsShip, type MessageParties, type ReadReach, type ReadReachOf } from './read-reach.js';
|
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
export { location, refuseEndedLease } from './lease.js';
|
|
4
4
|
export { endLease, holdLease, isLeasePushed, markLeasePushed, takeOverOperatorLease } from './leases.js';
|
|
5
5
|
export { findPingableShip } from './pingable-ship.js';
|
|
6
|
-
export { checkReach } from './check-reach.js';
|
|
6
|
+
export { checkManage, checkRead, checkReach, keepingReachRefusal } from './check-reach.js';
|
|
7
7
|
export { resolveSelector } from './resolve-selector.js';
|
|
8
8
|
export { findOperatorShip, findShip, findViewerShip } from './ships.js';
|
|
9
|
-
export { OPERATOR_SHIP_NAME } from './ship.js';
|
|
9
|
+
export { isConsoleShip, OPERATOR_SHIP_NAME } from './ship.js';
|
|
10
10
|
export { appliedLimits } from './applied-limits.js';
|
|
11
|
+
export { readsEvent, readsMessage, readsShip } from './read-reach.js';
|
|
11
12
|
//# sourceMappingURL=public.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.js","sourceRoot":"","sources":["../../../src/domain/registry/public.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,2DAA2D;AAC3D,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAmE,MAAM,YAAY,CAAC;AACzH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,qBAAqB,EAAkC,MAAM,aAAa,CAAC;AAEzI,OAAO,EAAE,gBAAgB,EAA4C,MAAM,oBAAoB,CAAC;AAChG,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"public.js","sourceRoot":"","sources":["../../../src/domain/registry/public.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,2DAA2D;AAC3D,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAmE,MAAM,YAAY,CAAC;AACzH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,qBAAqB,EAAkC,MAAM,aAAa,CAAC;AAEzI,OAAO,EAAE,gBAAgB,EAA4C,MAAM,oBAAoB,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,mBAAmB,EAA8E,MAAM,kBAAkB,CAAC;AACvK,OAAO,EAAE,eAAe,EAAqD,MAAM,uBAAuB,CAAC;AAC3G,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,cAAc,EAAgC,MAAM,YAAY,CAAC;AACtG,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAa,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,aAAa,EAAwB,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAyD,MAAM,iBAAiB,CAAC"}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
|
-
import type { FleetId, ReachRefusalId, ShipId, WhileUnavailable } from '@aeolus-fleet/common';
|
|
1
|
+
import type { FleetId, NetworkVerb, ReachRefusalId, ShipId, WhileUnavailable } from '@aeolus-fleet/common';
|
|
2
2
|
import type { CarriedLabel } from './label.js';
|
|
3
|
-
/** A ship as a refusal saw it: its id, its name
|
|
3
|
+
/** A ship as a refusal saw it: its id, its name, the label values it carried then, by key, and its owner's ship then. */
|
|
4
4
|
export interface RefusedShip {
|
|
5
5
|
id: ShipId;
|
|
6
6
|
name: string;
|
|
7
7
|
labels: readonly CarriedLabel[];
|
|
8
|
+
owner: {
|
|
9
|
+
id: ShipId;
|
|
10
|
+
name: string;
|
|
11
|
+
} | null;
|
|
8
12
|
}
|
|
9
13
|
/**
|
|
10
14
|
* The record of a send the network rules refused (decision 0034): who tried
|
|
11
|
-
* to reach whom, both ships as they were at that moment, so a later rename
|
|
12
|
-
* relabelling keeps it true, and the version of the settings that refused it.
|
|
15
|
+
* to reach whom, both ships as they were at that moment, so a later rename,
|
|
16
|
+
* relabelling or change of owner keeps it true, and the version of the settings that refused it.
|
|
13
17
|
* Not an event: only argo reads it.
|
|
14
18
|
*/
|
|
15
19
|
export interface ReachRefusal {
|
|
@@ -17,6 +21,8 @@ export interface ReachRefusal {
|
|
|
17
21
|
id: ReachRefusalId;
|
|
18
22
|
at: Date;
|
|
19
23
|
sender: RefusedShip;
|
|
24
|
+
/** The plugin ship that read on behalf of the sender (decision 0034), as it was then; null for the sender's own call. */
|
|
25
|
+
askedBy: RefusedShip | null;
|
|
20
26
|
/** The ship it was for, or the type and each ship of it, none of which the sender may reach. */
|
|
21
27
|
recipient: {
|
|
22
28
|
kind: 'ship';
|
|
@@ -26,6 +32,8 @@ export interface ReachRefusal {
|
|
|
26
32
|
type: string;
|
|
27
33
|
ships: readonly RefusedShip[];
|
|
28
34
|
};
|
|
35
|
+
/** What the sender tried to do: send, or read for a read refused rather than filtered (decision 0034). */
|
|
36
|
+
verb: NetworkVerb;
|
|
29
37
|
settingsVersion: number;
|
|
30
38
|
/** What the networking plugin declared, when it refused while the plugin was not responding (decision 0035); null otherwise. */
|
|
31
39
|
whilePluginUnavailable: Exclude<WhileUnavailable, 'open-all'> | null;
|
|
@@ -1,8 +1,16 @@
|
|
|
1
|
+
import type { ShipId } from '@aeolus-fleet/common';
|
|
1
2
|
import type { Caller } from '../shared/caller.js';
|
|
2
3
|
import type { CrewRequest } from './crew-request.js';
|
|
3
|
-
import type { CrewRequestRepository } from './ports.js';
|
|
4
|
-
/**
|
|
5
|
-
|
|
4
|
+
import type { CrewRequestRepository, ShipRepository } from './ports.js';
|
|
5
|
+
/**
|
|
6
|
+
* A crew request as its trierarch reads it: which ship, with what settings,
|
|
7
|
+
* how it stands, whether its crew is final, and the ship's owner as it is
|
|
8
|
+
* now, by id and name, where its trouble goes (decision 0045).
|
|
9
|
+
*/
|
|
10
|
+
export type AssignedCrewRequest = Pick<CrewRequest, 'shipId' | 'settings' | 'settingsVersion' | 'requestedAt' | 'status' | 'isFinal'> & {
|
|
11
|
+
ownerShipId: ShipId | null;
|
|
12
|
+
ownerName: string | null;
|
|
13
|
+
};
|
|
6
14
|
export type ReadAssignedCrewRequests = (caller: Caller) => Promise<AssignedCrewRequest[]>;
|
|
7
15
|
/**
|
|
8
16
|
* Use case: a trierarch reads the crew requests assigned to its ship, oldest
|
|
@@ -11,4 +19,5 @@ export type ReadAssignedCrewRequests = (caller: Caller) => Promise<AssignedCrewR
|
|
|
11
19
|
*/
|
|
12
20
|
export declare function createReadAssignedCrewRequests(deps: {
|
|
13
21
|
crewRequests: Pick<CrewRequestRepository, 'listAssignedTo'>;
|
|
22
|
+
ships: Pick<ShipRepository, 'find'>;
|
|
14
23
|
}): ReadAssignedCrewRequests;
|
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
* (decision 0029). Its scope (crew:run) is checked before this runs.
|
|
5
5
|
*/
|
|
6
6
|
export function createReadAssignedCrewRequests(deps) {
|
|
7
|
-
return async (caller) =>
|
|
8
|
-
shipId
|
|
9
|
-
settings,
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
7
|
+
return async (caller) => {
|
|
8
|
+
const requests = await deps.crewRequests.listAssignedTo(caller.fleetId, caller.shipId);
|
|
9
|
+
return Promise.all(requests.map(async ({ shipId, settings, settingsVersion, requestedAt, status, isFinal }) => {
|
|
10
|
+
const ownerShipId = (await deps.ships.find(caller.fleetId, shipId))?.owner ?? null;
|
|
11
|
+
const owner = ownerShipId === null ? undefined : await deps.ships.find(caller.fleetId, ownerShipId);
|
|
12
|
+
return { shipId, settings, settingsVersion, requestedAt, status, isFinal, ownerShipId: owner?.id ?? null, ownerName: owner?.name ?? null };
|
|
13
|
+
}));
|
|
14
|
+
};
|
|
15
15
|
}
|
|
16
16
|
//# sourceMappingURL=read-assigned-crew-requests.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-assigned-crew-requests.js","sourceRoot":"","sources":["../../../src/domain/registry/read-assigned-crew-requests.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"read-assigned-crew-requests.js","sourceRoot":"","sources":["../../../src/domain/registry/read-assigned-crew-requests.ts"],"names":[],"mappings":"AAeA;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAAC,IAA0G;IACvJ,OAAO,KAAK,EAAE,MAAM,EAAE,EAAE;QACtB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACvF,OAAO,OAAO,CAAC,GAAG,CAChB,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;YACzF,MAAM,WAAW,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC;YACnF,MAAM,KAAK,GAAG,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACpG,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;QAC7I,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type BuiltInRuleState } from '@aeolus-fleet/common';
|
|
2
|
+
import type { Caller } from '../shared/caller.js';
|
|
3
|
+
import { type Result } from '../shared/result.js';
|
|
4
|
+
import type { UnitOfWork } from '../shared/unit-of-work.js';
|
|
5
|
+
import type { NetworkSettingsRepository } from './ports.js';
|
|
6
|
+
export interface ReadBuiltInRulesTx {
|
|
7
|
+
networkSettings: Pick<NetworkSettingsRepository, 'findForShare'>;
|
|
8
|
+
}
|
|
9
|
+
export type ReadBuiltInRules = (caller: Caller) => Promise<Result<BuiltInRuleState[], never>>;
|
|
10
|
+
/**
|
|
11
|
+
* Use case: every built-in rule of the caller's fleet as it is now (decision
|
|
12
|
+
* 0034), in the order the rule list shows them, first: argo, the owner and
|
|
13
|
+
* the answer, always on; the viewer reading as argo turned it; open per verb
|
|
14
|
+
* as the networking plugin turned it. Its scope (fleet:network, which argo
|
|
15
|
+
* holds) is checked before this runs. Read under the shared settings lock,
|
|
16
|
+
* so it answers one version.
|
|
17
|
+
*/
|
|
18
|
+
export declare function createReadBuiltInRules(deps: {
|
|
19
|
+
uow: UnitOfWork<ReadBuiltInRulesTx>;
|
|
20
|
+
}): ReadBuiltInRules;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { NETWORK_VERBS } from '@aeolus-fleet/common';
|
|
2
|
+
import { ok } from '../shared/result.js';
|
|
3
|
+
/**
|
|
4
|
+
* Use case: every built-in rule of the caller's fleet as it is now (decision
|
|
5
|
+
* 0034), in the order the rule list shows them, first: argo, the owner and
|
|
6
|
+
* the answer, always on; the viewer reading as argo turned it; open per verb
|
|
7
|
+
* as the networking plugin turned it. Its scope (fleet:network, which argo
|
|
8
|
+
* holds) is checked before this runs. Read under the shared settings lock,
|
|
9
|
+
* so it answers one version.
|
|
10
|
+
*/
|
|
11
|
+
export function createReadBuiltInRules(deps) {
|
|
12
|
+
return (caller) => deps.uow.run(async (tx) => {
|
|
13
|
+
const { builtIns } = await tx.networkSettings.findForShare(caller.fleetId);
|
|
14
|
+
return ok([
|
|
15
|
+
{ rule: 'argo', isOn: true },
|
|
16
|
+
{ rule: 'owner', isOn: true },
|
|
17
|
+
{ rule: 'answer', isOn: true },
|
|
18
|
+
{ rule: 'viewerRead', isOn: builtIns.isViewerReadOn },
|
|
19
|
+
...NETWORK_VERBS.map((verb) => ({ rule: 'open', verb, isOn: builtIns.open[verb] })),
|
|
20
|
+
]);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=read-built-in-rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-built-in-rules.js","sourceRoot":"","sources":["../../../src/domain/registry/read-built-in-rules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAyB,MAAM,sBAAsB,CAAC;AAG5E,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAUtD;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAA6C;IAClF,OAAO,CAAC,MAAM,EAAE,EAAE,CAChB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAA8C,EAAE;QACpE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3E,OAAO,EAAE,CAAC;YACR,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;YAC5B,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;YAC7B,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;YAC9B,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,CAAC,cAAc,EAAE;YACrD,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC7F,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import { type Caller } from '../shared/caller.js';
|
|
2
2
|
import type { ClearRequest } from './clear-request.js';
|
|
3
3
|
import type { ClearRequestRepository } from './ports.js';
|
|
4
|
+
import { type ReadReachOf } from './read-reach.js';
|
|
4
5
|
/** A pending clear request as it is read: whose, which worktree, who asked and when. */
|
|
5
6
|
export type ListedClearRequest = Omit<ClearRequest, 'fleetId'>;
|
|
6
7
|
export type ReadClearRequests = (caller: Caller) => Promise<ListedClearRequest[]>;
|
|
7
8
|
/**
|
|
8
9
|
* Use case: the pending clear requests (decision 0032). A caller with
|
|
9
|
-
* fleet:read reads every trierarch's
|
|
10
|
-
* clearing; a trierarch with crew:run reads
|
|
11
|
-
* checked before this runs.
|
|
10
|
+
* fleet:read reads every trierarch's for the ships it reads (decision 0034),
|
|
11
|
+
* so the console shows a worktree clearing; a trierarch with crew:run reads
|
|
12
|
+
* its own. One of the two scopes is checked before this runs.
|
|
12
13
|
*/
|
|
13
14
|
export declare function createReadClearRequests(deps: {
|
|
14
15
|
clearRequests: Pick<ClearRequestRepository, 'list' | 'listFor'>;
|
|
16
|
+
readReach: ReadReachOf;
|
|
15
17
|
}): ReadClearRequests;
|