@aeolus-fleet/core 0.24.1 → 0.25.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.
Files changed (158) hide show
  1. package/README.md +5 -5
  2. package/dist/adapters/prisma/generated/browser.d.ts +12 -3
  3. package/dist/adapters/prisma/generated/client.d.ts +12 -3
  4. package/dist/adapters/prisma/generated/commonInputTypes.d.ts +60 -0
  5. package/dist/adapters/prisma/generated/enums.d.ts +15 -1
  6. package/dist/adapters/prisma/generated/enums.js +13 -1
  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 +109 -1
  12. package/dist/adapters/prisma/generated/internal/prismaNamespace.js +16 -0
  13. package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
  14. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +17 -0
  15. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +16 -0
  16. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  17. package/dist/adapters/prisma/generated/models/Delivery.d.ts +304 -4
  18. package/dist/adapters/prisma/generated/models/Fleet.d.ts +267 -0
  19. package/dist/adapters/prisma/generated/models/Lease.d.ts +332 -1
  20. package/dist/adapters/prisma/generated/models/OverdueDelivery.d.ts +1687 -0
  21. package/dist/adapters/prisma/generated/models/OverdueDelivery.js +2 -0
  22. package/dist/adapters/prisma/generated/models/OverdueDelivery.js.map +1 -0
  23. package/dist/adapters/prisma/generated/models/Ship.d.ts +271 -0
  24. package/dist/adapters/prisma/generated/models.d.ts +1 -0
  25. package/dist/adapters/prisma/history.js +231 -46
  26. package/dist/adapters/prisma/history.js.map +1 -1
  27. package/dist/adapters/prisma/installation.js +30 -1
  28. package/dist/adapters/prisma/installation.js.map +1 -1
  29. package/dist/adapters/prisma/messaging.js +11 -7
  30. package/dist/adapters/prisma/messaging.js.map +1 -1
  31. package/dist/adapters/prisma/overdue.d.ts +4 -0
  32. package/dist/adapters/prisma/overdue.js +63 -0
  33. package/dist/adapters/prisma/overdue.js.map +1 -0
  34. package/dist/adapters/prisma/registry.js +32 -7
  35. package/dist/adapters/prisma/registry.js.map +1 -1
  36. package/dist/adapters/prisma/rows.d.ts +12 -1
  37. package/dist/adapters/prisma/rows.js +46 -1
  38. package/dist/adapters/prisma/rows.js.map +1 -1
  39. package/dist/adapters/prisma/unit-of-work.d.ts +2 -1
  40. package/dist/adapters/prisma/unit-of-work.js +2 -0
  41. package/dist/adapters/prisma/unit-of-work.js.map +1 -1
  42. package/dist/adapters/trpc/context.d.ts +16 -0
  43. package/dist/adapters/trpc/fleet.d.ts +232 -14
  44. package/dist/adapters/trpc/fleet.js +49 -6
  45. package/dist/adapters/trpc/fleet.js.map +1 -1
  46. package/dist/adapters/trpc/installation.d.ts +14 -0
  47. package/dist/adapters/trpc/installation.js +7 -1
  48. package/dist/adapters/trpc/installation.js.map +1 -1
  49. package/dist/adapters/trpc/router.d.ts +301 -9
  50. package/dist/adapters/trpc/ship-protocol.js +2 -2
  51. package/dist/adapters/trpc/ship-protocol.js.map +1 -1
  52. package/dist/adapters/trpc/ship.d.ts +87 -0
  53. package/dist/adapters/trpc/ship.js +96 -1
  54. package/dist/adapters/trpc/ship.js.map +1 -1
  55. package/dist/adapters/trpc/starting-prompt-text.d.ts +1 -1
  56. package/dist/adapters/trpc/starting-prompt-text.js +22 -25
  57. package/dist/adapters/trpc/starting-prompt-text.js.map +1 -1
  58. package/dist/adapters/trpc/trpc.js +3 -0
  59. package/dist/adapters/trpc/trpc.js.map +1 -1
  60. package/dist/app.d.ts +4 -2
  61. package/dist/app.js +21 -9
  62. package/dist/app.js.map +1 -1
  63. package/dist/domain/messaging/delivery.d.ts +88 -28
  64. package/dist/domain/messaging/delivery.js +213 -39
  65. package/dist/domain/messaging/delivery.js.map +1 -1
  66. package/dist/domain/messaging/dismiss-delivery.d.ts +1 -1
  67. package/dist/domain/messaging/dismiss-delivery.js +1 -1
  68. package/dist/domain/messaging/hand-over-delivery.d.ts +38 -0
  69. package/dist/domain/messaging/hand-over-delivery.js +46 -0
  70. package/dist/domain/messaging/hand-over-delivery.js.map +1 -0
  71. package/dist/domain/messaging/message.d.ts +12 -1
  72. package/dist/domain/messaging/message.js +2 -0
  73. package/dist/domain/messaging/message.js.map +1 -1
  74. package/dist/domain/messaging/overdue.d.ts +60 -0
  75. package/dist/domain/messaging/overdue.js +52 -0
  76. package/dist/domain/messaging/overdue.js.map +1 -0
  77. package/dist/domain/messaging/ports.d.ts +20 -0
  78. package/dist/domain/messaging/public.d.ts +1 -0
  79. package/dist/domain/messaging/public.js +2 -0
  80. package/dist/domain/messaging/public.js.map +1 -0
  81. package/dist/domain/messaging/push-receive-deliveries.d.ts +48 -0
  82. package/dist/domain/messaging/push-receive-deliveries.js +70 -0
  83. package/dist/domain/messaging/push-receive-deliveries.js.map +1 -0
  84. package/dist/domain/messaging/receive-deliveries.d.ts +39 -6
  85. package/dist/domain/messaging/receive-deliveries.js +80 -50
  86. package/dist/domain/messaging/receive-deliveries.js.map +1 -1
  87. package/dist/domain/messaging/report-handled.d.ts +22 -0
  88. package/dist/domain/messaging/report-handled.js +13 -0
  89. package/dist/domain/messaging/report-handled.js.map +1 -0
  90. package/dist/domain/messaging/report-not-handled.d.ts +22 -0
  91. package/dist/domain/messaging/report-not-handled.js +13 -0
  92. package/dist/domain/messaging/report-not-handled.js.map +1 -0
  93. package/dist/domain/messaging/report-turn-end.d.ts +29 -0
  94. package/dist/domain/messaging/report-turn-end.js +36 -0
  95. package/dist/domain/messaging/report-turn-end.js.map +1 -0
  96. package/dist/domain/messaging/resend-delivery.d.ts +1 -1
  97. package/dist/domain/messaging/resend-delivery.js +1 -1
  98. package/dist/domain/messaging/tell-overdue-deliveries.d.ts +25 -0
  99. package/dist/domain/messaging/tell-overdue-deliveries.js +30 -0
  100. package/dist/domain/messaging/tell-overdue-deliveries.js.map +1 -0
  101. package/dist/domain/registry/installation-fleet.d.ts +3 -2
  102. package/dist/domain/registry/installation-fleet.js.map +1 -1
  103. package/dist/domain/registry/leases.d.ts +26 -0
  104. package/dist/domain/registry/leases.js +26 -1
  105. package/dist/domain/registry/leases.js.map +1 -1
  106. package/dist/domain/registry/ping-status.d.ts +2 -2
  107. package/dist/domain/registry/ping-status.js +7 -4
  108. package/dist/domain/registry/ping-status.js.map +1 -1
  109. package/dist/domain/registry/ports.d.ts +40 -0
  110. package/dist/domain/registry/public.d.ts +2 -2
  111. package/dist/domain/registry/public.js +1 -1
  112. package/dist/domain/registry/public.js.map +1 -1
  113. package/dist/domain/registry/report-turn.d.ts +28 -0
  114. package/dist/domain/registry/report-turn.js +28 -0
  115. package/dist/domain/registry/report-turn.js.map +1 -0
  116. package/dist/domain/registry/turn.d.ts +25 -0
  117. package/dist/domain/registry/turn.js +30 -0
  118. package/dist/domain/registry/turn.js.map +1 -0
  119. package/dist/domain/shared/delivery-way.d.ts +83 -0
  120. package/dist/domain/shared/delivery-way.js +89 -0
  121. package/dist/domain/shared/delivery-way.js.map +1 -0
  122. package/dist/domain/shared/errors.d.ts +1 -1
  123. package/dist/domain/shared/errors.js.map +1 -1
  124. package/dist/domain/shared/history.d.ts +116 -19
  125. package/dist/domain/shared/history.js +1 -1
  126. package/dist/domain/shared/history.js.map +1 -1
  127. package/dist/domain/shared/read-message.d.ts +7 -3
  128. package/dist/domain/shared/read-message.js +7 -4
  129. package/dist/domain/shared/read-message.js.map +1 -1
  130. package/dist/domain/shared/read-needs-attention.d.ts +5 -5
  131. package/dist/domain/shared/read-needs-attention.js +4 -4
  132. package/dist/domain/shared/read-needs-attention.js.map +1 -1
  133. package/dist/domain/shared/read-no-ship-can-take.d.ts +13 -0
  134. package/dist/domain/shared/read-no-ship-can-take.js +12 -0
  135. package/dist/domain/shared/read-no-ship-can-take.js.map +1 -0
  136. package/dist/domain/shared/read-overdue.d.ts +13 -0
  137. package/dist/domain/shared/read-overdue.js +12 -0
  138. package/dist/domain/shared/read-overdue.js.map +1 -0
  139. package/dist/domain/shared/read-ship-messages.d.ts +4 -1
  140. package/dist/domain/shared/read-ship-messages.js +6 -1
  141. package/dist/domain/shared/read-ship-messages.js.map +1 -1
  142. package/dist/domain/shared/read-ship-way.d.ts +41 -0
  143. package/dist/domain/shared/read-ship-way.js +39 -0
  144. package/dist/domain/shared/read-ship-way.js.map +1 -0
  145. package/dist/repeating-pass.d.ts +15 -0
  146. package/dist/repeating-pass.js +31 -0
  147. package/dist/repeating-pass.js.map +1 -0
  148. package/dist/wiring.d.ts +19 -0
  149. package/dist/wiring.js +25 -0
  150. package/dist/wiring.js.map +1 -1
  151. package/package.json +2 -2
  152. package/src/adapters/prisma/migrations/20261012190000_delivery_handed/migration.sql +11 -0
  153. package/src/adapters/prisma/migrations/20261012210000_push_receive/migration.sql +7 -0
  154. package/src/adapters/prisma/migrations/20261013090000_handled/migration.sql +6 -0
  155. package/src/adapters/prisma/migrations/20261013100000_turn/migration.sql +6 -0
  156. package/src/adapters/prisma/migrations/20261013120000_overdue/migration.sql +28 -0
  157. package/src/adapters/prisma/migrations/20261013140000_delivery_state_index/migration.sql +4 -0
  158. package/src/adapters/prisma/schema.prisma +66 -4
