@relaycast/engine 4.1.6 → 5.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 (190) hide show
  1. package/dist/adapters/node/index.d.ts.map +1 -1
  2. package/dist/adapters/node/index.js +23 -1
  3. package/dist/adapters/node/index.js.map +1 -1
  4. package/dist/adapters/node/presence.d.ts +7 -3
  5. package/dist/adapters/node/presence.d.ts.map +1 -1
  6. package/dist/adapters/node/presence.js +10 -8
  7. package/dist/adapters/node/presence.js.map +1 -1
  8. package/dist/adapters/node/realtime.d.ts.map +1 -1
  9. package/dist/adapters/node/realtime.js +8 -3
  10. package/dist/adapters/node/realtime.js.map +1 -1
  11. package/dist/bin/serve.js +2 -4
  12. package/dist/bin/serve.js.map +1 -1
  13. package/dist/db/migrations/0021_node_delivery_contracts.sql +70 -0
  14. package/dist/db/migrations/0022_http_push_redrive.sql +13 -0
  15. package/dist/db/migrations/0023_direct_ws_nodes.sql +124 -0
  16. package/dist/db/migrations/0024_binding_workspace_constraints.sql +109 -0
  17. package/dist/db/schema.d.ts +339 -0
  18. package/dist/db/schema.d.ts.map +1 -1
  19. package/dist/db/schema.js +48 -1
  20. package/dist/db/schema.js.map +1 -1
  21. package/dist/engine/action.d.ts +0 -7
  22. package/dist/engine/action.d.ts.map +1 -1
  23. package/dist/engine/action.js +0 -7
  24. package/dist/engine/action.js.map +1 -1
  25. package/dist/engine/agent.d.ts.map +1 -1
  26. package/dist/engine/agent.js +7 -1
  27. package/dist/engine/agent.js.map +1 -1
  28. package/dist/engine/delivery.d.ts +24 -0
  29. package/dist/engine/delivery.d.ts.map +1 -1
  30. package/dist/engine/delivery.js +190 -74
  31. package/dist/engine/delivery.js.map +1 -1
  32. package/dist/engine/deliveryWrites.d.ts +5 -0
  33. package/dist/engine/deliveryWrites.d.ts.map +1 -1
  34. package/dist/engine/deliveryWrites.js +51 -11
  35. package/dist/engine/deliveryWrites.js.map +1 -1
  36. package/dist/engine/invocationCompletion.d.ts +1 -1
  37. package/dist/engine/invocationCompletion.d.ts.map +1 -1
  38. package/dist/engine/invocationCompletion.js +1 -16
  39. package/dist/engine/invocationCompletion.js.map +1 -1
  40. package/dist/engine/message.d.ts.map +1 -1
  41. package/dist/engine/message.js +1 -0
  42. package/dist/engine/message.js.map +1 -1
  43. package/dist/engine/node.d.ts +85 -0
  44. package/dist/engine/node.d.ts.map +1 -1
  45. package/dist/engine/node.js +473 -14
  46. package/dist/engine/node.js.map +1 -1
  47. package/dist/engine/nodeContext.d.ts +22 -0
  48. package/dist/engine/nodeContext.d.ts.map +1 -0
  49. package/dist/engine/nodeContext.js +104 -0
  50. package/dist/engine/nodeContext.js.map +1 -0
  51. package/dist/engine/thread.d.ts.map +1 -1
  52. package/dist/engine/thread.js +37 -17
  53. package/dist/engine/thread.js.map +1 -1
  54. package/dist/engine/wsAuth.d.ts +36 -0
  55. package/dist/engine/wsAuth.d.ts.map +1 -0
  56. package/dist/engine/wsAuth.js +57 -0
  57. package/dist/engine/wsAuth.js.map +1 -0
  58. package/dist/engine.d.ts.map +1 -1
  59. package/dist/engine.js +46 -74
  60. package/dist/engine.js.map +1 -1
  61. package/dist/entrypoints/node.d.ts.map +1 -1
  62. package/dist/entrypoints/node.js +27 -51
  63. package/dist/entrypoints/node.js.map +1 -1
  64. package/dist/index.d.ts +1 -0
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +5 -0
  67. package/dist/index.js.map +1 -1
  68. package/dist/lib/httpError.d.ts +5 -1
  69. package/dist/lib/httpError.d.ts.map +1 -1
  70. package/dist/lib/httpError.js +9 -5
  71. package/dist/lib/httpError.js.map +1 -1
  72. package/dist/lib/httpQuery.d.ts +28 -0
  73. package/dist/lib/httpQuery.d.ts.map +1 -0
  74. package/dist/lib/httpQuery.js +32 -0
  75. package/dist/lib/httpQuery.js.map +1 -0
  76. package/dist/lib/httpResponse.d.ts +116 -0
  77. package/dist/lib/httpResponse.d.ts.map +1 -0
  78. package/dist/lib/httpResponse.js +65 -0
  79. package/dist/lib/httpResponse.js.map +1 -0
  80. package/dist/middleware/auth.d.ts.map +1 -1
  81. package/dist/middleware/auth.js +3 -2
  82. package/dist/middleware/auth.js.map +1 -1
  83. package/dist/middleware/idempotency.d.ts +30 -0
  84. package/dist/middleware/idempotency.d.ts.map +1 -1
  85. package/dist/middleware/idempotency.js +14 -0
  86. package/dist/middleware/idempotency.js.map +1 -1
  87. package/dist/middleware/planLimits.d.ts.map +1 -1
  88. package/dist/middleware/planLimits.js +2 -7
  89. package/dist/middleware/planLimits.js.map +1 -1
  90. package/dist/middleware/rateLimit.d.ts.map +1 -1
  91. package/dist/middleware/rateLimit.js +2 -7
  92. package/dist/middleware/rateLimit.js.map +1 -1
  93. package/dist/ports/index.d.ts +0 -14
  94. package/dist/ports/index.d.ts.map +1 -1
  95. package/dist/routes/a2a.d.ts.map +1 -1
  96. package/dist/routes/a2a.js +41 -83
  97. package/dist/routes/a2a.js.map +1 -1
  98. package/dist/routes/action.d.ts.map +1 -1
  99. package/dist/routes/action.js +32 -37
  100. package/dist/routes/action.js.map +1 -1
  101. package/dist/routes/agent.d.ts.map +1 -1
  102. package/dist/routes/agent.js +69 -73
  103. package/dist/routes/agent.js.map +1 -1
  104. package/dist/routes/certify.d.ts.map +1 -1
  105. package/dist/routes/certify.js +21 -35
  106. package/dist/routes/certify.js.map +1 -1
  107. package/dist/routes/channel.d.ts.map +1 -1
  108. package/dist/routes/channel.js +33 -71
  109. package/dist/routes/channel.js.map +1 -1
  110. package/dist/routes/console.d.ts.map +1 -1
  111. package/dist/routes/console.js +22 -32
  112. package/dist/routes/console.js.map +1 -1
  113. package/dist/routes/delivery.d.ts.map +1 -1
  114. package/dist/routes/delivery.js +22 -54
  115. package/dist/routes/delivery.js.map +1 -1
  116. package/dist/routes/deliveryRouting.d.ts +6 -0
  117. package/dist/routes/deliveryRouting.d.ts.map +1 -1
  118. package/dist/routes/deliveryRouting.js +289 -35
  119. package/dist/routes/deliveryRouting.js.map +1 -1
  120. package/dist/routes/directory.d.ts.map +1 -1
  121. package/dist/routes/directory.js +47 -63
  122. package/dist/routes/directory.js.map +1 -1
  123. package/dist/routes/dm.d.ts.map +1 -1
  124. package/dist/routes/dm.js +21 -42
  125. package/dist/routes/dm.js.map +1 -1
  126. package/dist/routes/eventSubscription.d.ts.map +1 -1
  127. package/dist/routes/eventSubscription.js +15 -21
  128. package/dist/routes/eventSubscription.js.map +1 -1
  129. package/dist/routes/fanout.d.ts +2 -1
  130. package/dist/routes/fanout.d.ts.map +1 -1
  131. package/dist/routes/fanout.js +25 -15
  132. package/dist/routes/fanout.js.map +1 -1
  133. package/dist/routes/file.d.ts.map +1 -1
  134. package/dist/routes/file.js +34 -40
  135. package/dist/routes/file.js.map +1 -1
  136. package/dist/routes/groupDm.d.ts.map +1 -1
  137. package/dist/routes/groupDm.js +23 -48
  138. package/dist/routes/groupDm.js.map +1 -1
  139. package/dist/routes/inboundWebhook.d.ts.map +1 -1
  140. package/dist/routes/inboundWebhook.js +17 -35
  141. package/dist/routes/inboundWebhook.js.map +1 -1
  142. package/dist/routes/inbox.d.ts.map +1 -1
  143. package/dist/routes/inbox.js +2 -1
  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 +39 -50
  147. package/dist/routes/message.js.map +1 -1
  148. package/dist/routes/node.d.ts.map +1 -1
  149. package/dist/routes/node.js +125 -12
  150. package/dist/routes/node.js.map +1 -1
  151. package/dist/routes/presence.d.ts.map +1 -1
  152. package/dist/routes/presence.js +4 -3
  153. package/dist/routes/presence.js.map +1 -1
  154. package/dist/routes/reaction.d.ts.map +1 -1
  155. package/dist/routes/reaction.js +10 -21
  156. package/dist/routes/reaction.js.map +1 -1
  157. package/dist/routes/receipt.d.ts.map +1 -1
  158. package/dist/routes/receipt.js +7 -15
  159. package/dist/routes/receipt.js.map +1 -1
  160. package/dist/routes/routing.d.ts.map +1 -1
  161. package/dist/routes/routing.js +38 -51
  162. package/dist/routes/routing.js.map +1 -1
  163. package/dist/routes/search.d.ts.map +1 -1
  164. package/dist/routes/search.js +15 -12
  165. package/dist/routes/search.js.map +1 -1
  166. package/dist/routes/systemPrompt.d.ts.map +1 -1
  167. package/dist/routes/systemPrompt.js +8 -13
  168. package/dist/routes/systemPrompt.js.map +1 -1
  169. package/dist/routes/thread.d.ts.map +1 -1
  170. package/dist/routes/thread.js +17 -35
  171. package/dist/routes/thread.js.map +1 -1
  172. package/dist/routes/trigger.d.ts.map +1 -1
  173. package/dist/routes/trigger.js +15 -14
  174. package/dist/routes/trigger.js.map +1 -1
  175. package/dist/routes/workspace.d.ts.map +1 -1
  176. package/dist/routes/workspace.js +39 -220
  177. package/dist/routes/workspace.js.map +1 -1
  178. package/package.json +3 -3
  179. package/dist/lib/fleetNodes.d.ts +0 -9
  180. package/dist/lib/fleetNodes.d.ts.map +0 -1
  181. package/dist/lib/fleetNodes.js +0 -66
  182. package/dist/lib/fleetNodes.js.map +0 -1
  183. package/dist/lib/workspaceStream.d.ts +0 -9
  184. package/dist/lib/workspaceStream.d.ts.map +0 -1
  185. package/dist/lib/workspaceStream.js +0 -53
  186. package/dist/lib/workspaceStream.js.map +0 -1
  187. package/dist/middleware/fleetNodes.d.ts +0 -10
  188. package/dist/middleware/fleetNodes.d.ts.map +0 -1
  189. package/dist/middleware/fleetNodes.js +0 -18
  190. package/dist/middleware/fleetNodes.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { eq, and, not, asc, isNull, inArray, notInArray, lte, gt, sql } from 'drizzle-orm';
