@relaycast/engine 12.2.0 → 12.3.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 (239) hide show
  1. package/dist/adapters/actor/credential-tag.d.ts +14 -0
  2. package/dist/adapters/actor/credential-tag.d.ts.map +1 -0
  3. package/dist/adapters/actor/credential-tag.js +30 -0
  4. package/dist/adapters/actor/credential-tag.js.map +1 -0
  5. package/dist/adapters/actor/database.d.ts +50 -0
  6. package/dist/adapters/actor/database.d.ts.map +1 -0
  7. package/dist/adapters/actor/database.js +86 -0
  8. package/dist/adapters/actor/database.js.map +1 -0
  9. package/dist/adapters/actor/ephemeral-outbox.d.ts +16 -0
  10. package/dist/adapters/actor/ephemeral-outbox.d.ts.map +1 -0
  11. package/dist/adapters/actor/ephemeral-outbox.js +53 -0
  12. package/dist/adapters/actor/ephemeral-outbox.js.map +1 -0
  13. package/dist/adapters/actor/event-queue.d.ts +23 -0
  14. package/dist/adapters/actor/event-queue.d.ts.map +1 -0
  15. package/dist/adapters/actor/event-queue.js +31 -0
  16. package/dist/adapters/actor/event-queue.js.map +1 -0
  17. package/dist/adapters/actor/files.d.ts +66 -0
  18. package/dist/adapters/actor/files.d.ts.map +1 -0
  19. package/dist/adapters/actor/files.js +83 -0
  20. package/dist/adapters/actor/files.js.map +1 -0
  21. package/dist/adapters/actor/http.d.ts +19 -0
  22. package/dist/adapters/actor/http.d.ts.map +1 -0
  23. package/dist/adapters/actor/http.js +2 -0
  24. package/dist/adapters/actor/http.js.map +1 -0
  25. package/dist/adapters/actor/index.d.ts +90 -0
  26. package/dist/adapters/actor/index.d.ts.map +1 -0
  27. package/dist/adapters/actor/index.js +299 -0
  28. package/dist/adapters/actor/index.js.map +1 -0
  29. package/dist/adapters/actor/kv.d.ts +21 -0
  30. package/dist/adapters/actor/kv.d.ts.map +1 -0
  31. package/dist/adapters/actor/kv.js +33 -0
  32. package/dist/adapters/actor/kv.js.map +1 -0
  33. package/dist/adapters/actor/migrations.d.ts +15 -0
  34. package/dist/adapters/actor/migrations.d.ts.map +1 -0
  35. package/dist/adapters/actor/migrations.generated.d.ts +5 -0
  36. package/dist/adapters/actor/migrations.generated.d.ts.map +1 -0
  37. package/dist/adapters/actor/migrations.generated.js +842 -0
  38. package/dist/adapters/actor/migrations.generated.js.map +1 -0
  39. package/dist/adapters/actor/migrations.js +32 -0
  40. package/dist/adapters/actor/migrations.js.map +1 -0
  41. package/dist/adapters/node/files.d.ts +2 -0
  42. package/dist/adapters/node/files.d.ts.map +1 -1
  43. package/dist/adapters/node/files.js +31 -3
  44. package/dist/adapters/node/files.js.map +1 -1
  45. package/dist/adapters/node/index.js +1 -1
  46. package/dist/adapters/node/index.js.map +1 -1
  47. package/dist/auth/credentialTags.d.ts +43 -0
  48. package/dist/auth/credentialTags.d.ts.map +1 -0
  49. package/dist/auth/credentialTags.js +106 -0
  50. package/dist/auth/credentialTags.js.map +1 -0
  51. package/dist/auth/credentials.d.ts +103 -0
  52. package/dist/auth/credentials.d.ts.map +1 -0
  53. package/dist/auth/credentials.js +147 -0
  54. package/dist/auth/credentials.js.map +1 -0
  55. package/dist/auth/index.d.ts +7 -4
  56. package/dist/auth/index.d.ts.map +1 -1
  57. package/dist/auth/index.js +115 -61
  58. package/dist/auth/index.js.map +1 -1
  59. package/dist/auth/tokenKind.d.ts +17 -26
  60. package/dist/auth/tokenKind.d.ts.map +1 -1
  61. package/dist/auth/tokenKind.js +17 -46
  62. package/dist/auth/tokenKind.js.map +1 -1
  63. package/dist/auth/workspaceExpiry.d.ts +2 -0
  64. package/dist/auth/workspaceExpiry.d.ts.map +1 -1
  65. package/dist/auth/workspaceExpiry.js +7 -0
  66. package/dist/auth/workspaceExpiry.js.map +1 -1
  67. package/dist/bin/secretEnv.d.ts +17 -0
  68. package/dist/bin/secretEnv.d.ts.map +1 -0
  69. package/dist/bin/secretEnv.js +33 -0
  70. package/dist/bin/secretEnv.js.map +1 -0
  71. package/dist/bin/serve.js +42 -4
  72. package/dist/bin/serve.js.map +1 -1
  73. package/dist/config/credentialEnv.d.ts +19 -0
  74. package/dist/config/credentialEnv.d.ts.map +1 -0
  75. package/dist/config/credentialEnv.js +53 -0
  76. package/dist/config/credentialEnv.js.map +1 -0
  77. package/dist/db/migrations/0078_dm_participant_read_cursor.sql +15 -0
  78. package/dist/db/migrations/0079_credential_upgrades.sql +17 -0
  79. package/dist/db/schema.d.ts +183 -2
  80. package/dist/db/schema.d.ts.map +1 -1
  81. package/dist/db/schema.js +23 -0
  82. package/dist/db/schema.js.map +1 -1
  83. package/dist/engine/a2a.d.ts +1 -1
  84. package/dist/engine/a2a.d.ts.map +1 -1
  85. package/dist/engine/a2a.js +2 -2
  86. package/dist/engine/a2a.js.map +1 -1
  87. package/dist/engine/a2aEgress.d.ts +3 -2
  88. package/dist/engine/a2aEgress.d.ts.map +1 -1
  89. package/dist/engine/a2aEgress.js +5 -4
  90. package/dist/engine/a2aEgress.js.map +1 -1
  91. package/dist/engine/action.d.ts +12 -0
  92. package/dist/engine/action.d.ts.map +1 -1
  93. package/dist/engine/action.js +45 -1
  94. package/dist/engine/action.js.map +1 -1
  95. package/dist/engine/agent.d.ts.map +1 -1
  96. package/dist/engine/agent.js +2 -1
  97. package/dist/engine/agent.js.map +1 -1
  98. package/dist/engine/agentIdentity.d.ts.map +1 -1
  99. package/dist/engine/agentIdentity.js +2 -1
  100. package/dist/engine/agentIdentity.js.map +1 -1
  101. package/dist/engine/credentialUpgrade.d.ts +48 -0
  102. package/dist/engine/credentialUpgrade.d.ts.map +1 -0
  103. package/dist/engine/credentialUpgrade.js +176 -0
  104. package/dist/engine/credentialUpgrade.js.map +1 -0
  105. package/dist/engine/delivery.d.ts.map +1 -1
  106. package/dist/engine/delivery.js +70 -31
  107. package/dist/engine/delivery.js.map +1 -1
  108. package/dist/engine/eventDispatch.d.ts.map +1 -1
  109. package/dist/engine/eventDispatch.js +3 -2
  110. package/dist/engine/eventDispatch.js.map +1 -1
  111. package/dist/engine/eventSubscription.d.ts +4 -4
  112. package/dist/engine/file.d.ts +8 -0
  113. package/dist/engine/file.d.ts.map +1 -1
  114. package/dist/engine/file.js +18 -5
  115. package/dist/engine/file.js.map +1 -1
  116. package/dist/engine/inboundWebhook.d.ts +2 -0
  117. package/dist/engine/inboundWebhook.d.ts.map +1 -1
  118. package/dist/engine/inboundWebhook.js +10 -4
  119. package/dist/engine/inboundWebhook.js.map +1 -1
  120. package/dist/engine/inbox.d.ts.map +1 -1
  121. package/dist/engine/inbox.js +10 -5
  122. package/dist/engine/inbox.js.map +1 -1
  123. package/dist/engine/internalAdmin.d.ts +80 -0
  124. package/dist/engine/internalAdmin.d.ts.map +1 -0
  125. package/dist/engine/internalAdmin.js +329 -0
  126. package/dist/engine/internalAdmin.js.map +1 -0
  127. package/dist/engine/invocationCompletion.d.ts.map +1 -1
  128. package/dist/engine/invocationCompletion.js +23 -5
  129. package/dist/engine/invocationCompletion.js.map +1 -1
  130. package/dist/engine/node.d.ts +38 -1
  131. package/dist/engine/node.d.ts.map +1 -1
  132. package/dist/engine/node.js +166 -11
  133. package/dist/engine/node.js.map +1 -1
  134. package/dist/engine/nodeContext.d.ts +2 -1
  135. package/dist/engine/nodeContext.d.ts.map +1 -1
  136. package/dist/engine/nodeContext.js +1 -1
  137. package/dist/engine/nodeContext.js.map +1 -1
  138. package/dist/engine/nodeDeliver.d.ts +2 -1
  139. package/dist/engine/nodeDeliver.d.ts.map +1 -1
  140. package/dist/engine/nodeDeliver.js +1 -1
  141. package/dist/engine/nodeDeliver.js.map +1 -1
  142. package/dist/engine/observerToken.d.ts +4 -0
  143. package/dist/engine/observerToken.d.ts.map +1 -1
  144. package/dist/engine/observerToken.js +14 -5
  145. package/dist/engine/observerToken.js.map +1 -1
  146. package/dist/engine/receipt.d.ts +100 -0
  147. package/dist/engine/receipt.d.ts.map +1 -1
  148. package/dist/engine/receipt.js +12 -0
  149. package/dist/engine/receipt.js.map +1 -1
  150. package/dist/engine/taskInvocation.d.ts +1 -1
  151. package/dist/engine/tokenRotate.d.ts.map +1 -1
  152. package/dist/engine/tokenRotate.js +4 -3
  153. package/dist/engine/tokenRotate.js.map +1 -1
  154. package/dist/engine/workspace.d.ts +8 -2
  155. package/dist/engine/workspace.d.ts.map +1 -1
  156. package/dist/engine/workspace.js +70 -21
  157. package/dist/engine/workspace.js.map +1 -1
  158. package/dist/engine/wsAuth.d.ts.map +1 -1
  159. package/dist/engine/wsAuth.js +14 -3
  160. package/dist/engine/wsAuth.js.map +1 -1
  161. package/dist/engine.d.ts.map +1 -1
  162. package/dist/engine.js +31 -0
  163. package/dist/engine.js.map +1 -1
  164. package/dist/entrypoints/node.d.ts +3 -1
  165. package/dist/entrypoints/node.d.ts.map +1 -1
  166. package/dist/entrypoints/node.js +33 -1
  167. package/dist/entrypoints/node.js.map +1 -1
  168. package/dist/env.d.ts +2 -0
  169. package/dist/env.d.ts.map +1 -1
  170. package/dist/gateway.d.ts +11 -0
  171. package/dist/gateway.d.ts.map +1 -0
  172. package/dist/gateway.js +16 -0
  173. package/dist/gateway.js.map +1 -0
  174. package/dist/index.d.ts +2 -0
  175. package/dist/index.d.ts.map +1 -1
  176. package/dist/index.js +1 -0
  177. package/dist/index.js.map +1 -1
  178. package/dist/lib/credentialNotice.d.ts +32 -0
  179. package/dist/lib/credentialNotice.d.ts.map +1 -0
  180. package/dist/lib/credentialNotice.js +76 -0
  181. package/dist/lib/credentialNotice.js.map +1 -0
  182. package/dist/lib/fileTokens.d.ts +30 -0
  183. package/dist/lib/fileTokens.d.ts.map +1 -0
  184. package/dist/lib/fileTokens.js +76 -0
  185. package/dist/lib/fileTokens.js.map +1 -0
  186. package/dist/lib/httpError.d.ts +1 -1
  187. package/dist/lib/httpResponse.d.ts +6 -6
  188. package/dist/middleware/admission.d.ts +1 -1
  189. package/dist/middleware/auth.d.ts.map +1 -1
  190. package/dist/middleware/auth.js +22 -31
  191. package/dist/middleware/auth.js.map +1 -1
  192. package/dist/middleware/idempotency.d.ts +1 -1
  193. package/dist/middleware/logger.d.ts.map +1 -1
  194. package/dist/middleware/logger.js +4 -1
  195. package/dist/middleware/logger.js.map +1 -1
  196. package/dist/ports/database.d.ts.map +1 -1
  197. package/dist/ports/database.js +8 -2
  198. package/dist/ports/database.js.map +1 -1
  199. package/dist/ports/files.d.ts +7 -1
  200. package/dist/ports/files.d.ts.map +1 -1
  201. package/dist/ports/index.d.ts +64 -1
  202. package/dist/ports/index.d.ts.map +1 -1
  203. package/dist/ports/index.js +4 -0
  204. package/dist/ports/index.js.map +1 -1
  205. package/dist/ports/telemetry.d.ts +1 -0
  206. package/dist/ports/telemetry.d.ts.map +1 -1
  207. package/dist/ports/telemetry.js +1 -0
  208. package/dist/ports/telemetry.js.map +1 -1
  209. package/dist/routes/action.d.ts.map +1 -1
  210. package/dist/routes/action.js +2 -1
  211. package/dist/routes/action.js.map +1 -1
  212. package/dist/routes/credential.d.ts +4 -0
  213. package/dist/routes/credential.d.ts.map +1 -0
  214. package/dist/routes/credential.js +97 -0
  215. package/dist/routes/credential.js.map +1 -0
  216. package/dist/routes/file.js +10 -4
  217. package/dist/routes/file.js.map +1 -1
  218. package/dist/routes/inboundWebhook.d.ts.map +1 -1
  219. package/dist/routes/inboundWebhook.js +11 -2
  220. package/dist/routes/inboundWebhook.js.map +1 -1
  221. package/dist/routes/internal.d.ts +14 -0
  222. package/dist/routes/internal.d.ts.map +1 -0
  223. package/dist/routes/internal.js +157 -0
  224. package/dist/routes/internal.js.map +1 -0
  225. package/dist/routes/node.d.ts.map +1 -1
  226. package/dist/routes/node.js +44 -2
  227. package/dist/routes/node.js.map +1 -1
  228. package/dist/routes/observerToken.js +1 -1
  229. package/dist/routes/observerToken.js.map +1 -1
  230. package/dist/routes/reaction.d.ts.map +1 -1
  231. package/dist/routes/reaction.js +3 -2
  232. package/dist/routes/reaction.js.map +1 -1
  233. package/dist/routes/receipt.d.ts.map +1 -1
  234. package/dist/routes/receipt.js +2 -1
  235. package/dist/routes/receipt.js.map +1 -1
  236. package/dist/routes/workspace.d.ts.map +1 -1
  237. package/dist/routes/workspace.js +12 -1
  238. package/dist/routes/workspace.js.map +1 -1
  239. package/package.json +12 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internalAdmin.js","sourceRoot":"","sources":["../../src/engine/internalAdmin.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"invocationCompletion.d.ts","sourceRoot":"","sources":["../../src/engine/invocationCompletion.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIpD,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,UAAU,GAAG,cAAc,GAAG,iBAAiB,GAAG,QAAQ,CAAC,CAAC;AAE3H,KAAK,gBAAgB,GAAG;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAWF,wBAAsB,+BAA+B,CACnD,IAAI,EAAE,wBAAwB,EAC9B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,IAAI,CAAC,CA0Cf;AAqCD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAGlE;AAeD,0EAA0E;AAC1E,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,wBAAwB,GAAG,UAAU,CAAC;AAEvF,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,0EAA0E;IAC1E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,wBAAwB,EAC9B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,IAAI,CAAC,CA+Cf;AAED,iFAAiF;AACjF,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,GAAG,cAAc,GAAG,cAAc,CAAC;AAErF,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,IAAI,CAAC,wBAAwB,EAAE,IAAI,GAAG,UAAU,GAAG,cAAc,CAAC,EACxE,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,IAAI,CAAC,CAqCf"}
