@relaycast/engine 3.1.1 → 4.0.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 (166) hide show
  1. package/dist/adapters/node/event-queue.d.ts +10 -0
  2. package/dist/adapters/node/event-queue.d.ts.map +1 -1
  3. package/dist/adapters/node/event-queue.js +17 -0
  4. package/dist/adapters/node/event-queue.js.map +1 -1
  5. package/dist/adapters/node/index.d.ts.map +1 -1
  6. package/dist/adapters/node/index.js +10 -0
  7. package/dist/adapters/node/index.js.map +1 -1
  8. package/dist/adapters/node/realtime.d.ts +24 -2
  9. package/dist/adapters/node/realtime.d.ts.map +1 -1
  10. package/dist/adapters/node/realtime.js +178 -1
  11. package/dist/adapters/node/realtime.js.map +1 -1
  12. package/dist/bin/serve.js +18 -1
  13. package/dist/bin/serve.js.map +1 -1
  14. package/dist/db/migrations/0016_fleet_nodes.sql +189 -0
  15. package/dist/db/migrations/0017_spawn_reservation_and_retry_state.sql +5 -0
  16. package/dist/db/migrations/0018_spawn_reserved_at.sql +2 -0
  17. package/dist/db/migrations/0019_fleet_mailbox.sql +71 -0
  18. package/dist/db/migrations/0020_workspace_retention.sql +3 -0
  19. package/dist/db/schema.d.ts +1771 -911
  20. package/dist/db/schema.d.ts.map +1 -1
  21. package/dist/db/schema.js +77 -7
  22. package/dist/db/schema.js.map +1 -1
  23. package/dist/engine/action.d.ts +84 -10
  24. package/dist/engine/action.d.ts.map +1 -1
  25. package/dist/engine/action.js +523 -85
  26. package/dist/engine/action.js.map +1 -1
  27. package/dist/engine/agent.js +2 -2
  28. package/dist/engine/agent.js.map +1 -1
  29. package/dist/engine/delivery.d.ts +41 -6
  30. package/dist/engine/delivery.d.ts.map +1 -1
  31. package/dist/engine/delivery.js +316 -25
  32. package/dist/engine/delivery.js.map +1 -1
  33. package/dist/engine/deliveryWire.d.ts +34 -0
  34. package/dist/engine/deliveryWire.d.ts.map +1 -0
  35. package/dist/engine/deliveryWire.js +70 -0
  36. package/dist/engine/deliveryWire.js.map +1 -0
  37. package/dist/engine/deliveryWrites.d.ts +47 -0
  38. package/dist/engine/deliveryWrites.d.ts.map +1 -1
  39. package/dist/engine/deliveryWrites.js +155 -5
  40. package/dist/engine/deliveryWrites.js.map +1 -1
  41. package/dist/engine/dm.d.ts +4 -4
  42. package/dist/engine/dm.d.ts.map +1 -1
  43. package/dist/engine/dm.js +17 -7
  44. package/dist/engine/dm.js.map +1 -1
  45. package/dist/engine/eventQueue.d.ts.map +1 -1
  46. package/dist/engine/eventQueue.js +5 -0
  47. package/dist/engine/eventQueue.js.map +1 -1
  48. package/dist/engine/eventSubscription.d.ts +6 -0
  49. package/dist/engine/eventSubscription.d.ts.map +1 -1
  50. package/dist/engine/eventSubscription.js +13 -0
  51. package/dist/engine/eventSubscription.js.map +1 -1
  52. package/dist/engine/groupDm.d.ts +4 -0
  53. package/dist/engine/groupDm.d.ts.map +1 -1
  54. package/dist/engine/groupDm.js +16 -4
  55. package/dist/engine/groupDm.js.map +1 -1
  56. package/dist/engine/invocationCompletion.d.ts +13 -0
  57. package/dist/engine/invocationCompletion.d.ts.map +1 -0
  58. package/dist/engine/invocationCompletion.js +65 -0
  59. package/dist/engine/invocationCompletion.js.map +1 -0
  60. package/dist/engine/mailboxConfig.d.ts +9 -0
  61. package/dist/engine/mailboxConfig.d.ts.map +1 -0
  62. package/dist/engine/mailboxConfig.js +16 -0
  63. package/dist/engine/mailboxConfig.js.map +1 -0
  64. package/dist/engine/message.d.ts +4 -0
  65. package/dist/engine/message.d.ts.map +1 -1
  66. package/dist/engine/message.js +16 -4
  67. package/dist/engine/message.js.map +1 -1
  68. package/dist/engine/node.d.ts +201 -0
  69. package/dist/engine/node.d.ts.map +1 -0
  70. package/dist/engine/node.js +533 -0
  71. package/dist/engine/node.js.map +1 -0
  72. package/dist/engine/placement.d.ts +26 -0
  73. package/dist/engine/placement.d.ts.map +1 -0
  74. package/dist/engine/placement.js +242 -0
  75. package/dist/engine/placement.js.map +1 -0
  76. package/dist/engine/receipt.d.ts.map +1 -1
  77. package/dist/engine/receipt.js +5 -6
  78. package/dist/engine/receipt.js.map +1 -1
  79. package/dist/engine/retention.d.ts +65 -0
  80. package/dist/engine/retention.d.ts.map +1 -0
  81. package/dist/engine/retention.js +173 -0
  82. package/dist/engine/retention.js.map +1 -0
  83. package/dist/engine/snowflake.d.ts +11 -0
  84. package/dist/engine/snowflake.d.ts.map +1 -1
  85. package/dist/engine/snowflake.js +14 -0
  86. package/dist/engine/snowflake.js.map +1 -1
  87. package/dist/engine/thread.d.ts +4 -0
  88. package/dist/engine/thread.d.ts.map +1 -1
  89. package/dist/engine/thread.js +16 -4
  90. package/dist/engine/thread.js.map +1 -1
  91. package/dist/engine/trigger.d.ts +79 -0
  92. package/dist/engine/trigger.d.ts.map +1 -0
  93. package/dist/engine/trigger.js +151 -0
  94. package/dist/engine/trigger.js.map +1 -0
  95. package/dist/engine.d.ts.map +1 -1
  96. package/dist/engine.js +61 -2
  97. package/dist/engine.js.map +1 -1
  98. package/dist/entrypoints/node.d.ts.map +1 -1
  99. package/dist/entrypoints/node.js +36 -2
  100. package/dist/entrypoints/node.js.map +1 -1
  101. package/dist/env.d.ts +6 -0
  102. package/dist/env.d.ts.map +1 -1
  103. package/dist/index.d.ts +4 -1
  104. package/dist/index.d.ts.map +1 -1
  105. package/dist/index.js +6 -1
  106. package/dist/index.js.map +1 -1
  107. package/dist/lib/fleetNodes.d.ts +9 -0
  108. package/dist/lib/fleetNodes.d.ts.map +1 -0
  109. package/dist/lib/fleetNodes.js +66 -0
  110. package/dist/lib/fleetNodes.js.map +1 -0
  111. package/dist/lib/origin.d.ts.map +1 -1
  112. package/dist/lib/origin.js +0 -5
  113. package/dist/lib/origin.js.map +1 -1
  114. package/dist/lib/serverTelemetry.d.ts.map +1 -1
  115. package/dist/lib/serverTelemetry.js +0 -1
  116. package/dist/lib/serverTelemetry.js.map +1 -1
  117. package/dist/middleware/fleetNodes.d.ts +10 -0
  118. package/dist/middleware/fleetNodes.d.ts.map +1 -0
  119. package/dist/middleware/fleetNodes.js +18 -0
  120. package/dist/middleware/fleetNodes.js.map +1 -0
  121. package/dist/ports/index.d.ts +24 -2
  122. package/dist/ports/index.d.ts.map +1 -1
  123. package/dist/ports/realtime.d.ts +34 -2
  124. package/dist/ports/realtime.d.ts.map +1 -1
  125. package/dist/ports/realtime.js +1 -1
  126. package/dist/routes/action.d.ts.map +1 -1
  127. package/dist/routes/action.js +21 -21
  128. package/dist/routes/action.js.map +1 -1
  129. package/dist/routes/delivery.d.ts.map +1 -1
  130. package/dist/routes/delivery.js +7 -2
  131. package/dist/routes/delivery.js.map +1 -1
  132. package/dist/routes/deliveryRouting.d.ts +10 -0
  133. package/dist/routes/deliveryRouting.d.ts.map +1 -0
  134. package/dist/routes/deliveryRouting.js +91 -0
  135. package/dist/routes/deliveryRouting.js.map +1 -0
  136. package/dist/routes/dm.d.ts.map +1 -1
  137. package/dist/routes/dm.js +14 -13
  138. package/dist/routes/dm.js.map +1 -1
  139. package/dist/routes/groupDm.d.ts.map +1 -1
  140. package/dist/routes/groupDm.js +14 -15
  141. package/dist/routes/groupDm.js.map +1 -1
  142. package/dist/routes/inbox.d.ts.map +1 -1
  143. package/dist/routes/inbox.js +7 -0
  144. package/dist/routes/inbox.js.map +1 -1
  145. package/dist/routes/message.d.ts.map +1 -1
  146. package/dist/routes/message.js +45 -23
  147. package/dist/routes/message.js.map +1 -1
  148. package/dist/routes/node.d.ts +4 -0
  149. package/dist/routes/node.d.ts.map +1 -0
  150. package/dist/routes/node.js +57 -0
  151. package/dist/routes/node.js.map +1 -0
  152. package/dist/routes/thread.d.ts.map +1 -1
  153. package/dist/routes/thread.js +15 -16
  154. package/dist/routes/thread.js.map +1 -1
  155. package/dist/routes/trigger.d.ts +4 -0
  156. package/dist/routes/trigger.d.ts.map +1 -0
  157. package/dist/routes/trigger.js +83 -0
  158. package/dist/routes/trigger.js.map +1 -0
  159. package/dist/routes/webhookOutbox.d.ts +13 -6
  160. package/dist/routes/webhookOutbox.d.ts.map +1 -1
  161. package/dist/routes/webhookOutbox.js +29 -6
  162. package/dist/routes/webhookOutbox.js.map +1 -1
  163. package/dist/routes/workspace.d.ts.map +1 -1
  164. package/dist/routes/workspace.js +90 -0
  165. package/dist/routes/workspace.js.map +1 -1
  166. package/package.json +3 -3
