@aeolus-fleet/core 0.27.0 → 0.27.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/adapters/prisma/generated/browser.d.ts +6 -0
- package/dist/adapters/prisma/generated/client.d.ts +6 -0
- package/dist/adapters/prisma/generated/commonInputTypes.d.ts +30 -0
- package/dist/adapters/prisma/generated/enums.d.ts +8 -0
- package/dist/adapters/prisma/generated/enums.js +7 -0
- 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 +93 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js +9 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +9 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +9 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
- package/dist/adapters/prisma/generated/models/Fleet.d.ts +283 -0
- package/dist/adapters/prisma/generated/models/Lease.d.ts +60 -1
- package/dist/adapters/prisma/generated/models/NetworkSettings.d.ts +35 -3
- package/dist/adapters/prisma/generated/models/PluginConnection.d.ts +1180 -0
- package/dist/adapters/prisma/generated/models/PluginConnection.js +2 -0
- package/dist/adapters/prisma/generated/models/PluginConnection.js.map +1 -0
- package/dist/adapters/prisma/generated/models/Ship.d.ts +290 -0
- package/dist/adapters/prisma/generated/models.d.ts +1 -0
- package/dist/adapters/prisma/history.js +4 -2
- package/dist/adapters/prisma/history.js.map +1 -1
- package/dist/adapters/prisma/messaging.js +5 -2
- package/dist/adapters/prisma/messaging.js.map +1 -1
- package/dist/adapters/prisma/network.js +7 -4
- package/dist/adapters/prisma/network.js.map +1 -1
- package/dist/adapters/prisma/overdue.js +4 -3
- package/dist/adapters/prisma/overdue.js.map +1 -1
- package/dist/adapters/prisma/plugin-connections.d.ts +4 -0
- package/dist/adapters/prisma/plugin-connections.js +20 -0
- package/dist/adapters/prisma/plugin-connections.js.map +1 -0
- package/dist/adapters/prisma/registry.js +3 -2
- package/dist/adapters/prisma/registry.js.map +1 -1
- package/dist/adapters/prisma/rows.js +2 -0
- package/dist/adapters/prisma/rows.js.map +1 -1
- 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/trpc/context.d.ts +8 -0
- package/dist/adapters/trpc/fleet.d.ts +72 -16
- package/dist/adapters/trpc/fleet.js +31 -6
- package/dist/adapters/trpc/fleet.js.map +1 -1
- package/dist/adapters/trpc/router.d.ts +143 -14
- package/dist/adapters/trpc/ship-contract.js +1 -0
- package/dist/adapters/trpc/ship-contract.js.map +1 -1
- package/dist/adapters/trpc/ship-protocol.js +1 -1
- package/dist/adapters/trpc/ship-protocol.js.map +1 -1
- package/dist/adapters/trpc/ship.d.ts +85 -0
- package/dist/adapters/trpc/ship.js +48 -4
- package/dist/adapters/trpc/ship.js.map +1 -1
- package/dist/adapters/trpc/trpc.d.ts +7 -4
- package/dist/adapters/trpc/trpc.js +14 -5
- package/dist/adapters/trpc/trpc.js.map +1 -1
- package/dist/domain/messaging/delivery.d.ts +8 -2
- package/dist/domain/messaging/delivery.js +14 -9
- package/dist/domain/messaging/delivery.js.map +1 -1
- package/dist/domain/messaging/hand-over-delivery.d.ts +1 -0
- package/dist/domain/messaging/hand-over-delivery.js +1 -0
- package/dist/domain/messaging/hand-over-delivery.js.map +1 -1
- package/dist/domain/messaging/overdue.d.ts +2 -0
- package/dist/domain/messaging/overdue.js +3 -0
- package/dist/domain/messaging/overdue.js.map +1 -1
- package/dist/domain/messaging/ports.d.ts +2 -0
- package/dist/domain/messaging/push-receive-deliveries.d.ts +4 -1
- package/dist/domain/messaging/push-receive-deliveries.js +5 -3
- package/dist/domain/messaging/push-receive-deliveries.js.map +1 -1
- package/dist/domain/messaging/receive-deliveries.d.ts +21 -0
- package/dist/domain/messaging/receive-deliveries.js +5 -3
- package/dist/domain/messaging/receive-deliveries.js.map +1 -1
- package/dist/domain/messaging/receive-reply.d.ts +32 -0
- package/dist/domain/messaging/receive-reply.js +25 -0
- package/dist/domain/messaging/receive-reply.js.map +1 -0
- package/dist/domain/registry/check-reach.d.ts +6 -2
- package/dist/domain/registry/check-reach.js +4 -3
- package/dist/domain/registry/check-reach.js.map +1 -1
- package/dist/domain/registry/commission-ship.d.ts +6 -2
- package/dist/domain/registry/commission-ship.js +37 -6
- package/dist/domain/registry/commission-ship.js.map +1 -1
- package/dist/domain/registry/connect-plugin.d.ts +30 -0
- package/dist/domain/registry/connect-plugin.js +35 -0
- package/dist/domain/registry/connect-plugin.js.map +1 -0
- package/dist/domain/registry/discover.d.ts +1 -0
- package/dist/domain/registry/discover.js.map +1 -1
- package/dist/domain/registry/explain-reach.d.ts +1 -0
- package/dist/domain/registry/explain-reach.js.map +1 -1
- package/dist/domain/registry/leases.d.ts +6 -3
- package/dist/domain/registry/leases.js +7 -5
- package/dist/domain/registry/leases.js.map +1 -1
- package/dist/domain/registry/network-settings.d.ts +17 -6
- package/dist/domain/registry/network-settings.js +21 -10
- package/dist/domain/registry/network-settings.js.map +1 -1
- package/dist/domain/registry/plugin-connection.d.ts +48 -0
- package/dist/domain/registry/plugin-connection.js +35 -0
- package/dist/domain/registry/plugin-connection.js.map +1 -0
- package/dist/domain/registry/ports.d.ts +13 -1
- package/dist/domain/registry/read-built-in-rules.d.ts +2 -2
- package/dist/domain/registry/read-built-in-rules.js +3 -2
- package/dist/domain/registry/read-built-in-rules.js.map +1 -1
- package/dist/domain/registry/read-network-plugin.d.ts +23 -0
- package/dist/domain/registry/read-network-plugin.js +15 -0
- package/dist/domain/registry/read-network-plugin.js.map +1 -0
- package/dist/domain/registry/read-reach.d.ts +4 -2
- package/dist/domain/registry/read-reach.js +7 -2
- package/dist/domain/registry/read-reach.js.map +1 -1
- package/dist/domain/registry/recrew-ship.js +2 -0
- package/dist/domain/registry/recrew-ship.js.map +1 -1
- package/dist/domain/registry/release-ship.d.ts +4 -2
- package/dist/domain/registry/release-ship.js +4 -1
- package/dist/domain/registry/release-ship.js.map +1 -1
- package/dist/domain/registry/retire-ship.d.ts +2 -1
- package/dist/domain/registry/retire-ship.js +2 -0
- package/dist/domain/registry/retire-ship.js.map +1 -1
- package/dist/domain/registry/ship.d.ts +9 -5
- package/dist/domain/registry/ship.js +37 -4
- package/dist/domain/registry/ship.js.map +1 -1
- package/dist/domain/shared/delivery-way.d.ts +9 -5
- package/dist/domain/shared/delivery-way.js +17 -5
- package/dist/domain/shared/delivery-way.js.map +1 -1
- package/dist/domain/shared/errors.d.ts +1 -1
- package/dist/domain/shared/errors.js.map +1 -1
- package/dist/domain/shared/health.d.ts +3 -1
- package/dist/domain/shared/health.js +5 -3
- package/dist/domain/shared/health.js.map +1 -1
- package/dist/domain/shared/history.d.ts +2 -0
- package/dist/domain/shared/history.js.map +1 -1
- package/dist/domain/shared/read-health.d.ts +2 -1
- package/dist/domain/shared/read-health.js +9 -3
- package/dist/domain/shared/read-health.js.map +1 -1
- package/dist/domain/shared/read-sent-message.d.ts +31 -0
- package/dist/domain/shared/read-sent-message.js +28 -0
- package/dist/domain/shared/read-sent-message.js.map +1 -0
- package/dist/domain/shared/stuck.js +4 -2
- package/dist/domain/shared/stuck.js.map +1 -1
- package/dist/testing/container-images.d.ts +14 -0
- package/dist/testing/container-images.js +18 -0
- package/dist/testing/container-images.js.map +1 -0
- package/dist/testing/database.d.ts +14 -0
- package/dist/testing/database.js +48 -0
- package/dist/testing/database.js.map +1 -0
- package/dist/testing/fleet.d.ts +13 -0
- package/dist/testing/fleet.js +17 -0
- package/dist/testing/fleet.js.map +1 -0
- package/dist/testing/index.d.ts +12 -0
- package/dist/testing/index.js +12 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/keys.d.ts +1 -0
- package/dist/testing/keys.js +7 -0
- package/dist/testing/keys.js.map +1 -0
- package/dist/testing/migrate-lock.d.ts +12 -0
- package/dist/testing/migrate-lock.js +51 -0
- package/dist/testing/migrate-lock.js.map +1 -0
- package/dist/testing/migrated-template.d.ts +12 -0
- package/dist/testing/migrated-template.js +29 -0
- package/dist/testing/migrated-template.js.map +1 -0
- package/dist/testing/postgres-container.d.ts +16 -0
- package/dist/testing/postgres-container.js +30 -0
- package/dist/testing/postgres-container.js.map +1 -0
- package/dist/testing/postgres-global-setup.d.ts +15 -0
- package/dist/testing/postgres-global-setup.js +20 -0
- package/dist/testing/postgres-global-setup.js.map +1 -0
- package/dist/testing/prisma-cli.d.ts +5 -0
- package/dist/testing/prisma-cli.js +15 -0
- package/dist/testing/prisma-cli.js.map +1 -0
- package/dist/testing/result.d.ts +5 -0
- package/dist/testing/result.js +15 -0
- package/dist/testing/result.js.map +1 -0
- package/dist/wiring.d.ts +8 -0
- package/dist/wiring.js +14 -0
- package/dist/wiring.js.map +1 -1
- package/package.json +28 -2
- package/src/adapters/prisma/migrations/20261018250000_scope_catalogue/migration.sql +8 -7
- package/src/adapters/prisma/migrations/20261019100000_on_behalf_scope/migration.sql +3 -1
- package/src/adapters/prisma/migrations/20261019130000_plugin_connections/migration.sql +54 -0
- package/src/adapters/prisma/migrations/20261019150000_network_plugin_registered_at/migration.sql +23 -0
- package/src/adapters/prisma/migrations/20261019160000_lease_waker/migration.sql +4 -0
- package/src/adapters/prisma/schema.prisma +34 -5
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { IdGenerator } from '@aeolus-fleet/common';
|
|
1
|
+
import type { IdGenerator, LeaseWaker } from '@aeolus-fleet/common';
|
|
2
2
|
import { type HoldLeaseTx, type LeaseRepository } from '../registry/public.js';
|
|
3
3
|
import type { Crew } from '../shared/caller.js';
|
|
4
4
|
import type { Clock } from '../shared/clock.js';
|
|
@@ -25,6 +25,7 @@ export interface DeliveriesPushReceived {
|
|
|
25
25
|
}
|
|
26
26
|
export type PushReceiveDeliveries = (crew: Crew, input: {
|
|
27
27
|
max?: number;
|
|
28
|
+
waker?: LeaseWaker;
|
|
28
29
|
}) => Promise<Result<DeliveriesPushReceived, ReceiveRefusal>>;
|
|
29
30
|
/**
|
|
30
31
|
* Use case: the crew's computer side, the trierarch or the plugin watcher,
|
|
@@ -36,6 +37,8 @@ export type PushReceiveDeliveries = (crew: Crew, input: {
|
|
|
36
37
|
* the agent. Its own in flight comes again first, changing nothing, so a
|
|
37
38
|
* restart or a lost answer loses nothing. From its first push receive until
|
|
38
39
|
* it ends, the lease is pushed: the agent's plain receive answers nothing.
|
|
40
|
+
* Its first push receive may state what wakes the ship, kept with the lease
|
|
41
|
+
* (interop 5.1).
|
|
39
42
|
* When nothing is there it waits as a receive does, about 25 seconds.
|
|
40
43
|
*/
|
|
41
44
|
export declare function createPushReceiveDeliveries(deps: {
|
|
@@ -12,8 +12,8 @@ import { receiveMax } from './receive-max.js';
|
|
|
12
12
|
*/
|
|
13
13
|
async function pushReceiptForCrew(deps, receipt) {
|
|
14
14
|
const { tx, ids, at } = deps;
|
|
15
|
-
const { crew, max } = receipt;
|
|
16
|
-
await markLeasePushed({ tx, ids }, { fleetId: crew.fleetId, shipId: crew.shipId, leaseId: crew.leaseId, at });
|
|
15
|
+
const { crew, max, waker } = receipt;
|
|
16
|
+
await markLeasePushed({ tx, ids }, { fleetId: crew.fleetId, shipId: crew.shipId, leaseId: crew.leaseId, at, ...(waker === undefined ? {} : { waker }) });
|
|
17
17
|
const ship = await holdLease(tx, crew);
|
|
18
18
|
if (!ship.isOk) {
|
|
19
19
|
return ship;
|
|
@@ -55,6 +55,8 @@ async function pushReceiptForCrew(deps, receipt) {
|
|
|
55
55
|
* the agent. Its own in flight comes again first, changing nothing, so a
|
|
56
56
|
* restart or a lost answer loses nothing. From its first push receive until
|
|
57
57
|
* it ends, the lease is pushed: the agent's plain receive answers nothing.
|
|
58
|
+
* Its first push receive may state what wakes the ship, kept with the lease
|
|
59
|
+
* (interop 5.1).
|
|
58
60
|
* When nothing is there it waits as a receive does, about 25 seconds.
|
|
59
61
|
*/
|
|
60
62
|
export function createPushReceiveDeliveries(deps) {
|
|
@@ -64,7 +66,7 @@ export function createPushReceiveDeliveries(deps) {
|
|
|
64
66
|
if (!max.isOk) {
|
|
65
67
|
return max;
|
|
66
68
|
}
|
|
67
|
-
return waitForDeliveries({ clock: deps.clock, wakeups: deps.wakeups, waitMs }, { crew, look: () => deps.uow.run((tx) => pushReceiptForCrew({ tx, ids: deps.ids, at: deps.clock.now() }, { crew, max: max.value })) });
|
|
69
|
+
return waitForDeliveries({ clock: deps.clock, wakeups: deps.wakeups, waitMs }, { crew, look: () => deps.uow.run((tx) => pushReceiptForCrew({ tx, ids: deps.ids, at: deps.clock.now() }, { crew, max: max.value, ...(input.waker === undefined ? {} : { waker: input.waker }) })) });
|
|
68
70
|
};
|
|
69
71
|
}
|
|
70
72
|
//# sourceMappingURL=push-receive-deliveries.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push-receive-deliveries.js","sourceRoot":"","sources":["../../../src/domain/messaging/push-receive-deliveries.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAqD,MAAM,uBAAuB,CAAC;AAGtH,OAAO,EAAE,WAAW,EAAiB,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,iBAAiB,GAGlB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAgC9C;;;;;GAKG;AACH,KAAK,UAAU,kBAAkB,CAC/B,IAAqB,EACrB,
|
|
1
|
+
{"version":3,"file":"push-receive-deliveries.js","sourceRoot":"","sources":["../../../src/domain/messaging/push-receive-deliveries.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,6 +53,27 @@ export declare function receivedDeliveryOf(tx: FindShipTx, held: {
|
|
|
53
53
|
delivery: Delivery;
|
|
54
54
|
message: Message;
|
|
55
55
|
}): Promise<Result<ReceivedDelivery, DomainError<'SHIP_NOT_FOUND'>>>;
|
|
56
|
+
export interface ClaimDeps {
|
|
57
|
+
tx: ReceiveDeliveriesTx;
|
|
58
|
+
ids: IdGenerator;
|
|
59
|
+
at: Date;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Claims up to `max` deliveries for the crew in one unit of work: holds its
|
|
63
|
+
* lease, then takes its own deliveries in flight, then the oldest pending ones
|
|
64
|
+
* for its ship or its type; with `inReplyTo`, only replies to that message.
|
|
65
|
+
* One that turns undeliverable is handed to no one,
|
|
66
|
+
* and the next one claimable takes its place. Each one handed over names its
|
|
67
|
+
* sender as Registry holds it now.
|
|
68
|
+
*/
|
|
69
|
+
export declare function claimForCrew(deps: ClaimDeps, claim: {
|
|
70
|
+
crew: Crew;
|
|
71
|
+
max: number;
|
|
72
|
+
inReplyTo?: MessageId;
|
|
73
|
+
}): Promise<Result<{
|
|
74
|
+
ship: Ship;
|
|
75
|
+
deliveries: ReceivedDelivery[];
|
|
76
|
+
}, ReceiveRefusal>>;
|
|
56
77
|
/**
|
|
57
78
|
* Use case: a crew receives its deliveries (`receive`), up to `max`, 1 to 10,
|
|
58
79
|
* one by default. Its scope (messages:receive) is checked before this runs.
|
|
@@ -35,13 +35,14 @@ export async function receivedDeliveryOf(tx, held) {
|
|
|
35
35
|
/**
|
|
36
36
|
* Claims up to `max` deliveries for the crew in one unit of work: holds its
|
|
37
37
|
* lease, then takes its own deliveries in flight, then the oldest pending ones
|
|
38
|
-
* for its ship or its type
|
|
38
|
+
* for its ship or its type; with `inReplyTo`, only replies to that message.
|
|
39
|
+
* One that turns undeliverable is handed to no one,
|
|
39
40
|
* and the next one claimable takes its place. Each one handed over names its
|
|
40
41
|
* sender as Registry holds it now.
|
|
41
42
|
*/
|
|
42
|
-
async function claimForCrew(deps, claim) {
|
|
43
|
+
export async function claimForCrew(deps, claim) {
|
|
43
44
|
const { tx, ids, at } = deps;
|
|
44
|
-
const { crew, max } = claim;
|
|
45
|
+
const { crew, max, inReplyTo } = claim;
|
|
45
46
|
const ship = await holdLease(tx, crew);
|
|
46
47
|
if (!ship.isOk) {
|
|
47
48
|
return ship;
|
|
@@ -62,6 +63,7 @@ async function claimForCrew(deps, claim) {
|
|
|
62
63
|
leaseId: crew.leaseId,
|
|
63
64
|
limit,
|
|
64
65
|
excluding: claimed,
|
|
66
|
+
...(inReplyTo === undefined ? {} : { inReplyTo }),
|
|
65
67
|
});
|
|
66
68
|
hasMore = claimable.length === limit;
|
|
67
69
|
for (const { delivery, message } of claimable) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receive-deliveries.js","sourceRoot":"","sources":["../../../src/domain/messaging/receive-deliveries.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAuF,MAAM,uBAAuB,CAAC;AAIhK,OAAO,EAAE,WAAW,EAAiB,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AA0C9C,2GAA2G;AAC3G,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;AAEtC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,EAAc,EACd,IAA8C;IAE9C,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC/F,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,gHAAgH;QAChH,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,EAAE,CAAC;QACR,UAAU,EAAE,QAAQ,CAAC,EAAE;QACvB,SAAS,EAAE,OAAO,CAAC,EAAE;QACrB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI;QAC7B,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI;QAC7B,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,OAAO,CAAC,kBAAkB;QACrC,MAAM,EAAE,OAAO,CAAC,SAAS;QACzB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;KAC5B,CAAC,CAAC;AACL,CAAC;AAQD
|
|
1
|
+
{"version":3,"file":"receive-deliveries.js","sourceRoot":"","sources":["../../../src/domain/messaging/receive-deliveries.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { IdGenerator, MessageId } from '@aeolus-fleet/common';
|
|
2
|
+
import type { Crew } from '../shared/caller.js';
|
|
3
|
+
import type { Clock } from '../shared/clock.js';
|
|
4
|
+
import type { Result } from '../shared/result.js';
|
|
5
|
+
import type { UnitOfWork } from '../shared/unit-of-work.js';
|
|
6
|
+
import type { ReceiverWakeups } from './ports.js';
|
|
7
|
+
import { type DeliveriesReceived, type ReceiveDeliveriesTx, type ReceiveRefusal } from './receive-deliveries.js';
|
|
8
|
+
export type ReceiveReply = (crew: Crew, input: {
|
|
9
|
+
messageId: MessageId;
|
|
10
|
+
}) => Promise<Result<DeliveriesReceived, ReceiveRefusal>>;
|
|
11
|
+
/**
|
|
12
|
+
* Use case: a crew receives the reply to one message (`receiveReply`), so a
|
|
13
|
+
* crew with many open requests, such as the gateway's proxy ship, takes the
|
|
14
|
+
* reply that completes the one it waits on rather than the oldest delivery.
|
|
15
|
+
* Its scope (messages:receive) is checked before this runs.
|
|
16
|
+
*
|
|
17
|
+
* It hands at most one delivery whose message names `messageId` as the
|
|
18
|
+
* message it replies to, as `receive` hands one: first such a delivery in
|
|
19
|
+
* flight with the crew's lease, again as another attempt, then the oldest
|
|
20
|
+
* pending one for its ship or its type. Its states, attempts, undeliverable
|
|
21
|
+
* and ack are `receive`'s, as is its wait of about 25 seconds and its pushed
|
|
22
|
+
* lease, which hands nothing. It only ever hands the crew's own deliveries,
|
|
23
|
+
* so the message it names needs no check of its own.
|
|
24
|
+
*/
|
|
25
|
+
export declare function createReceiveReply(deps: {
|
|
26
|
+
uow: UnitOfWork<ReceiveDeliveriesTx>;
|
|
27
|
+
clock: Clock;
|
|
28
|
+
ids: IdGenerator;
|
|
29
|
+
wakeups: ReceiverWakeups;
|
|
30
|
+
/** How long it waits for the reply; about 25 seconds unless a test says otherwise. */
|
|
31
|
+
waitMs?: number;
|
|
32
|
+
}): ReceiveReply;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { claimForCrew, RECEIVE_WAIT_MS, waitForDeliveries } from './receive-deliveries.js';
|
|
2
|
+
/** A reply is one delivery: the oldest that completes the call the crew waits on. */
|
|
3
|
+
const REPLY_MAX = 1;
|
|
4
|
+
/**
|
|
5
|
+
* Use case: a crew receives the reply to one message (`receiveReply`), so a
|
|
6
|
+
* crew with many open requests, such as the gateway's proxy ship, takes the
|
|
7
|
+
* reply that completes the one it waits on rather than the oldest delivery.
|
|
8
|
+
* Its scope (messages:receive) is checked before this runs.
|
|
9
|
+
*
|
|
10
|
+
* It hands at most one delivery whose message names `messageId` as the
|
|
11
|
+
* message it replies to, as `receive` hands one: first such a delivery in
|
|
12
|
+
* flight with the crew's lease, again as another attempt, then the oldest
|
|
13
|
+
* pending one for its ship or its type. Its states, attempts, undeliverable
|
|
14
|
+
* and ack are `receive`'s, as is its wait of about 25 seconds and its pushed
|
|
15
|
+
* lease, which hands nothing. It only ever hands the crew's own deliveries,
|
|
16
|
+
* so the message it names needs no check of its own.
|
|
17
|
+
*/
|
|
18
|
+
export function createReceiveReply(deps) {
|
|
19
|
+
const waitMs = deps.waitMs ?? RECEIVE_WAIT_MS;
|
|
20
|
+
return (crew, input) => waitForDeliveries({ clock: deps.clock, wakeups: deps.wakeups, waitMs }, {
|
|
21
|
+
crew,
|
|
22
|
+
look: () => deps.uow.run((tx) => claimForCrew({ tx, ids: deps.ids, at: deps.clock.now() }, { crew, max: REPLY_MAX, inReplyTo: input.messageId })),
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=receive-reply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"receive-reply.js","sourceRoot":"","sources":["../../../src/domain/messaging/receive-reply.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAA0E,MAAM,yBAAyB,CAAC;AAInK,qFAAqF;AACrF,MAAM,SAAS,GAAG,CAAC,CAAC;AAEpB;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAOlC;IACC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,eAAe,CAAC;IAC9C,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACrB,iBAAiB,CACf,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EACpD;QACE,IAAI;QACJ,IAAI,EAAE,GAAG,EAAE,CACT,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;KACxI,CACF,CAAC;AACN,CAAC"}
|
|
@@ -5,12 +5,13 @@ import type { UnitOfWork } from '../shared/unit-of-work.js';
|
|
|
5
5
|
import type { Recipient } from '../shared/selector.js';
|
|
6
6
|
import type { CarriedLabel } from './label.js';
|
|
7
7
|
import { type NetworkSettings, type ReachingShip, type RulesInForce } from './network-settings.js';
|
|
8
|
-
import type { LabelRepository, LeaseRepository, NetworkSettingsRepository, ReachRefusalRepository, ShipRepository } from './ports.js';
|
|
8
|
+
import type { LabelRepository, LeaseRepository, NetworkSettingsRepository, PluginConnectionRepository, ReachRefusalRepository, ShipRepository } from './ports.js';
|
|
9
9
|
import type { Ship } from './ship.js';
|
|
10
10
|
/** The ports a send's reach check reads and writes, inside the send's unit of work. */
|
|
11
11
|
export interface CheckReachTx {
|
|
12
12
|
networkSettings: Pick<NetworkSettingsRepository, 'findForShare'>;
|
|
13
13
|
ships: Pick<ShipRepository, 'find' | 'listActiveOfType'>;
|
|
14
|
+
pluginConnections: Pick<PluginConnectionRepository, 'find'>;
|
|
14
15
|
labels: Pick<LabelRepository, 'carriedBy' | 'find'>;
|
|
15
16
|
reachRefusals: ReachRefusalRepository;
|
|
16
17
|
leases: Pick<LeaseRepository, 'findLastSeen'>;
|
|
@@ -113,10 +114,13 @@ export interface ShipAsItIs {
|
|
|
113
114
|
id: ShipId;
|
|
114
115
|
name: string;
|
|
115
116
|
} | null;
|
|
117
|
+
/** Whether argo connected it as a plugin (decision 0034). */
|
|
118
|
+
isConnectedPlugin: boolean;
|
|
116
119
|
}
|
|
117
120
|
/** The ship with the label values it carries now, by key then value, with their texts, and its owner. */
|
|
118
121
|
export declare function shipAsItIs(tx: {
|
|
119
122
|
labels: CheckReachTx['labels'];
|
|
120
123
|
ships: Pick<ShipRepository, 'find'>;
|
|
124
|
+
pluginConnections: CheckReachTx['pluginConnections'];
|
|
121
125
|
}, ship: Ship): Promise<ShipAsItIs>;
|
|
122
|
-
export declare function reaching({ ship, labels }: ShipAsItIs): ReachingShip;
|
|
126
|
+
export declare function reaching({ ship, labels, isConnectedPlugin }: ShipAsItIs): ReachingShip;
|
|
@@ -174,10 +174,11 @@ export async function shipAsItIs(tx, ship) {
|
|
|
174
174
|
}
|
|
175
175
|
labels.sort((first, second) => first.key.localeCompare(second.key) || first.value.localeCompare(second.value));
|
|
176
176
|
const owner = ship.owner === null ? undefined : await tx.ships.find(ship.fleetId, ship.owner);
|
|
177
|
-
|
|
177
|
+
const isConnectedPlugin = (await tx.pluginConnections.find(ship.fleetId, ship.id)) !== undefined;
|
|
178
|
+
return { ship, labels, owner: owner ? { id: owner.id, name: owner.name } : null, isConnectedPlugin };
|
|
178
179
|
}
|
|
179
|
-
export function reaching({ ship, labels }) {
|
|
180
|
-
return { id: ship.id, owner: ship.owner, kind: ship.kind, labels: labels.map(({ labelId, valueId }) => ({ labelId, valueId })) };
|
|
180
|
+
export function reaching({ ship, labels, isConnectedPlugin }) {
|
|
181
|
+
return { id: ship.id, owner: ship.owner, kind: ship.kind, isConnectedPlugin, labels: labels.map(({ labelId, valueId }) => ({ labelId, valueId })) };
|
|
181
182
|
}
|
|
182
183
|
function refused({ ship, labels, owner }) {
|
|
183
184
|
return { id: ship.id, name: ship.name, labels, owner };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-reach.js","sourceRoot":"","sources":["../../../src/domain/registry/check-reach.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,GAAG,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAI3D,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,YAAY,EAA8D,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"check-reach.js","sourceRoot":"","sources":["../../../src/domain/registry/check-reach.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,8 @@ export interface CommissionShipInput {
|
|
|
22
22
|
scopes?: readonly string[];
|
|
23
23
|
/** The ship that asked the caller, a plugin's ship holding fleet:on-behalf, for this one: the new ship gets its owner (decision 0045). */
|
|
24
24
|
ownerOf?: ShipId;
|
|
25
|
+
/** The owner argo picked for an app ship that a ship holding fleet:on-behalf, the gateway, commissions (decision 0045). */
|
|
26
|
+
owner?: ShipId;
|
|
25
27
|
/** The caller's own key for this commission, so a retry never commissions twice. */
|
|
26
28
|
idempotencyKey: string;
|
|
27
29
|
}
|
|
@@ -43,14 +45,16 @@ export type CommissionShipRefusal = CommissionRefusal | DomainError<'INVALID_IDE
|
|
|
43
45
|
export type CommissionShip = (caller: Caller, input: CommissionShipInput) => Promise<Result<CommissionedShip, CommissionShipRefusal>>;
|
|
44
46
|
/**
|
|
45
47
|
* Use case: the caller commissions a ship in its own fleet, an agent unless
|
|
46
|
-
* it states another kind (only argo commissions a person
|
|
48
|
+
* it states another kind (only argo commissions a person ship; an app ship
|
|
49
|
+
* also a caller holding fleet:on-behalf, the gateway). The ship
|
|
47
50
|
* awaits crew and gets its first starting prompt, all in one transaction. The
|
|
48
51
|
* caller's scope (fleet:commission) is checked before this runs. The ship gets
|
|
49
52
|
* the agent scopes and the scopes asked for, each one the caller's ship may
|
|
50
53
|
* grant, read from the server (decision 0046); each plugin namespace they
|
|
51
54
|
* name is locked after the name. Its owner is the caller's owner; a caller
|
|
52
55
|
* holding fleet:on-behalf may name the ship that asked it instead, whose owner
|
|
53
|
-
* it gets (decision 0045). The
|
|
56
|
+
* it gets, or for an app ship the owner argo picked (decision 0045). The
|
|
57
|
+
* caller's idempotency key makes
|
|
54
58
|
* a retry safe: the same key with the same request answers the ship it
|
|
55
59
|
* commissioned, with no secret, and changes nothing; the same key with another
|
|
56
60
|
* request is refused.
|
|
@@ -9,18 +9,47 @@ import { issueStartingPrompt } from './starting-prompt.js';
|
|
|
9
9
|
/** The request as one text, so a repeat is known by its hash: the scopes in a fixed order, each once. */
|
|
10
10
|
function commissionRequestText(input) {
|
|
11
11
|
const scopes = [...new Set(input.scopes)].toSorted();
|
|
12
|
-
return JSON.stringify({
|
|
12
|
+
return JSON.stringify({
|
|
13
|
+
name: input.name,
|
|
14
|
+
type: input.type,
|
|
15
|
+
kind: input.kind ?? 'agent',
|
|
16
|
+
note: input.note ?? null,
|
|
17
|
+
scopes,
|
|
18
|
+
ownerOf: input.ownerOf ?? null,
|
|
19
|
+
owner: input.owner ?? null,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The ship, read again once its owner is held FOR SHARE, so the owner the new
|
|
24
|
+
* ship gets is never a retired one. A retire locks the owner first: one that
|
|
25
|
+
* committed before has moved the ship to argo, so the owner read changed and
|
|
26
|
+
* its new owner is held instead; one after waits for this commission and finds
|
|
27
|
+
* the new ship among those it hands to argo.
|
|
28
|
+
*/
|
|
29
|
+
async function findWithOwnerHeld(tx, ref) {
|
|
30
|
+
let ship = await tx.ships.find(ref.fleetId, ref.shipId);
|
|
31
|
+
while (ship?.owner) {
|
|
32
|
+
const owner = ship.owner;
|
|
33
|
+
await tx.ships.findForShare(ref.fleetId, owner);
|
|
34
|
+
ship = await tx.ships.find(ref.fleetId, ref.shipId);
|
|
35
|
+
if (ship?.owner === owner) {
|
|
36
|
+
return ship;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return ship;
|
|
13
40
|
}
|
|
14
41
|
/**
|
|
15
42
|
* Use case: the caller commissions a ship in its own fleet, an agent unless
|
|
16
|
-
* it states another kind (only argo commissions a person
|
|
43
|
+
* it states another kind (only argo commissions a person ship; an app ship
|
|
44
|
+
* also a caller holding fleet:on-behalf, the gateway). The ship
|
|
17
45
|
* awaits crew and gets its first starting prompt, all in one transaction. The
|
|
18
46
|
* caller's scope (fleet:commission) is checked before this runs. The ship gets
|
|
19
47
|
* the agent scopes and the scopes asked for, each one the caller's ship may
|
|
20
48
|
* grant, read from the server (decision 0046); each plugin namespace they
|
|
21
49
|
* name is locked after the name. Its owner is the caller's owner; a caller
|
|
22
50
|
* holding fleet:on-behalf may name the ship that asked it instead, whose owner
|
|
23
|
-
* it gets (decision 0045). The
|
|
51
|
+
* it gets, or for an app ship the owner argo picked (decision 0045). The
|
|
52
|
+
* caller's idempotency key makes
|
|
24
53
|
* a retry safe: the same key with the same request answers the ship it
|
|
25
54
|
* commissioned, with no secret, and changes nothing; the same key with another
|
|
26
55
|
* request is refused.
|
|
@@ -57,18 +86,20 @@ export function createCommissionShip(deps) {
|
|
|
57
86
|
return refuse('SHIP_LIMIT_REACHED', `The fleet is at its limit of ${String(shipLimit)} ships, so it takes no new one.`);
|
|
58
87
|
}
|
|
59
88
|
}
|
|
60
|
-
const commissioner = await tx
|
|
89
|
+
const commissioner = await findWithOwnerHeld(tx, { fleetId, shipId: caller.shipId });
|
|
61
90
|
const argo = await tx.ships.findOperatorShip(fleetId);
|
|
62
91
|
if (!commissioner || !argo) {
|
|
63
92
|
return refuse('SHIP_NOT_FOUND', `Ship ${caller.shipId} or its fleet's argo does not exist`);
|
|
64
93
|
}
|
|
65
|
-
const askingShip = input.ownerOf === undefined ? undefined : await tx
|
|
94
|
+
const askingShip = input.ownerOf === undefined ? undefined : await findWithOwnerHeld(tx, { fleetId, shipId: input.ownerOf });
|
|
66
95
|
if (input.ownerOf !== undefined && askingShip === undefined) {
|
|
67
96
|
return refuse('SHIP_NOT_FOUND', `Ship ${input.ownerOf}, named as the ship that asked, does not exist`);
|
|
68
97
|
}
|
|
98
|
+
// Held FOR SHARE, as an asking ship's owner is: a retire of the named owner waits, so the new ship never keeps a retired owner.
|
|
99
|
+
const namedOwner = input.owner === undefined ? undefined : await tx.ships.findForShare(fleetId, input.owner);
|
|
69
100
|
await tx.ships.lockName(fleetId, input.name);
|
|
70
101
|
const namespaces = await lockNamedNamespaces(tx, { fleetId, scopes: input.scopes ?? [] });
|
|
71
|
-
const commissioned = commissionShip({ ...input, id: deps.ids('ship'), fleetId, commissioner, argoShipId: argo.id, askingShip, at, actor, commission: { by: caller.shipId, idempotencyKey: key.value, requestHash } }, { activeShipNamed: await tx.ships.findActiveByName(fleetId, input.name), namespaces });
|
|
102
|
+
const commissioned = commissionShip({ ...input, id: deps.ids('ship'), fleetId, commissioner, argoShipId: argo.id, askingShip, namedOwner, at, actor, commission: { by: caller.shipId, idempotencyKey: key.value, requestHash } }, { activeShipNamed: await tx.ships.findActiveByName(fleetId, input.name), namespaces });
|
|
72
103
|
if (!commissioned.isOk) {
|
|
73
104
|
return commissioned;
|
|
74
105
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commission-ship.js","sourceRoot":"","sources":["../../../src/domain/registry/commission-ship.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAwB,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAA0B,MAAM,uBAAuB,CAAC;AAEpF,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"commission-ship.js","sourceRoot":"","sources":["../../../src/domain/registry/commission-ship.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { IdGenerator, ShipId } from '@aeolus-fleet/common';
|
|
2
|
+
import type { Caller } from '../shared/caller.js';
|
|
3
|
+
import type { Clock } from '../shared/clock.js';
|
|
4
|
+
import { type DomainError } from '../shared/errors.js';
|
|
5
|
+
import { type EventLog } from '../shared/events.js';
|
|
6
|
+
import { type Result } from '../shared/result.js';
|
|
7
|
+
import type { UnitOfWork } from '../shared/unit-of-work.js';
|
|
8
|
+
import { type ConnectPluginRefusal } from './plugin-connection.js';
|
|
9
|
+
import type { PluginConnectionRepository, ShipRepository } from './ports.js';
|
|
10
|
+
export interface ConnectPluginTx {
|
|
11
|
+
ships: Pick<ShipRepository, 'findForUpdate'>;
|
|
12
|
+
pluginConnections: PluginConnectionRepository;
|
|
13
|
+
events: EventLog;
|
|
14
|
+
}
|
|
15
|
+
export type ConnectPluginUseCaseRefusal = DomainError<'NOT_THE_OPERATOR_SHIP' | 'SHIP_NOT_FOUND'> | ConnectPluginRefusal;
|
|
16
|
+
export type ConnectPlugin = (caller: Caller, input: {
|
|
17
|
+
shipId: ShipId;
|
|
18
|
+
}) => Promise<Result<undefined, ConnectPluginUseCaseRefusal>>;
|
|
19
|
+
/**
|
|
20
|
+
* Use case: argo, and only argo, connects a ship as a plugin of its fleet,
|
|
21
|
+
* as the console's Connect does (decision 0034): from then on the ship reads
|
|
22
|
+
* every ship, whatever the rules, until a release or a retire of the ship
|
|
23
|
+
* ends it. PluginConnected in the same unit of work. It holds the ship, as a
|
|
24
|
+
* release and a retire do, so neither passes it by.
|
|
25
|
+
*/
|
|
26
|
+
export declare function createConnectPlugin(deps: {
|
|
27
|
+
uow: UnitOfWork<ConnectPluginTx>;
|
|
28
|
+
clock: Clock;
|
|
29
|
+
ids: IdGenerator;
|
|
30
|
+
}): ConnectPlugin;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { refuse } from '../shared/errors.js';
|
|
2
|
+
import { recordEvent, shipActor } from '../shared/events.js';
|
|
3
|
+
import { ok } from '../shared/result.js';
|
|
4
|
+
import { connectPlugin } from './plugin-connection.js';
|
|
5
|
+
/**
|
|
6
|
+
* Use case: argo, and only argo, connects a ship as a plugin of its fleet,
|
|
7
|
+
* as the console's Connect does (decision 0034): from then on the ship reads
|
|
8
|
+
* every ship, whatever the rules, until a release or a retire of the ship
|
|
9
|
+
* ends it. PluginConnected in the same unit of work. It holds the ship, as a
|
|
10
|
+
* release and a retire do, so neither passes it by.
|
|
11
|
+
*/
|
|
12
|
+
export function createConnectPlugin(deps) {
|
|
13
|
+
return (caller, input) => deps.uow.run(async (tx) => {
|
|
14
|
+
if (caller.kind !== 'operator') {
|
|
15
|
+
return refuse('NOT_THE_OPERATOR_SHIP', 'Only argo connects a plugin');
|
|
16
|
+
}
|
|
17
|
+
const { fleetId } = caller;
|
|
18
|
+
const ship = await tx.ships.findForUpdate(fleetId, input.shipId);
|
|
19
|
+
if (!ship) {
|
|
20
|
+
return refuse('SHIP_NOT_FOUND', `Ship ${input.shipId} does not exist`);
|
|
21
|
+
}
|
|
22
|
+
const connected = connectPlugin(ship, { current: await tx.pluginConnections.find(fleetId, ship.id), at: deps.clock.now(), actor: shipActor(caller.shipId) });
|
|
23
|
+
if (!connected.isOk) {
|
|
24
|
+
return connected;
|
|
25
|
+
}
|
|
26
|
+
if (connected.value.connection) {
|
|
27
|
+
await tx.pluginConnections.connect(connected.value.connection);
|
|
28
|
+
}
|
|
29
|
+
for (const event of connected.value.events) {
|
|
30
|
+
await recordEvent({ events: tx.events, ids: deps.ids }, event);
|
|
31
|
+
}
|
|
32
|
+
return ok(undefined);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=connect-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect-plugin.js","sourceRoot":"","sources":["../../../src/domain/registry/connect-plugin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,SAAS,EAAiB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,aAAa,EAA6B,MAAM,wBAAwB,CAAC;AAalF;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAA0E;IAC5G,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CACvB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAA2D,EAAE;QACjF,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,OAAO,MAAM,CAAC,uBAAuB,EAAE,6BAA6B,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,MAAM,CAAC,gBAAgB,EAAE,QAAQ,KAAK,CAAC,MAAM,iBAAiB,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7J,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACpB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YAC/B,MAAM,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACjE,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC3C,MAAM,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -9,6 +9,7 @@ export interface DiscoverTx {
|
|
|
9
9
|
networkSettings: CheckReachTx['networkSettings'];
|
|
10
10
|
ships: Pick<ShipRepository, 'find' | 'listActive'>;
|
|
11
11
|
labels: CheckReachTx['labels'];
|
|
12
|
+
pluginConnections: CheckReachTx['pluginConnections'];
|
|
12
13
|
leases: Pick<LeaseRepository, 'findLastSeen' | 'listOpenStatements'>;
|
|
13
14
|
}
|
|
14
15
|
export type Discover = (caller: Caller) => Promise<Result<Discovered, never>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../../src/domain/registry/discover.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAqB,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../../src/domain/registry/discover.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ export interface ExplainReachTx {
|
|
|
10
10
|
networkSettings: CheckReachTx['networkSettings'];
|
|
11
11
|
ships: Pick<ShipRepository, 'find' | 'listActive'>;
|
|
12
12
|
labels: CheckReachTx['labels'];
|
|
13
|
+
pluginConnections: CheckReachTx['pluginConnections'];
|
|
13
14
|
leases: CheckReachTx['leases'];
|
|
14
15
|
declaredNetworkRules: Pick<DeclaredNetworkRulesRepository, 'list'>;
|
|
15
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explain-reach.js","sourceRoot":"","sources":["../../../src/domain/registry/explain-reach.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAoD,MAAM,sBAAsB,CAAC;AAIvG,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAqB,MAAM,kBAAkB,CAAC;AAE3F,OAAO,EAAE,WAAW,EAAoD,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"explain-reach.js","sourceRoot":"","sources":["../../../src/domain/registry/explain-reach.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FleetId, IdGenerator, LeaseId, ShipId, ShipKind } from '@aeolus-fleet/common';
|
|
1
|
+
import type { FleetId, IdGenerator, LeaseId, LeaseWaker, ShipId, ShipKind } from '@aeolus-fleet/common';
|
|
2
2
|
import { type DomainError } from '../shared/errors.js';
|
|
3
3
|
import { type Actor, type EventLog } from '../shared/events.js';
|
|
4
4
|
import type { Notifier } from '../shared/notifier.js';
|
|
@@ -68,8 +68,10 @@ export declare function holdLease(tx: HoldLeaseTx, crew: {
|
|
|
68
68
|
* Marks the crew's lease pushed (decision 0040): from its first push receive
|
|
69
69
|
* until it ends, the computer side takes its deliveries and the agent's plain
|
|
70
70
|
* receive answers nothing. The first mark writes LeasePushed, caused by the
|
|
71
|
-
* crew's ship
|
|
72
|
-
*
|
|
71
|
+
* crew's ship, with what wakes the ship when the push receive states it
|
|
72
|
+
* (interop 5.1); a lease already pushed, or one that has ended, stays as it
|
|
73
|
+
* was, its waker included. Call it first in the unit of work, before the
|
|
74
|
+
* lease is held.
|
|
73
75
|
*/
|
|
74
76
|
export declare function markLeasePushed(deps: {
|
|
75
77
|
tx: {
|
|
@@ -82,6 +84,7 @@ export declare function markLeasePushed(deps: {
|
|
|
82
84
|
shipId: ShipId;
|
|
83
85
|
leaseId: LeaseId;
|
|
84
86
|
at: Date;
|
|
87
|
+
waker?: LeaseWaker;
|
|
85
88
|
}): Promise<void>;
|
|
86
89
|
/** Whether the crew's lease is pushed: a push receive has marked it. */
|
|
87
90
|
export declare function isLeasePushed(tx: {
|