@@ -13,6 +13,7 @@ export type * from './models/ReachRefusal.js';
13
13
  export type * from './models/Credential.js';
14
14
  export type * from './models/Message.js';
15
15
  export type * from './models/Delivery.js';
16
+ export type * from './models/OverdueDelivery.js';
16
17
  export type * from './models/Event.js';
17
18
  export type * from './models/Operator.js';
18
19
  export type * from './models/ConsoleSession.js';
@@ -4,15 +4,29 @@
4
4
  * read takes a few queries and names every party in one more, by the ships'
5
5
  * current names, so a renamed ship goes by its new name.
6
6
  */
7
- import { DELIVERY_HISTORY_TYPES, DELIVERY_STATES, deliveryStateSchema, idSchema, locationKindSchema, } from '@aeolus-fleet/common';
7
+ import { crewStatusSchema, DELIVERY_HISTORY_TYPES, DELIVERY_STATES, deliveryStateSchema, idSchema, leaseEndReasonSchema, locationKindSchema, turnStateSchema, } from '@aeolus-fleet/common';
8
8
  import { z } from 'zod';
9
- import { isDeliveryChangeType, isKeptBy, } from '../../domain/shared/history.js';
9
+ import { deliveryStepOf } from '../../domain/shared/delivery-way.js';
10
+ import { isKeptBy, } from '../../domain/shared/history.js';
11
+ import { Prisma } from './generated/client.js';
10
12
  import { toMessage, toSequencedEvent } from './rows.js';
