@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.
Files changed (180) hide show
  1. package/README.md +1 -1
  2. package/dist/adapters/prisma/generated/browser.d.ts +6 -0
  3. package/dist/adapters/prisma/generated/client.d.ts +6 -0
  4. package/dist/adapters/prisma/generated/commonInputTypes.d.ts +30 -0
  5. package/dist/adapters/prisma/generated/enums.d.ts +8 -0
  6. package/dist/adapters/prisma/generated/enums.js +7 -0
  7. package/dist/adapters/prisma/generated/enums.js.map +1 -1
  8. package/dist/adapters/prisma/generated/internal/class.d.ts +11 -0
  9. package/dist/adapters/prisma/generated/internal/class.js +4 -4
  10. package/dist/adapters/prisma/generated/internal/class.js.map +1 -1
  11. package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +93 -1
  12. package/dist/adapters/prisma/generated/internal/prismaNamespace.js +9 -1
  13. package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
  14. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +9 -0
  15. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +9 -1
  16. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  17. package/dist/adapters/prisma/generated/models/Fleet.d.ts +283 -0
  18. package/dist/adapters/prisma/generated/models/Lease.d.ts +60 -1
  19. package/dist/adapters/prisma/generated/models/NetworkSettings.d.ts +35 -3
  20. package/dist/adapters/prisma/generated/models/PluginConnection.d.ts +1180 -0
  21. package/dist/adapters/prisma/generated/models/PluginConnection.js +2 -0
  22. package/dist/adapters/prisma/generated/models/PluginConnection.js.map +1 -0
  23. package/dist/adapters/prisma/generated/models/Ship.d.ts +290 -0
  24. package/dist/adapters/prisma/generated/models.d.ts +1 -0
  25. package/dist/adapters/prisma/history.js +4 -2
  26. package/dist/adapters/prisma/history.js.map +1 -1
  27. package/dist/adapters/prisma/messaging.js +5 -2
  28. package/dist/adapters/prisma/messaging.js.map +1 -1
  29. package/dist/adapters/prisma/network.js +7 -4
  30. package/dist/adapters/prisma/network.js.map +1 -1
  31. package/dist/adapters/prisma/overdue.js +4 -3
  32. package/dist/adapters/prisma/overdue.js.map +1 -1
  33. package/dist/adapters/prisma/plugin-connections.d.ts +4 -0
  34. package/dist/adapters/prisma/plugin-connections.js +20 -0
  35. package/dist/adapters/prisma/plugin-connections.js.map +1 -0
  36. package/dist/adapters/prisma/registry.js +3 -2
  37. package/dist/adapters/prisma/registry.js.map +1 -1
  38. package/dist/adapters/prisma/rows.js +2 -0
  39. package/dist/adapters/prisma/rows.js.map +1 -1
  40. package/dist/adapters/prisma/unit-of-work.d.ts +2 -1
  41. package/dist/adapters/prisma/unit-of-work.js +2 -0
  42. package/dist/adapters/prisma/unit-of-work.js.map +1 -1
  43. package/dist/adapters/trpc/context.d.ts +8 -0
  44. package/dist/adapters/trpc/fleet.d.ts +72 -16
  45. package/dist/adapters/trpc/fleet.js +31 -6
  46. package/dist/adapters/trpc/fleet.js.map +1 -1
  47. package/dist/adapters/trpc/router.d.ts +143 -14
  48. package/dist/adapters/trpc/ship-contract.js +1 -0
  49. package/dist/adapters/trpc/ship-contract.js.map +1 -1
  50. package/dist/adapters/trpc/ship-protocol.js +1 -1
  51. package/dist/adapters/trpc/ship-protocol.js.map +1 -1
  52. package/dist/adapters/trpc/ship.d.ts +85 -0
  53. package/dist/adapters/trpc/ship.js +48 -4
  54. package/dist/adapters/trpc/ship.js.map +1 -1
  55. package/dist/adapters/trpc/trpc.d.ts +7 -4
  56. package/dist/adapters/trpc/trpc.js +14 -5
  57. package/dist/adapters/trpc/trpc.js.map +1 -1
  58. package/dist/domain/messaging/delivery.d.ts +8 -2
  59. package/dist/domain/messaging/delivery.js +14 -9
  60. package/dist/domain/messaging/delivery.js.map +1 -1
  61. package/dist/domain/messaging/hand-over-delivery.d.ts +1 -0
  62. package/dist/domain/messaging/hand-over-delivery.js +1 -0
  63. package/dist/domain/messaging/hand-over-delivery.js.map +1 -1
  64. package/dist/domain/messaging/overdue.d.ts +2 -0
  65. package/dist/domain/messaging/overdue.js +3 -0
  66. package/dist/domain/messaging/overdue.js.map +1 -1
  67. package/dist/domain/messaging/ports.d.ts +2 -0
  68. package/dist/domain/messaging/push-receive-deliveries.d.ts +4 -1
  69. package/dist/domain/messaging/push-receive-deliveries.js +5 -3
  70. package/dist/domain/messaging/push-receive-deliveries.js.map +1 -1
  71. package/dist/domain/messaging/receive-deliveries.d.ts +21 -0
  72. package/dist/domain/messaging/receive-deliveries.js +5 -3
  73. package/dist/domain/messaging/receive-deliveries.js.map +1 -1
  74. package/dist/domain/messaging/receive-reply.d.ts +32 -0
  75. package/dist/domain/messaging/receive-reply.js +25 -0
  76. package/dist/domain/messaging/receive-reply.js.map +1 -0
  77. package/dist/domain/registry/check-reach.d.ts +6 -2
  78. package/dist/domain/registry/check-reach.js +4 -3
  79. package/dist/domain/registry/check-reach.js.map +1 -1
  80. package/dist/domain/registry/commission-ship.d.ts +6 -2
  81. package/dist/domain/registry/commission-ship.js +37 -6
  82. package/dist/domain/registry/commission-ship.js.map +1 -1
  83. package/dist/domain/registry/connect-plugin.d.ts +30 -0
  84. package/dist/domain/registry/connect-plugin.js +35 -0
  85. package/dist/domain/registry/connect-plugin.js.map +1 -0
  86. package/dist/domain/registry/discover.d.ts +1 -0
  87. package/dist/domain/registry/discover.js.map +1 -1
  88. package/dist/domain/registry/explain-reach.d.ts +1 -0
  89. package/dist/domain/registry/explain-reach.js.map +1 -1
  90. package/dist/domain/registry/leases.d.ts +6 -3
  91. package/dist/domain/registry/leases.js +7 -5
  92. package/dist/domain/registry/leases.js.map +1 -1
  93. package/dist/domain/registry/network-settings.d.ts +17 -6
  94. package/dist/domain/registry/network-settings.js +21 -10
  95. package/dist/domain/registry/network-settings.js.map +1 -1
  96. package/dist/domain/registry/plugin-connection.d.ts +48 -0
  97. package/dist/domain/registry/plugin-connection.js +35 -0
  98. package/dist/domain/registry/plugin-connection.js.map +1 -0
  99. package/dist/domain/registry/ports.d.ts +13 -1
  100. package/dist/domain/registry/read-built-in-rules.d.ts +2 -2
  101. package/dist/domain/registry/read-built-in-rules.js +3 -2
  102. package/dist/domain/registry/read-built-in-rules.js.map +1 -1
  103. package/dist/domain/registry/read-network-plugin.d.ts +23 -0
  104. package/dist/domain/registry/read-network-plugin.js +15 -0
  105. package/dist/domain/registry/read-network-plugin.js.map +1 -0
  106. package/dist/domain/registry/read-reach.d.ts +4 -2
  107. package/dist/domain/registry/read-reach.js +7 -2
  108. package/dist/domain/registry/read-reach.js.map +1 -1
  109. package/dist/domain/registry/recrew-ship.js +2 -0
  110. package/dist/domain/registry/recrew-ship.js.map +1 -1
  111. package/dist/domain/registry/release-ship.d.ts +4 -2
  112. package/dist/domain/registry/release-ship.js +4 -1
  113. package/dist/domain/registry/release-ship.js.map +1 -1
  114. package/dist/domain/registry/retire-ship.d.ts +2 -1
  115. package/dist/domain/registry/retire-ship.js +2 -0
  116. package/dist/domain/registry/retire-ship.js.map +1 -1
  117. package/dist/domain/registry/ship.d.ts +9 -5
  118. package/dist/domain/registry/ship.js +37 -4
  119. package/dist/domain/registry/ship.js.map +1 -1
  120. package/dist/domain/shared/delivery-way.d.ts +9 -5
  121. package/dist/domain/shared/delivery-way.js +17 -5
  122. package/dist/domain/shared/delivery-way.js.map +1 -1
  123. package/dist/domain/shared/errors.d.ts +1 -1
  124. package/dist/domain/shared/errors.js.map +1 -1
  125. package/dist/domain/shared/health.d.ts +3 -1
  126. package/dist/domain/shared/health.js +5 -3
  127. package/dist/domain/shared/health.js.map +1 -1
  128. package/dist/domain/shared/history.d.ts +2 -0
  129. package/dist/domain/shared/history.js.map +1 -1
  130. package/dist/domain/shared/read-health.d.ts +2 -1
  131. package/dist/domain/shared/read-health.js +9 -3
  132. package/dist/domain/shared/read-health.js.map +1 -1
  133. package/dist/domain/shared/read-sent-message.d.ts +31 -0
  134. package/dist/domain/shared/read-sent-message.js +28 -0
  135. package/dist/domain/shared/read-sent-message.js.map +1 -0
  136. package/dist/domain/shared/stuck.js +4 -2
  137. package/dist/domain/shared/stuck.js.map +1 -1
  138. package/dist/testing/container-images.d.ts +14 -0
  139. package/dist/testing/container-images.js +18 -0
  140. package/dist/testing/container-images.js.map +1 -0
  141. package/dist/testing/database.d.ts +14 -0
  142. package/dist/testing/database.js +48 -0
  143. package/dist/testing/database.js.map +1 -0
  144. package/dist/testing/fleet.d.ts +13 -0
  145. package/dist/testing/fleet.js +17 -0
  146. package/dist/testing/fleet.js.map +1 -0
  147. package/dist/testing/index.d.ts +12 -0
  148. package/dist/testing/index.js +12 -0
  149. package/dist/testing/index.js.map +1 -0
  150. package/dist/testing/keys.d.ts +1 -0
  151. package/dist/testing/keys.js +7 -0
  152. package/dist/testing/keys.js.map +1 -0
  153. package/dist/testing/migrate-lock.d.ts +12 -0
  154. package/dist/testing/migrate-lock.js +51 -0
  155. package/dist/testing/migrate-lock.js.map +1 -0
  156. package/dist/testing/migrated-template.d.ts +12 -0
  157. package/dist/testing/migrated-template.js +29 -0
  158. package/dist/testing/migrated-template.js.map +1 -0
  159. package/dist/testing/postgres-container.d.ts +16 -0
  160. package/dist/testing/postgres-container.js +30 -0
  161. package/dist/testing/postgres-container.js.map +1 -0
  162. package/dist/testing/postgres-global-setup.d.ts +15 -0
  163. package/dist/testing/postgres-global-setup.js +20 -0
  164. package/dist/testing/postgres-global-setup.js.map +1 -0
  165. package/dist/testing/prisma-cli.d.ts +5 -0
  166. package/dist/testing/prisma-cli.js +15 -0
  167. package/dist/testing/prisma-cli.js.map +1 -0
  168. package/dist/testing/result.d.ts +5 -0
  169. package/dist/testing/result.js +15 -0
  170. package/dist/testing/result.js.map +1 -0
  171. package/dist/wiring.d.ts +8 -0
  172. package/dist/wiring.js +14 -0
  173. package/dist/wiring.js.map +1 -1
  174. package/package.json +28 -2
  175. package/src/adapters/prisma/migrations/20261018250000_scope_catalogue/migration.sql +8 -7
  176. package/src/adapters/prisma/migrations/20261019100000_on_behalf_scope/migration.sql +3 -1
  177. package/src/adapters/prisma/migrations/20261019130000_plugin_connections/migration.sql +54 -0
  178. package/src/adapters/prisma/migrations/20261019150000_network_plugin_registered_at/migration.sql +23 -0
  179. package/src/adapters/prisma/migrations/20261019160000_lease_waker/migration.sql +4 -0
  180. package/src/adapters/prisma/schema.prisma +34 -5
