@aeolus-fleet/core 0.26.0 → 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,20 @@
|
|
|
1
1
|
import { refuse } from './errors.js';
|
|
2
2
|
import { deliveryWayOf } from './delivery-way.js';
|
|
3
|
+
import { readsMessage } from '../registry/public.js';
|
|
4
|
+
import { partiesOf } from './history.js';
|
|
3
5
|
import { ok } from './result.js';
|
|
4
6
|
/**
|
|
5
7
|
* Use case: one message of the caller's fleet: its envelope, its whole
|
|
6
8
|
* payload, its replies, and its delivery's way through: who holds it, since
|
|
7
9
|
* when, the clocks that speak for it and every step newest first, from the
|
|
8
|
-
* event log.
|
|
10
|
+
* event log. A message outside the caller's read reach is answered as none,
|
|
11
|
+
* so its existence does not show (decision 0034). The caller's scope
|
|
12
|
+
* (fleet:read) is checked before this runs.
|
|
9
13
|
*/
|
|
10
14
|
export function createReadMessage(deps) {
|
|
11
15
|
return async (caller, { messageId }) => {
|
|
12
16
|
const found = await deps.history.message(caller.fleetId, messageId);
|
|
13
|
-
if (!found) {
|
|
17
|
+
if (!found || !readsMessage(await deps.readReach(caller), partiesOf(found, found.delivery.claimedBy))) {
|
|
14
18
|
return refuse('MESSAGE_NOT_FOUND', `No message ${messageId} in this fleet`);
|
|
15
19
|
}
|
|
16
20
|
const { history, replies, lease, overdue, crew, ...message } = found;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-message.js","sourceRoot":"","sources":["../../../src/domain/shared/read-message.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAoB,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"read-message.js","sourceRoot":"","sources":["../../../src/domain/shared/read-message.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAoB,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAoB,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,SAAS,EAAiF,MAAM,cAAc,CAAC;AACxH,OAAO,EAAE,EAAE,EAAe,MAAM,aAAa,CAAC;AAY9C;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAsD;IACtF,OAAO,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YACtG,OAAO,MAAM,CAAC,mBAAmB,EAAE,cAAc,SAAS,gBAAgB,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC;QACrE,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5F,OAAO,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IACtF,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type ReadReachOf } from '../registry/public.js';
|
|
1
2
|
import type { Caller } from './caller.js';
|
|
2
3
|
import { type ShipHistory, type ShownNeedsAttentionEntry } from './history.js';
|
|
3
4
|
export type ReadNeedsAttention = (caller: Caller) => Promise<ShownNeedsAttentionEntry[]>;
|
|
@@ -5,8 +6,10 @@ export type ReadNeedsAttention = (caller: Caller) => Promise<ShownNeedsAttention
|
|
|
5
6
|
* Use case: Needs attention, every undeliverable or not handled delivery of
|
|
6
7
|
* the caller's fleet, oldest first, each with its state and whole message,
|
|
7
8
|
* telling whether it is a ping, for the operator to resend or dismiss. Abandoned deliveries are never listed: they stay in the
|
|
8
|
-
* timelines only.
|
|
9
|
+
* timelines only. Only the deliveries whose message the caller reads
|
|
10
|
+
* (decision 0034). The caller's scope (fleet:read) is checked before this runs.
|
|
9
11
|
*/
|
|
10
12
|
export declare function createReadNeedsAttention(deps: {
|
|
11
13
|
history: ShipHistory;
|
|
14
|
+
readReach: ReadReachOf;
|
|
12
15
|
}): ReadNeedsAttention;
|
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { readsMessage } from '../registry/public.js';
|
|
2
|
+
import { partiesOf, withPing } from './history.js';
|
|
2
3
|
/**
|
|
3
4
|
* Use case: Needs attention, every undeliverable or not handled delivery of
|
|
4
5
|
* the caller's fleet, oldest first, each with its state and whole message,
|
|
5
6
|
* telling whether it is a ping, for the operator to resend or dismiss. Abandoned deliveries are never listed: they stay in the
|
|
6
|
-
* timelines only.
|
|
7
|
+
* timelines only. Only the deliveries whose message the caller reads
|
|
8
|
+
* (decision 0034). The caller's scope (fleet:read) is checked before this runs.
|
|
7
9
|
*/
|
|
8
10
|
export function createReadNeedsAttention(deps) {
|
|
9
|
-
return async (caller) =>
|
|
11
|
+
return async (caller) => {
|
|
12
|
+
const reach = await deps.readReach(caller);
|
|
13
|
+
return (await deps.history.needsAttention(caller.fleetId)).filter((entry) => readsMessage(reach, partiesOf(entry.message, entry.ship))).map((entry) => ({ ...entry, message: withPing(entry.message) }));
|
|
14
|
+
};
|
|
10
15
|
}
|
|
11
16
|
//# sourceMappingURL=read-needs-attention.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-needs-attention.js","sourceRoot":"","sources":["../../../src/domain/shared/read-needs-attention.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"read-needs-attention.js","sourceRoot":"","sources":["../../../src/domain/shared/read-needs-attention.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAoB,MAAM,uBAAuB,CAAC;AAEvE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAmD,MAAM,cAAc,CAAC;AAIpG;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAsD;IAC7F,OAAO,KAAK,EAAE,MAAM,EAAE,EAAE;QACtB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3C,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3M,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { ShipId } from '@aeolus-fleet/common';
|
|
2
2
|
import type { Caller } from './caller.js';
|
|
3
3
|
import { type DomainError } from './errors.js';
|
|
4
|
-
import
|
|
4
|
+
import { type ReadReachOf } from '../registry/public.js';
|
|
5
|
+
import { type HistoryMessage, type ShipHistory } from './history.js';
|
|
5
6
|
import { type Result } from './result.js';
|
|
6
7
|
/** The most messages the ship page lists: the newest ones. */
|
|
7
8
|
export declare const MESSAGES_LIMIT = 200;
|
|
@@ -24,8 +25,11 @@ export declare function previewOf(payload: string): string;
|
|
|
24
25
|
* Use case: the messages a ship sent, was sent, or claimed as a ship of their
|
|
25
26
|
* type, newest first, each with its delivery as it stands. A message to a type
|
|
26
27
|
* shows on the page of each ship that claimed it, never on every ship of the
|
|
27
|
-
* type.
|
|
28
|
+
* type. Only the messages the caller reads, through their sender or their
|
|
29
|
+
* recipient (decision 0034). The caller's scope (fleet:read) is checked
|
|
30
|
+
* before this runs.
|
|
28
31
|
*/
|
|
29
32
|
export declare function createReadShipMessages(deps: {
|
|
30
33
|
history: ShipHistory;
|
|
34
|
+
readReach: ReadReachOf;
|
|
31
35
|
}): ReadShipMessages;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { refuse } from './errors.js';
|
|
2
|
+
import { readsMessage } from '../registry/public.js';
|
|
3
|
+
import { partiesOf } from './history.js';
|
|
2
4
|
import { ok } from './result.js';
|
|
3
5
|
/** The most messages the ship page lists: the newest ones. */
|
|
4
6
|
export const MESSAGES_LIMIT = 200;
|
|
@@ -12,7 +14,9 @@ export function previewOf(payload) {
|
|
|
12
14
|
* Use case: the messages a ship sent, was sent, or claimed as a ship of their
|
|
13
15
|
* type, newest first, each with its delivery as it stands. A message to a type
|
|
14
16
|
* shows on the page of each ship that claimed it, never on every ship of the
|
|
15
|
-
* type.
|
|
17
|
+
* type. Only the messages the caller reads, through their sender or their
|
|
18
|
+
* recipient (decision 0034). The caller's scope (fleet:read) is checked
|
|
19
|
+
* before this runs.
|
|
16
20
|
*/
|
|
17
21
|
export function createReadShipMessages(deps) {
|
|
18
22
|
return async (caller, { shipId }) => {
|
|
@@ -20,7 +24,8 @@ export function createReadShipMessages(deps) {
|
|
|
20
24
|
if (!messages) {
|
|
21
25
|
return refuse('SHIP_NOT_FOUND', `No ship ${shipId} in this fleet`);
|
|
22
26
|
}
|
|
23
|
-
|
|
27
|
+
const reach = await deps.readReach(caller);
|
|
28
|
+
return ok(messages.filter((message) => readsMessage(reach, partiesOf(message, message.delivery.claimedBy))).map(({ payload, delivery, ...message }) => ({
|
|
24
29
|
...message,
|
|
25
30
|
preview: previewOf(payload),
|
|
26
31
|
delivery: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-ship-messages.js","sourceRoot":"","sources":["../../../src/domain/shared/read-ship-messages.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAoB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"read-ship-messages.js","sourceRoot":"","sources":["../../../src/domain/shared/read-ship-messages.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAoB,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,YAAY,EAAoB,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,SAAS,EAAyC,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,EAAE,EAAe,MAAM,aAAa,CAAC;AAE9C,8DAA8D;AAC9D,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAElC,4CAA4C;AAC5C,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAgBlC,4EAA4E;AAC5E,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAsD;IAC3F,OAAO,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;QAChG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,MAAM,CAAC,gBAAgB,EAAE,WAAW,MAAM,gBAAgB,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3C,OAAO,EAAE,CACP,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5I,GAAG,OAAO;YACV,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;YAC3B,QAAQ,EAAE;gBACR,EAAE,EAAE,QAAQ,CAAC,EAAE;gBACf,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,QAAQ,EAAE,QAAQ,CAAC,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,cAAc,KAAK,IAAI;aAC1E;SACF,CAAC,CAAC,CACJ,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ShipId } from '@aeolus-fleet/common';
|
|
2
2
|
import type { Caller } from './caller.js';
|
|
3
3
|
import { type DomainError } from './errors.js';
|
|
4
|
+
import { type ReadReachOf } from '../registry/public.js';
|
|
4
5
|
import { type ShipHistory, type ShownTimelineEntry } from './history.js';
|
|
5
6
|
import { type Result } from './result.js';
|
|
6
7
|
/** The most events a timeline shows: the newest ones. */
|
|
@@ -11,9 +12,11 @@ export type ReadShipTimeline = (caller: Caller, input: {
|
|
|
11
12
|
/**
|
|
12
13
|
* Use case: every change to a ship, newest first: the events naming it and
|
|
13
14
|
* the ones it caused, such as the messages it sent, each message telling
|
|
14
|
-
* whether it is a ping.
|
|
15
|
-
*
|
|
15
|
+
* whether it is a ping. Only the events the caller reads (decision 0034): a
|
|
16
|
+
* message's through the message, its ship standing for who claimed one to a
|
|
17
|
+
* type. The caller's scope (fleet:read) is checked before this runs.
|
|
16
18
|
*/
|
|
17
19
|
export declare function createReadShipTimeline(deps: {
|
|
18
20
|
history: ShipHistory;
|
|
21
|
+
readReach: ReadReachOf;
|
|
19
22
|
}): ReadShipTimeline;
|
|
@@ -1,20 +1,25 @@
|
|
|
1
1
|
import { refuse } from './errors.js';
|
|
2
|
-
import {
|
|
2
|
+
import { readsEvent } from '../registry/public.js';
|
|
3
|
+
import { partiesOf, withPing } from './history.js';
|
|
3
4
|
import { ok } from './result.js';
|
|
4
5
|
/** The most events a timeline shows: the newest ones. */
|
|
5
6
|
export const TIMELINE_LIMIT = 200;
|
|
6
7
|
/**
|
|
7
8
|
* Use case: every change to a ship, newest first: the events naming it and
|
|
8
9
|
* the ones it caused, such as the messages it sent, each message telling
|
|
9
|
-
* whether it is a ping.
|
|
10
|
-
*
|
|
10
|
+
* whether it is a ping. Only the events the caller reads (decision 0034): a
|
|
11
|
+
* message's through the message, its ship standing for who claimed one to a
|
|
12
|
+
* type. The caller's scope (fleet:read) is checked before this runs.
|
|
11
13
|
*/
|
|
12
14
|
export function createReadShipTimeline(deps) {
|
|
13
15
|
return async (caller, { shipId }) => {
|
|
14
16
|
const timeline = await deps.history.timeline(caller.fleetId, { shipId, limit: TIMELINE_LIMIT });
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
if (!timeline) {
|
|
18
|
+
return refuse('SHIP_NOT_FOUND', `No ship ${shipId} in this fleet`);
|
|
19
|
+
}
|
|
20
|
+
const reach = await deps.readReach(caller);
|
|
21
|
+
const read = timeline.filter((entry) => readsEvent(reach, { type: entry.type, shipId: entry.ship?.id ?? null, message: entry.message && partiesOf(entry.message, entry.ship) }));
|
|
22
|
+
return ok(read.map((entry) => ({ ...entry, message: entry.message === null ? null : withPing(entry.message) })));
|
|
18
23
|
};
|
|
19
24
|
}
|
|
20
25
|
//# sourceMappingURL=read-ship-timeline.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-ship-timeline.js","sourceRoot":"","sources":["../../../src/domain/shared/read-ship-timeline.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAoB,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,QAAQ,EAA6C,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"read-ship-timeline.js","sourceRoot":"","sources":["../../../src/domain/shared/read-ship-timeline.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAoB,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,UAAU,EAAoB,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAA6C,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,EAAE,EAAe,MAAM,aAAa,CAAC;AAE9C,yDAAyD;AACzD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAOlC;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAsD;IAC3F,OAAO,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;QAChG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,MAAM,CAAC,gBAAgB,EAAE,WAAW,MAAM,gBAAgB,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACjL,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import type { ComputerSide, DeliveryId, DeliveryState, MessageId, ShipId } from '@aeolus-fleet/common';
|
|
1
|
+
import type { ComputerSide, DeliveryId, DeliveryState, IdGenerator, MessageId, ShipId } from '@aeolus-fleet/common';
|
|
2
|
+
import { type CheckReadTx, type NotReachable } from '../registry/public.js';
|
|
2
3
|
import type { Caller } from './caller.js';
|
|
4
|
+
import type { Clock } from './clock.js';
|
|
3
5
|
import { type DeliveryWay, type WayLease } from './delivery-way.js';
|
|
4
6
|
import { type DomainError } from './errors.js';
|
|
5
7
|
import type { ShipHistory } from './history.js';
|
|
6
8
|
import { type Result } from './result.js';
|
|
9
|
+
import type { UnitOfWork } from './unit-of-work.js';
|
|
7
10
|
/** The ship's side of the way (#756): which part serves it, its turn, and what waits for it. */
|
|
8
11
|
export interface ShipWay {
|
|
9
12
|
/** The open lease's computer side (none: a pull lease) and its turn; null while no session crews the ship. */
|
|
@@ -28,14 +31,18 @@ export interface ShipWay {
|
|
|
28
31
|
}
|
|
29
32
|
export type ReadShipWay = (caller: Caller, input: {
|
|
30
33
|
shipId: ShipId;
|
|
31
|
-
}) => Promise<Result<ShipWay, DomainError<'SHIP_NOT_FOUND'
|
|
34
|
+
}) => Promise<Result<ShipWay, DomainError<'SHIP_NOT_FOUND'> | NotReachable>>;
|
|
32
35
|
/**
|
|
33
36
|
* Use case: one ship's side of the way: the trierarch or plugin watcher that
|
|
34
37
|
* receives and hands over for its pushed lease, or none on a pull lease, the
|
|
35
38
|
* turn its hooks reported, and its oldest delivery waiting, with its way, as
|
|
36
|
-
* the clocks count it.
|
|
37
|
-
*
|
|
39
|
+
* the clocks count it. A ship outside the caller's read reach is refused,
|
|
40
|
+
* and the refusal recorded (decision 0034). The caller's scope (fleet:read) is
|
|
41
|
+
* checked before this runs.
|
|
38
42
|
*/
|
|
39
43
|
export declare function createReadShipWay(deps: {
|
|
40
44
|
history: ShipHistory;
|
|
45
|
+
uow: UnitOfWork<CheckReadTx>;
|
|
46
|
+
clock: Clock;
|
|
47
|
+
ids: IdGenerator;
|
|
41
48
|
}): ReadShipWay;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { checkRead } from '../registry/public.js';
|
|
1
2
|
import { computerSideOf, deliveryWayOf } from './delivery-way.js';
|
|
2
3
|
import { refuse } from './errors.js';
|
|
3
4
|
import { ok } from './result.js';
|
|
@@ -5,8 +6,9 @@ import { ok } from './result.js';
|
|
|
5
6
|
* Use case: one ship's side of the way: the trierarch or plugin watcher that
|
|
6
7
|
* receives and hands over for its pushed lease, or none on a pull lease, the
|
|
7
8
|
* turn its hooks reported, and its oldest delivery waiting, with its way, as
|
|
8
|
-
* the clocks count it.
|
|
9
|
-
*
|
|
9
|
+
* the clocks count it. A ship outside the caller's read reach is refused,
|
|
10
|
+
* and the refusal recorded (decision 0034). The caller's scope (fleet:read) is
|
|
11
|
+
* checked before this runs.
|
|
10
12
|
*/
|
|
11
13
|
export function createReadShipWay(deps) {
|
|
12
14
|
return async (caller, { shipId }) => {
|
|
@@ -14,6 +16,11 @@ export function createReadShipWay(deps) {
|
|
|
14
16
|
if (!found) {
|
|
15
17
|
return refuse('SHIP_NOT_FOUND', `No ship ${shipId} in this fleet`);
|
|
16
18
|
}
|
|
19
|
+
// A refused read commits its record, then refuses.
|
|
20
|
+
const checked = await deps.uow.run(async (tx) => ok(await checkRead({ tx, ids: deps.ids }, { fleetId: caller.fleetId, readerShipId: caller.shipId, askedBy: caller.askedBy ?? null, shipId, at: deps.clock.now() })));
|
|
21
|
+
if (checked.isOk && !checked.value.isOk) {
|
|
22
|
+
return checked.value;
|
|
23
|
+
}
|
|
17
24
|
const { lease, waiting } = found;
|
|
18
25
|
const [oldestId] = waiting;
|
|
19
26
|
const oldest = oldestId === undefined ? undefined : await deps.history.message(caller.fleetId, oldestId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-ship-way.js","sourceRoot":"","sources":["../../../src/domain/shared/read-ship-way.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"read-ship-way.js","sourceRoot":"","sources":["../../../src/domain/shared/read-ship-way.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAuC,MAAM,uBAAuB,CAAC;AAGvF,OAAO,EAAE,cAAc,EAAE,aAAa,EAAmC,MAAM,mBAAmB,CAAC;AACnG,OAAO,EAAE,MAAM,EAAoB,MAAM,aAAa,CAAC;AAEvD,OAAO,EAAE,EAAE,EAAe,MAAM,aAAa,CAAC;AAoB9C;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAA4F;IAC5H,OAAO,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAClC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,MAAM,CAAC,gBAAgB,EAAE,WAAW,MAAM,gBAAgB,CAAC,CAAC;QACrE,CAAC;QACD,mDAAmD;QACnD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAC9C,EAAE,CAAC,MAAM,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CACpK,CAAC;QACF,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACxC,OAAO,OAAO,CAAC,KAAK,CAAC;QACvB,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;QACjC,MAAM,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;QAC3B,MAAM,MAAM,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACzG,OAAO,EAAE,CAAC;YACR,KAAK,EAAE,KAAK,IAAI,EAAE,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;YAC/D,OAAO,EAAE,OAAO,CAAC,MAAM;YACvB,MAAM,EAAE,MAAM;gBACZ,CAAC,CAAC;oBACE,SAAS,EAAE,MAAM,CAAC,EAAE;oBACpB,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,QAAQ,EAAE;wBACR,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;wBACtB,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK;wBAC5B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ;wBAClC,GAAG,EAAE,aAAa,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;qBAC/I;iBACF;gBACH,CAAC,CAAC,IAAI;SACT,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -25,12 +25,17 @@ export interface StuckDelivery {
|
|
|
25
25
|
/** When it entered the state it is stuck in. */
|
|
26
26
|
since: Date;
|
|
27
27
|
}
|
|
28
|
-
/**
|
|
28
|
+
/**
|
|
29
|
+
* A ship as the rule reads it over time; argo and the viewer ship are always
|
|
30
|
+
* crewed. A person ship awaiting crew is its person away, never stuck
|
|
31
|
+
* (decision 0044).
|
|
32
|
+
*/
|
|
29
33
|
export interface ShipRecord {
|
|
30
34
|
shipId: ShipId;
|
|
31
35
|
name: string;
|
|
32
36
|
type: string;
|
|
33
37
|
isAlwaysCrewed: boolean;
|
|
38
|
+
isPerson: boolean;
|
|
34
39
|
commissionedAt: Date;
|
|
35
40
|
retiredAt: Date | null;
|
|
36
41
|
}
|
|
@@ -67,7 +72,11 @@ export declare function stateStepOf(event: Pick<FleetEvent, 'type' | 'occurredAt
|
|
|
67
72
|
export interface DeliveryRecord {
|
|
68
73
|
deliveryId: DeliveryId;
|
|
69
74
|
messageId: MessageId;
|
|
75
|
+
/** Its message's sender, by which read reach reads it (decision 0034). */
|
|
76
|
+
senderId: ShipId;
|
|
70
77
|
recipient: Recipient;
|
|
78
|
+
/** The ship that holds its claim, as the delivery records it; none while none does. */
|
|
79
|
+
claimedBy: ShipId | null;
|
|
71
80
|
/** The ships of its type its sender could reach at send time; empty is every ship of the type (decision 0034). */
|
|
72
81
|
reachableShipIds: readonly ShipId[];
|
|
73
82
|
sentAt: Date;
|
|
@@ -121,7 +121,7 @@ class FleetAt {
|
|
|
121
121
|
}
|
|
122
122
|
const crewed = takers.filter((ship) => this.isCrewed(ship));
|
|
123
123
|
if (crewed.length === 0) {
|
|
124
|
-
return { cause: 'waitingForCrew', place: placeOf(delivery.recipient) };
|
|
124
|
+
return takers.some((ship) => ship.isPerson) ? undefined : { cause: 'waitingForCrew', place: placeOf(delivery.recipient) };
|
|
125
125
|
}
|
|
126
126
|
const leases = crewed.flatMap((ship) => this.leaseOf(ship.shipId) ?? []);
|
|
127
127
|
const overdue = this.overdueOn({ state: 'pending', since }, leases);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stuck.js","sourceRoot":"","sources":["../../../src/domain/shared/stuck.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAoJ,MAAM,sBAAsB,CAAC;AAEjN,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAI/E,MAAM,SAAS,GAAG,MAAM,CAAC;AACzB,MAAM,OAAO,GAAG,EAAE,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"stuck.js","sourceRoot":"","sources":["../../../src/domain/shared/stuck.ts"],"names":[],"mappings":"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"}
|
package/dist/wiring.d.ts
CHANGED
|
@@ -38,14 +38,18 @@ import { type CommissionShip } from './domain/registry/commission-ship.js';
|
|
|
38
38
|
import { type Deregister } from './domain/registry/deregister.js';
|
|
39
39
|
import { type GetStartingPrompt } from './domain/registry/get-starting-prompt.js';
|
|
40
40
|
import { type GetShip } from './domain/registry/get-ship.js';
|
|
41
|
+
import { type ReadOnBehalf } from './domain/registry/read-on-behalf.js';
|
|
41
42
|
import { type InitialiseFleet } from './domain/registry/initialise-fleet.js';
|
|
42
43
|
import { type ListFleet } from './domain/registry/list-fleet.js';
|
|
43
44
|
import { type ListFleets } from './domain/registry/list-fleets.js';
|
|
44
45
|
import { type RecrewShip } from './domain/registry/recrew-ship.js';
|
|
45
46
|
import { type ReleaseShip } from './domain/registry/release-ship.js';
|
|
46
47
|
import { type RenameShip } from './domain/registry/rename-ship.js';
|
|
48
|
+
import { type SetOwner } from './domain/registry/set-owner.js';
|
|
47
49
|
import { type RetireShip } from './domain/registry/retire-ship.js';
|
|
48
50
|
import { type Report } from './domain/registry/report.js';
|
|
51
|
+
import { type SetStatement } from './domain/registry/set-statement.js';
|
|
52
|
+
import { type Discover } from './domain/registry/discover.js';
|
|
49
53
|
import { type ReportTurn } from './domain/registry/report-turn.js';
|
|
50
54
|
import { type RequestCrew } from './domain/registry/request-crew.js';
|
|
51
55
|
import { type RemoveCrewRequest } from './domain/registry/remove-crew-request.js';
|
|
@@ -58,6 +62,8 @@ import { type ConfirmWorktreeCleared } from './domain/registry/confirm-worktree-
|
|
|
58
62
|
import { type ReadClearRequests } from './domain/registry/read-clear-requests.js';
|
|
59
63
|
import { type RequestWorktreeClear } from './domain/registry/request-worktree-clear.js';
|
|
60
64
|
import { type ExplainCrewRequest } from './domain/registry/explain-crew-request.js';
|
|
65
|
+
import { type DeclareScopes } from './domain/registry/declare-scopes.js';
|
|
66
|
+
import { type GrantScopes } from './domain/registry/grant-scopes.js';
|
|
61
67
|
import { type DefineLabel } from './domain/registry/define-label.js';
|
|
62
68
|
import { type ExplainReach } from './domain/registry/explain-reach.js';
|
|
63
69
|
import { type ReadReachRefusals } from './domain/registry/read-reach-refusals.js';
|
|
@@ -65,11 +71,14 @@ import { type DeclareNetworkRules } from './domain/registry/declare-network-rule
|
|
|
65
71
|
import { type ReadDeclaredNetworkRules } from './domain/registry/read-declared-network-rules.js';
|
|
66
72
|
import { type RegisterNetworkPlugin } from './domain/registry/register-network-plugin.js';
|
|
67
73
|
import { type SetNetworkRules } from './domain/registry/set-network-rules.js';
|
|
74
|
+
import { type ReadBuiltInRules } from './domain/registry/read-built-in-rules.js';
|
|
75
|
+
import { type SetBuiltInRule } from './domain/registry/set-built-in-rule.js';
|
|
68
76
|
import { type UnregisterNetworkPlugin } from './domain/registry/unregister-network-plugin.js';
|
|
69
77
|
import { type ChangeLabelValues } from './domain/registry/change-label-values.js';
|
|
70
78
|
import { type AssignLabel } from './domain/registry/assign-label.js';
|
|
71
79
|
import { type UnassignLabel } from './domain/registry/unassign-label.js';
|
|
72
80
|
import { type ListLabels } from './domain/registry/list-labels.js';
|
|
81
|
+
import { type ListScopes } from './domain/registry/list-scopes.js';
|
|
73
82
|
import { type DeleteLabel } from './domain/registry/delete-label.js';
|
|
74
83
|
import { type FindLabelValue } from './domain/registry/find-label-value.js';
|
|
75
84
|
import { type ReadReportLog } from './domain/registry/report-log.js';
|
|
@@ -92,9 +101,7 @@ import { type ReadInbox } from './domain/shared/read-inbox.js';
|
|
|
92
101
|
import { type ReadMessage } from './domain/shared/read-message.js';
|
|
93
102
|
import { type ReadShipWay } from './domain/shared/read-ship-way.js';
|
|
94
103
|
import { type ReadNeedsAttention } from './domain/shared/read-needs-attention.js';
|
|
95
|
-
import { type ReadNoShipCanTake } from './domain/shared/read-no-ship-can-take.js';
|
|
96
104
|
import { type ReadHealth } from './domain/shared/read-health.js';
|
|
97
|
-
import { type ReadOverdue } from './domain/shared/read-overdue.js';
|
|
98
105
|
import { type ReadShipMessages } from './domain/shared/read-ship-messages.js';
|
|
99
106
|
import { type ReadShipTimeline } from './domain/shared/read-ship-timeline.js';
|
|
100
107
|
export interface UseCases {
|
|
@@ -106,12 +113,16 @@ export interface UseCases {
|
|
|
106
113
|
releaseShip: ReleaseShip;
|
|
107
114
|
retireShip: RetireShip;
|
|
108
115
|
renameShip: RenameShip;
|
|
116
|
+
setOwner: SetOwner;
|
|
109
117
|
recrewShip: RecrewShip;
|
|
110
118
|
listFleet: ListFleet;
|
|
111
119
|
getShip: GetShip;
|
|
120
|
+
readOnBehalf: ReadOnBehalf;
|
|
112
121
|
claimShip: ClaimShip;
|
|
113
122
|
whoami: Whoami;
|
|
114
123
|
report: Report;
|
|
124
|
+
setStatement: SetStatement;
|
|
125
|
+
discover: Discover;
|
|
115
126
|
reportTurn: ReportTurn;
|
|
116
127
|
requestCrew: RequestCrew;
|
|
117
128
|
removeCrewRequest: RemoveCrewRequest;
|
|
@@ -125,9 +136,14 @@ export interface UseCases {
|
|
|
125
136
|
confirmWorktreeCleared: ConfirmWorktreeCleared;
|
|
126
137
|
explainCrewRequest: ExplainCrewRequest;
|
|
127
138
|
defineLabel: DefineLabel;
|
|
139
|
+
declareScopes: DeclareScopes;
|
|
140
|
+
grantScopes: GrantScopes;
|
|
141
|
+
listScopes: ListScopes;
|
|
128
142
|
setNetworkRules: SetNetworkRules;
|
|
129
143
|
registerNetworkPlugin: RegisterNetworkPlugin;
|
|
130
144
|
unregisterNetworkPlugin: UnregisterNetworkPlugin;
|
|
145
|
+
setBuiltInRule: SetBuiltInRule;
|
|
146
|
+
readBuiltInRules: ReadBuiltInRules;
|
|
131
147
|
readReachRefusals: ReadReachRefusals;
|
|
132
148
|
declareNetworkRules: DeclareNetworkRules;
|
|
133
149
|
readDeclaredNetworkRules: ReadDeclaredNetworkRules;
|
|
@@ -164,8 +180,6 @@ export interface UseCases {
|
|
|
164
180
|
readMessage: ReadMessage;
|
|
165
181
|
readShipWay: ReadShipWay;
|
|
166
182
|
readNeedsAttention: ReadNeedsAttention;
|
|
167
|
-
readOverdue: ReadOverdue;
|
|
168
|
-
readNoShipCanTake: ReadNoShipCanTake;
|
|
169
183
|
readHealth: ReadHealth;
|
|
170
184
|
readInbox: ReadInbox;
|
|
171
185
|
signIn: SignIn;
|
package/dist/wiring.js
CHANGED
|
@@ -11,6 +11,7 @@ import { createPrismaGuideProgress, createPrismaNoticeDismissals, createPrismaOp
|
|
|
11
11
|
import { createReceiverWakeups } from './adapters/prisma/receiver-wakeups.js';
|
|
12
12
|
import { createPrismaFleetLimitReads, createPrismaGuideRepository, createPrismaInstallationFleets, createPrismaInstallationSettings, createPrismaNoticeRepository, } from './adapters/prisma/installation.js';
|
|
13
13
|
import { createPrismaDeclaredNetworkRulesRepository, createPrismaReachRefusalRepository } from './adapters/prisma/network.js';
|
|
14
|
+
import { createPrismaScopeNamespaceRepository } from './adapters/prisma/scope-namespaces.js';
|
|
14
15
|
import { createPrismaBulkUnitOfWork, createPrismaCallers, createPrismaUnitOfWork } from './adapters/prisma/unit-of-work.js';
|
|
15
16
|
import { createAuthenticate } from './domain/identity/authenticate.js';
|
|
16
17
|
import { createDismissNotice } from './domain/identity/dismiss-notice.js';
|
|
@@ -49,14 +50,19 @@ import { createCommissionShip } from './domain/registry/commission-ship.js';
|
|
|
49
50
|
import { createDeregister } from './domain/registry/deregister.js';
|
|
50
51
|
import { createGetStartingPrompt } from './domain/registry/get-starting-prompt.js';
|
|
51
52
|
import { createGetShip } from './domain/registry/get-ship.js';
|
|
53
|
+
import { createReadOnBehalf } from './domain/registry/read-on-behalf.js';
|
|
52
54
|
import { createInitialiseFleet } from './domain/registry/initialise-fleet.js';
|
|
53
55
|
import { createListFleet } from './domain/registry/list-fleet.js';
|
|
56
|
+
import { createReadReachOf } from './domain/registry/read-reach.js';
|
|
54
57
|
import { createListFleets } from './domain/registry/list-fleets.js';
|
|
55
58
|
import { createRecrewShip } from './domain/registry/recrew-ship.js';
|
|
56
59
|
import { createReleaseShip } from './domain/registry/release-ship.js';
|
|
57
60
|
import { createRenameShip } from './domain/registry/rename-ship.js';
|
|
61
|
+
import { createSetOwner } from './domain/registry/set-owner.js';
|
|
58
62
|
import { createRetireShip } from './domain/registry/retire-ship.js';
|
|
59
63
|
import { createReport } from './domain/registry/report.js';
|
|
64
|
+
import { createSetStatement } from './domain/registry/set-statement.js';
|
|
65
|
+
import { createDiscover } from './domain/registry/discover.js';
|
|
60
66
|
import { createReportTurn } from './domain/registry/report-turn.js';
|
|
61
67
|
import { createRequestCrew } from './domain/registry/request-crew.js';
|
|
62
68
|
import { createRemoveCrewRequest } from './domain/registry/remove-crew-request.js';
|
|
@@ -69,6 +75,8 @@ import { createConfirmWorktreeCleared } from './domain/registry/confirm-worktree
|
|
|
69
75
|
import { createReadClearRequests } from './domain/registry/read-clear-requests.js';
|
|
70
76
|
import { createRequestWorktreeClear } from './domain/registry/request-worktree-clear.js';
|
|
71
77
|
import { createExplainCrewRequest } from './domain/registry/explain-crew-request.js';
|
|
78
|
+
import { createDeclareScopes } from './domain/registry/declare-scopes.js';
|
|
79
|
+
import { createGrantScopes } from './domain/registry/grant-scopes.js';
|
|
72
80
|
import { createDefineLabel } from './domain/registry/define-label.js';
|
|
73
81
|
import { createExplainReach } from './domain/registry/explain-reach.js';
|
|
74
82
|
import { createReadReachRefusals } from './domain/registry/read-reach-refusals.js';
|
|
@@ -76,11 +84,14 @@ import { createDeclareNetworkRules } from './domain/registry/declare-network-rul
|
|
|
76
84
|
import { createReadDeclaredNetworkRules } from './domain/registry/read-declared-network-rules.js';
|
|
77
85
|
import { createRegisterNetworkPlugin } from './domain/registry/register-network-plugin.js';
|
|
78
86
|
import { createSetNetworkRules } from './domain/registry/set-network-rules.js';
|
|
87
|
+
import { createReadBuiltInRules } from './domain/registry/read-built-in-rules.js';
|
|
88
|
+
import { createSetBuiltInRule } from './domain/registry/set-built-in-rule.js';
|
|
79
89
|
import { createUnregisterNetworkPlugin } from './domain/registry/unregister-network-plugin.js';
|
|
80
90
|
import { createChangeLabelValues } from './domain/registry/change-label-values.js';
|
|
81
91
|
import { createAssignLabel } from './domain/registry/assign-label.js';
|
|
82
92
|
import { createUnassignLabel } from './domain/registry/unassign-label.js';
|
|
83
93
|
import { createListLabels } from './domain/registry/list-labels.js';
|
|
94
|
+
import { createListScopes } from './domain/registry/list-scopes.js';
|
|
84
95
|
import { createDeleteLabel } from './domain/registry/delete-label.js';
|
|
85
96
|
import { createFindLabelValue } from './domain/registry/find-label-value.js';
|
|
86
97
|
import { createReadReportLog } from './domain/registry/report-log.js';
|
|
@@ -102,9 +113,7 @@ import { createReadInbox } from './domain/shared/read-inbox.js';
|
|
|
102
113
|
import { createReadMessage } from './domain/shared/read-message.js';
|
|
103
114
|
import { createReadShipWay } from './domain/shared/read-ship-way.js';
|
|
104
115
|
import { createReadNeedsAttention } from './domain/shared/read-needs-attention.js';
|
|
105
|
-
import { createReadNoShipCanTake } from './domain/shared/read-no-ship-can-take.js';
|
|
106
116
|
import { createReadHealth } from './domain/shared/read-health.js';
|
|
107
|
-
import { createReadOverdue } from './domain/shared/read-overdue.js';
|
|
108
117
|
import { createReadShipMessages } from './domain/shared/read-ship-messages.js';
|
|
109
118
|
import { createReadShipTimeline } from './domain/shared/read-ship-timeline.js';
|
|
110
119
|
export const systemClock = { now: () => new Date() };
|
|
@@ -121,6 +130,7 @@ export function createUseCases(options) {
|
|
|
121
130
|
const clock = options.clock ?? systemClock;
|
|
122
131
|
const ids = options.ids ?? createIdGenerator();
|
|
123
132
|
const uow = createPrismaUnitOfWork(prisma);
|
|
133
|
+
const readReach = createReadReachOf({ uow, clock });
|
|
124
134
|
// A fleet delete and a retire grow with the fleet's history and the ship's pending deliveries.
|
|
125
135
|
const bulkUow = createPrismaBulkUnitOfWork(prisma);
|
|
126
136
|
const secrets = { hasher: sha256Hasher, random: cryptoRandomTokens };
|
|
@@ -167,12 +177,16 @@ export function createUseCases(options) {
|
|
|
167
177
|
releaseShip: createReleaseShip({ uow, clock, ids }),
|
|
168
178
|
retireShip: createRetireShip({ uow: bulkUow, clock, ids }),
|
|
169
179
|
renameShip: createRenameShip({ uow, clock, ids }),
|
|
180
|
+
setOwner: createSetOwner({ uow, clock, ids }),
|
|
170
181
|
recrewShip: createRecrewShip({ uow, clock, ids, secrets }),
|
|
171
|
-
listFleet: createListFleet({ listing: createPrismaFleetListing(prisma) }),
|
|
172
|
-
getShip: createGetShip({ listing: createPrismaFleetListing(prisma) }),
|
|
182
|
+
listFleet: createListFleet({ listing: createPrismaFleetListing(prisma), readReach }),
|
|
183
|
+
getShip: createGetShip({ listing: createPrismaFleetListing(prisma), readReach }),
|
|
184
|
+
readOnBehalf: createReadOnBehalf({ ships: createPrismaShipRepository(prisma) }),
|
|
173
185
|
claimShip: createClaimShip({ uow, clock, ids, secrets }),
|
|
174
186
|
whoami: createWhoami({ ships: createPrismaShipRepository(prisma) }),
|
|
175
187
|
report: createReport({ uow, clock, ids }),
|
|
188
|
+
setStatement: createSetStatement({ uow, clock, ids }),
|
|
189
|
+
discover: createDiscover({ uow, clock }),
|
|
176
190
|
reportTurn: createReportTurn({ uow, clock, ids }),
|
|
177
191
|
requestCrew: createRequestCrew({ uow, clock, ids }),
|
|
178
192
|
removeCrewRequest: createRemoveCrewRequest({ uow, clock, ids }),
|
|
@@ -180,15 +194,20 @@ export function createUseCases(options) {
|
|
|
180
194
|
reportCrewStatus: createReportCrewStatus({ uow, clock, ids }),
|
|
181
195
|
confirmCrewRelease: createConfirmCrewRelease({ uow, clock, ids }),
|
|
182
196
|
giveBackCrewRequest: createGiveBackCrewRequest({ uow, clock, ids }),
|
|
183
|
-
readAssignedCrewRequests: createReadAssignedCrewRequests({ crewRequests: createPrismaCrewRequestRepository(prisma) }),
|
|
197
|
+
readAssignedCrewRequests: createReadAssignedCrewRequests({ crewRequests: createPrismaCrewRequestRepository(prisma), ships: createPrismaShipRepository(prisma) }),
|
|
184
198
|
explainCrewRequest: createExplainCrewRequest({ uow, clock, ids }),
|
|
185
199
|
requestWorktreeClear: createRequestWorktreeClear({ uow, clock, ids }),
|
|
186
|
-
readClearRequests: createReadClearRequests({ clearRequests: createPrismaClearRequestRepository(prisma) }),
|
|
200
|
+
readClearRequests: createReadClearRequests({ clearRequests: createPrismaClearRequestRepository(prisma), readReach }),
|
|
187
201
|
confirmWorktreeCleared: createConfirmWorktreeCleared({ uow, clock, ids }),
|
|
188
202
|
defineLabel: createDefineLabel({ uow, clock, ids }),
|
|
203
|
+
declareScopes: createDeclareScopes({ uow, clock, ids }),
|
|
204
|
+
grantScopes: createGrantScopes({ uow, clock, ids }),
|
|
205
|
+
listScopes: createListScopes({ scopeNamespaces: createPrismaScopeNamespaceRepository(prisma), ships: createPrismaShipRepository(prisma) }),
|
|
189
206
|
setNetworkRules: createSetNetworkRules({ uow, clock, ids }),
|
|
190
207
|
registerNetworkPlugin: createRegisterNetworkPlugin({ uow, clock, ids }),
|
|
191
208
|
unregisterNetworkPlugin: createUnregisterNetworkPlugin({ uow, clock, ids }),
|
|
209
|
+
setBuiltInRule: createSetBuiltInRule({ uow, clock, ids }),
|
|
210
|
+
readBuiltInRules: createReadBuiltInRules({ uow }),
|
|
192
211
|
readReachRefusals: createReadReachRefusals({ reachRefusals: createPrismaReachRefusalRepository(prisma) }),
|
|
193
212
|
declareNetworkRules: createDeclareNetworkRules({ uow, clock, ids }),
|
|
194
213
|
readDeclaredNetworkRules: createReadDeclaredNetworkRules({ declaredNetworkRules: createPrismaDeclaredNetworkRulesRepository(prisma) }),
|
|
@@ -224,26 +243,26 @@ export function createUseCases(options) {
|
|
|
224
243
|
answerPing: createAnswerPing({ uow, clock, ids }),
|
|
225
244
|
pingShip: createPingShip({ uow, clock, ids, hasher: sha256Hasher }),
|
|
226
245
|
checkInbox: createCheckInbox({ uow, clock, wakeups }),
|
|
227
|
-
dismissDelivery: createDismissDelivery({ uow, clock, ids }),
|
|
228
|
-
resendDelivery: createResendDelivery({ uow, clock, ids, hasher: sha256Hasher }),
|
|
246
|
+
dismissDelivery: createDismissDelivery({ uow, clock, ids, readReach }),
|
|
247
|
+
resendDelivery: createResendDelivery({ uow, clock, ids, hasher: sha256Hasher, readReach }),
|
|
229
248
|
markRead: createMarkRead({ uow, clock }),
|
|
230
249
|
markDone: createMarkDone({ uow, clock, ids }),
|
|
231
250
|
replyToMessage: createReplyToMessage({ uow, clock, ids, hasher: sha256Hasher }),
|
|
232
|
-
readFleetEvents: createReadFleetEvents({ feed: createPrismaFleetEventFeed(prisma) }),
|
|
251
|
+
readFleetEvents: createReadFleetEvents({ feed: createPrismaFleetEventFeed(prisma), history: createPrismaShipHistory(prisma), readReach }),
|
|
233
252
|
followFleet: createFollowFleet({
|
|
234
253
|
feed: createPrismaFleetEventFeed(prisma),
|
|
235
254
|
clock,
|
|
255
|
+
history: createPrismaShipHistory(prisma),
|
|
256
|
+
readReach,
|
|
236
257
|
wakeups: options.fleetEventWakeups ?? fleetEventWakeupsOf(createFleetEventWakeups()),
|
|
237
258
|
}),
|
|
238
|
-
readShipTimeline: createReadShipTimeline({ history: createPrismaShipHistory(prisma) }),
|
|
239
|
-
readShipMessages: createReadShipMessages({ history: createPrismaShipHistory(prisma) }),
|
|
240
|
-
readMessage: createReadMessage({ history: createPrismaShipHistory(prisma) }),
|
|
241
|
-
readShipWay: createReadShipWay({ history: createPrismaShipHistory(prisma) }),
|
|
242
|
-
readNeedsAttention: createReadNeedsAttention({ history: createPrismaShipHistory(prisma) }),
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
readHealth: createReadHealth({ health: createPrismaHealthRecords(prisma), clock }),
|
|
246
|
-
readInbox: createReadInbox({ history: createPrismaShipHistory(prisma), ships: createPrismaShipRepository(prisma) }),
|
|
259
|
+
readShipTimeline: createReadShipTimeline({ history: createPrismaShipHistory(prisma), readReach }),
|
|
260
|
+
readShipMessages: createReadShipMessages({ history: createPrismaShipHistory(prisma), readReach }),
|
|
261
|
+
readMessage: createReadMessage({ history: createPrismaShipHistory(prisma), readReach }),
|
|
262
|
+
readShipWay: createReadShipWay({ history: createPrismaShipHistory(prisma), uow, clock, ids }),
|
|
263
|
+
readNeedsAttention: createReadNeedsAttention({ history: createPrismaShipHistory(prisma), readReach }),
|
|
264
|
+
readHealth: createReadHealth({ health: createPrismaHealthRecords(prisma), clock, readReach }),
|
|
265
|
+
readInbox: createReadInbox({ history: createPrismaShipHistory(prisma), ships: createPrismaShipRepository(prisma), readReach }),
|
|
247
266
|
signIn: createSignIn({
|
|
248
267
|
uow,
|
|
249
268
|
accounts: createPrismaOperatorAccountLookup(prisma),
|