@@ -1,5 +1,10 @@
1
- import { eq, ne, and, not, asc, isNull, inArray, notInArray } from 'drizzle-orm';
2
- import { deliveries, messages, agents } from '../db/schema.js';
1
+ import { eq, and, not, asc, isNull, inArray, notInArray, lte, gt, sql } from 'drizzle-orm';
2
+ import { deliveries, messages, agents, readReceipts, channelMembers, channels, dmConversations, messageAttachments, files } from '../db/schema.js';
3
+ import { runAtomic } from '../ports/database.js';
4
+ import { buildDeliverFrame, buildDeliverPayload, buildMessageCreatedEventData, buildThreadReplyEventData, buildDmReceivedEventData, buildGroupDmReceivedEventData } from './deliveryWire.js';
5
+ import { publicMessageMetadata } from './messageMetadata.js';
6
+ const ACTIVE_DELIVERY_STATUSES = ['queued', 'delivered'];
7
+ const TERMINAL_SUCCESS_STATUS = 'acked';
3
8
  function toIso(value) {
4
9
  return value ? value.toISOString() : null;
5
10
  }
@@ -10,6 +15,9 @@ function serializeDelivery(row) {
10
15
  channel_id: row.channelId ?? '',
11
16
  agent_id: row.agentId,
12
17
  status: row.status,
18
+ seq: row.seq,
19
+ location_type: row.locationType,
20
+ location_node_id: row.locationNodeId,
13
21
  mode: row.mode,
14
22
  reason: row.reason,
15
23
  priority: row.priority,
@@ -17,13 +25,44 @@ function serializeDelivery(row) {
17
25
  error: row.error,
18
26
  available_at: toIso(row.availableAt),
19
27
  deadline: toIso(row.deadline),
28
+ expires_at: toIso(row.expiresAt),
29
+ delivered_at: toIso(row.deliveredAt),
30
+ acked_at: toIso(row.ackedAt),
31
+ dead_lettered_at: toIso(row.deadLetteredAt),
20
32
  created_at: toIso(row.createdAt) ?? new Date(0).toISOString(),
21
33
  updated_at: toIso(row.updatedAt),
22
34
  };
23
35
  }
