@relaycast/engine 11.1.1 → 12.1.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 (178) hide show
  1. package/dist/adapters/node/index.d.ts +3 -3
  2. package/dist/adapters/node/index.d.ts.map +1 -1
  3. package/dist/adapters/node/index.js +2 -3
  4. package/dist/adapters/node/index.js.map +1 -1
  5. package/dist/adapters/node/kv.d.ts +0 -1
  6. package/dist/adapters/node/kv.d.ts.map +1 -1
  7. package/dist/adapters/node/kv.js +0 -17
  8. package/dist/adapters/node/kv.js.map +1 -1
  9. package/dist/adapters/node/presence.d.ts +18 -0
  10. package/dist/adapters/node/presence.d.ts.map +1 -1
  11. package/dist/adapters/node/presence.js +82 -0
  12. package/dist/adapters/node/presence.js.map +1 -1
  13. package/dist/adapters/node/realtime.d.ts +4 -0
  14. package/dist/adapters/node/realtime.d.ts.map +1 -1
  15. package/dist/adapters/node/realtime.js +32 -5
  16. package/dist/adapters/node/realtime.js.map +1 -1
  17. package/dist/db/migrations/0077_drop_workspace_plan.sql +4 -0
  18. package/dist/db/schema.d.ts +2 -21
  19. package/dist/db/schema.d.ts.map +1 -1
  20. package/dist/db/schema.js +0 -1
  21. package/dist/db/schema.js.map +1 -1
  22. package/dist/engine/a2a.d.ts +3 -0
  23. package/dist/engine/a2a.d.ts.map +1 -1
  24. package/dist/engine/a2a.js +1 -0
  25. package/dist/engine/a2a.js.map +1 -1
  26. package/dist/engine/action.d.ts +14 -9
  27. package/dist/engine/action.d.ts.map +1 -1
  28. package/dist/engine/action.js +335 -74
  29. package/dist/engine/action.js.map +1 -1
  30. package/dist/engine/agent.d.ts +9 -3
  31. package/dist/engine/agent.d.ts.map +1 -1
  32. package/dist/engine/agent.js +21 -3
  33. package/dist/engine/agent.js.map +1 -1
  34. package/dist/engine/delivery.d.ts.map +1 -1
  35. package/dist/engine/delivery.js +4 -0
  36. package/dist/engine/delivery.js.map +1 -1
  37. package/dist/engine/eventDelivery.d.ts +1 -1
  38. package/dist/engine/inboundWebhook.d.ts +10 -0
  39. package/dist/engine/inboundWebhook.d.ts.map +1 -1
  40. package/dist/engine/inboundWebhook.js +30 -4
  41. package/dist/engine/inboundWebhook.js.map +1 -1
  42. package/dist/engine/inbox.d.ts.map +1 -1
  43. package/dist/engine/inbox.js +17 -0
  44. package/dist/engine/inbox.js.map +1 -1
  45. package/dist/engine/invocationClaim.d.ts +32 -0
  46. package/dist/engine/invocationClaim.d.ts.map +1 -0
  47. package/dist/engine/invocationClaim.js +42 -0
  48. package/dist/engine/invocationClaim.js.map +1 -0
  49. package/dist/engine/messageMetadata.d.ts +2 -0
  50. package/dist/engine/messageMetadata.d.ts.map +1 -1
  51. package/dist/engine/messageMetadata.js +3 -2
  52. package/dist/engine/messageMetadata.js.map +1 -1
  53. package/dist/engine/node.d.ts +12 -2
  54. package/dist/engine/node.d.ts.map +1 -1
  55. package/dist/engine/node.js +83 -4
  56. package/dist/engine/node.js.map +1 -1
  57. package/dist/engine/presence.d.ts +173 -1
  58. package/dist/engine/presence.d.ts.map +1 -1
  59. package/dist/engine/presence.js +81 -4
  60. package/dist/engine/presence.js.map +1 -1
  61. package/dist/engine/registrationAdmission.d.ts +40 -0
  62. package/dist/engine/registrationAdmission.d.ts.map +1 -0
  63. package/dist/engine/registrationAdmission.js +78 -0
  64. package/dist/engine/registrationAdmission.js.map +1 -0
  65. package/dist/engine/taskInvocation.d.ts +1 -1
  66. package/dist/engine/workspace.d.ts +26 -3
  67. package/dist/engine/workspace.d.ts.map +1 -1
  68. package/dist/engine/workspace.js +108 -8
  69. package/dist/engine/workspace.js.map +1 -1
  70. package/dist/engine/workspaceDeliveryPolicy.d.ts +1 -2
  71. package/dist/engine/workspaceDeliveryPolicy.d.ts.map +1 -1
  72. package/dist/engine/workspaceDeliveryPolicy.js +2 -5
  73. package/dist/engine/workspaceDeliveryPolicy.js.map +1 -1
  74. package/dist/engine/workspaceDrain.d.ts +38 -0
  75. package/dist/engine/workspaceDrain.d.ts.map +1 -0
  76. package/dist/engine/workspaceDrain.js +202 -0
  77. package/dist/engine/workspaceDrain.js.map +1 -0
  78. package/dist/engine.d.ts +1 -1
  79. package/dist/engine.d.ts.map +1 -1
  80. package/dist/engine.js +30 -2
  81. package/dist/engine.js.map +1 -1
  82. package/dist/entrypoints/node.d.ts +2 -2
  83. package/dist/entrypoints/node.d.ts.map +1 -1
  84. package/dist/entrypoints/node.js +1 -1
  85. package/dist/entrypoints/node.js.map +1 -1
  86. package/dist/env.d.ts +5 -5
  87. package/dist/env.d.ts.map +1 -1
  88. package/dist/index.d.ts +4 -4
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +5 -6
  91. package/dist/index.js.map +1 -1
  92. package/dist/lib/admissionError.d.ts +11 -0
  93. package/dist/lib/admissionError.d.ts.map +1 -0
  94. package/dist/lib/admissionError.js +14 -0
  95. package/dist/lib/admissionError.js.map +1 -0
  96. package/dist/lib/engineDiagnostics.d.ts +26 -0
  97. package/dist/lib/engineDiagnostics.d.ts.map +1 -0
  98. package/dist/lib/engineDiagnostics.js +100 -0
  99. package/dist/lib/engineDiagnostics.js.map +1 -0
  100. package/dist/lib/httpError.d.ts.map +1 -1
  101. package/dist/lib/httpError.js +9 -4
  102. package/dist/lib/httpError.js.map +1 -1
  103. package/dist/middleware/admission.d.ts +49 -0
  104. package/dist/middleware/admission.d.ts.map +1 -0
  105. package/dist/middleware/admission.js +100 -0
  106. package/dist/middleware/admission.js.map +1 -0
  107. package/dist/middleware/rateLimit.d.ts +2 -0
  108. package/dist/middleware/rateLimit.d.ts.map +1 -1
  109. package/dist/middleware/rateLimit.js +29 -25
  110. package/dist/middleware/rateLimit.js.map +1 -1
  111. package/dist/ports/admission.d.ts +80 -0
  112. package/dist/ports/admission.d.ts.map +1 -0
  113. package/dist/ports/admission.js +2 -0
  114. package/dist/ports/admission.js.map +1 -0
  115. package/dist/ports/diagnostics.d.ts +42 -0
  116. package/dist/ports/diagnostics.d.ts.map +1 -0
  117. package/dist/ports/diagnostics.js +13 -0
  118. package/dist/ports/diagnostics.js.map +1 -0
  119. package/dist/ports/index.d.ts +18 -4
  120. package/dist/ports/index.d.ts.map +1 -1
  121. package/dist/ports/index.js.map +1 -1
  122. package/dist/ports/kv.d.ts +1 -16
  123. package/dist/ports/kv.d.ts.map +1 -1
  124. package/dist/ports/presence.d.ts +14 -0
  125. package/dist/ports/presence.d.ts.map +1 -1
  126. package/dist/ports/realtime.d.ts +18 -0
  127. package/dist/ports/realtime.d.ts.map +1 -1
  128. package/dist/ports/realtime.js.map +1 -1
  129. package/dist/ports/workspaceDelivery.d.ts +3 -4
  130. package/dist/ports/workspaceDelivery.d.ts.map +1 -1
  131. package/dist/routes/a2a.d.ts.map +1 -1
  132. package/dist/routes/a2a.js +2 -0
  133. package/dist/routes/a2a.js.map +1 -1
  134. package/dist/routes/action.js +3 -0
  135. package/dist/routes/action.js.map +1 -1
  136. package/dist/routes/agent.d.ts.map +1 -1
  137. package/dist/routes/agent.js +5 -1
  138. package/dist/routes/agent.js.map +1 -1
  139. package/dist/routes/dm.js +3 -3
  140. package/dist/routes/dm.js.map +1 -1
  141. package/dist/routes/groupDm.js +3 -3
  142. package/dist/routes/groupDm.js.map +1 -1
  143. package/dist/routes/inboundWebhook.js +8 -0
  144. package/dist/routes/inboundWebhook.js.map +1 -1
  145. package/dist/routes/message.js +3 -3
  146. package/dist/routes/message.js.map +1 -1
  147. package/dist/routes/node.d.ts.map +1 -1
  148. package/dist/routes/node.js +2 -1
  149. package/dist/routes/node.js.map +1 -1
  150. package/dist/routes/thread.js +3 -3
  151. package/dist/routes/thread.js.map +1 -1
  152. package/dist/routes/workspace.js +10 -2
  153. package/dist/routes/workspace.js.map +1 -1
  154. package/package.json +3 -3
  155. package/dist/engine/usage.d.ts +0 -35
  156. package/dist/engine/usage.d.ts.map +0 -1
  157. package/dist/engine/usage.js +0 -59
  158. package/dist/engine/usage.js.map +0 -1
  159. package/dist/lib/planLimitError.d.ts +0 -26
  160. package/dist/lib/planLimitError.d.ts.map +0 -1
  161. package/dist/lib/planLimitError.js +0 -16
  162. package/dist/lib/planLimitError.js.map +0 -1
  163. package/dist/middleware/planLimits.d.ts +0 -36
  164. package/dist/middleware/planLimits.d.ts.map +0 -1
  165. package/dist/middleware/planLimits.js +0 -190
  166. package/dist/middleware/planLimits.js.map +0 -1
  167. package/dist/middleware/usageTracker.d.ts +0 -3
  168. package/dist/middleware/usageTracker.d.ts.map +0 -1
  169. package/dist/middleware/usageTracker.js +0 -11
  170. package/dist/middleware/usageTracker.js.map +0 -1
  171. package/dist/ports/entitlements.d.ts +0 -65
  172. package/dist/ports/entitlements.d.ts.map +0 -1
  173. package/dist/ports/entitlements.js +0 -2
  174. package/dist/ports/entitlements.js.map +0 -1
  175. package/dist/providers/static-entitlements.d.ts +0 -25
  176. package/dist/providers/static-entitlements.d.ts.map +0 -1
  177. package/dist/providers/static-entitlements.js +0 -55
  178. package/dist/providers/static-entitlements.js.map +0 -1