13
+ /** A pending delivery no ship can take, as the query finds it. */
14
+ const noShipCanTakeRow = z.object({ deliveryId: idSchema('delivery'), type: z.string(), messageId: idSchema('message') });
15
+ /** What argo was told is overdue, as the clocks stored it (overdue.ts). */
16
+ const overdueRow = z.object({
17
+ deliveryId: idSchema('delivery'),
18
+ shipId: idSchema('ship'),
19
+ state: z.enum(['pending', 'received', 'handed']),
20
+ clock: z.enum(['notConfirmed', 'idle', 'busy']),
21
+ minutes: z.number().int(),
22
+ toldAt: z.date(),
23
+ });
11
24
  const deliveryRow = z.object({
12
25
  id: idSchema('delivery'),
13
26
  state: deliveryStateSchema,
14
27
  attempts: z.number().int(),
15
28
  claimedByShipId: idSchema('ship').nullable(),
29
+ handOverNumber: z.number().int().nullable(),
16
30
  });
17
31
  /** Every ship the reads name, by id, read in one query. */
18
32
  async function partiesOf(db, of) {
@@ -51,6 +65,7 @@ function historyMessageOf(found, party) {
51
65
  state: delivery.state,
52
66
  attempts: delivery.attempts,
53
67
  claimedBy: delivery.claimedByShipId === null ? null : party(delivery.claimedByShipId),
68
+ handOverNumber: delivery.handOverNumber,
54
69
  },
55
70
  };
56
71
  }
@@ -62,7 +77,7 @@ function onlyDelivery(row) {
62
77
  }
63
78
  return deliveryRow.parse(delivery);
64
79
  }
65
- const DELIVERY_SELECT = { id: true, state: true, attempts: true, claimedByShipId: true };
80
+ const DELIVERY_SELECT = { id: true, state: true, attempts: true, claimedByShipId: true, handOverNumber: true };
66
81
  async function shipExists(db, at) {
67
82
  return (await db.ship.count({ where: { fleetId: at.fleetId, id: at.shipId } })) === 1;
68
83
  }
@@ -125,7 +140,7 @@ export function createPrismaShipHistory(db) {
125
140
  OR: [
126
141
  { senderShipId: shipId },
127
142
  { selectorShipId: shipId },
128
- { events: { some: { type: 'DeliveryClaimed', shipId } } },
143
+ { events: { some: { type: 'DeliveryHanded', shipId } } },
129
144
  ],
130
145
  },
131
146
  orderBy: [{ createdAt: 'desc' }, { id: 'desc' }],