36
+ async function fetchAttachmentsBatch(db, workspaceId, msgIds) {
37
+ const map = new Map();
38
+ if (msgIds.length === 0)
39
+ return map;
40
+ const rows = await db
41
+ .select({
42
+ messageId: messageAttachments.messageId,
43
+ fileId: messageAttachments.fileId,
44
+ filename: files.filename,
45
+ contentType: files.contentType,
46
+ sizeBytes: files.sizeBytes,
47
+ })
48
+ .from(messageAttachments)
49
+ .innerJoin(files, eq(messageAttachments.fileId, files.id))
50
+ .where(and(inArray(messageAttachments.messageId, msgIds), eq(files.workspaceId, workspaceId)));
51
+ for (const row of rows) {
52
+ const list = map.get(row.messageId) || [];
53
+ list.push({
54
+ file_id: row.fileId,
55
+ filename: row.filename,
56
+ content_type: row.contentType,
57
+ size_bytes: row.sizeBytes,
58
+ });
59
+ map.set(row.messageId, list);
60
+ }
61
+ return map;
62
+ }
24
63
  /**
25
64
  * List durable delivery items for an agent. Defaults to the non-terminal
26
- * (`accepted` + `deferred`) queue so an offline consumer can replay what it
65
+ * (`queued` + `delivered`) queue so an offline consumer can replay what it
27
66
  * missed on reconnect, oldest first (FIFO). Each item carries the message
28
67
  * payload so the consumer does not need a second round-trip.
29
68
  */