1
+ import { eq, and, not, asc, isNull, isNotNull, inArray, notInArray, lte, gt, sql } from 'drizzle-orm';
2
2
  import { deliveries, messages, agents, readReceipts, channelMembers, channels, dmConversations } from '../db/schema.js';
3
3
  import { runAtomic } from '../ports/database.js';
4
4
  import { buildDeliverFrame, buildDeliverPayload, buildMessageCreatedEventData, buildThreadReplyEventData, buildDmReceivedEventData, buildGroupDmReceivedEventData } from './deliveryWire.js';
@@ -17,6 +17,12 @@ function serializeDelivery(row) {
17
17
  seq: row.seq,
18
18
  location_type: row.locationType,
19
19
  location_node_id: row.locationNodeId,
20
+ route_node_id: row.routeNodeId,
21
+ route_node_kind: row.routeNodeKind,
22
+ delivery_adapter: row.deliveryAdapter,
23
+ dispatch_attempts: row.dispatchAttempts,
24
+ next_attempt_at: toIso(row.nextAttemptAt),
25
+ last_dispatch_error: row.lastDispatchError,
20
26
  mode: row.mode,
21
27
  reason: row.reason,
22
28
  priority: row.priority,
@@ -223,6 +229,8 @@ advanceCursorTo) {
223
229
  .update(deliveries)
224
230
  .set({
225
231
  status: TERMINAL_SUCCESS_STATUS,
232
+ nextAttemptAt: null,
233
+ lastDispatchError: null,
226
234
  ackedAt: new Date(),
227
235
  updatedAt: new Date(),
228
236
  })
@@ -260,6 +268,8 @@ export async function markDeliveriesDelivered(db, workspaceId, deliveryIds) {
260
268
  .update(deliveries)
261
269
  .set({
262
270
  status: 'delivered',
271
+ nextAttemptAt: null,
272
+ lastDispatchError: null,
263
273
  deliveredAt: new Date(),
264
274
  updatedAt: new Date(),
265
275
  })
@@ -311,52 +321,21 @@ export async function expireDueDeliveries(db, workspaceId, now = new Date()) {
311
321
  function wireMode(mode) {
312
322
  return mode === 'next-tool-call' ? 'steer' : 'wait';
313
323
  }
314
- export async function deliverPendingToNode(db, registry, workspaceId, nodeId) {
315
- const nowSeconds = Math.floor(Date.now() / 1000);
316
- const rows = await db
317
- .select({
318
- delivery: deliveries,
319
- recipientAgentName: agents.name,
320
- ackSeq: agents.deliveryAckSeq,
321
- body: messages.body,
322
- blocks: messages.blocks,
323
- metadata: messages.metadata,
324
- hasAttachments: messages.hasAttachments,
325
- threadId: messages.threadId,
326
- createdAt: messages.createdAt,
327
- channelId: messages.channelId,
328
- channelName: channels.name,
329
- conversationId: dmConversations.id,
330
- dmType: dmConversations.dmType,
331
- senderAgentId: messages.agentId,
332
- senderAgentName: sql `(
333
- SELECT a.name FROM agents a WHERE a.id = ${messages.agentId}
334
- )`,
335
- })
336
- .from(deliveries)
337
- .innerJoin(agents, eq(deliveries.agentId, agents.id))
338
- .innerJoin(messages, eq(deliveries.messageId, messages.id))
339
- .innerJoin(channels, eq(messages.channelId, channels.id))
340
- .leftJoin(dmConversations, eq(dmConversations.channelId, messages.channelId))
341
- .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})`))
342
- .orderBy(asc(agents.name), asc(deliveries.seq));
343
- const attachmentsByMessageId = await fetchAttachmentsBatch(db, workspaceId, [...new Set(rows.map((row) => row.delivery.messageId))]);
344
- const deliveredIds = [];
345
- for (const row of rows) {
346
- const senderName = row.senderAgentName ?? 'unknown';
347
- const attachments = attachmentsByMessageId.get(row.delivery.messageId) ?? [];
348
- const injectionMode = row.delivery.mode === 'next-tool-call' ? 'steer' : 'wait';
349
- // Thread replies route as `thread.reply` in the live path even inside a DM /
350
- // group DM (see routes/thread.ts fanout), so a missed thread reply must
351
- // replay with the same event type/shape. Check `threadId` before `dmType`.
352
- const eventType = row.threadId
353
- ? 'thread.reply'
354
- : (row.dmType
355
- ? (row.dmType === 'group' ? 'group_dm.received' : 'dm.received')
356
- : 'message.created');
357
- let eventData;
358
- if (eventType === 'dm.received') {
359
- eventData = buildDmReceivedEventData({
324
+ function buildRoutableDeliveryEvent(row, attachments) {
325
+ const senderName = row.senderAgentName ?? 'unknown';
326
+ const injectionMode = row.delivery.mode === 'next-tool-call' ? 'steer' : 'wait';
327
+ // Thread replies route as `thread.reply` in the live path even inside a DM /
328
+ // group DM (see routes/thread.ts fanout), so a missed thread reply must
329
+ // replay with the same event type/shape. Check `threadId` before `dmType`.
330
+ const eventType = row.threadId
331
+ ? 'thread.reply'
332
+ : (row.dmType
333
+ ? (row.dmType === 'group' ? 'group_dm.received' : 'dm.received')
334
+ : 'message.created');
335
+ if (eventType === 'dm.received') {
336
+ return {
337
+ eventType,
338
+ eventData: buildDmReceivedEventData({
360
339
  conversation_id: row.conversationId,
361
340
  message: {
362
341
  id: row.delivery.messageId,
@@ -373,10 +352,13 @@ export async function deliverPendingToNode(db, registry, workspaceId, nodeId) {
373
352
  text: row.body,
374
353
  injection_mode: injectionMode,
375
354
  attachments,
376
- }, { fromName: senderName });
377
- }
378
- else if (eventType === 'group_dm.received') {
379
- eventData = buildGroupDmReceivedEventData({
355
+ }, { fromName: senderName }),
356
+ };
357
+ }
358
+ if (eventType === 'group_dm.received') {
359
+ return {
360
+ eventType,
361
+ eventData: buildGroupDmReceivedEventData({
380
362
  conversation_id: row.conversationId,
381
363
  message: {
382
364
  id: row.delivery.messageId,
@@ -392,10 +374,13 @@ export async function deliverPendingToNode(db, registry, workspaceId, nodeId) {
392
374
  text: row.body,
393
375
  injection_mode: injectionMode,
394
376
  attachments,
395
- }, { fromName: senderName });
396
- }
397
- else if (eventType === 'thread.reply') {
398
- eventData = buildThreadReplyEventData({
377
+ }, { fromName: senderName }),
378
+ };
379
+ }
380
+ if (eventType === 'thread.reply') {
381
+ return {
382
+ eventType,
383
+ eventData: buildThreadReplyEventData({
399
384
  id: row.delivery.messageId,
400
385
  channel_id: row.channelId,
401
386
  channel_name: row.channelName,
@@ -407,26 +392,157 @@ export async function deliverPendingToNode(db, registry, workspaceId, nodeId) {
407
392
  metadata: publicMessageMetadata(row.metadata),
408
393
  has_attachments: row.hasAttachments,
409
394
  created_at: row.createdAt.toISOString(),
410
- }, { channelName: row.channelName, fromName: senderName });
411
- }
412
- else {
413
- const mentions = [...row.body.matchAll(/@(\w+)/g)].map((match) => match[1]);
414
- eventData = buildMessageCreatedEventData({
415
- id: row.delivery.messageId,
416
- channel_id: row.channelId,
417
- agent_id: row.senderAgentId,
418
- agent_name: senderName,
419
- text: row.body,
420
- blocks: row.blocks || null,
421
- metadata: publicMessageMetadata(row.metadata),
422
- has_attachments: row.hasAttachments,
423
- thread_id: row.threadId,
424
- created_at: row.createdAt.toISOString(),
425
- mentions,
426
- attachments,
427
- injection_mode: injectionMode,
428
- }, { channelName: row.channelName, fromName: senderName, mode: injectionMode });
395
+ }, { channelName: row.channelName, fromName: senderName }),
396
+ };
397
+ }
398
+ const mentions = [...row.body.matchAll(/@(\w+)/g)].map((match) => match[1]);
399
+ return {
400
+ eventType,
401
+ eventData: buildMessageCreatedEventData({
402
+ id: row.delivery.messageId,
403
+ channel_id: row.channelId,
404
+ agent_id: row.senderAgentId,
405
+ agent_name: senderName,
406
+ text: row.body,
407
+ blocks: row.blocks || null,
408
+ metadata: publicMessageMetadata(row.metadata),
409
+ has_attachments: row.hasAttachments,
410
+ thread_id: row.threadId,
411
+ created_at: row.createdAt.toISOString(),
412
+ mentions,
413
+ attachments,
414
+ injection_mode: injectionMode,
415
+ }, { channelName: row.channelName, fromName: senderName, mode: injectionMode }),
416
+ };
417
+ }
418
+ function fanoutRecordFromDeliveryRow(row) {
419
+ return {
420
+ id: row.delivery.id,
421
+ agentId: row.delivery.agentId,
422
+ agentName: row.recipientAgentName,
423
+ messageId: row.delivery.messageId,
424
+ seq: row.delivery.seq,
425
+ mode: row.delivery.mode,
426
+ reason: row.delivery.reason ?? 'message',
427
+ status: row.delivery.status,
428
+ locationType: row.delivery.locationType,
429
+ locationNodeId: row.delivery.locationNodeId,
430
+ routeNodeId: row.delivery.routeNodeId,
431
+ routeNodeKind: row.delivery.routeNodeKind,
432
+ deliveryAdapter: row.delivery.deliveryAdapter,
433
+ nextAttemptAt: row.delivery.nextAttemptAt,
434
+ };
435
+ }
436
+ export async function fetchDueHttpPushDeliveryEvents(db, opts = {}) {
437
+ const limit = Math.min(Math.max(opts.limit ?? 50, 1), 200);
438
+ const now = opts.now ?? new Date();
439
+ const nowSeconds = Math.floor(now.getTime() / 1000);
440
+ const conditions = [
441
+ eq(deliveries.status, 'queued'),
442
+ eq(deliveries.routeNodeKind, 'http_push'),
443
+ isNotNull(deliveries.nextAttemptAt),
444
+ lte(deliveries.nextAttemptAt, now),
445
+ sql `(${deliveries.expiresAt} IS NULL OR ${deliveries.expiresAt} > ${nowSeconds})`,
446
+ ];
447
+ if (opts.workspaceId) {
448
+ conditions.push(eq(deliveries.workspaceId, opts.workspaceId));
449
+ }
450
+ const rows = await db
451
+ .select({
452
+ delivery: deliveries,
453
+ recipientAgentName: agents.name,
454
+ body: messages.body,
455
+ blocks: messages.blocks,
456
+ metadata: messages.metadata,
457
+ hasAttachments: messages.hasAttachments,
458
+ threadId: messages.threadId,
459
+ createdAt: messages.createdAt,
460
+ channelId: messages.channelId,
461
+ channelName: channels.name,
462
+ conversationId: dmConversations.id,
463
+ dmType: dmConversations.dmType,
464
+ senderAgentId: messages.agentId,
465
+ senderAgentName: sql `(
466
+ SELECT a.name FROM agents a WHERE a.id = ${messages.agentId}
467
+ )`,
468
+ })
469
+ .from(deliveries)
470
+ .innerJoin(agents, eq(deliveries.agentId, agents.id))
471
+ .innerJoin(messages, eq(deliveries.messageId, messages.id))
472
+ .innerJoin(channels, eq(messages.channelId, channels.id))
473
+ .leftJoin(dmConversations, eq(dmConversations.channelId, messages.channelId))
474
+ .where(and(...conditions))
475
+ .orderBy(asc(deliveries.nextAttemptAt), asc(deliveries.createdAt), asc(deliveries.id))
476
+ .limit(limit);
477
+ if (!opts.workspaceId && rows.length > 0) {
478
+ const workspaceAttachments = new Map();
479
+ for (const workspaceId of [...new Set(rows.map((row) => row.delivery.workspaceId))]) {
480
+ const workspaceMessageIds = rows
481
+ .filter((row) => row.delivery.workspaceId === workspaceId)
482
+ .map((row) => row.delivery.messageId);
483
+ const batch = await fetchAttachmentsBatch(db, workspaceId, [...new Set(workspaceMessageIds)]);
484
+ for (const [messageId, attachments] of batch)
485
+ workspaceAttachments.set(messageId, attachments);
429
486
  }
487
+ return rows.map((row) => {
488
+ const pendingRow = row;
489
+ const { eventType, eventData } = buildRoutableDeliveryEvent(pendingRow, workspaceAttachments.get(row.delivery.messageId) ?? []);
490
+ return {
491
+ workspaceId: row.delivery.workspaceId,
492
+ delivery: fanoutRecordFromDeliveryRow(pendingRow),
493
+ eventType,
494
+ eventData,
495
+ };
496
+ });
497
+ }
498
+ const attachmentsByMessageId = opts.workspaceId
499
+ ? await fetchAttachmentsBatch(db, opts.workspaceId, [...new Set(rows.map((row) => row.delivery.messageId))])
500
+ : new Map();
501
+ return rows.map((row) => {
502
+ const pendingRow = row;
503
+ const { eventType, eventData } = buildRoutableDeliveryEvent(pendingRow, attachmentsByMessageId.get(row.delivery.messageId) ?? []);
504
+ return {
505
+ workspaceId: row.delivery.workspaceId,
506
+ delivery: fanoutRecordFromDeliveryRow(pendingRow),
507
+ eventType,
508
+ eventData,
509
+ };
510
+ });
511
+ }
512
+ export async function deliverPendingToNode(db, registry, workspaceId, nodeId) {
513
+ const nowSeconds = Math.floor(Date.now() / 1000);
514
+ const rows = await db
515
+ .select({
516
+ delivery: deliveries,
517
+ recipientAgentName: agents.name,
518
+ ackSeq: agents.deliveryAckSeq,
519
+ body: messages.body,
520
+ blocks: messages.blocks,
521
+ metadata: messages.metadata,
522
+ hasAttachments: messages.hasAttachments,
523
+ threadId: messages.threadId,
524
+ createdAt: messages.createdAt,
525
+ channelId: messages.channelId,
526
+ channelName: channels.name,
527
+ conversationId: dmConversations.id,
528
+ dmType: dmConversations.dmType,
529
+ senderAgentId: messages.agentId,
530
+ senderAgentName: sql `(
531
+ SELECT a.name FROM agents a WHERE a.id = ${messages.agentId}
532
+ )`,
533
+ })
534
+ .from(deliveries)
535
+ .innerJoin(agents, eq(deliveries.agentId, agents.id))
536
+ .innerJoin(messages, eq(deliveries.messageId, messages.id))
537
+ .innerJoin(channels, eq(messages.channelId, channels.id))
538
+ .leftJoin(dmConversations, eq(dmConversations.channelId, messages.channelId))
539
+ .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})`))
540
+ .orderBy(asc(agents.name), asc(deliveries.seq));
541
+ const attachmentsByMessageId = await fetchAttachmentsBatch(db, workspaceId, [...new Set(rows.map((row) => row.delivery.messageId))]);
542
+ const deliveredIds = [];
543
+ for (const row of rows) {
544
+ const attachments = attachmentsByMessageId.get(row.delivery.messageId) ?? [];
545
+ const { eventType, eventData } = buildRoutableDeliveryEvent(row, attachments);
430
546
  const sent = await registry.sendToNode(workspaceId, nodeId, buildDeliverFrame({
431
547
  agent: row.recipientAgentName,
432
548
  msg_id: row.delivery.messageId,
@@ -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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"}
@@ -12,6 +12,10 @@ export interface DeliveryFanoutRecord {
12
12
  status: string;
13
13
  locationType: string;
14
14
  locationNodeId: string | null;
15
+ routeNodeId: string | null;
16
+ routeNodeKind: string | null;
17
+ deliveryAdapter: string | null;
18
+ nextAttemptAt?: Date | null;
15
19
  }
16
20
  export interface DeliveryRejectionRecord {
17
21
  agentId: string;
@@ -60,6 +64,7 @@ export declare function fetchChannelDeliveryOutcomes(db: EngineDb, input: {
60
64
  messageId: string;
61
65
  channelId: string;
62
66
  senderAgentId: string;
67
+ mentionHandles?: readonly string[];
63
68
  }): Promise<DeliveryOutcomeRecords>;
64
69
  export declare function fetchGroupDeliveryOutcomes(db: EngineDb, input: {
65
70
  messageId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"deliveryWrites.d.ts","sourceRoot":"","sources":["../../src/engine/deliveryWrites.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deliveryWrites.d.ts","sourceRoot":"","sources":["../../src/engine/deliveryWrites.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { and, eq, isNull, ne, sql, inArray } from 'drizzle-orm';
2
- import { agents, channelMembers, deliveries, dmParticipants, } from '../db/schema.js';
1
+ import { and, eq, isNull, ne, or, sql, inArray } from 'drizzle-orm';
2
+ import { agentNodeBindings, agents, channelMembers, deliveries, dmParticipants, nodes, } from '../db/schema.js';
3
3
  function deliveryId(messageId, agentId) {
4
4
  return sql `'del_' || ${messageId} || '_' || ${agentId}`;
5
5
  }
@@ -10,6 +10,12 @@ function channelReasonSql(mentionHandles, fallback) {
10
10
  const mentionList = sql.join(mentionHandles.map((handle) => sql `${handle}`), sql `, `);
11
11
  return sql `case when ${agents.name} in (${mentionList}) then ${'mention'} else ${'message'} end`;
12
12
  }
13
+ function channelMuteDeliveryFilter(mentionHandles) {
14
+ if (mentionHandles.length === 0) {
15
+ return eq(channelMembers.isMuted, false);
16
+ }
17
+ return or(eq(channelMembers.isMuted, false), inArray(agents.name, mentionHandles));
18
+ }
13
19
  function asDeliveryInsertSelect(query) {
14
20
  return query;
15
21
  }
@@ -39,7 +45,8 @@ function belowDepthCapSql(workspaceId, agentId, depthCap) {
39
45
  ) < ${depthCap}`;
40
46
  }
41
47
  export function buildChannelDeliveryWrite(db, input) {
42
- const reason = channelReasonSql(input.mentionHandles ?? [], input.reason ?? 'message');
48
+ const mentionHandles = input.mentionHandles ?? [];
49
+ const reason = channelReasonSql(mentionHandles, input.reason ?? 'message');
43
50
  return db
44
51
  .insert(deliveries)
45
52
  .select((qb) => asDeliveryInsertSelect(qb
@@ -54,8 +61,14 @@ export function buildChannelDeliveryWrite(db, input) {
54
61
  deadline: sql `null`,
55
62
  status: sql `${'queued'}`,
56
63
  seq: nextSeqSql(input.workspaceId, channelMembers.agentId),
57
- locationType: agents.locationType,
58
- locationNodeId: agents.locationNodeId,
64
+ locationType: sql `CASE WHEN ${agentNodeBindings.nodeId} IS NOT NULL THEN 'via_node' ELSE ${agents.locationType} END`,
65
+ locationNodeId: sql `COALESCE(${agentNodeBindings.nodeId}, ${agents.locationNodeId})`,
66
+ routeNodeId: sql `COALESCE(${agentNodeBindings.nodeId}, ${agents.locationNodeId})`,
67
+ routeNodeKind: nodes.kind,
68
+ deliveryAdapter: nodes.deliveryAdapter,
69
+ dispatchAttempts: sql `0`,
70
+ nextAttemptAt: sql `null`,
71
+ lastDispatchError: sql `null`,
59
72
  expiresAt: sql `(unixepoch() + ${ttlSeconds(input.ttlMs)})`,
60
73
  deliveredAt: sql `null`,
61
74
  ackedAt: sql `null`,
@@ -69,7 +82,9 @@ export function buildChannelDeliveryWrite(db, input) {
69
82
  })
70
83
  .from(channelMembers)
71
84
  .innerJoin(agents, eq(channelMembers.agentId, agents.id))
72
- .where(and(eq(channelMembers.channelId, input.channelId), ne(channelMembers.agentId, input.senderAgentId), belowDepthCapSql(input.workspaceId, channelMembers.agentId, input.depthCap)))))
85
+ .leftJoin(agentNodeBindings, and(eq(agentNodeBindings.workspaceId, input.workspaceId), eq(agentNodeBindings.agentId, channelMembers.agentId), eq(agentNodeBindings.status, 'active'), eq(agents.locationType, 'via_node'), eq(agents.locationNodeId, agentNodeBindings.nodeId)))
86
+ .leftJoin(nodes, and(eq(nodes.workspaceId, input.workspaceId), eq(nodes.id, sql `COALESCE(${agentNodeBindings.nodeId}, ${agents.locationNodeId})`)))
87
+ .where(and(eq(channelMembers.channelId, input.channelId), channelMuteDeliveryFilter(mentionHandles), ne(channelMembers.agentId, input.senderAgentId), belowDepthCapSql(input.workspaceId, channelMembers.agentId, input.depthCap)))))
73
88
  .onConflictDoNothing();
74
89
  }
75
90
  export function buildGroupDmDeliveryWrite(db, input) {
@@ -87,8 +102,14 @@ export function buildGroupDmDeliveryWrite(db, input) {
87
102
  deadline: sql `null`,
88
103
  status: sql `${'queued'}`,
89
104
  seq: nextSeqSql(input.workspaceId, dmParticipants.agentId),
90
- locationType: agents.locationType,
91
- locationNodeId: agents.locationNodeId,
105
+ locationType: sql `CASE WHEN ${agentNodeBindings.nodeId} IS NOT NULL THEN 'via_node' ELSE ${agents.locationType} END`,
106
+ locationNodeId: sql `COALESCE(${agentNodeBindings.nodeId}, ${agents.locationNodeId})`,
107
+ routeNodeId: sql `COALESCE(${agentNodeBindings.nodeId}, ${agents.locationNodeId})`,
108
+ routeNodeKind: nodes.kind,
109
+ deliveryAdapter: nodes.deliveryAdapter,
110
+ dispatchAttempts: sql `0`,
111
+ nextAttemptAt: sql `null`,
112
+ lastDispatchError: sql `null`,
92
113
  expiresAt: sql `(unixepoch() + ${ttlSeconds(input.ttlMs)})`,
93
114
  deliveredAt: sql `null`,
94
115
  ackedAt: sql `null`,
@@ -102,6 +123,8 @@ export function buildGroupDmDeliveryWrite(db, input) {
102
123
  })
103
124
  .from(dmParticipants)
104
125
  .innerJoin(agents, eq(dmParticipants.agentId, agents.id))
126
+ .leftJoin(agentNodeBindings, and(eq(agentNodeBindings.workspaceId, input.workspaceId), eq(agentNodeBindings.agentId, dmParticipants.agentId), eq(agentNodeBindings.status, 'active'), eq(agents.locationType, 'via_node'), eq(agents.locationNodeId, agentNodeBindings.nodeId)))
127
+ .leftJoin(nodes, and(eq(nodes.workspaceId, input.workspaceId), eq(nodes.id, sql `COALESCE(${agentNodeBindings.nodeId}, ${agents.locationNodeId})`)))
105
128
  .where(and(eq(dmParticipants.conversationId, input.conversationId), isNull(dmParticipants.leftAt), ne(dmParticipants.agentId, input.senderAgentId), belowDepthCapSql(input.workspaceId, dmParticipants.agentId, input.depthCap)))))
106
129
  .onConflictDoNothing();
107
130
  }
@@ -120,8 +143,14 @@ export function buildDirectDeliveryWrite(db, input) {
120
143
  deadline: sql `null`,
121
144
  status: sql `${'queued'}`,
122
145
  seq: nextSeqSql(input.workspaceId, agents.id),
123
- locationType: agents.locationType,
124
- locationNodeId: agents.locationNodeId,
146
+ locationType: sql `CASE WHEN ${agentNodeBindings.nodeId} IS NOT NULL THEN 'via_node' ELSE ${agents.locationType} END`,
147
+ locationNodeId: sql `COALESCE(${agentNodeBindings.nodeId}, ${agents.locationNodeId})`,
148
+ routeNodeId: sql `COALESCE(${agentNodeBindings.nodeId}, ${agents.locationNodeId})`,
149
+ routeNodeKind: nodes.kind,
150
+ deliveryAdapter: nodes.deliveryAdapter,
151
+ dispatchAttempts: sql `0`,
152
+ nextAttemptAt: sql `null`,
153
+ lastDispatchError: sql `null`,
125
154
  expiresAt: sql `(unixepoch() + ${ttlSeconds(input.ttlMs)})`,
126
155
  deliveredAt: sql `null`,
127
156
  ackedAt: sql `null`,
@@ -134,6 +163,8 @@ export function buildDirectDeliveryWrite(db, input) {
134
163
  updatedAt: sql `null`,
135
164
  })
136
165
  .from(agents)
166
+ .leftJoin(agentNodeBindings, and(eq(agentNodeBindings.workspaceId, input.workspaceId), eq(agentNodeBindings.agentId, agents.id), eq(agentNodeBindings.status, 'active'), eq(agents.locationType, 'via_node'), eq(agents.locationNodeId, agentNodeBindings.nodeId)))
167
+ .leftJoin(nodes, and(eq(nodes.workspaceId, input.workspaceId), eq(nodes.id, sql `COALESCE(${agentNodeBindings.nodeId}, ${agents.locationNodeId})`)))
137
168
  .where(and(eq(agents.id, input.agentId), belowDepthCapSql(input.workspaceId, agents.id, input.depthCap)))))
138
169
  .onConflictDoNothing();
139
170
  }
@@ -150,6 +181,10 @@ export async function fetchDeliveryFanoutRecords(db, messageId) {
150
181
  status: deliveries.status,
151
182
  locationType: deliveries.locationType,
152
183
  locationNodeId: deliveries.locationNodeId,
184
+ routeNodeId: deliveries.routeNodeId,
185
+ routeNodeKind: deliveries.routeNodeKind,
186
+ deliveryAdapter: deliveries.deliveryAdapter,
187
+ nextAttemptAt: deliveries.nextAttemptAt,
153
188
  })
154
189
  .from(deliveries)
155
190
  .innerJoin(agents, eq(deliveries.agentId, agents.id))
@@ -165,6 +200,10 @@ export async function fetchDeliveryFanoutRecords(db, messageId) {
165
200
  status: row.status,
166
201
  locationType: row.locationType,
167
202
  locationNodeId: row.locationNodeId,
203
+ routeNodeId: row.routeNodeId,
204
+ routeNodeKind: row.routeNodeKind,
205
+ deliveryAdapter: row.deliveryAdapter,
206
+ nextAttemptAt: row.nextAttemptAt,
168
207
  }));
169
208
  }
170
209
  function missingDepthCapRejections(intended, deliveries, messageId) {
@@ -181,6 +220,7 @@ function missingDepthCapRejections(intended, deliveries, messageId) {
181
220
  }));
182
221
  }
183
222
  export async function fetchChannelDeliveryOutcomes(db, input) {
223
+ const mentionHandles = input.mentionHandles ?? [];
184
224
  const [deliveries, intended] = await Promise.all([
185
225
  fetchDeliveryFanoutRecords(db, input.messageId),
186
226
  db
@@ -190,7 +230,7 @@ export async function fetchChannelDeliveryOutcomes(db, input) {
190
230
  })
191
231
  .from(channelMembers)
192
232
  .innerJoin(agents, eq(channelMembers.agentId, agents.id))
193
- .where(and(eq(channelMembers.channelId, input.channelId), ne(channelMembers.agentId, input.senderAgentId))),
233
+ .where(and(eq(channelMembers.channelId, input.channelId), channelMuteDeliveryFilter(mentionHandles), ne(channelMembers.agentId, input.senderAgentId))),
194
234
  ]);
195
235
  return {
196
236
  deliveries,