@@ -145,7 +160,7 @@ export function createPrismaShipHistory(db) {
145
160
  message: async (fleetId, messageId) => {
146
161
  const row = await db.message.findFirst({
147
162
  where: { fleetId, id: messageId },
148
- include: { deliveries: { select: DELIVERY_SELECT } },
163
+ include: { deliveries: { select: { ...DELIVERY_SELECT, claimedByLeaseId: true, recipientShipId: true } } },
149
164
  });
150
165
  if (!row) {
151
166
  return undefined;
@@ -156,18 +171,32 @@ export function createPrismaShipHistory(db) {
156
171
  where: { fleetId, deliveryId: delivery.id, type: { in: [...DELIVERY_HISTORY_TYPES] } },
157
172
  orderBy: { seq: 'desc' },
158
173
  })).map(toSequencedEvent);
159
- const leases = await claimingLeases(db, { fleetId, events });
174
+ const leaseId = await leaseOfDelivery(db, { fleetId, delivery: deliveryLeaseRow.parse(row.deliveries[0]) });
175
+ const leases = await wayLeases(db, {
176
+ fleetId,
177
+ leaseIds: [
178
+ ...events.flatMap((event) => (typeof event.details.leaseId === 'string' ? [event.details.leaseId] : [])),
179
+ ...(leaseId === null ? [] : [leaseId]),
180
+ ],
181
+ });
182
+ const replies = (await db.message.findMany({ where: { fleetId, inReplyToMessageId: message.id }, orderBy: [{ createdAt: 'asc' }, { id: 'asc' }] })).map(toMessage);
160
183
  const party = await partiesOf(db, {
161
184
  fleetId,
162
185
  shipIds: [
163
186
  ...shipsNamedBy(message),
164
187
  ...(delivery.claimedByShipId === null ? [] : [delivery.claimedByShipId]),
165
188
  ...events.flatMap((event) => (event.shipId === undefined ? [] : [event.shipId])),
189
+ ...replies.map((reply) => reply.senderShipId),
190
+ ...[...leases.values()].flatMap(({ trierarch }) => (trierarch ? [trierarch.id] : [])),
166
191
  ],
167
192
  });
168
193
  return {
169
194
  ...historyMessageOf({ message, delivery }, party),
170
- history: events.flatMap((event) => changeOf(event, { party, leases })),
195
+ history: events.flatMap((event) => deliveryStepOf(event, { party, leases })),
196
+ replies: replies.map((reply) => ({ id: reply.id, sender: party(reply.senderShipId), sentAt: reply.createdAt })),
197
+ lease: (leaseId === null ? undefined : leases.get(leaseId)) ?? null,
198
+ overdue: await standingOverdue(db, { fleetId, deliveryId: delivery.id }),
199
+ crew: leaseId === null ? null : await crewOfLease(db, { fleetId, leaseId }),
171
200
  };
172
201
  },
173
202
  inbox: async (fleetId, { shipId, filter }) => {
@@ -219,32 +248,35 @@ export function createPrismaShipHistory(db) {
219
248
  };
220
249
  });
221
250
  },