@@ -31,7 +70,7 @@ export async function listDeliveries(db, workspaceId, agentId, opts = {}) {
31
70
  const limit = Math.min(Math.max(opts.limit ?? 100, 1), 200);
32
71
  const statusFilter = opts.status
33
72
  ? eq(deliveries.status, opts.status)
34
- : inArray(deliveries.status, ['accepted', 'deferred']);
73
+ : inArray(deliveries.status, [...ACTIVE_DELIVERY_STATUSES]);
35
74
  const rows = await db
36
75
  .select()
37
76
  .from(deliveries)
@@ -87,7 +126,7 @@ async function getOwnedDelivery(db, workspaceId, agentId, deliveryId) {
87
126
  return row ? { ...row.delivery, channelId: row.channelId } : null;
88
127
  }
89
128
  /**
90
- * Idempotently transition a delivery to `delivered`. `delivered` is terminal,
129
+ * Idempotently transition a delivery to `acked`. `acked` is terminal,
91
130
  * so repeated acks are no-ops (reported as `changed: false`). Returns null if
92
131
  * the delivery is not found / not owned.
93
132
  */
@@ -95,22 +134,19 @@ export async function ackDelivery(db, workspaceId, agentId, deliveryId) {
95
134
  const existing = await getOwnedDelivery(db, workspaceId, agentId, deliveryId);
96
135
  if (!existing)
97
136
  return null;
98
- if (existing.status === 'delivered')
137
+ if (existing.status === TERMINAL_SUCCESS_STATUS)
99
138
  return { delivery: serializeDelivery(existing), changed: false };
100
- // The `status != 'delivered'` predicate lives in the UPDATE so the DB decides
101
- // atomically whether this call transitioned the row. Under concurrent acks
102
- // only one update matches (SQLite serializes writes); the loser sees no row
103
- // and reports `changed: false`, so the delivered event fires exactly once.
104
- const [updated] = await db
105
- .update(deliveries)
106
- .set({ status: 'delivered', updatedAt: new Date() })
107
- .where(and(eq(deliveries.id, deliveryId), ne(deliveries.status, 'delivered')))
108
- .returning();
139
+ // A single per-delivery ack may be out of order (e.g. acking seq 2 while seq 1
140
+ // is still queued). Mark this row acked but do NOT advance the cumulative
141
+ // cursor `deliverPendingToNode` filters `seq > delivery_ack_seq`, so an
142
+ // over-advanced cursor would skip the lower unacked row forever on node
143
+ // replay. The row's `acked` status already excludes it from replay.
144
+ const [updated] = await ackRows(db, workspaceId, agentId, [existing]);
109
145
  return resolveTransition(db, workspaceId, agentId, deliveryId, updated, existing.channelId);
110
146
  }
111
147
  /**
112
148
  * Idempotently record a delivery as `failed`, capturing error text and
113
- * retryability. Both `delivered` and `failed` are treated as settled: once a
149
+ * retryability. `acked`, `dead_lettered`, and `failed` are treated as settled: once a
114
150
  * delivery has failed, repeated calls are no-ops that preserve the original
115
151
  * failure metadata (no `null` overwrite, no `updatedAt` churn, no duplicate
116
152
  * event). The WHERE guard also closes the read→write race against a concurrent
@@ -120,7 +156,7 @@ export async function failDelivery(db, workspaceId, agentId, deliveryId, opts =
120
156
  const existing = await getOwnedDelivery(db, workspaceId, agentId, deliveryId);
121
157
  if (!existing)
122
158
  return null;
123
- if (existing.status === 'delivered' || existing.status === 'failed') {
159
+ if (['acked', 'dead_lettered', 'failed'].includes(existing.status)) {
124
160
  return { delivery: serializeDelivery(existing), changed: false };
125
161
  }
126
162
  // Both `delivered` and `failed` are settled, so the UPDATE only matches a
@@ -135,14 +171,14 @@ export async function failDelivery(db, workspaceId, agentId, deliveryId, opts =
135
171
  retryable: opts.retryable ?? null,
136
172
  updatedAt: new Date(),
137
173
  })
138
- .where(and(eq(deliveries.id, deliveryId), notInArray(deliveries.status, ['delivered', 'failed'])))
174
+ .where(and(eq(deliveries.id, deliveryId), notInArray(deliveries.status, ['acked', 'dead_lettered', 'failed'])))
139
175
  .returning();
140
176
  return resolveTransition(db, workspaceId, agentId, deliveryId, updated, existing.channelId);
141
177
  }
142
178
  /**
143
- * Idempotently record a delivery as `deferred` with the time it next becomes
144
- * available. A re-defer to the same `available_at`/reason is a no-op (reported
145
- * as `changed: false`); deferring to a new time is a real change. `delivered`
179
+ * Compatibility shim for the old defer endpoint. The durable state remains
180
+ * `queued`; `available_at` gates client-side retries. A re-defer to the same
181
+ * `available_at`/reason is a no-op (reported as `changed: false`). `acked`
146
182
  * is terminal, so a defer never resurrects an already-acked delivery (the WHERE
147
183
  * guard also closes the read→write race against a concurrent ack). Returns null
148
184
  * if not found / not owned.
@@ -151,8 +187,9 @@ export async function deferDelivery(db, workspaceId, agentId, deliveryId, opts)
151
187
  const existing = await getOwnedDelivery(db, workspaceId, agentId, deliveryId);
152
188
  if (!existing)
153
189
  return null;
154
- if (existing.status === 'delivered')
190
+ if (['acked', 'dead_lettered'].includes(existing.status)) {
155
191
  return { delivery: serializeDelivery(existing), changed: false };
192
+ }
156
193
  // The defer reason is its own concept; don't inherit the acceptance reason
157
194
  // (message/mention/dm/...) when the caller omits one, or deferred records and
158
195
  // delivery.deferred events would carry a misleading reason. Default to null.
@@ -164,19 +201,273 @@ export async function deferDelivery(db, workspaceId, agentId, deliveryId, opts)
164
201
  // this exact (available_at, reason). Encoding the no-op predicate in the
165
202
  // UPDATE makes it atomic — identical concurrent defers match no row on the
166
203
  // loser and report `changed: false`, so no duplicate event fires.
167
- const isNoop = and(eq(deliveries.status, 'deferred'), eq(deliveries.availableAt, opts.availableAt), reasonMatches);
204
+ const isNoop = and(eq(deliveries.status, 'queued'), eq(deliveries.availableAt, opts.availableAt), reasonMatches);
168
205
  const [updated] = await db
169
206
  .update(deliveries)
170
207
  .set({
171
- status: 'deferred',
208
+ status: 'queued',
172
209
  availableAt: opts.availableAt,
173
210
  reason: targetReason,
174
211
  updatedAt: new Date(),
175
212
  })
176
- .where(and(eq(deliveries.id, deliveryId), ne(deliveries.status, 'delivered'), not(isNoop)))
213
+ .where(and(eq(deliveries.id, deliveryId), notInArray(deliveries.status, ['acked', 'dead_lettered']), not(isNoop)))
177
214
  .returning();
178
215
  return resolveTransition(db, workspaceId, agentId, deliveryId, updated, existing.channelId);
179
216
  }
217
+ async function markRowsRead(tx, agentId, rows) {
218
+ for (const row of rows) {
219
+ await tx
220
+ .insert(readReceipts)
221
+ .values({ messageId: row.messageId, agentId })
222
+ .onConflictDoNothing();
223
+ await tx
224
+ .update(channelMembers)
225
+ .set({ lastReadId: row.messageId })
226
+ .where(and(eq(channelMembers.channelId, row.channelId), eq(channelMembers.agentId, agentId), sql `(${channelMembers.lastReadId} IS NULL OR CAST(${channelMembers.lastReadId} AS BIGINT) < CAST(${row.messageId} AS BIGINT))`));
227
+ }
228
+ }
229
+ async function ackRows(db, workspaceId, agentId, rows,
230
+ // Cumulative cursor target. Pass the contiguous up-to-seq only for a genuine
231
+ // cumulative ack (the node `delivery.ack {up_to_seq}` path). Omit for single /
232
+ // out-of-order acks so the cursor is never advanced past a still-unacked
233
+ // lower-seq row (which `deliverPendingToNode` would then skip forever).
234
+ advanceCursorTo) {
235
+ const ids = rows.map((row) => row.id);
236
+ return runAtomic(db, async (tx) => {
237
+ await tx
238
+ .update(agents)
239
+ .set({
240
+ deliveryAckSeq: advanceCursorTo === undefined
241
+ ? sql `${agents.deliveryAckSeq}`
242
+ : sql `CASE
243
+ WHEN ${agents.deliveryAckSeq} < ${advanceCursorTo} THEN ${advanceCursorTo}
244
+ ELSE ${agents.deliveryAckSeq}
245
+ END`,
246
+ lastSeen: new Date(),
247
+ })
248
+ .where(and(eq(agents.workspaceId, workspaceId), eq(agents.id, agentId)));
249
+ const updated = ids.length > 0
250
+ ? await tx
251
+ .update(deliveries)
252
+ .set({
253
+ status: TERMINAL_SUCCESS_STATUS,
254
+ ackedAt: new Date(),
255
+ updatedAt: new Date(),
256
+ })
257
+ .where(and(eq(deliveries.workspaceId, workspaceId), inArray(deliveries.id, ids), notInArray(deliveries.status, ['acked', 'dead_lettered'])))
258
+ .returning()
259
+ : [];
260
+ if (rows.length > 0)
261
+ await markRowsRead(tx, agentId, rows);
262
+ return updated;
263
+ });
264
+ }
265
+ export async function ackDeliveriesUpToSeq(db, workspaceId, nodeId, agentName, upToSeq) {
266
+ const [agent] = await db
267
+ .select()
268
+ .from(agents)
269
+ .where(and(eq(agents.workspaceId, workspaceId), eq(agents.name, agentName), eq(agents.locationType, 'via_node'), eq(agents.locationNodeId, nodeId)));
270
+ if (!agent)
271
+ return null;
272
+ if (upToSeq <= agent.deliveryAckSeq) {
273
+ return { agent_id: agent.id, agent_name: agent.name, up_to_seq: upToSeq, acked: 0 };
274
+ }
275
+ const rows = await db
276
+ .select({ delivery: deliveries, channelId: messages.channelId })
277
+ .from(deliveries)
278
+ .innerJoin(messages, eq(deliveries.messageId, messages.id))
279
+ .where(and(eq(deliveries.workspaceId, workspaceId), eq(deliveries.agentId, agent.id), lte(deliveries.seq, upToSeq), notInArray(deliveries.status, ['acked', 'dead_lettered'])))
280
+ .orderBy(asc(deliveries.seq));
281
+ const updated = await ackRows(db, workspaceId, agent.id, rows.map((row) => ({ ...row.delivery, channelId: row.channelId })), upToSeq);
282
+ return { agent_id: agent.id, agent_name: agent.name, up_to_seq: upToSeq, acked: updated.length };
283
+ }
284
+ export async function markDeliveriesDelivered(db, workspaceId, deliveryIds) {
285
+ if (deliveryIds.length === 0)
286
+ return 0;
287
+ const updated = await db
288
+ .update(deliveries)
289
+ .set({
290
+ status: 'delivered',
291
+ deliveredAt: new Date(),
292
+ updatedAt: new Date(),
293
+ })
294
+ .where(and(eq(deliveries.workspaceId, workspaceId), inArray(deliveries.id, deliveryIds), eq(deliveries.status, 'queued')))
295
+ .returning();
296
+ return updated.length;
297
+ }
298
+ export async function expireDueDeliveries(db, workspaceId, now = new Date()) {
299
+ const nowSeconds = Math.floor(now.getTime() / 1000);
300
+ const due = await db
301
+ .select({
302
+ delivery: deliveries,
303
+ senderAgentId: messages.agentId,
304
+ targetAgentName: agents.name,
305
+ })
306
+ .from(deliveries)
307
+ .innerJoin(messages, eq(deliveries.messageId, messages.id))
308
+ .innerJoin(agents, eq(deliveries.agentId, agents.id))
309
+ .where(and(eq(deliveries.workspaceId, workspaceId), inArray(deliveries.status, [...ACTIVE_DELIVERY_STATUSES]), sql `${deliveries.expiresAt} IS NOT NULL AND ${deliveries.expiresAt} <= ${nowSeconds}`));
310
+ if (due.length === 0)
311
+ return [];
312
+ const ids = due.map((row) => row.delivery.id);
313
+ const updated = await db
314
+ .update(deliveries)
315
+ .set({
316
+ status: 'dead_lettered',
317
+ error: 'delivery TTL expired',
318
+ retryable: false,
319
+ deadLetteredAt: now,
320
+ updatedAt: now,
321
+ })
322
+ .where(and(eq(deliveries.workspaceId, workspaceId), inArray(deliveries.id, ids), notInArray(deliveries.status, ['acked', 'dead_lettered', 'failed'])))
323
+ .returning({ id: deliveries.id });
324
+ const updatedIds = new Set(updated.map((row) => row.id));
325
+ return due
326
+ .filter((row) => row.senderAgentId && updatedIds.has(row.delivery.id))
327
+ .map((row) => ({
328
+ delivery_id: row.delivery.id,
329
+ message_id: row.delivery.messageId,
330
+ sender_agent_id: row.senderAgentId,
331
+ target_agent_id: row.delivery.agentId,
332
+ target_agent_name: row.targetAgentName,
333
+ seq: row.delivery.seq,
334
+ reason: 'ttl_expired',
335
+ error: 'delivery TTL expired',
336
+ retryable: false,
337
+ }));
338
+ }
339
+ function wireMode(mode) {
340
+ return mode === 'next-tool-call' ? 'steer' : 'wait';
341
+ }
342
+ export async function deliverPendingToNode(db, registry, workspaceId, nodeId) {
343
+ const nowSeconds = Math.floor(Date.now() / 1000);
344
+ const rows = await db
345
+ .select({
346
+ delivery: deliveries,
347
+ recipientAgentName: agents.name,
348
+ ackSeq: agents.deliveryAckSeq,
349
+ body: messages.body,
350
+ blocks: messages.blocks,
351
+ metadata: messages.metadata,
352
+ hasAttachments: messages.hasAttachments,
353
+ threadId: messages.threadId,
354
+ createdAt: messages.createdAt,
355
+ channelId: messages.channelId,
356
+ channelName: channels.name,
357
+ conversationId: dmConversations.id,
358
+ dmType: dmConversations.dmType,
359
+ senderAgentId: messages.agentId,
360
+ senderAgentName: sql `(
361
+ SELECT a.name FROM agents a WHERE a.id = ${messages.agentId}
362
+ )`,
363
+ })
364
+ .from(deliveries)
365
+ .innerJoin(agents, eq(deliveries.agentId, agents.id))
366
+ .innerJoin(messages, eq(deliveries.messageId, messages.id))
367
+ .innerJoin(channels, eq(messages.channelId, channels.id))
368
+ .leftJoin(dmConversations, eq(dmConversations.channelId, messages.channelId))
369
+ .where(and(eq(deliveries.workspaceId, workspaceId), eq(agents.locationType, 'via_node'), eq(agents.locationNodeId, nodeId), inArray(deliveries.status, [...ACTIVE_DELIVERY_STATUSES]), gt(deliveries.seq, agents.deliveryAckSeq), sql `(${deliveries.expiresAt} IS NULL OR ${deliveries.expiresAt} > ${nowSeconds})`))
370
+ .orderBy(asc(agents.name), asc(deliveries.seq));
371
+ const attachmentsByMessageId = await fetchAttachmentsBatch(db, workspaceId, [...new Set(rows.map((row) => row.delivery.messageId))]);
372
+ const deliveredIds = [];
373
+ for (const row of rows) {
374
+ const senderName = row.senderAgentName ?? 'unknown';
375
+ const attachments = attachmentsByMessageId.get(row.delivery.messageId) ?? [];
376
+ const injectionMode = row.delivery.mode === 'next-tool-call' ? 'steer' : 'wait';
377
+ // Thread replies route as `thread.reply` in the live path even inside a DM /
378
+ // group DM (see routes/thread.ts fanout), so a missed thread reply must
379
+ // replay with the same event type/shape. Check `threadId` before `dmType`.
380
+ const eventType = row.threadId
381
+ ? 'thread.reply'
382
+ : (row.dmType
383
+ ? (row.dmType === 'group' ? 'group_dm.received' : 'dm.received')
384
+ : 'message.created');
385
+ let eventData;
386
+ if (eventType === 'dm.received') {
387
+ eventData = buildDmReceivedEventData({
388
+ conversation_id: row.conversationId,
389
+ message: {
390
+ id: row.delivery.messageId,
391
+ agent_id: row.senderAgentId,
392
+ agent_name: senderName,
393
+ text: row.body,
394
+ injection_mode: injectionMode,
395
+ attachments,
396
+ },
397
+ created_at: row.createdAt.toISOString(),
398
+ id: row.delivery.messageId,
399
+ from_agent_id: row.senderAgentId,
400
+ to: row.recipientAgentName,
401
+ text: row.body,
402
+ injection_mode: injectionMode,
403
+ attachments,
404
+ }, { fromName: senderName });
405
+ }
406
+ else if (eventType === 'group_dm.received') {
407
+ eventData = buildGroupDmReceivedEventData({
408
+ conversation_id: row.conversationId,
409
+ message: {
410
+ id: row.delivery.messageId,
411
+ agent_id: row.senderAgentId,
412
+ agent_name: senderName,
413
+ text: row.body,
414
+ injection_mode: injectionMode,
415
+ attachments,
416
+ },
417
+ created_at: row.createdAt.toISOString(),
418
+ id: row.delivery.messageId,
419
+ agent_id: row.senderAgentId,
420
+ text: row.body,
421
+ injection_mode: injectionMode,
422
+ attachments,
423
+ }, { fromName: senderName });
424
+ }
425
+ else if (eventType === 'thread.reply') {
426
+ eventData = buildThreadReplyEventData({
427
+ id: row.delivery.messageId,
428
+ channel_id: row.channelId,
429
+ channel_name: row.channelName,
430
+ agent_id: row.senderAgentId,
431
+ agent_name: senderName,
432
+ thread_id: row.threadId,
433
+ text: row.body,
434
+ blocks: row.blocks || null,
435
+ metadata: publicMessageMetadata(row.metadata),
436
+ has_attachments: row.hasAttachments,
437
+ created_at: row.createdAt.toISOString(),
438
+ }, { channelName: row.channelName, fromName: senderName });
439
+ }
440
+ else {
441
+ const mentions = [...row.body.matchAll(/@(\w+)/g)].map((match) => match[1]);
442
+ eventData = buildMessageCreatedEventData({
443
+ id: row.delivery.messageId,
444
+ channel_id: row.channelId,
445
+ agent_id: row.senderAgentId,
446
+ agent_name: senderName,
447
+ text: row.body,
448
+ blocks: row.blocks || null,
449
+ metadata: publicMessageMetadata(row.metadata),
450
+ has_attachments: row.hasAttachments,
451
+ thread_id: row.threadId,
452
+ created_at: row.createdAt.toISOString(),
453
+ mentions,
454
+ attachments,
455
+ injection_mode: injectionMode,
456
+ }, { channelName: row.channelName, fromName: senderName, mode: injectionMode });
457
+ }
458
+ const sent = await registry.sendToNode(workspaceId, nodeId, buildDeliverFrame({
459
+ agent: row.recipientAgentName,
460
+ msg_id: row.delivery.messageId,
461
+ seq: row.delivery.seq,
462
+ mode: wireMode(row.delivery.mode),
463
+ payload: buildDeliverPayload(eventType, eventData),
464
+ }));
465
+ if (sent)
466
+ deliveredIds.push(row.delivery.id);
467
+ }
468
+ await markDeliveriesDelivered(db, workspaceId, deliveredIds);
469
+ return deliveredIds.length;
470
+ }
180
471
  /**
181
472
  * Resolve the result of a status-guarded transition: when the write landed,
182
473
  * report the updated row as changed. When it did not (the row was deleted, or a
@@ -1 +1 @@
1
- {"version":3,"file":"delivery.js","sourceRoot":"","sources":["../../src/engine/delivery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"delivery.js","sourceRoot":"","sources":["../../src/engine/delivery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { FleetWireJsonValue } from '@relaycast/types';
2
+ export declare function toFleetWireJson(value: unknown): FleetWireJsonValue;
3
+ export declare function buildDeliverPayload(eventType: string, eventData: Record<string, unknown>): FleetWireJsonValue;
4
+ export declare function buildMessageCreatedEventData(data: Record<string, unknown>, opts: {
5
+ channelName: string;
6
+ fromName: string;
7
+ mode?: 'wait' | 'steer';
8
+ }): Record<string, unknown>;
9
+ export declare function buildThreadReplyEventData(data: Record<string, unknown>, opts: {
10
+ channelName: string;
11
+ fromName: string;
12
+ }): Record<string, unknown>;
13
+ export declare function buildDmReceivedEventData(data: Record<string, unknown>, opts: {
14
+ fromName: string;
15
+ }): Record<string, unknown>;
16
+ export declare function buildGroupDmReceivedEventData(data: Record<string, unknown>, opts: {
17
+ fromName: string;
18
+ }): Record<string, unknown>;
19
+ export declare function buildDeliverFrame(input: {
20
+ agent: string;
21
+ msg_id: string;
22
+ seq: number;
23
+ mode: 'wait' | 'steer';
24
+ payload: FleetWireJsonValue;
25
+ }): {
26
+ v: 1;
27
+ type: "deliver";
28
+ agent: string;
29
+ msg_id: string;
30
+ seq: number;
31
+ mode: "wait" | "steer";
32
+ payload: FleetWireJsonValue;
33
+ };
34
+ //# sourceMappingURL=deliveryWire.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deliveryWire.d.ts","sourceRoot":"","sources":["../../src/engine/deliveryWire.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,kBAAkB,CAclE;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,kBAAkB,CAE7G;AAgBD,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GACvE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQzB;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC9C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOzB;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAED,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,EAAE,kBAAkB,CAAC;CAC7B;;;;;;;;EAUA"}
@@ -0,0 +1,70 @@
1
+ export function toFleetWireJson(value) {
2
+ if (value === null)
3
+ return null;
4
+ if (typeof value === 'string' || typeof value === 'boolean')
5
+ return value;
6
+ if (typeof value === 'number')
7
+ return Number.isFinite(value) ? value : null;
8
+ if (Array.isArray(value))
9
+ return value.map(toFleetWireJson);
10
+ if (value instanceof Date)
11
+ return value.toISOString();
12
+ if (value && typeof value === 'object') {
13
+ const out = {};
14
+ for (const [key, nested] of Object.entries(value)) {
15
+ out[key] = toFleetWireJson(nested);
16
+ }
17
+ return out;
18
+ }
19
+ return null;
20
+ }
21
+ export function buildDeliverPayload(eventType, eventData) {
22
+ return toFleetWireJson({ type: eventType, data: eventData });
23
+ }
24
+ function stripDeliveryInternals(data) {
25
+ const { _deliveries: _dropDeliveries, _delivery_rejections: _dropRejections, _delivery: _dropDelivery, ...publicData } = data;
26
+ return publicData;
27
+ }
28
+ export function buildMessageCreatedEventData(data, opts) {
29
+ const publicData = stripDeliveryInternals(data);
30
+ return {
31
+ ...publicData,
32
+ channel_name: opts.channelName,
33
+ from_name: opts.fromName,
34
+ injection_mode: publicData.injection_mode ?? opts.mode ?? 'wait',
35
+ };
36
+ }
37
+ export function buildThreadReplyEventData(data, opts) {
38
+ const publicData = stripDeliveryInternals(data);
39
+ return {
40
+ ...publicData,
41
+ channel_name: opts.channelName,
42
+ from_name: opts.fromName,
43
+ };
44
+ }
45
+ export function buildDmReceivedEventData(data, opts) {
46
+ const publicData = stripDeliveryInternals(data);
47
+ return {
48
+ ...publicData,
49
+ from_name: opts.fromName,
50
+ };
51
+ }
52
+ export function buildGroupDmReceivedEventData(data, opts) {
53
+ const publicData = stripDeliveryInternals(data);
54
+ return {
55
+ ...publicData,
56
+ from_name: opts.fromName,
57
+ };
58
+ }
59
+ export function buildDeliverFrame(input) {
60
+ return {
61
+ v: 1,
62
+ type: 'deliver',
63
+ agent: input.agent,
64
+ msg_id: input.msg_id,
65
+ seq: input.seq,
66
+ mode: input.mode,
67
+ payload: input.payload,
68
+ };
69
+ }
70
+ //# sourceMappingURL=deliveryWire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deliveryWire.js","sourceRoot":"","sources":["../../src/engine/deliveryWire.ts"],"names":[],"mappings":"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"}