@@ -81,20 +81,22 @@ export async function holdLease(tx, crew) {
81
81
  * Marks the crew's lease pushed (decision 0040): from its first push receive
82
82
  * until it ends, the computer side takes its deliveries and the agent's plain
83
83
  * receive answers nothing. The first mark writes LeasePushed, caused by the
84
- * crew's ship; a lease already pushed, or one that has ended, stays as it
85
- * was. Call it first in the unit of work, before the lease is held.
84
+ * crew's ship, with what wakes the ship when the push receive states it
85
+ * (interop 5.1); a lease already pushed, or one that has ended, stays as it
86
+ * was, its waker included. Call it first in the unit of work, before the
87
+ * lease is held.
86
88
  */
87
89
  export async function markLeasePushed(deps, crew) {
88
90
  const { tx, ids } = deps;
89
- const { fleetId, shipId, leaseId, at } = crew;
90
- if (await tx.leases.markPushed({ fleetId, leaseId, at })) {
91
+ const { fleetId, shipId, leaseId, at, waker } = crew;
92
+ if (await tx.leases.markPushed({ fleetId, leaseId, at, waker: waker ?? null })) {
91
93
  await recordEvent({ events: tx.events, ids }, {
92
94
  fleetId,
93
95
  type: 'LeasePushed',
94
96
  occurredAt: at,
95
97
  actor: shipActor(shipId),
96
98
  shipId,
97
- details: { leaseId },
99
+ details: { leaseId, ...(waker === undefined ? {} : { waker }) },
98
100
  });
99
101
  }
100
102
  }
@@ -1 +1 @@
1
- {"version":3,"file":"leases.js","sourceRoot":"","sources":["../../../src/domain/registry/leases.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"leases.js","sourceRoot":"","sources":["../../../src/domain/registry/leases.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,8 @@ export interface NetworkRule {
22
22
  */
23
23
  export interface NetworkPlugin extends NetworkPluginDeclaration {
24
24
  shipId: ShipId;
25
+ /** When the ship first registered; registering again replaces what it declared, not this. */
26
+ registeredAt: Date;
25
27
  }
26
28
  /**
27
29
  * The built-in rules that can be off (decision 0034): the viewer reading
@@ -104,7 +106,8 @@ export type SetBuiltInRuleRefusal = DomainError<'BUILT_IN_RULE_FIXED' | 'NOT_THE
104
106
  /**
105
107
  * A built-in rule turned on or off, as its own action (decision 0034): the
106
108
  * viewer reading by argo, open for one verb by the fleet's networking plugin.
107
- * argo, the owner and the answer are never off, so turning them is refused.
109
+ * argo, the owner, the answer and a connected plugin's reading are never off,
110
+ * so turning them is refused.
108
111
  * A change moves the version and writes BuiltInRuleChanged; a rule already
109
112
  * as asked changes nothing.
110
113
  */
@@ -140,6 +143,8 @@ export declare function isNetworkPluginResponding(plugin: NetworkPlugin, crew: {
140
143
  export interface RulesInForce {
141
144
  rules: readonly NetworkRule[];
142
145
  builtIns: BuiltInSwitches;
146
+ /** The fleet's registered networking plugin's ship, responding or not: it reads as a connected plugin does (decision 0034). */
147
+ networkPluginShipId: ShipId | null;
143
148
  whilePluginUnavailable: Exclude<WhileUnavailable, 'open-all'> | null;
144
149
  }
145
150
  /**
@@ -155,11 +160,16 @@ export interface ReachingLabel {
155
160
  labelId: LabelId;
156
161
  valueId: LabelValueId;
157
162
  }
158
- /** A ship as a send's check sees it: its id and owner, for the owner exception, its kind, for the argo exception, and the label values it carries. */
163
+ /**
164
+ * A ship as a send's check sees it: its id and owner, for the owner exception,
165
+ * its kind, for the argo exception, whether argo connected it as a plugin, and
166
+ * the label values it carries.
167
+ */
159
168
  export interface ReachingShip {
160
169
  id: ShipId;
161
170
  owner: ShipId | null;
162
171
  kind: ShipKind;
172
+ isConnectedPlugin: boolean;
163
173
  labels: readonly ReachingLabel[];
164
174
  }
165
175
  /**
@@ -167,14 +177,15 @@ export interface ReachingShip {
167
177
  * when none does. The built-in rules that are never off hold whatever the
168
178
  * rules: argo reaches every ship and every ship reaches argo, but reads argo
169
179
  * only by a rule, so argo's messages are not every ship's to read; an owner's
170
- * ship reaches the ships it owns (decision 0045), and a ship answers the sender of
171
- * a message it received. The viewer reads every ship while that is on, and
180
+ * ship reaches the ships it owns (decision 0045), a ship answers the sender of
181
+ * a message it received, and a plugin argo connected, or the fleet's
182
+ * registered networking plugin, reads every ship. The viewer reads every ship while that is on, and
172
183
  * every ship reaches every ship by a verb while open is on for it. Otherwise
173
184
  * a rule of the verb must match the sender with its `from` and the recipient
174
185
  * with its `to`, named by its place in the list. The built-in rules come
175
186
  * first, in that order, as the rule list shows them.
176
187
  */
177
- export declare function reachRuleOf(settings: Pick<RulesInForce, 'rules' | 'builtIns'>, send: {
188
+ export declare function reachRuleOf(settings: Pick<RulesInForce, 'rules' | 'builtIns' | 'networkPluginShipId'>, send: {
178
189
  verb: NetworkVerb;
179
190
  sender: ReachingShip;
180
191
  recipient: ReachingShip;
@@ -187,7 +198,7 @@ export type ReachRule = {
187
198
  index: number;
188
199
  };
189
200
  /** Whether the settings let the sender do the verb to the recipient: some rule does (see reachRuleOf). */
190
- export declare function allowsReach(settings: Pick<RulesInForce, 'rules' | 'builtIns'>, send: {
201
+ export declare function allowsReach(settings: Pick<RulesInForce, 'rules' | 'builtIns' | 'networkPluginShipId'>, send: {
191
202
  verb: NetworkVerb;
192
203
  sender: ReachingShip;
193
204
  recipient: ReachingShip;
@@ -33,7 +33,12 @@ export function registerNetworkPlugin(current, change) {
33
33
  const settings = {
34
34
  ...current,
35
35
  version: current.version + 1,
36
- plugin: { shipId, whileUnavailable: declaration.whileUnavailable, notRespondingAfterSeconds: declaration.notRespondingAfterSeconds },
36
+ plugin: {
37
+ shipId,
38
+ whileUnavailable: declaration.whileUnavailable,
39
+ notRespondingAfterSeconds: declaration.notRespondingAfterSeconds,
40
+ registeredAt: current.plugin?.registeredAt ?? change.at,
41
+ },
37
42
  };
38
43
  return ok({
39
44
  settings,
@@ -114,13 +119,14 @@ export function setNetworkRules(current, change) {
114
119
  /**
115
120
  * A built-in rule turned on or off, as its own action (decision 0034): the
116
121
  * viewer reading by argo, open for one verb by the fleet's networking plugin.
117
- * argo, the owner and the answer are never off, so turning them is refused.
122
+ * argo, the owner, the answer and a connected plugin's reading are never off,
123
+ * so turning them is refused.
118
124
  * A change moves the version and writes BuiltInRuleChanged; a rule already
119
125
  * as asked changes nothing.
120
126
  */
121
127
  export function setBuiltInRule(current, change) {
122
128
  const { input, caller } = change;
123
- if (input.rule === 'argo' || input.rule === 'owner' || input.rule === 'answer') {
129
+ if (input.rule === 'argo' || input.rule === 'owner' || input.rule === 'answer' || input.rule === 'pluginRead') {
124
130
  return refuse('BUILT_IN_RULE_FIXED', `The built-in rule ${input.rule} is never off (decision 0034)`);
125
131
  }
126
132
  if (input.rule === 'viewerRead' && !caller.isOperator) {
@@ -213,16 +219,17 @@ export function isNetworkPluginResponding(plugin, crew) {
213
219
  */
214
220
  export function rulesInForce(settings, isPluginResponding) {
215
221
  const { plugin, rules, builtIns } = settings;
222
+ const networkPluginShipId = plugin?.shipId ?? null;
216
223
  if (plugin === null || isPluginResponding) {
217
- return { rules, builtIns, whilePluginUnavailable: null };
224
+ return { rules, builtIns, networkPluginShipId, whilePluginUnavailable: null };
218
225
  }
219
226
  switch (plugin.whileUnavailable) {
220
227
  case 'block-all':
221
- return { rules: [], builtIns: { ...builtIns, open: { send: false, read: false, manage: false } }, whilePluginUnavailable: 'block-all' };
228
+ return { rules: [], builtIns: { ...builtIns, open: { send: false, read: false, manage: false } }, networkPluginShipId, whilePluginUnavailable: 'block-all' };
222
229
  case 'open-all':
223
- return { rules, builtIns: { ...builtIns, open: BUILT_INS_ON.open }, whilePluginUnavailable: null };
230
+ return { rules, builtIns: { ...builtIns, open: BUILT_INS_ON.open }, networkPluginShipId, whilePluginUnavailable: null };
224
231
  case 'keep-latest':
225
- return { rules, builtIns, whilePluginUnavailable: 'keep-latest' };
232
+ return { rules, builtIns, networkPluginShipId, whilePluginUnavailable: 'keep-latest' };
226
233
  }
227
234
  }
228
235
  /**
@@ -230,8 +237,9 @@ export function rulesInForce(settings, isPluginResponding) {
230
237
  * when none does. The built-in rules that are never off hold whatever the
231
238
  * rules: argo reaches every ship and every ship reaches argo, but reads argo
232
239
  * only by a rule, so argo's messages are not every ship's to read; an owner's
233
- * ship reaches the ships it owns (decision 0045), and a ship answers the sender of
234
- * a message it received. The viewer reads every ship while that is on, and
240
+ * ship reaches the ships it owns (decision 0045), a ship answers the sender of
241
+ * a message it received, and a plugin argo connected, or the fleet's
242
+ * registered networking plugin, reads every ship. The viewer reads every ship while that is on, and
235
243
  * every ship reaches every ship by a verb while open is on for it. Otherwise
236
244
  * a rule of the verb must match the sender with its `from` and the recipient
237
245
  * with its `to`, named by its place in the list. The built-in rules come
@@ -239,7 +247,7 @@ export function rulesInForce(settings, isPluginResponding) {
239
247
  */
240
248
  export function reachRuleOf(settings, send) {
241
249
  const { verb, sender, recipient, isAnswerToSender } = send;
242
- const { rules, builtIns } = settings;
250
+ const { rules, builtIns, networkPluginShipId } = settings;
243
251
  if (sender.kind === 'operator' || (recipient.kind === 'operator' && verb !== 'read')) {
244
252
  return { builtIn: 'argo' };
245
253
  }
@@ -249,6 +257,9 @@ export function reachRuleOf(settings, send) {
249
257
  if (verb === 'send' && isAnswerToSender) {
250
258
  return { builtIn: 'answer' };
251
259
  }
260
+ if (verb === 'read' && (sender.isConnectedPlugin || sender.id === networkPluginShipId)) {
261
+ return { builtIn: 'pluginRead' };
262
+ }
252
263
  if (verb === 'read' && sender.kind === 'viewer' && builtIns.isViewerReadOn) {
253
264
  return { builtIn: 'viewerRead' };
254
265
  }
@@ -1 +1 @@
1
- {"version":3,"file":"network-settings.js","sourceRoot":"","sources":["../../../src/domain/registry/network-settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"network-settings.js","sourceRoot":"","sources":["../../../src/domain/registry/network-settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * A plugin argo connected (decision 0034): its ship reads every ship of its
3
+ * fleet, whatever the rules, until a release or a retire of the ship ends it.
4
+ * Connecting is argo's act in the console's Connect.
5
+ */
6
+ import type { FleetId, IdGenerator, ShipId } from '@aeolus-fleet/common';
7
+ import { type DomainError } from '../shared/errors.js';
8
+ import { type Actor, type EventLog, type NewEvent } from '../shared/events.js';
9
+ import { type Result } from '../shared/result.js';
10
+ import type { PluginConnectionRepository } from './ports.js';
11
+ import type { Ship } from './ship.js';
12
+ export interface PluginConnection {
13
+ fleetId: FleetId;
14
+ shipId: ShipId;
15
+ connectedAt: Date;
16
+ }
17
+ /** Why a connection ended: its ship was released, or retired. */
18
+ export type PluginDisconnectedWhy = 'released' | 'retired';
19
+ export type ConnectPluginRefusal = DomainError<'NOT_AN_AGENT_SHIP' | 'SHIP_ALREADY_RETIRED'>;
20
+ /**
21
+ * Connects the ship as a plugin, with PluginConnected: an active agent ship,
22
+ * never argo's own or the viewer. A ship connected already changes nothing.
23
+ */
24
+ export declare function connectPlugin(ship: Ship, change: {
25
+ current: PluginConnection | undefined;
26
+ at: Date;
27
+ actor: Actor;
28
+ }): Result<{
29
+ connection: PluginConnection | null;
30
+ events: NewEvent[];
31
+ }, ConnectPluginRefusal>;
32
+ /**
33
+ * Ends the ship's connection, if it holds one, with PluginDisconnected saying
34
+ * why: a release or a retire of its ship. In the caller's unit of work.
35
+ */
36
+ export declare function endPluginConnection(deps: {
37
+ tx: {
38
+ pluginConnections: PluginConnectionRepository;
39
+ events: EventLog;
40
+ };
41
+ ids: IdGenerator;
42
+ }, end: {
43
+ fleetId: FleetId;
44
+ shipId: ShipId;
45
+ why: PluginDisconnectedWhy;
46
+ at: Date;
47
+ actor: Actor;
48
+ }): Promise<void>;
@@ -0,0 +1,35 @@
1
+ import { refuse } from '../shared/errors.js';
2
+ import { recordEvent } from '../shared/events.js';
3
+ import { ok } from '../shared/result.js';
4
+ /**
5
+ * Connects the ship as a plugin, with PluginConnected: an active agent ship,
6
+ * never argo's own or the viewer. A ship connected already changes nothing.
7
+ */
8
+ export function connectPlugin(ship, change) {
9
+ if (ship.kind === 'operator' || ship.kind === 'viewer') {
10
+ return refuse('NOT_AN_AGENT_SHIP', `${ship.name} is argo's own ship or the viewer, never a plugin's`);
11
+ }
12
+ if (ship.retiredAt !== null) {
13
+ return refuse('SHIP_ALREADY_RETIRED', `${ship.name} is retired: a retired ship is never connected`);
14
+ }
15
+ if (change.current) {
16
+ return ok({ connection: null, events: [] });
17
+ }
18
+ return ok({
19
+ connection: { fleetId: ship.fleetId, shipId: ship.id, connectedAt: change.at },
20
+ events: [{ fleetId: ship.fleetId, type: 'PluginConnected', occurredAt: change.at, actor: change.actor, shipId: ship.id, details: {} }],
21
+ });
22
+ }
23
+ /**
24
+ * Ends the ship's connection, if it holds one, with PluginDisconnected saying
25
+ * why: a release or a retire of its ship. In the caller's unit of work.
26
+ */
27
+ export async function endPluginConnection(deps, end) {
28
+ const { fleetId, shipId, why, at, actor } = end;
29
+ if (!(await deps.tx.pluginConnections.find(fleetId, shipId))) {
30
+ return;
31
+ }
32
+ await deps.tx.pluginConnections.disconnect(fleetId, shipId);
33
+ await recordEvent({ events: deps.tx.events, ids: deps.ids }, { fleetId, type: 'PluginDisconnected', occurredAt: at, actor, shipId, details: { why } });
34
+ }
35
+ //# sourceMappingURL=plugin-connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-connection.js","sourceRoot":"","sources":["../../../src/domain/registry/plugin-connection.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAA4C,MAAM,qBAAqB,CAAC;AAC5F,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAetD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAU,EACV,MAAyE;IAEzE,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACvD,OAAO,MAAM,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,IAAI,qDAAqD,CAAC,CAAC;IACxG,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,sBAAsB,EAAE,GAAG,IAAI,CAAC,IAAI,gDAAgD,CAAC,CAAC;IACtG,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,EAAE,CAAC;QACR,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,EAAE;QAC9E,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;KACvI,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAmG,EACnG,GAA6F;IAE7F,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IAChD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;QAC7D,OAAO;IACT,CAAC;IACD,MAAM,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5D,MAAM,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AACzJ,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { DeliveryId, DeliveryState, FleetId, LabelId, LabelValueId, LeaseId, MessageId, ScopeName, ShipId } from '@aeolus-fleet/common';
1
+ import type { DeliveryId, DeliveryState, FleetId, LabelId, LabelValueId, LeaseId, LeaseWaker, MessageId, ScopeName, ShipId } from '@aeolus-fleet/common';
2
2
  import type { Recipient } from '../shared/selector.js';
3
3
  import type { ClearRequest } from './clear-request.js';
4
4
  import type { CrewRequest } from './crew-request.js';
@@ -9,6 +9,7 @@ import type { FleetLimitSettings, InstallationSettings } from './limits.js';
9
9
  import type { Lease, Location } from './lease.js';
10
10
  import type { DeclaredNetworkRules } from './declared-network-rules.js';
11
11
  import type { NetworkSettings } from './network-settings.js';
12
+ import type { PluginConnection } from './plugin-connection.js';
12
13
  import type { ReachRefusal } from './reach-refusal.js';
13
14
  import type { ScopeNamespace } from './scope-namespace.js';
14
15
  import type { Ship } from './ship.js';
@@ -249,11 +250,13 @@ export interface LeaseRepository {
249
250
  * Marks the open lease pushed from `at`, keeping an earlier mark, before
250
251
  * anything else of the lease is locked: two marks take turns and never
251
252
  * deadlock with the units of work holding it. True when this call marked it.
253
+ * The waker it states is kept with the first mark only (interop 5.1).
252
254
  */
253
255
  markPushed(pushed: {
254
256
  fleetId: FleetId;
255
257
  leaseId: LeaseId;
256
258
  at: Date;
259
+ waker: LeaseWaker | null;
257
260
  }): Promise<boolean>;
258
261
  /** Whether a push receive marked the lease pushed. */
259
262
  isPushed(fleetId: FleetId, leaseId: LeaseId): Promise<boolean>;
@@ -315,6 +318,15 @@ export interface DeclaredNetworkRulesRepository {
315
318
  /** Keeps the ship's whole list from now on; an empty one keeps none. */
316
319
  save(declared: DeclaredNetworkRules): Promise<void>;
317
320
  }
321
+ /** Outbound port: the plugins argo connected, one per ship, always within one fleet (decision 0034). */
322
+ export interface PluginConnectionRepository {
323
+ /** The ship's connection; none while it is not connected. */
324
+ find(fleetId: FleetId, shipId: ShipId): Promise<PluginConnection | undefined>;
325
+ /** Keeps the connection of a ship that holds none. */
326
+ connect(connection: PluginConnection): Promise<void>;
327
+ /** Ends the ship's connection, if it holds one. */
328
+ disconnect(fleetId: FleetId, shipId: ShipId): Promise<void>;
329
+ }
318
330
  /** Outbound port: the records of the sends the fleet's network rules refused (decision 0034). */
319
331
  export interface ReachRefusalRepository {
320
332
  record(refusal: ReachRefusal): Promise<void>;
@@ -9,8 +9,8 @@ export interface ReadBuiltInRulesTx {
9
9
  export type ReadBuiltInRules = (caller: Caller) => Promise<Result<BuiltInRuleState[], never>>;
10
10
  /**
11
11
  * Use case: every built-in rule of the caller's fleet as it is now (decision
12
- * 0034), in the order the rule list shows them, first: argo, the owner and
13
- * the answer, always on; the viewer reading as argo turned it; open per verb
12
+ * 0034), in the order the rule list shows them, first: argo, the owner, the
13
+ * answer and a connected plugin's reading, always on; the viewer reading as argo turned it; open per verb
14
14
  * as the networking plugin turned it. Its scope (fleet:network, which argo
15
15
  * holds) is checked before this runs. Read under the shared settings lock,
16
16
  * so it answers one version.
@@ -2,8 +2,8 @@ import { NETWORK_VERBS } from '@aeolus-fleet/common';
2
2
  import { ok } from '../shared/result.js';
3
3
  /**
4
4
  * Use case: every built-in rule of the caller's fleet as it is now (decision
5
- * 0034), in the order the rule list shows them, first: argo, the owner and
6
- * the answer, always on; the viewer reading as argo turned it; open per verb
5
+ * 0034), in the order the rule list shows them, first: argo, the owner, the
6
+ * answer and a connected plugin's reading, always on; the viewer reading as argo turned it; open per verb
7
7
  * as the networking plugin turned it. Its scope (fleet:network, which argo
8
8
  * holds) is checked before this runs. Read under the shared settings lock,
9
9
  * so it answers one version.
@@ -15,6 +15,7 @@ export function createReadBuiltInRules(deps) {
15
15
  { rule: 'argo', isOn: true },
16
16
  { rule: 'owner', isOn: true },
17
17
  { rule: 'answer', isOn: true },
18
+ { rule: 'pluginRead', isOn: true },
18
19
  { rule: 'viewerRead', isOn: builtIns.isViewerReadOn },
19
20
  ...NETWORK_VERBS.map((verb) => ({ rule: 'open', verb, isOn: builtIns.open[verb] })),
20
21
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"read-built-in-rules.js","sourceRoot":"","sources":["../../../src/domain/registry/read-built-in-rules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAyB,MAAM,sBAAsB,CAAC;AAG5E,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAUtD;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAA6C;IAClF,OAAO,CAAC,MAAM,EAAE,EAAE,CAChB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAA8C,EAAE;QACpE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3E,OAAO,EAAE,CAAC;YACR,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;YAC5B,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;YAC7B,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;YAC9B,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,CAAC,cAAc,EAAE;YACrD,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC7F,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"read-built-in-rules.js","sourceRoot":"","sources":["../../../src/domain/registry/read-built-in-rules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAyB,MAAM,sBAAsB,CAAC;AAG5E,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAUtD;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAA6C;IAClF,OAAO,CAAC,MAAM,EAAE,EAAE,CAChB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAA8C,EAAE;QACpE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3E,OAAO,EAAE,CAAC;YACR,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;YAC5B,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;YAC7B,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;YAC9B,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE;YAClC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,CAAC,cAAc,EAAE;YACrD,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC7F,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { ShipId } from '@aeolus-fleet/common';
2
+ import type { Caller } from '../shared/caller.js';
3
+ import { type Result } from '../shared/result.js';
4
+ import type { UnitOfWork } from '../shared/unit-of-work.js';
5
+ import type { NetworkSettingsRepository } from './ports.js';
6
+ export interface ReadNetworkPluginTx {
7
+ networkSettings: Pick<NetworkSettingsRepository, 'findForShare'>;
8
+ }
9
+ export interface RegisteredNetworkPlugin {
10
+ shipId: ShipId;
11
+ registeredAt: Date;
12
+ }
13
+ export type ReadNetworkPlugin = (caller: Caller) => Promise<Result<RegisteredNetworkPlugin | null, never>>;
14
+ /**
15
+ * Use case: the caller's fleet's networking plugin, its ship and when it
16
+ * registered, or none (decision 0035): the gateway switches on for a fleet
17
+ * only while it has one (interop I-3). Its scope (fleet:read) is checked
18
+ * before this runs. Read under the shared settings lock, so it answers one
19
+ * version.
20
+ */
21
+ export declare function createReadNetworkPlugin(deps: {
22
+ uow: UnitOfWork<ReadNetworkPluginTx>;
23
+ }): ReadNetworkPlugin;
@@ -0,0 +1,15 @@
1
+ import { ok } from '../shared/result.js';
2
+ /**
3
+ * Use case: the caller's fleet's networking plugin, its ship and when it
4
+ * registered, or none (decision 0035): the gateway switches on for a fleet
5
+ * only while it has one (interop I-3). Its scope (fleet:read) is checked
6
+ * before this runs. Read under the shared settings lock, so it answers one
7
+ * version.
8
+ */
9
+ export function createReadNetworkPlugin(deps) {
10
+ return (caller) => deps.uow.run(async (tx) => {
11
+ const { plugin } = await tx.networkSettings.findForShare(caller.fleetId);
12
+ return ok(plugin === null ? null : { shipId: plugin.shipId, registeredAt: plugin.registeredAt });
13
+ });
14
+ }
15
+ //# sourceMappingURL=read-network-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-network-plugin.js","sourceRoot":"","sources":["../../../src/domain/registry/read-network-plugin.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAetD;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAA8C;IACpF,OAAO,CAAC,MAAM,EAAE,EAAE,CAChB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAA0D,EAAE;QAChF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzE,OAAO,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IACnG,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -4,7 +4,7 @@ import type { Clock } from '../shared/clock.js';
4
4
  import type { Recipient } from '../shared/selector.js';
5
5
  import type { UnitOfWork } from '../shared/unit-of-work.js';
6
6
  import { type CheckReachTx } from './check-reach.js';
7
- import type { ShipRepository } from './ports.js';
7
+ import type { PluginConnectionRepository, ShipRepository } from './ports.js';
8
8
  /**
9
9
  * The ships a caller reads (decision 0034): every ship, or some by id, with
10
10
  * the types of the active ones among them, by which an unclaimed message to a
@@ -21,6 +21,7 @@ export type ReadReach = {
21
21
  export interface ReadReachTx {
22
22
  networkSettings: CheckReachTx['networkSettings'];
23
23
  ships: Pick<ShipRepository, 'find' | 'list'>;
24
+ pluginConnections: Pick<PluginConnectionRepository, 'find'>;
24
25
  labels: Pick<CheckReachTx['labels'], 'carriedBy'>;
25
26
  leases: CheckReachTx['leases'];
26
27
  }
@@ -36,7 +37,8 @@ export type ReadReachOf = (caller: Caller) => Promise<ReadReach>;
36
37
  * force, what the networking plugin declared while it does not respond, the
37
38
  * built-in rules, read rules only. A ship always reads itself. argo reads
38
39
  * every ship, as does every ship while open is on for read and the viewer
39
- * while its reading is on; otherwise each ship of the fleet, retired ones
40
+ * while its reading is on; a connected plugin reads every ship by its
41
+ * built-in rule; otherwise each ship of the fleet, retired ones
40
42
  * too, is read when a rule lets the caller read it.
41
43
  */
42
44
  export declare function createReadReachOf(deps: {
@@ -7,7 +7,8 @@ const EVERY = { kind: 'every' };
7
7
  * force, what the networking plugin declared while it does not respond, the
8
8
  * built-in rules, read rules only. A ship always reads itself. argo reads
9
9
  * every ship, as does every ship while open is on for read and the viewer
10
- * while its reading is on; otherwise each ship of the fleet, retired ones
10
+ * while its reading is on; a connected plugin reads every ship by its
11
+ * built-in rule; otherwise each ship of the fleet, retired ones
11
12
  * too, is read when a rule lets the caller read it.
12
13
  */
13
14
  export function createReadReachOf(deps) {
@@ -24,6 +25,9 @@ export function createReadReachOf(deps) {
24
25
  }
25
26
  const readerShip = await tx.ships.find(fleetId, caller.shipId);
26
27
  const reader = readerShip && (await reachingOf(tx, readerShip));
28
+ if (reader && (reader.isConnectedPlugin || reader.id === inForce.networkPluginShipId)) {
29
+ return ok(EVERY);
30
+ }
27
31
  const read = [];
28
32
  for (const ship of await tx.ships.list(fleetId)) {
29
33
  if (ship.id === caller.shipId || (reader && allowsReach(inForce, { verb: 'read', sender: reader, recipient: await reachingOf(tx, ship), isAnswerToSender: false }))) {
@@ -42,7 +46,8 @@ export function createReadReachOf(deps) {
42
46
  }
43
47
  async function reachingOf(tx, ship) {
44
48
  const labels = (await tx.labels.carriedBy(ship.fleetId, ship.id)).map(({ labelId, valueId }) => ({ labelId, valueId }));
45
- return { id: ship.id, owner: ship.owner, kind: ship.kind, labels };
49
+ const isConnectedPlugin = (await tx.pluginConnections.find(ship.fleetId, ship.id)) !== undefined;
50
+ return { id: ship.id, owner: ship.owner, kind: ship.kind, isConnectedPlugin, labels };
46
51
  }
47
52
  export function readsShip(reach, shipId) {
48
53
  return reach.kind === 'every' || reach.shipIds.has(shipId);
@@ -1 +1 @@
1
- {"version":3,"file":"read-reach.js","sourceRoot":"","sources":["../../../src/domain/registry/read-reach.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read-reach.js","sourceRoot":"","sources":["../../../src/domain/registry/read-reach.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { shipActor } from '../shared/events.js';
4
4
  import { ok } from '../shared/result.js';
5
5
  import { endLease } from './leases.js';
6
6
  import { checkManage, keepingReachRefusal } from './check-reach.js';
7
+ import { endPluginConnection } from './plugin-connection.js';
7
8
  import { checkCanRelease } from './ship.js';
8
9
  import { issueStartingPrompt } from './starting-prompt.js';
9
10
  /**
@@ -33,6 +34,7 @@ export function createRecrewShip(deps) {
33
34
  return lease;
34
35
  }
35
36
  await endLease({ tx, ids: deps.ids }, { fleetId, leaseId: lease.value.id, actor, at, reason: 'released' });
37
+ await endPluginConnection({ tx, ids: deps.ids }, { fleetId, shipId: ship.id, why: 'released', at, actor });
36
38
  return ok(await issueStartingPrompt({ tx, secrets: { ...deps.secrets, ids: deps.ids } }, { fleetId, shipId, actor, at }));
37
39
  });
38
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"recrew-ship.js","sourceRoot":"","sources":["../../../src/domain/registry/recrew-ship.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAoB,MAAM,uBAAuB,CAAC;AAG3E,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,EAAE,EAAe,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAgB,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAyC,MAAM,kBAAkB,CAAC;AAG3G,OAAO,EAAE,eAAe,EAAuB,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAoD,MAAM,sBAAsB,CAAC;AAW7G;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAKhC;IACC,OAAO,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAC5B,mBAAmB,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAA4D,EAAE;QACnG,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,MAAM,CAAC,gBAAgB,EAAE,QAAQ,MAAM,iBAAiB,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACpJ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAE5B,MAAM,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9E,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAC3G,OAAO,EAAE,CACP,MAAM,mBAAmB,CACvB,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EACnD,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAC/B,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"recrew-ship.js","sourceRoot":"","sources":["../../../src/domain/registry/recrew-ship.ts"],"names":[],"mappings":"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"}
@@ -8,10 +8,11 @@ import type { UnitOfWork } from '../shared/unit-of-work.js';
8
8
  import { type LeaseTx } from './leases.js';
9
9
  import { type NotReachable } from './check-reach.js';
10
10
  import { type ManagedOrAssignedTx } from './managed-or-assigned.js';
11
- import type { CrewRequestRepository, ShipRepository } from './ports.js';
11
+ import type { CrewRequestRepository, PluginConnectionRepository, ShipRepository } from './ports.js';
12
12
  import { type ReleaseRefusal } from './ship.js';
13
13
  export interface ReleaseShipTx extends LeaseTx, CredentialTx, Omit<ManagedOrAssignedTx, 'ships' | 'leases' | 'crewRequests'> {
14
14
  ships: ShipRepository;
15
+ pluginConnections: PluginConnectionRepository;
15
16
  crewRequests: Pick<CrewRequestRepository, 'find'>;
16
17
  }
17
18
  export type ReleaseShipRefusal = DomainError<'SHIP_NOT_FOUND' | 'CREW_REQUEST_NOT_ASSIGNED_TO_CALLER'> | NotReachable | ReleaseRefusal;
@@ -23,7 +24,8 @@ export type ReleaseShip = (caller: Caller, input: {
23
24
  * session crewing it loses it, and the ship awaits a new crew (ADR 0010). In
24
25
  * one unit of work: the secret is invalidated, the lease ends and with it the
25
26
  * crew token, and the deliveries the lease held in flight return to pending,
26
- * their attempts kept. The next crew needs a new starting prompt. The caller's
27
+ * their attempts kept, and a plugin connection of the ship ends (decision
28
+ * 0034). The next crew needs a new starting prompt. The caller's
27
29
  * scope (fleet:manage or crew:run) is checked before this runs;
28
30
  * crew:run reaches only the ships whose crew requests are assigned to the
29
31
  * caller's ship, and fleet:manage the ships in its manage reach (decision