222
- undeliverable: async (fleetId) => {
251
+ needsAttention: async (fleetId) => {
223
252
  const rows = await db.delivery.findMany({
224
- where: { fleetId, state: 'undeliverable' },
225
- select: { id: true, attempts: true, message: true },
253
+ where: { fleetId, state: { in: ['undeliverable', 'notHandled'] } },
254
+ select: { id: true, state: true, attempts: true, handOverNumber: true, message: true },
226
255
  });
227
- // When each became undeliverable: its last DeliveryUndeliverable, whose
228
- // place in the stream also orders the list, oldest first.
256
+ // Since when each needs attention: its last DeliveryUndeliverable or
257
+ // DeliveryNotHandled, whose place in the stream also orders the list,
258
+ // oldest first.
229
259
  const events = (await db.event.findMany({
230
- where: { fleetId, type: 'DeliveryUndeliverable', deliveryId: { in: rows.map((row) => row.id) } },
260
+ where: { fleetId, type: { in: ['DeliveryUndeliverable', 'DeliveryNotHandled'] }, deliveryId: { in: rows.map((row) => row.id) } },
231
261
  orderBy: { seq: 'asc' },
232
262
  })).map(toSequencedEvent);
233
263
  const since = new Map(events.map((event) => [event.deliveryId, event]));
234
264
  const found = rows.map((row) => {
235
265
  const deliveryId = idSchema('delivery').parse(row.id);
236
266
  const event = since.get(deliveryId);
237
- if (!event) {
238
- throw new Error(`Undeliverable delivery ${deliveryId} has no DeliveryUndeliverable`);
267
+ if (!event || (row.state !== 'undeliverable' && row.state !== 'notHandled')) {
268
+ throw new Error(`Delivery ${deliveryId} in Needs attention has no DeliveryUndeliverable or DeliveryNotHandled`);
239
269
  }
240
- return { deliveryId, attempts: row.attempts, message: toMessage(row.message), event };
270
+ return { deliveryId, state: row.state, attempts: row.attempts, isPushed: row.handOverNumber !== null, message: toMessage(row.message), event };
241
271
  });
242
272
  const party = await partiesOf(db, { fleetId, shipIds: found.flatMap(({ message }) => shipsNamedBy(message)) });
243
273
  return found
244
274
  .sort((first, second) => first.event.seq - second.event.seq)
245
- .map(({ deliveryId, attempts, message, event }) => ({
275
+ .map(({ deliveryId, state, attempts, isPushed, message, event }) => ({
246
276
  deliveryId,
277
+ state,
247
278
  attempts,
279
+ isPushed,
248
280
  since: event.occurredAt,
249
281
  message: {
250
282
  id: message.id,
@@ -258,40 +290,193 @@ export function createPrismaShipHistory(db) {
258
290
  },
259
291
  }));
260
292
  },
293
+ overdue: async (fleetId) => {
294
+ // Told on a lease that has not ended; it still stands while the delivery
295
+ // is in the state it was told in, held by that lease when in flight.
296
+ const rows = await db.overdueDelivery.findMany({
297
+ where: { fleetId, lease: { endedAt: null } },
298
+ include: { delivery: { select: { state: true, claimedByLeaseId: true, message: true } } },
299
+ orderBy: [{ toldAt: 'asc' }, { deliveryId: 'asc' }],
300
+ });
301
+ const standing = rows
302
+ .filter((row) => row.delivery.state === row.state && (row.state === 'pending' || row.delivery.claimedByLeaseId === row.leaseId))
303
+ .map((row) => ({ told: overdueRow.parse(row), message: toMessage(row.delivery.message) }));
304
+ const party = await partiesOf(db, { fleetId, shipIds: standing.flatMap(({ told, message }) => [told.shipId, ...shipsNamedBy(message)]) });
305
+ return standing.map(({ told, message }) => ({
306
+ deliveryId: told.deliveryId,
307
+ ship: party(told.shipId),
308
+ state: told.state,
309
+ clock: told.clock,
310
+ minutes: told.minutes,
311
+ toldAt: told.toldAt,
312
+ message: {
313
+ id: message.id,
314
+ sender: party(message.senderShipId),
315
+ recipient: recipientOf(message.selector, party),
316
+ inReplyTo: message.inReplyToMessageId,
317
+ sentAt: message.createdAt,
318
+ contentType: message.contentType,
319
+ model: message.model,
320
+ payload: message.payload,
321
+ },
322
+ }));
323
+ },
324
+ noShipCanTake: async (fleetId) => {
325
+ // Pending to a type with no active ship that may claim it: any of the
326
+ // type, or one of the reachable ones under network rules (decision 0034).
327
+ const found = z.array(noShipCanTakeRow).parse(await db.$queryRaw `
328
+ SELECT d.id AS "deliveryId", d.recipient_type AS "type", d.message_id AS "messageId"
329
+ FROM deliveries d
330
+ WHERE d.fleet_id = ${fleetId} AND d.state = 'pending' AND d.recipient_type IS NOT NULL
331
+ AND NOT EXISTS (SELECT 1 FROM ships s
332
+ WHERE s.fleet_id = d.fleet_id AND s.type = d.recipient_type AND s.retired_at IS NULL
333
+ AND (cardinality(d.reachable_ship_ids) = 0 OR s.id = ANY(d.reachable_ship_ids)))
334
+ ORDER BY d.created_at, d.id`);
335
+ const messages = new Map((await db.message.findMany({ where: { fleetId, id: { in: found.map((row) => row.messageId) } } })).map((row) => {
336
+ const message = toMessage(row);
337
+ return [message.id, message];
338
+ }));
339
+ const party = await partiesOf(db, { fleetId, shipIds: [...messages.values()].flatMap(shipsNamedBy) });
340
+ return found.map(({ deliveryId, type, messageId }) => {
341
+ const message = messages.get(messageId);
342
+ if (!message) {
343
+ throw new Error(`Delivery ${deliveryId} no ship can take has no message ${messageId}`);
344
+ }
345
+ return {
346
+ deliveryId,
347
+ type,
348
+ message: {
349
+ id: message.id,
350
+ sender: party(message.senderShipId),
351
+ recipient: recipientOf(message.selector, party),
352
+ inReplyTo: message.inReplyToMessageId,
353
+ sentAt: message.createdAt,
354
+ contentType: message.contentType,
355
+ model: message.model,
356
+ payload: message.payload,
357
+ },
358
+ };
359
+ });
360
+ },
361
+ shipWay: async (fleetId, shipId) => {
362
+ const ship = await db.ship.findFirst({ where: { fleetId, id: shipId }, select: { id: true } });
363
+ if (!ship) {
364
+ return undefined;
365
+ }
366
+ const open = await db.lease.findFirst({ where: { fleetId, shipId, endedAt: null }, select: { id: true } });
367
+ if (!open) {
368
+ return { lease: null, waiting: [] };
369
+ }
370
+ const leaseId = idSchema('lease').parse(open.id);
371
+ // What waits for it as the clocks count it (overdue.ts): in flight with
372
+ // its open lease, or pending for it or, reachable, for its type.
373
+ const waiting = z.array(z.object({ messageId: idSchema('message') })).parse(await db.$queryRaw `
374
+ SELECT d.message_id AS "messageId"
375
+ FROM deliveries d
376
+ JOIN ships s ON s.fleet_id = d.fleet_id AND s.id = ${shipId}
377
+ WHERE d.fleet_id = ${fleetId} AND (
378
+ (d.state IN ('received', 'handed') AND d.claimed_by_lease_id = ${leaseId})
379
+ OR (d.state = 'pending' AND (
380
+ d.recipient_ship_id = s.id
381
+ OR (d.recipient_type = s.type AND (cardinality(d.reachable_ship_ids) = 0 OR s.id = ANY(d.reachable_ship_ids))))))
382
+ ORDER BY d.created_at, d.message_id`);
383
+ const lease = (await wayLeases(db, { fleetId, leaseIds: [leaseId] })).get(leaseId) ?? null;
384
+ return { lease, waiting: waiting.map((row) => row.messageId) };
385
+ },
261
386
  };
262
387
  }
263
- /** The leases of the claims among the events, for where each claiming session ran. */
264
- async function claimingLeases(db, of) {
265
- const leaseIds = of.events.flatMap((event) => {
266
- const { leaseId } = event.details;
267
- return event.type === 'DeliveryClaimed' && typeof leaseId === 'string' ? [leaseId] : [];
268
- });
269
- const leases = await db.lease.findMany({
270
- where: { fleetId: of.fleetId, id: { in: leaseIds } },
271
- select: { id: true, location: true, locationDescription: true, harness: true },
272
- });
273
- return new Map(leases.map((lease) => [
274
- lease.id,
275
- { location: { kind: locationKindSchema.parse(lease.location), description: lease.locationDescription }, harness: lease.harness },
276
- ]));
388
+ /** What a message read takes of its delivery to find its lease. */
389
+ const deliveryLeaseRow = z.object({
390
+ id: idSchema('delivery'),
391
+ state: deliveryStateSchema,
392
+ claimedByLeaseId: idSchema('lease').nullable(),
393
+ recipientShipId: idSchema('ship').nullable(),
394
+ });
395
+ /** The lease that holds the delivery, or the open lease of the one ship a pending delivery waits for. */
396
+ async function leaseOfDelivery(db, of) {
397
+ const { fleetId, delivery } = of;
398
+ if (delivery.claimedByLeaseId !== null) {
399
+ return delivery.claimedByLeaseId;
400
+ }
401
+ if (delivery.state !== 'pending' || delivery.recipientShipId === null) {
402
+ return null;
403
+ }
404
+ const open = await db.lease.findFirst({ where: { fleetId, shipId: delivery.recipientShipId, endedAt: null }, select: { id: true } });
405
+ return open ? idSchema('lease').parse(open.id) : null;
277
406
  }
278
- function changeOf(event, read) {
279
- const { type } = event;
280
- if (!isDeliveryChangeType(type)) {
281
- return [];
407
+ const wayLeaseRow = z.object({
408
+ id: idSchema('lease'),
409
+ location: locationKindSchema,
410
+ locationDescription: z.string().nullable(),
411
+ harness: z.string().nullable(),
412
+ isPushed: z.boolean(),
413
+ isEnded: z.boolean(),
414
+ turn: turnStateSchema.nullable(),
415
+ turnAt: z.date().nullable(),
416
+ crewedById: idSchema('ship').nullable(),
417
+ crewedByName: z.string().nullable(),
418
+ crewedByKind: z.string().nullable(),
419
+ endReason: z.string().nullable(),
420
+ });
421
+ /**
422
+ * The leases a delivery's way names: where each session ran, its trierarch
423
+ * (the ship other than argo whose starting prompt its crew claimed with),
424
+ * whether it was pushed, its turn, and why it ended.
425
+ */
426
+ async function wayLeases(db, of) {
427
+ const leaseIds = [...new Set(of.leaseIds)];
428
+ if (leaseIds.length === 0) {
429
+ return new Map();
282
430
  }
283
- const { leaseId, attempts } = event.details;
284
- const claiming = event.type === 'DeliveryClaimed' && typeof leaseId === 'string' ? read.leases.get(leaseId) : undefined;
285
- return [
431
+ const rows = z.array(wayLeaseRow).parse(await db.$queryRaw `
432
+ SELECT l.id, l.location::text AS location, l.location_description AS "locationDescription", l.harness,
433
+ l.pushed_at IS NOT NULL AS "isPushed", l.ended_at IS NOT NULL AS "isEnded",
434
+ l.turn::text AS turn, l.turn_at AS "turnAt",
435
+ cb.id AS "crewedById", cb.name AS "crewedByName", cb.kind AS "crewedByKind",
436
+ (SELECT r.details->>'reason' FROM events r
437
+ WHERE r.fleet_id = l.fleet_id AND r.ship_id = l.ship_id AND r.type = 'LeaseRevoked' AND r.details->>'leaseId' = l.id
438
+ ORDER BY r.seq DESC LIMIT 1) AS "endReason"
439
+ FROM leases l
440
+ LEFT JOIN LATERAL (
441
+ SELECT a.id, a.name, a.kind::text AS kind
442
+ FROM events e
443
+ JOIN ships a ON a.fleet_id = e.fleet_id AND a.id = e.actor_ship_id
444
+ WHERE e.fleet_id = l.fleet_id AND e.ship_id = l.ship_id
445
+ AND e.type = 'StartingPromptIssued' AND e.occurred_at <= l.started_at
446
+ ORDER BY e.seq DESC
447
+ LIMIT 1) cb ON true
448
+ WHERE l.fleet_id = ${of.fleetId} AND l.id IN (${Prisma.join(leaseIds)})`);
449
+ return new Map(rows.map((row) => [
450
+ row.id,
286
451
  {
287
- seq: event.seq,
288
- type,
289
- occurredAt: event.occurredAt,
290
- ship: type === 'MessageAccepted' || event.shipId === undefined ? null : read.party(event.shipId),
291
- location: claiming?.location ?? null,
292
- harness: claiming?.harness ?? null,
293
- attempts: typeof attempts === 'number' ? attempts : null,
452
+ location: { kind: row.location, description: row.locationDescription },
453
+ harness: row.harness,
454
+ trierarch: row.crewedById !== null && row.crewedByName !== null && row.crewedByKind !== 'operator' ? { id: row.crewedById, name: row.crewedByName } : null,
455
+ isPushed: row.isPushed,
456
+ isEnded: row.isEnded,
457
+ endReason: leaseEndReasonSchema.nullable().catch(null).parse(row.endReason),
458
+ turn: row.turn !== null && row.turnAt !== null ? { state: row.turn, at: row.turnAt } : null,
294
459
  },
295
- ];
460
+ ]));
461
+ }
462
+ /** The newest overdue clock argo was told of that still stands for the delivery: still in that state, on that open lease. */
463
+ async function standingOverdue(db, of) {
464
+ const told = await db.overdueDelivery.findMany({
465
+ where: { fleetId: of.fleetId, deliveryId: of.deliveryId, lease: { endedAt: null } },
466
+ include: { delivery: { select: { state: true, claimedByLeaseId: true } } },
467
+ orderBy: { toldAt: 'desc' },
468
+ });
469
+ const standing = told.find((row) => row.delivery.state === row.state && (row.state === 'pending' || row.delivery.claimedByLeaseId === row.leaseId));
470
+ if (!standing) {
471
+ return null;
472
+ }
473
+ const { clock, minutes, toldAt } = overdueRow.parse(standing);
474
+ return { clock, minutes, toldAt };
475
+ }
476
+ /** How the trierarch says the crew of the lease's ship stands, once it says. */
477
+ async function crewOfLease(db, of) {
478
+ const lease = await db.lease.findFirst({ where: { fleetId: of.fleetId, id: of.leaseId }, select: { shipId: true } });
479
+ const request = lease && (await db.crewRequest.findFirst({ where: { fleetId: of.fleetId, shipId: lease.shipId } }));
480
+ return request?.status ? { status: crewStatusSchema.parse(request.status), attempt: request.attempt, startedAt: request.sessionStartedAt } : null;
296
481
  }
297
482
  //# sourceMappingURL=history.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"history.js","sourceRoot":"","sources":["../../../src/adapters/prisma/history.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../../src/adapters/prisma/history.ts"],"names":[],"mappings":"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"}
@@ -54,11 +54,17 @@ const factsRow = z.object({
54
54
  shipLimit: z.number().int().nullable(),
55
55
  dailyMessageLimitSet: z.boolean(),
56
56
  dailyMessageLimit: z.number().int().nullable(),
57
+ oldestPendingAt: z.date().nullable(),
58
+ oldestInFlightAt: z.date().nullable(),
59
+ noShipCanTake: z.bigint(),
60
+ needsAttention: z.bigint(),
61
+ overdue: z.bigint(),
57
62
  });
58
63
  function toFacts(row) {
59
- const { shipLimitSet, shipLimit, dailyMessageLimitSet, dailyMessageLimit, ...facts } = factsRow.parse(row);
64
+ const { shipLimitSet, shipLimit, dailyMessageLimitSet, dailyMessageLimit, oldestPendingAt, oldestInFlightAt, noShipCanTake, needsAttention, overdue, ...facts } = factsRow.parse(row);
60
65
  return {
61
66
  ...facts,
67
+ health: { oldestPendingAt, oldestInFlightAt, noShipCanTake: Number(noShipCanTake), needsAttention: Number(needsAttention), overdue: Number(overdue) },
62
68
  operatorEmail: facts.operatorEmail ?? '',
63
69
  shipCount: Number(facts.shipCount),
64
70
  messagesSince: Number(facts.messagesSince),
@@ -82,6 +88,29 @@ export function createPrismaInstallationFleets(prisma) {
82
88
  (SELECT coalesce(json_agg(json_build_object('date', d.day, 'count', d.count) ORDER BY d.day), '[]'::json)
83
89
  FROM (SELECT to_char(m.created_at AT TIME ZONE 'UTC', 'YYYY-MM-DD') AS day, count(*)::int AS count
84
90
  FROM messages m WHERE m.fleet_id = f.id AND m.created_at >= ${window.firstDay} GROUP BY 1) d) AS "messagesPerUtcDay",
91
+ -- Health (#304): where its deliveries wait, from their states and times only.
92
+ (SELECT min(d.created_at) FROM deliveries d WHERE d.fleet_id = f.id AND d.state = 'pending') AS "oldestPendingAt",
93
+ -- In flight since its state began, as the overdue clocks read it (overdue.ts).
94
+ (SELECT min(COALESCE((
95
+ SELECT max(e.occurred_at) FROM events e
96
+ WHERE e.fleet_id = d.fleet_id AND e.delivery_id = d.id
97
+ AND (e.type = 'DeliveryReturned'
98
+ OR (e.type = 'DeliveryReceived' AND e.details->>'again' IS DISTINCT FROM 'true')
99
+ OR (e.type = 'DeliveryHanded' AND e.details->>'onceMore' IS DISTINCT FROM 'true'))
100
+ ), d.created_at))
101
+ FROM deliveries d WHERE d.fleet_id = f.id AND d.state IN ('received', 'handed')) AS "oldestInFlightAt",
102
+ -- Pending to a type with no active ship that may claim it (decision 0034).
103
+ (SELECT count(*) FROM deliveries d
104
+ WHERE d.fleet_id = f.id AND d.state = 'pending' AND d.recipient_type IS NOT NULL
105
+ AND NOT EXISTS (SELECT 1 FROM ships s
106
+ WHERE s.fleet_id = d.fleet_id AND s.type = d.recipient_type AND s.retired_at IS NULL
107
+ AND (cardinality(d.reachable_ship_ids) = 0 OR s.id = ANY(d.reachable_ship_ids)))) AS "noShipCanTake",
108
+ (SELECT count(*) FROM deliveries d WHERE d.fleet_id = f.id AND d.state IN ('undeliverable', 'notHandled')) AS "needsAttention",
109
+ -- Told on a lease that has not ended, its delivery still in the told state, held by that lease when in flight (history.ts).
110
+ (SELECT count(*) FROM overdue_deliveries o
111
+ JOIN leases l ON l.fleet_id = o.fleet_id AND l.id = o.lease_id AND l.ended_at IS NULL
112
+ JOIN deliveries d ON d.fleet_id = o.fleet_id AND d.id = o.delivery_id AND d.state = o.state
113
+ WHERE o.fleet_id = f.id AND (o.state = 'pending' OR d.claimed_by_lease_id = o.lease_id)) AS "overdue",
85
114
  f.ship_limit_set AS "shipLimitSet", f.ship_limit AS "shipLimit",
86
115
  f.daily_message_limit_set AS "dailyMessageLimitSet", f.daily_message_limit AS "dailyMessageLimit"
87
116
  FROM fleets f
@@ -1 +1 @@
1
- {"version":3,"file":"installation.js","sourceRoot":"","sources":["../../../src/adapters/prisma/installation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"installation.js","sourceRoot":"","sources":["../../../src/adapters/prisma/installation.ts"],"names":[],"mappings":"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"}
@@ -60,6 +60,8 @@ export function createPrismaDeliveryRepository(db) {
60
60
  claimedByShipId: delivery.claimedByShipId,
61
61
  claimedByLeaseId: delivery.claimedByLeaseId,
62
62
  attempts: delivery.attempts,
63
+ handOverNumber: delivery.handOverNumber,
64
+ handedOnceMoreAt: delivery.handedOnceMoreAt,
63
65
  reachableShipIds: delivery.reachableShipIds ? [...delivery.reachableShipIds] : [],
64
66
  createdAt: delivery.createdAt,
65
67
  },
@@ -69,7 +71,7 @@ export function createPrismaDeliveryRepository(db) {
69
71
  where: {
70
72
  fleetId,
71
73
  OR: [
72
- { state: 'delivered', claimedByLeaseId: leaseId },
74
+ { state: { in: ['received', 'handed'] }, claimedByLeaseId: leaseId },
73
75
  {
74
76
  state: 'pending',
75
77
  OR: [{ recipientShipId: shipId }, { recipientType: type, OR: [{ reachableShipIds: { isEmpty: true } }, { reachableShipIds: { has: shipId } }] }],
@@ -85,9 +87,9 @@ export function createPrismaDeliveryRepository(db) {
85
87
  // and no longer matches.
86
88
  const inFlight = await db.$queryRaw `
87
89
  SELECT id, fleet_id, message_id, recipient_ship_id, recipient_type, state::text AS state,
88
- claimed_by_ship_id, claimed_by_lease_id, attempts, created_at
90
+ claimed_by_ship_id, claimed_by_lease_id, attempts, hand_over_number, handed_once_more_at, created_at
89
91
  FROM deliveries
90
- WHERE fleet_id = ${fleetId} AND state = 'delivered' AND claimed_by_lease_id = ${leaseId}
92
+ WHERE fleet_id = ${fleetId} AND state IN ('received', 'handed') AND claimed_by_lease_id = ${leaseId}
91
93
  AND id <> ALL(${[...excluding]}::text[])
92
94
  ORDER BY created_at, id
93
95
  LIMIT ${limit}
@@ -96,7 +98,7 @@ export function createPrismaDeliveryRepository(db) {
96
98
  const pending = room > 0
97
99
  ? await db.$queryRaw `
98
100
  SELECT id, fleet_id, message_id, recipient_ship_id, recipient_type, state::text AS state,
99
- claimed_by_ship_id, claimed_by_lease_id, attempts, created_at
101
+ claimed_by_ship_id, claimed_by_lease_id, attempts, hand_over_number, handed_once_more_at, created_at
100
102
  FROM deliveries
101
103
  WHERE fleet_id = ${fleetId} AND state = 'pending'
102
104
  AND (recipient_ship_id = ${shipId}
@@ -122,7 +124,7 @@ export function createPrismaDeliveryRepository(db) {
122
124
  findForUpdate: async (fleetId, deliveryId) => {
123
125
  const [row] = await db.$queryRaw `
124
126
  SELECT id, fleet_id, message_id, recipient_ship_id, recipient_type, state::text AS state,
125
- claimed_by_ship_id, claimed_by_lease_id, attempts, created_at
127
+ claimed_by_ship_id, claimed_by_lease_id, attempts, hand_over_number, handed_once_more_at, created_at
126
128
  FROM deliveries
127
129
  WHERE fleet_id = ${fleetId} AND id = ${deliveryId}
128
130
  FOR UPDATE`;
@@ -131,7 +133,7 @@ export function createPrismaDeliveryRepository(db) {
131
133
  findOfMessage: async (fleetId, messageId) => {
132
134
  const [row] = await db.$queryRaw `
133
135
  SELECT id, fleet_id, message_id, recipient_ship_id, recipient_type, state::text AS state,
134
- claimed_by_ship_id, claimed_by_lease_id, attempts, created_at
136
+ claimed_by_ship_id, claimed_by_lease_id, attempts, hand_over_number, handed_once_more_at, created_at
135
137
  FROM deliveries
136
138
  WHERE fleet_id = ${fleetId} AND message_id = ${messageId}
137
139
  LIMIT 1`;
@@ -142,7 +144,7 @@ export function createPrismaDeliveryRepository(db) {
142
144
  where: {
143
145
  fleetId,
144
146
  contentType: PING_CONTENT_TYPE,
145
- deliveries: { some: { fleetId, recipientShipId: shipId, state: { in: ['pending', 'delivered'] } } },
147
+ deliveries: { some: { fleetId, recipientShipId: shipId, state: { in: ['pending', 'received', 'handed'] } } },
146
148
  },
147
149
  orderBy: { createdAt: 'desc' },
148
150
  });
@@ -156,6 +158,8 @@ export function createPrismaDeliveryRepository(db) {
156
158
  claimedByShipId: delivery.claimedByShipId,
157
159
  claimedByLeaseId: delivery.claimedByLeaseId,
158
160
  attempts: delivery.attempts,
161
+ handOverNumber: delivery.handOverNumber,
162
+ handedOnceMoreAt: delivery.handedOnceMoreAt,
159
163
  },
160
164
  });
161
165
  },