1
+ {"version":3,"file":"invocationCompletion.d.ts","sourceRoot":"","sources":["../../src/engine/invocationCompletion.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAKpD,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,UAAU,GAAG,cAAc,GAAG,iBAAiB,GAAG,QAAQ,CAAC,CAAC;AAE3H,KAAK,gBAAgB,GAAG;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAWF,wBAAsB,+BAA+B,CACnD,IAAI,EAAE,wBAAwB,EAC9B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,IAAI,CAAC,CA0Cf;AAqCD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAGlE;AAeD,0EAA0E;AAC1E,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,wBAAwB,GAAG,UAAU,CAAC;AAEvF,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,0EAA0E;IAC1E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,wBAAwB,EAC9B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,IAAI,CAAC,CA+Cf;AAED,iFAAiF;AACjF,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,GAAG,cAAc,GAAG,cAAc,CAAC;AAErF,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,IAAI,CAAC,wBAAwB,EAAE,IAAI,GAAG,UAAU,GAAG,cAAc,CAAC,EACxE,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,IAAI,CAAC,CAqDf"}
@@ -5,6 +5,7 @@ import { enqueueEvent } from './eventQueue.js';
5
5
  import { actionInvocations, nodes } from '../db/schema.js';
6
6
  import { sendNodeDeliveriesToAgents } from './nodeDeliver.js';
7
7
  import { appendAndPublishWorkspaceEvent, appendAndPublishWorkspaceEventWhen } from './workspaceEvents.js';
8
+ import { ephemeralEventFetch } from '../ports/index.js';
8
9
  function buildEvent(type, workspaceId, data) {
9
10
  return {
10
11
  type,
@@ -32,7 +33,7 @@ export async function emitInvocationCompletionEffects(deps, workspaceId, result)
32
33
  workspaceId,
33
34
  environment: deps.config?.environment,
34
35
  httpPushProxy: deps.config?.httpPushProxy,
35
- outboundWebhookFetch: deps.config?.outboundWebhookFetch,
36
+ ephemeralEventFetch: ephemeralEventFetch(deps.config),
36
37
  }, {
37
38
  agentIds: [result.caller_id],
38
39
  event: eventType,
@@ -129,7 +130,7 @@ export async function emitAgentExitedEffects(deps, workspaceId, input) {
129
130
  workspaceId,
130
131
  environment: deps.config?.environment,
131
132
  httpPushProxy: deps.config?.httpPushProxy,
132
- outboundWebhookFetch: deps.config?.outboundWebhookFetch,
133
+ ephemeralEventFetch: ephemeralEventFetch(deps.config),
133
134
  }, {
134
135
  agentIds: [callerId],
135
136
  event: eventType,
@@ -160,15 +161,32 @@ export async function emitNodeStatusEffects(deps, workspaceId, input) {
160
161
  const event = buildEvent(eventType, workspaceId, eventData);
161
162
  const payload = transformForClient(event);
162
163
  if (input.status === 'offline' && input.claimRevision !== undefined) {
163
- const appended = await appendAndPublishWorkspaceEventWhen({ db: deps.db, realtime: deps.realtime }, workspaceId, { type: eventType, payload }, sql `EXISTS (
164
+ const appended = await appendAndPublishWorkspaceEventWhen({ db: deps.db, realtime: deps.realtime }, workspaceId, { type: eventType, payload },
165
+ // Two writers can finish one claim (a forced delete completes another
166
+ // isolate's claim tail), so the transition is also skipped when the
167
+ // newest status event for the node since the claim (the row's
168
+ // heartbeat) is already offline. Part of the same INSERT, so the check
169
+ // is atomic; ordered by seq, so a reconnect's online event in between
170
+ // still lets a later offline through.
171
+ sql `EXISTS (
164
172
  SELECT 1 FROM ${nodes}
165
173
  WHERE ${nodes.workspaceId} = ${workspaceId}
166
174
  AND ${nodes.id} = ${input.nodeId}
167
175
  AND ${nodes.status} = 'offline'
168
176
  AND ${nodes.livenessRevision} = ${input.claimRevision}
177
+ AND COALESCE((
178
+ SELECT we.type FROM workspace_events AS we INDEXED BY idx_workspace_events_created
179
+ WHERE we.workspace_id = ${workspaceId}
180
+ AND we.created_at >= ${nodes.lastHeartbeatAt}
181
+ AND we.type IN ('node.status.online', 'node.status.offline')
182
+ AND json_extract(we.payload, '$.node_id') = ${input.nodeId}
183
+ ORDER BY we.seq DESC
184
+ LIMIT 1
185
+ ), '') <> 'node.status.offline'
169
186
  )`);
170
- // A reconnect won the database race. Its online event is authoritative;
171
- // publishing this older offline transition afterward would invert history.
187
+ // A reconnect won the database race (its online event is authoritative;
188
+ // publishing this older offline transition afterward would invert
189
+ // history), or this transition is already published.
172
190
  if (!appended)
173
191
  return;
174
192
  }
@@ -1 +1 @@
1
- {"version":3,"file":"invocationCompletion.js","sourceRoot":"","sources":["../../src/engine/invocationCompletion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"invocationCompletion.js","sourceRoot":"","sources":["../../src/engine/invocationCompletion.ts"],"names":[],"mappings":"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"}
@@ -87,7 +87,8 @@ export declare function createNodeToken(db: Db, workspaceId: string, data: {
87
87
  expectedTokenHash?: string;
88
88
  directAgentId?: string;
89
89
  rotationRecovery?: {
90
- replacementToken: string;
90
+ /** The deterministic replacement, under each tag the deployment knows (current first). */
91
+ replacementTokens: readonly string[];
91
92
  idempotencyKeyHash: string;
92
93
  requestDigest: string;
93
94
  };
@@ -441,6 +442,8 @@ export declare function settleNodeOffline(db: Db, registry: NodeConnectionRegist
441
442
  };
442
443
  deps?: InvocationCompletionDeps;
443
444
  reason?: NodeOfflineReason;
445
+ /** Return covered attempts to pending instead of resending them (see detachInvocationsFromLostNode). */
446
+ detachOnly?: boolean;
444
447
  }): Promise<boolean>;
445
448
  export declare function markNodeOffline(db: Db, registry: NodeConnectionRegistry, workspaceId: string, nodeId: string, effects?: {
446
449
  deps?: InvocationCompletionDeps;
@@ -547,6 +550,40 @@ export declare function completeBoundAgentDelivery(db: Db, registry: NodeConnect
547
550
  providerName: string;
548
551
  }): Promise<void>;
549
552
  export declare function unbindAgentFromNode(db: Db, workspaceId: string, nodeName: string, agentName: string): Promise<boolean>;
553
+ export type DeleteNodeResult = {
554
+ ok: true;
555
+ id: string;
556
+ name: string;
557
+ cascadedActions: number;
558
+ } | {
559
+ ok: false;
560
+ code: 'node_not_found' | 'node_online' | 'node_has_actions' | 'node_delete_conflict';
561
+ };
562
+ /**
563
+ * Delete one node by its resolved id. Callers resolve a path's id-or-name
564
+ * once, before taking the node lock; looking the name up again here could
565
+ * land on a different node whose name equals this id after a concurrent
566
+ * delete.
567
+ *
568
+ * Unforced, an online node or one hosting actions is refused. Every write is
569
+ * then conditioned on the node state those checks saw, because the node lock
570
+ * only serializes this isolate:
571
+ * - a node whose row still reads online is taken offline through the same
572
+ * claim + claim-scoped settle a lost connection uses, so its hosted agents
573
+ * lose liveness and open invocations are rescheduled while the node and its
574
+ * actions still exist to route them. A lost claim means another isolate
575
+ * refreshed the node; nothing has been touched and the result is
576
+ * `node_delete_conflict`.
577
+ * - the unforced DELETE matches only the liveness epoch the checks (or the
578
+ * claim) observed, with no hosted action, so a heartbeat, registration or
579
+ * action registration landing in between leaves the row in place.
580
+ * The delete itself is one atomic write group: open invocations still bound
581
+ * to the node or its actions fail with `node_deleted` (as deleteAction does),
582
+ * agents still located on it lose liveness, and its actions and row go.
583
+ */
584
+ export declare function deleteNode(db: Db, deps: InvocationCompletionDeps, workspaceId: string, nodeId: string, opts?: {
585
+ force?: boolean;
586
+ }): Promise<DeleteNodeResult>;
550
587
  export declare function listNodeAgents(db: Db, workspaceId: string, nodeName: string): Promise<{
551
588
  created_at: string;
552
589
  updated_at: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/engine/node.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAEzB,yBAAyB,EACzB,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,EACf,sBAAsB,EACvB,MAAM,kBAAkB,CAAC;AAQ1B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAqB,MAAM,EAA8D,KAAK,EAAc,MAAM,iBAAiB,CAAC;AAI3I,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAKxE,OAAO,KAAK,EAAgC,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AA4BnE,OAAO,KAAK,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG7F,KAAK,EAAE,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC;AACnC,KAAK,OAAO,GAAG,OAAO,KAAK,CAAC,YAAY,CAAC;AACzC,KAAK,QAAQ,GAAG,OAAO,MAAM,CAAC,YAAY,CAAC;AAC3C,KAAK,QAAQ,GAAG,IAAI,GAAG,WAAW,GAAG,MAAM,CAAC;AAC5C,KAAK,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAIpC,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,4BAA4B;IAC3C,EAAE,EAAE,QAAQ,CAAC;IACb,QAAQ,EAAE,sBAAsB,CAAC;IACjC,cAAc,CAAC,EAAE,wBAAwB,CAAC;IAC1C,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;IAC1C,GAAG,EAAE,MAAM,CAAC;CACb;AAUD,KAAK,cAAc,GAAG,MAAM,GAAG,eAAe,CAAC;AAE/C,8EAA8E;AAC9E,eAAO,MAAM,8BAA8B,iBAAiB,CAAC;AAE7D,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5D;AA8ED,eAAO,MAAM,4BAA4B,WAAW,CAAC;AAoJrD,iBAAS,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8B9H;AAyDD,wBAAsB,eAAe,CACnC,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE;IACJ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC1C,YAAY,CAAC,EAAE,cAAc,EAAE,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,EACD,aAAa,GAAE;IACb,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE;QACjB,gBAAgB,EAAE,MAAM,CAAC;QACzB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;CACtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsLP;AAED,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAGjE;AAED,wBAAsB,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAO5E;AAED,wBAAsB,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAM5E;AASD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,iBAAiB,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuD3B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,QAAQ,CAMzG;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EAClH,iBAAiB,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAyB3B;AAWD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IACpC,UAAU,EAAE,yBAAyB,EAAE,CAAC;IACxC,QAAQ,EAAE,qBAAqB,CAAC;CACjC;AAED,wBAAsB,YAAY,CAChC,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,mBAAmB,EAAE,MAAM,EAC3B,OAAO,EAAE,wBAAwB,EACjC,QAAQ,EAAE,qBAAqB,GAC9B,OAAO,CAAC,kBAAkB,CAAC,CAqG7B;AAED,wBAAsB,aAAa,CACjC,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,yBAAyB,EAIlC,SAAS,CAAC,EAAE;IAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA2I3C;AAED;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE;IAAE,eAAe,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,GACnE,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,IAAI,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CAqD7E;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,sBAAsB,EAChC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IACJ,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,IAAI,CAAC,EAAE,wBAAwB,CAAC;IAChC,MAAM,CAAC,EAAE,iBAAiB,CAAC;CACvB,GACL,OAAO,CAAC,OAAO,CAAC,CA2DlB;AAED,wBAAsB,eAAe,CACnC,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,sBAAsB,EAChC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,wBAAwB,CAAC;IAAC,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAAE,iBA2B1E;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,sBAAsB,EAChC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,uBAAuB,EAAE,OAAO,EAChC,IAAI,CAAC,EAAE,wBAAwB,iBAoChC;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,sBAAsB,EAChC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE,wBAAwB,iBA8DhC;AAED,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,sBAAsB,EAChC,IAAI,CAAC,EAAE,wBAAwB,GAC9B,OAAO,CAAC,MAAM,CAAC,CA6BjB;AAwRD,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,MAAM,GAAG,gBAAgB,CAAC,EACvD,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAG7E;AA+ID,wBAAsB,6BAA6B,CACjD,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,iBAahB;AAED,iBAAS,gBAAgB,CAAC,GAAG,EAAE;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB;;;;;;;;;;;;;;EAqBA;AAED,wBAAsB,eAAe,CACnC,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5D,OAAO,CAAC;IACT,OAAO,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;IAC7C,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CACjE,CAAC,CA6ID;AAED;;;;;;;GAOG;AACH,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,sBAAsB,EAChC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC9D,OAAO,CAAC,IAAI,CAAC,CAYf;AAED,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,oBA6BzG;AAED,wBAAsB,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;YA2BjF;AAED,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,yBAAyB,EAClC,OAAO,GAAE;IAAE,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAAC,iBAAiB,CAAC,EAAE,qBAAqB,CAAA;CAAO,GAC7F,OAAO,CAAC,sBAAsB,CAAC,CA8QjC;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,wBAAwB,EACjC,OAAO,GAAE;IAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAAO,GAClD,OAAO,CAAC,sBAAsB,CAAC,CAyHjC;AAED,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7C,IAAI,CAAC,EAAE,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;UAmDhC;AAsDD,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,sBAAsB,EAChC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,mBAAmB,EAAE,EACtC,cAAc,CAAC,EAAE,wBAAwB;;;;;;;;;;GAma1C;AAED,gFAAgF;AAChF,eAAO,MAAM,+BAA+B,MAAM,CAAC;AACnD,iFAAiF;AACjF,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAE/C,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC9B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;;;OAcG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,EAAE,CAAC;IACvC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AA0FD,wBAAsB,SAAS,CAC7B,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CA+C/B;AAED,wBAAsB,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAG5E;AAoID,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,4BAA4B,iBA8ehF"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/engine/node.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { nodeMayOwn, providerLive, filterAsync, nodeLivenessAuthority, inspectNodeLiveness, snapshotOnline } from './nodeLiveness.js';
2
2
  import { z } from 'zod';
3
3
  import { invalidateChannelCache } from './cache.js';
4
- import { and, asc, eq, exists, gt, gte, inArray, isNotNull, isNull, lt, lte, ne, notExists, or, sql } from 'drizzle-orm';
4
+ import { and, asc, eq, exists, gt, gte, inArray, isNotNull, isNull, like, lt, lte, ne, notExists, or, sql } from 'drizzle-orm';
5
5
  import { FLEET_ACTION_CALLER_METADATA_KEY, FLEET_ACTION_CALLER_METADATA_VERSION, FLEET_DELIVERY_CURSOR_CAPABILITY, NODE_REGISTRATION_CONTRACT_V1, parseFleetBrokerToRelaycastMessage, } from '@relaycast/types';
6
- import { actionInvocations, agents, agentNodeBindings, channelMembers, channels, nodeProviders, nodes, workspaces } from '../db/schema.js';
6
+ import { actionInvocations, actions, agents, agentNodeBindings, channelMembers, channels, nodeProviders, nodes, workspaces } from '../db/schema.js';
7
7
  import { isWorkspaceExpired, WORKSPACE_EXPIRED_CODE, WORKSPACE_EXPIRED_MESSAGE } from '../auth/workspaceExpiry.js';
8
8
  import { randomHex, sha256Hex } from '../lib/crypto.js';
9
9
  import { codedError } from '../lib/httpError.js';
@@ -17,9 +17,10 @@ import { rotateAgentIdentity } from './agentIdentity.js';
17
17
  import { isNodeLive, isReusableForMachineMatch, nodeHasCapacity, NODE_LIVENESS_TTL_MS } from './placement.js';
18
18
  import { DEFAULT_PROVIDER_NAME, assertActionTaskMode, capabilityKind, heartbeatProvider, isProviderLive, markProviderOffline, materializeProviderActions, providerActionsMaterialized, recomputeNodeAggregate, refreshNodeAggregate, removeProvider, upsertProvider, } from './nodeProvider.js';
19
19
  import { serializeNodeOp } from './nodeLock.js';
20
- import { ACTION_DISPATCH_TIMEOUT_MS, completeNodeInvocation, dispatchCapacitySpawn, rescheduleInvocationsForLostNode, rescheduleNodeInvocation, } from './action.js';
20
+ import { ACTION_DISPATCH_TIMEOUT_MS, completeNodeInvocation, detachInvocationsFromLostNode, dispatchCapacitySpawn, emitFailedInvocationEffects, rescheduleInvocationsForLostNode, rescheduleNodeInvocation, } from './action.js';
21
21
  import { emitInvocationCompletionEffects, emitAgentExitedEffects, emitNodeStatusEffects, fleetInvocationId } from './invocationCompletion.js';
22
22
  import { ackDeliveriesUpToSeq, deliverPendingToNode } from './delivery.js';
23
+ import { issueCredential } from '../auth/credentials.js';
23
24
  const NODE_ROTATION_RECOVERY_TTL_MS = 24 * 60 * 60 * 1_000;
24
25
  function resolveProviderIdentity(message, connectionId) {
25
26
  if (message.provider)
@@ -311,7 +312,7 @@ function normalizeLegacyAdapter(adapter) {
311
312
  return adapter;
312
313
  }
313
314
  export async function createNodeToken(db, workspaceId, data, authorization = {}) {
314
- const token = authorization.rotationRecovery?.replacementToken ?? `nt_live_${randomHex(24)}`;
315
+ const token = authorization.rotationRecovery?.replacementTokens[0] ?? await issueCredential(db, 'node', workspaceId);
315
316
  const tokenHash = await sha256Hex(token);
316
317
  const name = data.name.startsWith('#') ? data.name.slice(1) : data.name;
317
318
  // Reject names that are empty or still #-prefixed after normalization: an
@@ -372,16 +373,26 @@ export async function createNodeToken(db, workspaceId, data, authorization = {})
372
373
  && existing.id === directNodeIdForAgent(authorization.directAgentId)
373
374
  && existing.role === 'direct';
374
375
  const recovery = authorization.rotationRecovery;
376
+ // A replay returns the replacement the first attempt committed, whichever
377
+ // tag it carries; a new rotation mints under the current one.
378
+ const replacements = recovery
379
+ ? await Promise.all(recovery.replacementTokens.map(async (replacement) => ({ token: replacement, hash: await sha256Hex(replacement) })))
380
+ : [];
381
+ /** The replacement token a row committed by this keyed rotation holds, if it is one. */
382
+ const replayedToken = (candidate) => {
383
+ const committed = replacements.find((replacement) => replacement.hash === candidate.tokenHash);
384
+ return committed && isIdempotentRotationReplay(candidate) ? committed.token : undefined;
385
+ };
375
386
  const isIdempotentRotationReplay = (candidate) => hasPresentedTokenProof
376
387
  && recovery !== undefined
377
- && candidate.tokenHash === tokenHash
378
388
  && candidate.previousTokenHash === authorization.expectedTokenHash
379
389
  && candidate.rotationIdempotencyKeyHash === recovery.idempotencyKeyHash
380
390
  && candidate.rotationRequestDigest === recovery.requestDigest
381
391
  && candidate.previousTokenExpiresAt !== null
382
392
  && candidate.previousTokenExpiresAt.getTime() > now.getTime();
383
- if (isIdempotentRotationReplay(existing)) {
384
- return { ...publicNode(existing), token };
393
+ const replayed = replayedToken(existing);
394
+ if (replayed) {
395
+ return { ...publicNode(existing), token: replayed };
385
396
  }
386
397
  if (!hasPresentedTokenProof && !authorizedDirectNode) {
387
398
  throw codedError('Node already exists; its current node token is required to rotate or modify it', 'node_token_proof_required', 409);
@@ -436,8 +447,9 @@ export async function createNodeToken(db, workspaceId, data, authorization = {})
436
447
  // either update runs. If the other request committed this exact keyed
437
448
  // rotation, recover its result instead of returning a spurious conflict.
438
449
  const winner = recovery ? await getNodeById(db, workspaceId, existing.id) : null;
439
- if (winner && isIdempotentRotationReplay(winner)) {
440
- return { ...publicNode(winner), token };
450
+ const replayedByWinner = winner ? replayedToken(winner) : undefined;
451
+ if (winner && replayedByWinner) {
452
+ return { ...publicNode(winner), token: replayedByWinner };
441
453
  }
442
454
  throw codedError('Node token changed before enrollment completed; retry with the current node token', 'node_token_proof_required', 409);
443
455
  }
@@ -957,7 +969,12 @@ export async function settleNodeOffline(db, registry, workspaceId, nodeId, opts
957
969
  .where(and(eq(agents.workspaceId, workspaceId), eq(agents.status, 'offline'), isNotNull(agents.statusBeforeLivenessLoss), eq(agents.locationType, 'via_node'), eq(agents.locationNodeId, nodeId), ...(claimRevision !== undefined
958
970
  ? [lt(agents.nodeLivenessRevision, claimRevision)]
959
971
  : [])));
960
- await rescheduleInvocationsForLostNode(db, registry, workspaceId, nodeId, { claimRevision });
972
+ if (opts.detachOnly && claimRevision !== undefined) {
973
+ await detachInvocationsFromLostNode(db, workspaceId, nodeId, { claimRevision });
974
+ }
975
+ else {
976
+ await rescheduleInvocationsForLostNode(db, registry, workspaceId, nodeId, { claimRevision });
977
+ }
961
978
  if (opts.deps && opts.before && opts.before.status === 'online') {
962
979
  await emitNodeStatusEffects(opts.deps, workspaceId, {
963
980
  status: 'offline',
@@ -1622,6 +1639,144 @@ export async function unbindAgentFromNode(db, workspaceId, nodeName, agentName)
1622
1639
  return true;
1623
1640
  });
1624
1641
  }
1642
+ /** A forced delete re-claims a node a live heartbeat keeps refreshing at most this often. */
1643
+ const FORCED_DELETE_CLAIM_ATTEMPTS = 3;
1644
+ /**
1645
+ * Delete one node by its resolved id. Callers resolve a path's id-or-name
1646
+ * once, before taking the node lock; looking the name up again here could
1647
+ * land on a different node whose name equals this id after a concurrent
1648
+ * delete.
1649
+ *
1650
+ * Unforced, an online node or one hosting actions is refused. Every write is
1651
+ * then conditioned on the node state those checks saw, because the node lock
1652
+ * only serializes this isolate:
1653
+ * - a node whose row still reads online is taken offline through the same
1654
+ * claim + claim-scoped settle a lost connection uses, so its hosted agents
1655
+ * lose liveness and open invocations are rescheduled while the node and its
1656
+ * actions still exist to route them. A lost claim means another isolate
1657
+ * refreshed the node; nothing has been touched and the result is
1658
+ * `node_delete_conflict`.
1659
+ * - the unforced DELETE matches only the liveness epoch the checks (or the
1660
+ * claim) observed, with no hosted action, so a heartbeat, registration or
1661
+ * action registration landing in between leaves the row in place.
1662
+ * The delete itself is one atomic write group: open invocations still bound
1663
+ * to the node or its actions fail with `node_deleted` (as deleteAction does),
1664
+ * agents still located on it lose liveness, and its actions and row go.
1665
+ */
1666
+ export async function deleteNode(db, deps, workspaceId, nodeId, opts = {}) {
1667
+ const registry = deps.nodeConnections;
1668
+ const node = await getNodeById(db, workspaceId, nodeId);
1669
+ if (!node)
1670
+ return { ok: false, code: 'node_not_found' };
1671
+ const now = Date.now();
1672
+ const hostedActions = and(eq(actions.workspaceId, workspaceId), eq(actions.handlerNodeId, node.id));
1673
+ if (!opts.force) {
1674
+ const heartbeat = node.lastHeartbeatAt?.getTime();
1675
+ if (isNodeLive(node, now)
1676
+ // A heartbeat skewed into the future may belong to a running host.
1677
+ || (heartbeat !== undefined && heartbeat > now)
1678
+ || registry.isNodeConnected(workspaceId, node.id)) {
1679
+ return { ok: false, code: 'node_online' };
1680
+ }
1681
+ const [hosted] = await db.select({ id: actions.id }).from(actions).where(hostedActions).limit(1);
1682
+ if (hosted)
1683
+ return { ok: false, code: 'node_has_actions' };
1684
+ }
1685
+ let current = node;
1686
+ let epoch = { lastHeartbeatAt: node.lastHeartbeatAt, livenessRevision: node.livenessRevision };
1687
+ let claimedHere = false;
1688
+ for (let attempt = 1; current.status === 'online'; attempt++) {
1689
+ const claim = await claimNodeOffline(db, workspaceId, current.id, epoch);
1690
+ if (claim) {
1691
+ await settleNodeOffline(db, registry, workspaceId, current.id, {
1692
+ claimRevision: claim.claimRevision,
1693
+ before: { status: 'online', name: current.name },
1694
+ deps,
1695
+ reason: 'deregistered',
1696
+ });
1697
+ epoch = { lastHeartbeatAt: claim.claimAt, livenessRevision: claim.claimRevision };
1698
+ claimedHere = true;
1699
+ break;
1700
+ }
1701
+ // Unforced, a lost claim means the node changed after the checks. Forced,
1702
+ // the delete goes ahead regardless, against the fresh row.
1703
+ if (!opts.force)
1704
+ return { ok: false, code: 'node_delete_conflict' };
1705
+ const reread = await getNodeById(db, workspaceId, node.id);
1706
+ if (!reread)
1707
+ return { ok: false, code: 'node_not_found' };
1708
+ current = reread;
1709
+ epoch = { lastHeartbeatAt: reread.lastHeartbeatAt, livenessRevision: reread.livenessRevision };
1710
+ if (current.status === 'online' && attempt >= FORCED_DELETE_CLAIM_ATTEMPTS) {
1711
+ return { ok: false, code: 'node_delete_conflict' };
1712
+ }
1713
+ }
1714
+ // An offline row this call did not claim may belong to another writer's
1715
+ // claim (a disconnect, or a concurrent delete on another isolate) whose
1716
+ // settle tail has not run yet; the delete would erase the references that
1717
+ // tail needs and the epoch its event is conditioned on. A claimer runs its
1718
+ // tail right after claiming, so only a recent claim (its time is the row's
1719
+ // heartbeat) can still be pending. Finish it here: the tail's writes are
1720
+ // scoped to the claim revision and CAS-guarded, and the emit publishes the
1721
+ // transition only if the claimer has not. It only detaches the claim's open
1722
+ // attempts: the claimer may be resending them now, and a second sender could
1723
+ // put one spawn on two nodes.
1724
+ const claimedAt = current.lastHeartbeatAt?.getTime();
1725
+ if (!claimedHere && claimedAt !== undefined && Date.now() - claimedAt <= NODE_LIVENESS_TTL_MS) {
1726
+ await settleNodeOffline(db, registry, workspaceId, current.id, {
1727
+ claimRevision: current.livenessRevision,
1728
+ detachOnly: true,
1729
+ });
1730
+ await emitNodeStatusEffects(deps, workspaceId, {
1731
+ status: 'offline',
1732
+ nodeId: current.id,
1733
+ nodeName: current.name,
1734
+ reason: 'deregistered',
1735
+ claimRevision: current.livenessRevision,
1736
+ });
1737
+ }
1738
+ const thisNode = and(eq(nodes.workspaceId, workspaceId), eq(nodes.id, node.id));
1739
+ const deletable = opts.force
1740
+ ? thisNode
1741
+ : and(thisNode, ne(nodes.status, 'online'), eq(nodes.livenessRevision, epoch.livenessRevision), epoch.lastHeartbeatAt === null
1742
+ ? isNull(nodes.lastHeartbeatAt)
1743
+ : eq(nodes.lastHeartbeatAt, epoch.lastHeartbeatAt), notExists(db.select({ id: actions.id }).from(actions).where(hostedActions)));
1744
+ // Every statement below is conditioned on the node DELETE still matching,
1745
+ // and the group commits as one unit (a transaction, or a D1 batch), so a
1746
+ // conflict leaves no partial cleanup and a commit leaves no open reference
1747
+ // the FKs have already erased.
1748
+ const nodeStillDeletable = exists(db.select({ id: nodes.id }).from(nodes).where(deletable));
1749
+ const lostAt = new Date();
1750
+ const results = await runAtomicWrites(db, (w) => [
1751
+ // Open work bound to the node or one of its actions has nothing left to
1752
+ // complete it. Runs first, while both references are still set. `running`
1753
+ // is an accepted task, which only its dispatching node may complete.
1754
+ // A native spawn or builtin that has never been sent is pinned to the
1755
+ // handler_node_id snapshot (not an FK) and still waits on this node. Once
1756
+ // sent, that snapshot is only a 201 record: the settle may have unpinned
1757
+ // the row for placement elsewhere.
1758
+ w.update(actionInvocations)
1759
+ .set({ status: 'failed', error: 'node_deleted', completedAt: lostAt, spawnReservedAt: null })
1760
+ .where(and(eq(actionInvocations.workspaceId, workspaceId), inArray(actionInvocations.status, ['pending', 'dispatched', 'invoked', 'running']), or(eq(actionInvocations.dispatchedNodeId, node.id), inArray(actionInvocations.actionId, w.select({ id: actions.id }).from(actions).where(hostedActions)), and(eq(actionInvocations.handlerNodeId, node.id), isNull(actionInvocations.dispatchedNodeId), isNull(actionInvocations.actionId), eq(actionInvocations.dispatchAttempts, 0), or(eq(actionInvocations.invocationOrigin, 'builtin'), eq(actionInvocations.actionName, 'spawn'), like(actionInvocations.actionName, 'spawn:%')))), nodeStillDeletable))
1761
+ .returning(),
1762
+ // An agent bound to an offline node is still active; losing the node's
1763
+ // row would leave it active with no route.
1764
+ w.update(agents)
1765
+ .set({ ...agentLivenessLoss(), lastSeen: lostAt })
1766
+ .where(and(eq(agents.workspaceId, workspaceId), eq(agents.locationNodeId, node.id), ne(agents.status, 'offline'), ne(agents.status, RELEASED_AGENT_STATUS), nodeStillDeletable)),
1767
+ // Deleted explicitly rather than by cascade so the count reports the rows
1768
+ // actually removed.
1769
+ w.delete(actions).where(and(hostedActions, nodeStillDeletable)).returning({ id: actions.id }),
1770
+ w.delete(nodes).where(deletable).returning({ id: nodes.id }),
1771
+ ], { requireAtomic: true });
1772
+ const [failed, , removedActions, deleted] = results;
1773
+ if (deleted.length === 0) {
1774
+ const stillThere = await getNodeById(db, workspaceId, node.id);
1775
+ return { ok: false, code: stillThere ? 'node_delete_conflict' : 'node_not_found' };
1776
+ }
1777
+ await emitFailedInvocationEffects(deps, workspaceId, failed);
1778
+ return { ok: true, id: node.id, name: node.name, cascadedActions: removedActions.length };
1779
+ }
1625
1780
  export async function listNodeAgents(db, workspaceId, nodeName) {
1626
1781
  const node = await getNodeByName(db, workspaceId, nodeName);
1627
1782
  if (!node)
@@ -1730,7 +1885,7 @@ export async function registerAgentViaNode(db, workspaceId, nodeId, providerName
1730
1885
  throw codedError(`Agent "${message.name}" already exists; use agent.recover with proof of the immutable id`, 'agent_already_exists', 409);
1731
1886
  }
1732
1887
  const [generalChannel] = channelRows;
1733
- const token = `at_live_${randomHex(16)}`;
1888
+ const token = await issueCredential(db, 'agent', workspaceId);
1734
1889
  const tokenHash = await sha256Hex(token);
1735
1890
  const now = new Date().toISOString();
1736
1891
  const agentId = generateId();