@@ -2,6 +2,7 @@ import { eq, and, or, sql, isNull, ne, inArray } from 'drizzle-orm';
2
2
  import { messages, channels, channelMembers, dmConversations, agents, dmParticipants, } from '../db/schema.js';
3
3
  import { queryInChunks } from '../lib/queryChunks.js';
4
4
  import { parseMessageMentions } from './mentions.js';
5
+ import { reportEngineProgress, withEngineOperation } from '../lib/engineDiagnostics.js';
5
6
  // The handle alphabet of `parseMessageMentions`.
6
7
  const MENTION_HANDLE = /^[\w-]+$/;
7
8
  // Tokens unicode61 actually indexes: `_` and `-` are separators, so a handle
@@ -41,6 +42,10 @@ export async function messageMentionIndexReady(db) {
41
42
  * trigger. Returns how many rows this call copied.
42
43
  */
43
44
  export async function backfillMessageMentionFts(db, limit = MESSAGE_MENTION_BACKFILL_BATCH) {
45
+ return withEngineOperation('backfill.mention_fts', undefined, () => backfillMessageMentionFtsUnlabeled(db, limit));
46
+ }
47
+ async function backfillMessageMentionFtsUnlabeled(db, limit) {
48
+ const start = performance.now();
44
49
  const [saved] = await db.all(sql `SELECT cursor FROM maintenance_cursors WHERE id = ${MENTION_FTS_CURSOR}`);
45
50
  if (!saved || saved.cursor === 'complete')
46
51
  return 0;
@@ -65,6 +70,7 @@ export async function backfillMessageMentionFts(db, limit = MESSAGE_MENTION_BACK
65
70
  : `${nextRowid}/${until}`;
66
71
  if (copied === 0 || nextRowid == null) {
67
72
  await db.run(sql `UPDATE maintenance_cursors SET cursor = ${cursor} WHERE id = ${MENTION_FTS_CURSOR}`);
73
+ reportEngineProgress({ operation: 'backfill.mention_fts', phase: 'completed', rows: 0, remaining: 0 });
68
74
  return 0;
69
75
  }
70
76
  // Sequential, not runAtomicWrites: on D1 that is drizzle's batch(), which
@@ -83,9 +89,20 @@ export async function backfillMessageMentionFts(db, limit = MESSAGE_MENTION_BACK
83
89
  )
84
90
  `);
85
91
  await db.run(sql `UPDATE maintenance_cursors SET cursor = ${cursor} WHERE id = ${MENTION_FTS_CURSOR}`);
92
+ reportEngineProgress({
93
+ operation: 'backfill.mention_fts',
94
+ phase: cursor === 'complete' ? 'completed' : 'batch',
95
+ rows: copied,
96
+ // An upper bound: the rowid span still to copy (rowids can have gaps).
97
+ remaining: cursor === 'complete' ? 0 : until - nextRowid,
98
+ durationMs: performance.now() - start,
99
+ });
86
100
  return copied;
87
101
  }
88
102
  export async function getInbox(db, workspaceId, agentId) {
103
+ return withEngineOperation('inbox.get', workspaceId, () => getInboxUnlabeled(db, workspaceId, agentId));
104
+ }
105
+ async function getInboxUnlabeled(db, workspaceId, agentId) {
89
106
  const unreadChannels = await db.all(sql `
90
107
  SELECT ch.name AS channel_name, count(*) AS unread_count
91
108
  FROM channel_members cm
@@ -1 +1 @@
1
- {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/engine/inbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/engine/inbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { type SQL } from 'drizzle-orm';
2
+ /** Status a pre-send claim observed on the invocation row. */
3
+ export type InvocationClaimStatus = 'pending' | 'dispatched' | 'invoked';
4
+ /**
5
+ * `retry_after_at` is stored as unix seconds. Two deadlines in the same
6
+ * second, and two unset deadlines, are the same compare-and-swap token.
7
+ */
8
+ export declare function sameStoredRetryDeadline(left: Date | null, right: Date | null): boolean;
9
+ /**
10
+ * Values an exclusive claim writes.
11
+ *
12
+ * The compare-and-swap pins the observed status, deadline, and
13
+ * `dispatch_attempts`. When the attempt count or the status changes, the
14
+ * requested deadline is kept, including an unset one, so a queued spawn stays
15
+ * due for drain and out of the pending sweep. Only a claim that would
16
+ * otherwise leave all three tokens untouched moves the deadline forward one
17
+ * second.
18
+ */
19
+ export declare function exclusiveClaimWrite(args: {
20
+ observedStatus: InvocationClaimStatus;
21
+ observedRetryAfterAt: Date | null;
22
+ observedDispatchAttempts: number;
23
+ nextStatus: InvocationClaimStatus;
24
+ nextRetryAfterAt: Date | null;
25
+ incrementAttempts: boolean;
26
+ }): {
27
+ retryAfterAt: Date | null;
28
+ dispatchAttempts: number;
29
+ };
30
+ /** Match an observed `retry_after_at`, including an unset deadline. */
31
+ export declare function retryAfterAtMatches(observed: Date | null): SQL;
32
+ //# sourceMappingURL=invocationClaim.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invocationClaim.d.ts","sourceRoot":"","sources":["../../src/engine/invocationClaim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,GAAG,EAAE,MAAM,aAAa,CAAC;AAGnD,8DAA8D;AAC9D,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC;AAEzE;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO,CAGtF;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,cAAc,EAAE,qBAAqB,CAAC;IACtC,oBAAoB,EAAE,IAAI,GAAG,IAAI,CAAC;IAClC,wBAAwB,EAAE,MAAM,CAAC;IACjC,UAAU,EAAE,qBAAqB,CAAC;IAClC,gBAAgB,EAAE,IAAI,GAAG,IAAI,CAAC;IAC9B,iBAAiB,EAAE,OAAO,CAAC;CAC5B,GAAG;IAAE,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAa1D;AAED,uEAAuE;AACvE,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,CAI9D"}
@@ -0,0 +1,42 @@
1
+ import { eq, isNull } from 'drizzle-orm';
2
+ import { actionInvocations } from '../db/schema.js';
3
+ /**
4
+ * `retry_after_at` is stored as unix seconds. Two deadlines in the same
5
+ * second, and two unset deadlines, are the same compare-and-swap token.
6
+ */
7
+ export function sameStoredRetryDeadline(left, right) {
8
+ if (left == null || right == null)
9
+ return left == null && right == null;
10
+ return Math.floor(left.getTime() / 1000) === Math.floor(right.getTime() / 1000);
11
+ }
12
+ /**
13
+ * Values an exclusive claim writes.
14
+ *
15
+ * The compare-and-swap pins the observed status, deadline, and
16
+ * `dispatch_attempts`. When the attempt count or the status changes, the
17
+ * requested deadline is kept, including an unset one, so a queued spawn stays
18
+ * due for drain and out of the pending sweep. Only a claim that would
19
+ * otherwise leave all three tokens untouched moves the deadline forward one
20
+ * second.
21
+ */
22
+ export function exclusiveClaimWrite(args) {
23
+ const dispatchAttempts = args.incrementAttempts
24
+ ? args.observedDispatchAttempts + 1
25
+ : args.observedDispatchAttempts;
26
+ const moves = args.nextStatus !== args.observedStatus || dispatchAttempts !== args.observedDispatchAttempts;
27
+ if (moves || !sameStoredRetryDeadline(args.nextRetryAfterAt, args.observedRetryAfterAt)) {
28
+ return { retryAfterAt: args.nextRetryAfterAt, dispatchAttempts };
29
+ }
30
+ const base = args.observedRetryAfterAt?.getTime() ?? Date.now();
31
+ return {
32
+ retryAfterAt: new Date((Math.floor(base / 1000) + 1) * 1000),
33
+ dispatchAttempts,
34
+ };
35
+ }
36
+ /** Match an observed `retry_after_at`, including an unset deadline. */
37
+ export function retryAfterAtMatches(observed) {
38
+ return observed == null
39
+ ? isNull(actionInvocations.retryAfterAt)
40
+ : eq(actionInvocations.retryAfterAt, observed);
41
+ }
42
+ //# sourceMappingURL=invocationClaim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invocationClaim.js","sourceRoot":"","sources":["../../src/engine/invocationClaim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,EAAY,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAKpD;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAiB,EAAE,KAAkB;IAC3E,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC;IACxE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AAClF,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAOnC;IACC,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB;QAC7C,CAAC,CAAC,IAAI,CAAC,wBAAwB,GAAG,CAAC;QACnC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC;IAClC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,cAAc,IAAI,gBAAgB,KAAK,IAAI,CAAC,wBAAwB,CAAC;IAC5G,IAAI,KAAK,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACxF,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IACnE,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IAChE,OAAO;QACL,YAAY,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;QAC5D,gBAAgB;KACjB,CAAC;AACJ,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,mBAAmB,CAAC,QAAqB;IACvD,OAAO,QAAQ,IAAI,IAAI;QACrB,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC;QACxC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AACnD,CAAC"}
@@ -1,3 +1,5 @@
1
+ /** The engine-provisioned identity that posts inbound webhook messages; reserved at registration. */
2
+ export declare const WEBHOOK_AGENT_NAME = "__relay_webhook__";
1
3
  export declare function sanitizeUserMessageMetadata(metadata: Record<string, unknown> | null | undefined): Record<string, unknown>;
2
4
  /** Stable JSON for request identity: object keys are recursively sorted while
3
5
  * array order and JSON scalar semantics are preserved.
@@ -1 +1 @@
1
- {"version":3,"file":"messageMetadata.d.ts","sourceRoot":"","sources":["../../src/engine/messageMetadata.ts"],"names":[],"mappings":"AAIA,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GACnD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKzB;AAcD;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEpD;AAED,gFAAgF;AAChF,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GACnD,MAAM,CAER;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GACnD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzB;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQ1B;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EACpD,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAClC,MAAM,CAwBR"}
1
+ {"version":3,"file":"messageMetadata.d.ts","sourceRoot":"","sources":["../../src/engine/messageMetadata.ts"],"names":[],"mappings":"AAEA,qGAAqG;AACrG,eAAO,MAAM,kBAAkB,sBAAsB,CAAC;AAEtD,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GACnD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKzB;AAcD;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEpD;AAED,gFAAgF;AAChF,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GACnD,MAAM,CAER;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GACnD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzB;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQ1B;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EACpD,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAClC,MAAM,CAwBR"}
@@ -1,6 +1,7 @@
1
1
  const INTERNAL_METADATA_PREFIX = '__relaycast_';
2
2
  const WEBHOOK_ORIGIN = 'inbound_webhook';
3
- const LEGACY_WEBHOOK_AGENT_NAME = '__relay_webhook__';
3
+ /** The engine-provisioned identity that posts inbound webhook messages; reserved at registration. */
4
+ export const WEBHOOK_AGENT_NAME = '__relay_webhook__';
4
5
  export function sanitizeUserMessageMetadata(metadata) {
5
6
  if (!metadata)
6
7
  return {};
@@ -50,7 +51,7 @@ export function displayAgentName(metadata, fallback) {
50
51
  return author;
51
52
  }
52
53
  const legacyAuthor = metadata?.author;
53
- if (fallback === LEGACY_WEBHOOK_AGENT_NAME
54
+ if (fallback === WEBHOOK_AGENT_NAME
54
55
  && typeof legacyAuthor === 'string'
55
56
  && legacyAuthor.length > 0) {
56
57
  return legacyAuthor;
@@ -1 +1 @@
1
- {"version":3,"file":"messageMetadata.js","sourceRoot":"","sources":["../../src/engine/messageMetadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messageMetadata.js","sourceRoot":"","sources":["../../src/engine/messageMetadata.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { FleetAgentRecoverMessage, FleetAgentRegisterMessage, FleetCapabilityAcceptance, FleetInventoryAgent, FleetNodeHeartbeatMessage, FleetNodeRegisterMessage, FleetProviderIdentity, FleetCapability, AgentRegisterReplyData } from '@relaycast/types';
2
2
  import type { getDb } from '../db/index.js';
3
3
  import { agents, nodes } from '../db/schema.js';
4
+ import type { RegistrationAdmission } from './registrationAdmission.js';
4
5
  import type { EngineDb } from '../ports/database.js';
5
6
  import type { PresenceTracker } from '../ports/presence.js';
6
7
  import type { NodeConnectionRegistry } from '../ports/realtime.js';
@@ -29,9 +30,16 @@ export interface HandleNodeControlMessageArgs {
29
30
  * caller drives node control without a registry-managed socket.
30
31
  */
31
32
  connectionId?: string;
33
+ /**
34
+ * Host admission for `agent.register` (see `createRegistrationAdmission`).
35
+ * Absent when the host has no `admit` hook.
36
+ */
37
+ admitRegistration?: RegistrationAdmission;
32
38
  raw: string;
33
39
  }
34
40
  type CapabilityLike = string | FleetCapability;
41
+ /** Id prefix of the implicit direct node minted for every agent; reserved. */
42
+ export declare const IMPLICIT_DIRECT_NODE_ID_PREFIX = "node_direct_";
35
43
  export declare function directNodeIdForAgent(agentId: string): string;
36
44
  export declare const SERVER_OWNED_NODE_TAG_PREFIX = "cloud:";
37
45
  declare function publicNode(row: NodeRow, now?: number): {
@@ -82,6 +90,8 @@ export declare function createNodeToken(db: Db, workspaceId: string, data: {
82
90
  idempotencyKeyHash: string;
83
91
  requestDigest: string;
84
92
  };
93
+ /** Host admission, consulted only when this enrolls a NEW device. */
94
+ admitRegistration?: RegistrationAdmission;
85
95
  }): Promise<{
86
96
  token: string;
87
97
  id: string;
@@ -550,6 +560,7 @@ export declare function listNodeAgents(db: Db, workspaceId: string, nodeName: st
550
560
  }[] | null>;
551
561
  export declare function registerAgentViaNode(db: Db, workspaceId: string, nodeId: string, providerName: string, message: FleetAgentRegisterMessage, options?: {
552
562
  deliveryCursorSupported?: boolean;
563
+ admitRegistration?: RegistrationAdmission;
553
564
  }): Promise<AgentRegisterReplyData>;
554
565
  /**
555
566
  * Recover an existing agent using the authenticated node as the authority.
@@ -564,10 +575,10 @@ export declare function deregisterAgentViaNode(db: Db, workspaceId: string, node
564
575
  name?: string;
565
576
  }, deps?: InvocationCompletionDeps): Promise<{
566
577
  name: string;
578
+ workspaceId: string;
567
579
  id: string;
568
580
  createdAt: Date;
569
581
  metadata: Record<string, unknown> | null;
570
- workspaceId: string;
571
582
  type: string;
572
583
  tokenHash: string;
573
584
  previousTokenHash: string | null;
@@ -674,7 +685,6 @@ export declare function getPublicNode(db: Db, workspaceId: string, name: string)
674
685
  last_heartbeat_at: string | null;
675
686
  created_at: string;
676
687
  } | null>;
677
- /** Validate and serialize an authenticated node frame, replying only after its effects. */
678
688
  export declare function handleNodeControlMessage(args: HandleNodeControlMessageArgs): Promise<void>;
679
689
  export {};
680
690
  //# sourceMappingURL=node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/engine/node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/engine/node.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,11 @@ import { z } from 'zod';
2
2
  import { invalidateChannelCache } from './cache.js';
3
3
  import { and, asc, eq, exists, gt, gte, inArray, isNotNull, isNull, lt, lte, ne, notExists, or, sql } from 'drizzle-orm';
4
4
  import { FLEET_ACTION_CALLER_METADATA_KEY, FLEET_ACTION_CALLER_METADATA_VERSION, FLEET_DELIVERY_CURSOR_CAPABILITY, NODE_REGISTRATION_CONTRACT_V1, parseFleetBrokerToRelaycastMessage, } from '@relaycast/types';
5
- import { actionInvocations, agents, agentNodeBindings, channelMembers, channels, nodeProviders, nodes } from '../db/schema.js';
5
+ import { actionInvocations, agents, agentNodeBindings, channelMembers, channels, nodeProviders, nodes, workspaces } from '../db/schema.js';
6
+ import { isWorkspaceExpired, WORKSPACE_EXPIRED_CODE, WORKSPACE_EXPIRED_MESSAGE } from '../auth/workspaceExpiry.js';
6
7
  import { randomHex, sha256Hex } from '../lib/crypto.js';
7
8
  import { codedError } from '../lib/httpError.js';
9
+ import { AdmissionDeniedError } from '../lib/admissionError.js';
8
10
  import { acceptTaskInvocation, completeTaskInvocation } from './taskInvocation.js';
9
11
  import { databaseConstraintKind, runAtomic, runAtomicWrites } from '../ports/database.js';
10
12
  import { retryD1Write } from '../lib/d1Retry.js';
@@ -23,8 +25,10 @@ function resolveProviderIdentity(message, connectionId) {
23
25
  return message.provider;
24
26
  return { name: DEFAULT_PROVIDER_NAME, instance_id: connectionId ?? generateId() };
25
27
  }
28
+ /** Id prefix of the implicit direct node minted for every agent; reserved. */
29
+ export const IMPLICIT_DIRECT_NODE_ID_PREFIX = 'node_direct_';
26
30
  export function directNodeIdForAgent(agentId) {
27
- return `node_direct_${agentId}`;
31
+ return `${IMPLICIT_DIRECT_NODE_ID_PREFIX}${agentId}`;
28
32
  }
29
33
  function directNodeNameForAgent(agentId) {
30
34
  return `direct-${agentId}`;
@@ -314,6 +318,14 @@ export async function createNodeToken(db, workspaceId, data, authorization = {})
314
318
  if (!name || name.startsWith('#')) {
315
319
  throw codedError('Node name must be non-empty and cannot begin with "#"', 'invalid_node_name', 400);
316
320
  }
321
+ // `node_direct_<agent id>` is the engine-minted implicit direct node, which
322
+ // the device count excludes. The namespace is reserved so a host cannot
323
+ // enroll a node that is miscounted as implicit.
324
+ if (data.node_id !== undefined
325
+ && authorization.directAgentId === undefined
326
+ && data.node_id.startsWith(IMPLICIT_DIRECT_NODE_ID_PREFIX)) {
327
+ throw codedError(`Node ids beginning with "${IMPLICIT_DIRECT_NODE_ID_PREFIX}" are reserved for implicit direct nodes`, 'reserved_node_id', 400);
328
+ }
317
329
  // Enrollment keys on node_id (the stable identity) when supplied; the name
318
330
  // lookup is only a fallback for callers without a stable id. A name held by
319
331
  // a *different* node id is a conflict — mirroring node.register — never a
@@ -345,6 +357,13 @@ export async function createNodeToken(db, workspaceId, data, authorization = {})
345
357
  if (role === 'direct' && maxAgents !== 1) {
346
358
  throw codedError('Direct nodes can bind at most one agent', 'direct_node_capacity_exceeded', 400);
347
359
  }
360
+ // Only a NEW device is admitted. Rotating or re-enrolling an established
361
+ // row never is (its role may change, but it was admitted when it was
362
+ // enrolled), and an agent's implicit direct node — minted on its behalf,
363
+ // never enrolled by a host — is its own WebSocket, not a device.
364
+ if (!existing && authorization.directAgentId === undefined && authorization.admitRegistration) {
365
+ await authorization.admitRegistration('register_device');
366
+ }
348
367
  if (existing) {
349
368
  const hasPresentedTokenProof = authorization.expectedTokenHash !== undefined;
350
369
  const authorizedDirectNode = authorization.directAgentId !== undefined
@@ -1610,6 +1629,16 @@ export async function listNodeAgents(db, workspaceId, nodeName) {
1610
1629
  export async function registerAgentViaNode(db, workspaceId, nodeId, providerName, message, options = {}) {
1611
1630
  assertRegistrableAgentName(message.name);
1612
1631
  const wantsAutoJoin = message.auto_join_general !== false;
1632
+ if (options.admitRegistration) {
1633
+ // Only a NEW identity is admitted: an established name is answered by the
1634
+ // conflict below, never by a denial.
1635
+ const [established] = await db
1636
+ .select({ id: agents.id })
1637
+ .from(agents)
1638
+ .where(and(eq(agents.workspaceId, workspaceId), eq(agents.name, message.name)));
1639
+ if (!established)
1640
+ await options.admitRegistration('register_agent');
1641
+ }
1613
1642
  const registered = await runAtomic(db, async (tx) => {
1614
1643
  // Every awaited statement is a separate D1 round-trip — and this path runs
1615
1644
  // under the node-control liveness deadline whose misses surface as
@@ -2146,6 +2175,7 @@ export async function reconcileInventory(db, registry, workspaceId, nodeId, prov
2146
2175
  spawnReservedAt: actionInvocations.spawnReservedAt,
2147
2176
  attemptedNodeIds: actionInvocations.attemptedNodeIds,
2148
2177
  dispatchAttempts: actionInvocations.dispatchAttempts,
2178
+ retryAfterAt: actionInvocations.retryAfterAt,
2149
2179
  })
2150
2180
  .from(actionInvocations)
2151
2181
  .where(and(eq(actionInvocations.workspaceId, workspaceId), eq(actionInvocations.dispatchedNodeId, nodeId), eq(actionInvocations.dispatchedProvider, providerName), inArray(actionInvocations.status, ['pending', 'dispatched'])));
@@ -2534,6 +2564,30 @@ function sendControl(socket, payload) {
2534
2564
  }
2535
2565
  }
2536
2566
  /** Validate and serialize an authenticated node frame, replying only after its effects. */
2567
+ /**
2568
+ * A node socket authenticates once, at upgrade. A workspace deleted (or past
2569
+ * its deadline) afterwards keeps that socket, and a large workspace is drained
2570
+ * in steps with its nodes last, so frames that create identity must re-check:
2571
+ * otherwise a connected node registers agents into a workspace being deleted.
2572
+ */
2573
+ /** Control frames still admitted after the workspace expires (see the gate below). */
2574
+ const SETTLING_CONTROL_FRAMES = new Set([
2575
+ 'action.accept',
2576
+ 'action.result',
2577
+ 'delivery.ack',
2578
+ 'node.deregister',
2579
+ 'agent.deregister',
2580
+ ]);
2581
+ async function assertWorkspaceUnexpired(db, workspaceId) {
2582
+ const [row] = await db
2583
+ .select({ expiresAt: workspaces.expiresAt })
2584
+ .from(workspaces)
2585
+ .where(eq(workspaces.id, workspaceId))
2586
+ .limit(1);
2587
+ if (!row || isWorkspaceExpired(row)) {
2588
+ throw codedError(WORKSPACE_EXPIRED_MESSAGE, WORKSPACE_EXPIRED_CODE, 401);
2589
+ }
2590
+ }
2537
2591
  export async function handleNodeControlMessage(args) {
2538
2592
  let message;
2539
2593
  try {
@@ -2573,6 +2627,12 @@ export async function handleNodeControlMessage(args) {
2573
2627
  // check, the provider-row upsert, or the aggregate recompute.
2574
2628
  return serializeNodeOp(args.workspaceId, args.nodeId, async () => {
2575
2629
  try {
2630
+ // A socket outlives its workspace's deletion, and every other frame writes
2631
+ // durable state (a heartbeat can insert provider and action rows). Only
2632
+ // frames that settle work already in flight or tear identity down pass.
2633
+ if (!SETTLING_CONTROL_FRAMES.has(message.type)) {
2634
+ await assertWorkspaceUnexpired(args.db, args.workspaceId);
2635
+ }
2576
2636
  switch (message.type) {
2577
2637
  case 'node.register': {
2578
2638
  const provider = resolveProviderIdentity(message, args.connectionId);
@@ -2705,7 +2765,10 @@ export async function handleNodeControlMessage(args) {
2705
2765
  return;
2706
2766
  }
2707
2767
  case 'agent.register': {
2708
- const registered = await registerAgentViaNode(args.db, args.workspaceId, args.nodeId, frameProviderName, message, { deliveryCursorSupported: supportsProviderDeliveryReadiness(args.registry) });
2768
+ const registered = await registerAgentViaNode(args.db, args.workspaceId, args.nodeId, frameProviderName, message, {
2769
+ deliveryCursorSupported: supportsProviderDeliveryReadiness(args.registry),
2770
+ admitRegistration: args.admitRegistration,
2771
+ });
2709
2772
  // The relay broker's node_control client awaits a `reply` frame keyed by
2710
2773
  // the request id (it matches `pending_agent_registrations` by `reply.id`
2711
2774
  // and parses `data` as {agent_id, token, name} with deny_unknown_fields).
@@ -2732,6 +2795,11 @@ export async function handleNodeControlMessage(args) {
2732
2795
  }
2733
2796
  case 'agent.recover': {
2734
2797
  const recovered = await recoverAgentViaNode(args.db, args.workspaceId, args.nodeId, frameProviderName, message, { deliveryCursorSupported: supportsProviderDeliveryReadiness(args.registry) });
2798
+ // Inventory only clears a hold for an agent it newly routes. A
2799
+ // presence-only disconnect leaves the binding active, so the next
2800
+ // sync would keep the hold. Recovery is the node putting that agent
2801
+ // back, and node liveness should count them without an HTTP heartbeat.
2802
+ await args.presence?.clearExplicitDisconnect?.(args.workspaceId, recovered.agent_id);
2735
2803
  const replySent = sendControl(args.socket, {
2736
2804
  v: 1,
2737
2805
  id: requestId(message),
@@ -2755,6 +2823,13 @@ export async function handleNodeControlMessage(args) {
2755
2823
  return;
2756
2824
  case 'inventory.sync': {
2757
2825
  const result = await reconcileInventory(args.db, args.registry, args.workspaceId, args.nodeId, frameProviderName, message.agents, args.completionDeps);
2826
+ // An agent the node had dropped and is routing again is a new hosting
2827
+ // episode. Clear a presence-only disconnect so node liveness can count
2828
+ // them without an HTTP heartbeat. An agent the snapshot already
2829
+ // routed keeps the hold: still being listed is not recovery.
2830
+ if (args.presence?.clearExplicitDisconnect && result.newlyRoutedAgentIds.length > 0) {
2831
+ await Promise.all(result.newlyRoutedAgentIds.map((agentId) => args.presence.clearExplicitDisconnect(args.workspaceId, agentId)));
2832
+ }
2758
2833
  const replySent = sendControl(args.socket, {
2759
2834
  v: 1,
2760
2835
  id: requestId(message),
@@ -2836,7 +2911,8 @@ export async function handleNodeControlMessage(args) {
2836
2911
  }
2837
2912
  catch (err) {
2838
2913
  const error = err;
2839
- const code = error.code ?? 'node_control_failed';
2914
+ const denial = err instanceof AdmissionDeniedError ? err.denial : null;
2915
+ const code = denial?.code ?? error.code ?? 'node_control_failed';
2840
2916
  // The rejection reaches the client only as the error frame below. Log it so
2841
2917
  // it is not invisible server-side: a rejected node.register/node.heartbeat
2842
2918
  // (e.g. node_name_conflict, a UNIQUE violation) otherwise leaves a node
@@ -2850,7 +2926,10 @@ export async function handleNodeControlMessage(args) {
2850
2926
  provider: frameProviderName,
2851
2927
  message: error.message,
2852
2928
  });
2929
+ // An admission denial carries the host's details, as on the HTTP error;
2930
+ // the frame's own fields always win over them.
2853
2931
  sendControl(args.socket, {
2932
+ ...(denial?.details ?? {}),
2854
2933
  v: 1,
2855
2934
  id: requestId(message),
2856
2935
  type: 'error',