@adonis-agora/durable 0.49.1 → 0.51.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 (335) hide show
  1. package/CHANGELOG.md +279 -0
  2. package/README.md +53 -22
  3. package/dist/assets/spa/assets/index-DupjrK7N.js +16 -0
  4. package/dist/assets/spa/assets/index-DupjrK7N.js.map +1 -0
  5. package/dist/assets/spa/index.html +1 -1
  6. package/dist/commands/durable_worker.d.ts.map +1 -1
  7. package/dist/commands/durable_worker.js +9 -8
  8. package/dist/commands/durable_worker.js.map +1 -1
  9. package/dist/commands/work.d.ts.map +1 -1
  10. package/dist/commands/work.js +3 -1
  11. package/dist/commands/work.js.map +1 -1
  12. package/dist/configure.d.ts.map +1 -1
  13. package/dist/configure.js +1 -0
  14. package/dist/configure.js.map +1 -1
  15. package/dist/providers/dashboard_provider.d.ts +2 -0
  16. package/dist/providers/dashboard_provider.d.ts.map +1 -1
  17. package/dist/providers/dashboard_provider.js +50 -6
  18. package/dist/providers/dashboard_provider.js.map +1 -1
  19. package/dist/providers/durable_provider.d.ts.map +1 -1
  20. package/dist/providers/durable_provider.js +146 -35
  21. package/dist/providers/durable_provider.js.map +1 -1
  22. package/dist/src/admission-redis/redis-admission-backend.d.ts.map +1 -1
  23. package/dist/src/admission-redis/redis-admission-backend.js +3 -1
  24. package/dist/src/admission-redis/redis-admission-backend.js.map +1 -1
  25. package/dist/src/ambient-step.d.ts +24 -0
  26. package/dist/src/ambient-step.d.ts.map +1 -0
  27. package/dist/src/ambient-step.js +42 -0
  28. package/dist/src/ambient-step.js.map +1 -0
  29. package/dist/src/base-workflow.d.ts +10 -1
  30. package/dist/src/base-workflow.d.ts.map +1 -1
  31. package/dist/src/base-workflow.js.map +1 -1
  32. package/dist/src/codec-state-store.d.ts +28 -2
  33. package/dist/src/codec-state-store.d.ts.map +1 -1
  34. package/dist/src/codec-state-store.js +61 -3
  35. package/dist/src/codec-state-store.js.map +1 -1
  36. package/dist/src/commands/worker.d.ts +8 -3
  37. package/dist/src/commands/worker.d.ts.map +1 -1
  38. package/dist/src/commands/worker.js +35 -8
  39. package/dist/src/commands/worker.js.map +1 -1
  40. package/dist/src/config_types.d.ts +6 -0
  41. package/dist/src/config_types.d.ts.map +1 -1
  42. package/dist/src/control-plane-redis/redis-control-plane.d.ts.map +1 -1
  43. package/dist/src/control-plane-redis/redis-control-plane.js +22 -6
  44. package/dist/src/control-plane-redis/redis-control-plane.js.map +1 -1
  45. package/dist/src/control-planes/factory.d.ts +6 -0
  46. package/dist/src/control-planes/factory.d.ts.map +1 -1
  47. package/dist/src/control-planes/factory.js +1 -0
  48. package/dist/src/control-planes/factory.js.map +1 -1
  49. package/dist/src/dashboard/gateway-adapter.d.ts +15 -5
  50. package/dist/src/dashboard/gateway-adapter.d.ts.map +1 -1
  51. package/dist/src/dashboard/gateway-adapter.js +71 -7
  52. package/dist/src/dashboard/gateway-adapter.js.map +1 -1
  53. package/dist/src/dashboard/handlers.d.ts +53 -1
  54. package/dist/src/dashboard/handlers.d.ts.map +1 -1
  55. package/dist/src/dashboard/handlers.js +200 -20
  56. package/dist/src/dashboard/handlers.js.map +1 -1
  57. package/dist/src/dashboard/index.d.ts +2 -2
  58. package/dist/src/dashboard/index.d.ts.map +1 -1
  59. package/dist/src/dashboard/index.js +2 -2
  60. package/dist/src/dashboard/index.js.map +1 -1
  61. package/dist/src/dashboard/openapi.d.ts.map +1 -1
  62. package/dist/src/dashboard/openapi.js +71 -1
  63. package/dist/src/dashboard/openapi.js.map +1 -1
  64. package/dist/src/define_config.d.ts +122 -8
  65. package/dist/src/define_config.d.ts.map +1 -1
  66. package/dist/src/define_config.js.map +1 -1
  67. package/dist/src/diagnostics-bridge.d.ts +16 -3
  68. package/dist/src/diagnostics-bridge.d.ts.map +1 -1
  69. package/dist/src/diagnostics-bridge.js +9 -3
  70. package/dist/src/diagnostics-bridge.js.map +1 -1
  71. package/dist/src/discovery-roots.d.ts +92 -0
  72. package/dist/src/discovery-roots.d.ts.map +1 -0
  73. package/dist/src/discovery-roots.js +150 -0
  74. package/dist/src/discovery-roots.js.map +1 -0
  75. package/dist/src/engine.d.ts +428 -21
  76. package/dist/src/engine.d.ts.map +1 -1
  77. package/dist/src/engine.js +1566 -164
  78. package/dist/src/engine.js.map +1 -1
  79. package/dist/src/entities.d.ts +36 -1
  80. package/dist/src/entities.d.ts.map +1 -1
  81. package/dist/src/entities.js +65 -4
  82. package/dist/src/entities.js.map +1 -1
  83. package/dist/src/errors.d.ts +46 -0
  84. package/dist/src/errors.d.ts.map +1 -1
  85. package/dist/src/errors.js +48 -0
  86. package/dist/src/errors.js.map +1 -1
  87. package/dist/src/event-trigger-bridge.d.ts +8 -0
  88. package/dist/src/event-trigger-bridge.d.ts.map +1 -1
  89. package/dist/src/event-trigger-bridge.js +24 -3
  90. package/dist/src/event-trigger-bridge.js.map +1 -1
  91. package/dist/src/handshake/announced.d.ts +27 -0
  92. package/dist/src/handshake/announced.d.ts.map +1 -1
  93. package/dist/src/handshake/announced.js +62 -0
  94. package/dist/src/handshake/announced.js.map +1 -1
  95. package/dist/src/handshake/directory.d.ts +92 -0
  96. package/dist/src/handshake/directory.d.ts.map +1 -0
  97. package/dist/src/handshake/directory.js +139 -0
  98. package/dist/src/handshake/directory.js.map +1 -0
  99. package/dist/src/hooks/barrel-sources.d.ts +28 -0
  100. package/dist/src/hooks/barrel-sources.d.ts.map +1 -0
  101. package/dist/src/hooks/barrel-sources.js +92 -0
  102. package/dist/src/hooks/barrel-sources.js.map +1 -0
  103. package/dist/src/hooks/steps.d.ts +12 -3
  104. package/dist/src/hooks/steps.d.ts.map +1 -1
  105. package/dist/src/hooks/steps.js +7 -11
  106. package/dist/src/hooks/steps.js.map +1 -1
  107. package/dist/src/hooks/workflows.d.ts +12 -3
  108. package/dist/src/hooks/workflows.d.ts.map +1 -1
  109. package/dist/src/hooks/workflows.js +7 -13
  110. package/dist/src/hooks/workflows.js.map +1 -1
  111. package/dist/src/index.d.ts +12 -3
  112. package/dist/src/index.d.ts.map +1 -1
  113. package/dist/src/index.js +12 -3
  114. package/dist/src/index.js.map +1 -1
  115. package/dist/src/interfaces.d.ts +309 -21
  116. package/dist/src/interfaces.d.ts.map +1 -1
  117. package/dist/src/interfaces.js +10 -0
  118. package/dist/src/interfaces.js.map +1 -1
  119. package/dist/src/metrics.d.ts.map +1 -1
  120. package/dist/src/metrics.js +5 -0
  121. package/dist/src/metrics.js.map +1 -1
  122. package/dist/src/namespaces.d.ts +17 -0
  123. package/dist/src/namespaces.d.ts.map +1 -0
  124. package/dist/src/namespaces.js +24 -0
  125. package/dist/src/namespaces.js.map +1 -0
  126. package/dist/src/on-error.d.ts +4 -1
  127. package/dist/src/on-error.d.ts.map +1 -1
  128. package/dist/src/on-error.js +15 -2
  129. package/dist/src/on-error.js.map +1 -1
  130. package/dist/src/otel/durable-metrics.d.ts.map +1 -1
  131. package/dist/src/otel/durable-metrics.js +5 -0
  132. package/dist/src/otel/durable-metrics.js.map +1 -1
  133. package/dist/src/otel/durable-otel.d.ts.map +1 -1
  134. package/dist/src/otel/durable-otel.js +5 -0
  135. package/dist/src/otel/durable-otel.js.map +1 -1
  136. package/dist/src/pollers.d.ts +10 -1
  137. package/dist/src/pollers.d.ts.map +1 -1
  138. package/dist/src/pollers.js +15 -5
  139. package/dist/src/pollers.js.map +1 -1
  140. package/dist/src/protocol.d.ts +12 -0
  141. package/dist/src/protocol.d.ts.map +1 -1
  142. package/dist/src/protocol.js +27 -1
  143. package/dist/src/protocol.js.map +1 -1
  144. package/dist/src/remote-event.d.ts +6 -0
  145. package/dist/src/remote-event.d.ts.map +1 -0
  146. package/dist/src/remote-event.js +19 -0
  147. package/dist/src/remote-event.js.map +1 -0
  148. package/dist/src/remote-workflow-executor.d.ts +34 -12
  149. package/dist/src/remote-workflow-executor.d.ts.map +1 -1
  150. package/dist/src/remote-workflow-executor.js +42 -40
  151. package/dist/src/remote-workflow-executor.js.map +1 -1
  152. package/dist/src/run-detail-summary.d.ts +90 -3
  153. package/dist/src/run-detail-summary.d.ts.map +1 -1
  154. package/dist/src/run-detail-summary.js +360 -2
  155. package/dist/src/run-detail-summary.js.map +1 -1
  156. package/dist/src/run-facets.d.ts +48 -0
  157. package/dist/src/run-facets.d.ts.map +1 -0
  158. package/dist/src/run-facets.js +100 -0
  159. package/dist/src/run-facets.js.map +1 -0
  160. package/dist/src/run-gateway/interface.d.ts +27 -1
  161. package/dist/src/run-gateway/interface.d.ts.map +1 -1
  162. package/dist/src/run-gateway/proxy-run-gateway.d.ts +32 -4
  163. package/dist/src/run-gateway/proxy-run-gateway.d.ts.map +1 -1
  164. package/dist/src/run-gateway/proxy-run-gateway.js +101 -5
  165. package/dist/src/run-gateway/proxy-run-gateway.js.map +1 -1
  166. package/dist/src/run-gateway/run-request-responder.d.ts +18 -5
  167. package/dist/src/run-gateway/run-request-responder.d.ts.map +1 -1
  168. package/dist/src/run-gateway/run-request-responder.js +155 -32
  169. package/dist/src/run-gateway/run-request-responder.js.map +1 -1
  170. package/dist/src/run-gateway/store-run-gateway.d.ts +23 -1
  171. package/dist/src/run-gateway/store-run-gateway.d.ts.map +1 -1
  172. package/dist/src/run-gateway/store-run-gateway.js +38 -0
  173. package/dist/src/run-gateway/store-run-gateway.js.map +1 -1
  174. package/dist/src/scheduler.d.ts +44 -3
  175. package/dist/src/scheduler.d.ts.map +1 -1
  176. package/dist/src/scheduler.js +36 -1
  177. package/dist/src/scheduler.js.map +1 -1
  178. package/dist/src/search-attributes-schema.d.ts +44 -0
  179. package/dist/src/search-attributes-schema.d.ts.map +1 -0
  180. package/dist/src/search-attributes-schema.js +51 -0
  181. package/dist/src/search-attributes-schema.js.map +1 -0
  182. package/dist/src/singleton-admission.d.ts +75 -0
  183. package/dist/src/singleton-admission.d.ts.map +1 -0
  184. package/dist/src/singleton-admission.js +156 -0
  185. package/dist/src/singleton-admission.js.map +1 -0
  186. package/dist/src/singleton-gate.d.ts +23 -8
  187. package/dist/src/singleton-gate.d.ts.map +1 -1
  188. package/dist/src/singleton-gate.js +59 -12
  189. package/dist/src/singleton-gate.js.map +1 -1
  190. package/dist/src/standard-schema.d.ts +86 -0
  191. package/dist/src/standard-schema.d.ts.map +1 -0
  192. package/dist/src/standard-schema.js +33 -0
  193. package/dist/src/standard-schema.js.map +1 -0
  194. package/dist/src/step-discovery.d.ts +21 -11
  195. package/dist/src/step-discovery.d.ts.map +1 -1
  196. package/dist/src/step-discovery.js +86 -45
  197. package/dist/src/step-discovery.js.map +1 -1
  198. package/dist/src/step-ref.d.ts +38 -12
  199. package/dist/src/step-ref.d.ts.map +1 -1
  200. package/dist/src/step-ref.js +5 -13
  201. package/dist/src/step-ref.js.map +1 -1
  202. package/dist/src/stores/factory.d.ts +6 -0
  203. package/dist/src/stores/factory.d.ts.map +1 -1
  204. package/dist/src/stores/factory.js +4 -1
  205. package/dist/src/stores/factory.js.map +1 -1
  206. package/dist/src/stores/lucid-helpers.d.ts +2 -0
  207. package/dist/src/stores/lucid-helpers.d.ts.map +1 -1
  208. package/dist/src/stores/lucid-helpers.js +7 -0
  209. package/dist/src/stores/lucid-helpers.js.map +1 -1
  210. package/dist/src/stores/lucid-mappers.d.ts +25 -0
  211. package/dist/src/stores/lucid-mappers.d.ts.map +1 -1
  212. package/dist/src/stores/lucid-mappers.js +81 -18
  213. package/dist/src/stores/lucid-mappers.js.map +1 -1
  214. package/dist/src/stores/lucid-schema.d.ts +59 -1
  215. package/dist/src/stores/lucid-schema.d.ts.map +1 -1
  216. package/dist/src/stores/lucid-schema.js +271 -25
  217. package/dist/src/stores/lucid-schema.js.map +1 -1
  218. package/dist/src/stores/lucid.d.ts +61 -2
  219. package/dist/src/stores/lucid.d.ts.map +1 -1
  220. package/dist/src/stores/lucid.js +346 -41
  221. package/dist/src/stores/lucid.js.map +1 -1
  222. package/dist/src/telescope/dashboard.d.ts.map +1 -1
  223. package/dist/src/telescope/dashboard.js +30 -1
  224. package/dist/src/telescope/dashboard.js.map +1 -1
  225. package/dist/src/telescope/data-providers.d.ts +19 -1
  226. package/dist/src/telescope/data-providers.d.ts.map +1 -1
  227. package/dist/src/telescope/data-providers.js +119 -3
  228. package/dist/src/telescope/data-providers.js.map +1 -1
  229. package/dist/src/telescope/extension.d.ts.map +1 -1
  230. package/dist/src/telescope/extension.js +2 -1
  231. package/dist/src/telescope/extension.js.map +1 -1
  232. package/dist/src/telescope/index.d.ts +1 -1
  233. package/dist/src/telescope/index.d.ts.map +1 -1
  234. package/dist/src/telescope/index.js +1 -1
  235. package/dist/src/telescope/index.js.map +1 -1
  236. package/dist/src/testing/in-memory-state-store.d.ts +44 -15
  237. package/dist/src/testing/in-memory-state-store.d.ts.map +1 -1
  238. package/dist/src/testing/in-memory-state-store.js +204 -41
  239. package/dist/src/testing/in-memory-state-store.js.map +1 -1
  240. package/dist/src/testing-kit/checkpoint-aggregation-contract.d.ts +16 -0
  241. package/dist/src/testing-kit/checkpoint-aggregation-contract.d.ts.map +1 -0
  242. package/dist/src/testing-kit/checkpoint-aggregation-contract.js +228 -0
  243. package/dist/src/testing-kit/checkpoint-aggregation-contract.js.map +1 -0
  244. package/dist/src/testing-kit/state-store-conformance.d.ts.map +1 -1
  245. package/dist/src/testing-kit/state-store-conformance.js +355 -3
  246. package/dist/src/testing-kit/state-store-conformance.js.map +1 -1
  247. package/dist/src/transport-pool.d.ts +15 -1
  248. package/dist/src/transport-pool.d.ts.map +1 -1
  249. package/dist/src/transport-pool.js +50 -4
  250. package/dist/src/transport-pool.js.map +1 -1
  251. package/dist/src/transports/adaptive-concurrency.d.ts +168 -0
  252. package/dist/src/transports/adaptive-concurrency.d.ts.map +1 -0
  253. package/dist/src/transports/adaptive-concurrency.js +353 -0
  254. package/dist/src/transports/adaptive-concurrency.js.map +1 -0
  255. package/dist/src/transports/bullmq/adaptive-concurrency.d.ts +1 -165
  256. package/dist/src/transports/bullmq/adaptive-concurrency.d.ts.map +1 -1
  257. package/dist/src/transports/bullmq/adaptive-concurrency.js +3 -351
  258. package/dist/src/transports/bullmq/adaptive-concurrency.js.map +1 -1
  259. package/dist/src/transports/bullmq/bullmq-transport.d.ts +49 -1
  260. package/dist/src/transports/bullmq/bullmq-transport.d.ts.map +1 -1
  261. package/dist/src/transports/bullmq/bullmq-transport.js +330 -38
  262. package/dist/src/transports/bullmq/bullmq-transport.js.map +1 -1
  263. package/dist/src/transports/bullmq/deps.d.ts +18 -2
  264. package/dist/src/transports/bullmq/deps.d.ts.map +1 -1
  265. package/dist/src/transports/bullmq/deps.js +44 -2
  266. package/dist/src/transports/bullmq/deps.js.map +1 -1
  267. package/dist/src/transports/db-helpers.d.ts +39 -0
  268. package/dist/src/transports/db-helpers.d.ts.map +1 -1
  269. package/dist/src/transports/db-helpers.js +73 -0
  270. package/dist/src/transports/db-helpers.js.map +1 -1
  271. package/dist/src/transports/db-remote.d.ts +53 -0
  272. package/dist/src/transports/db-remote.d.ts.map +1 -0
  273. package/dist/src/transports/db-remote.js +147 -0
  274. package/dist/src/transports/db-remote.js.map +1 -0
  275. package/dist/src/transports/db-schema.d.ts +44 -1
  276. package/dist/src/transports/db-schema.d.ts.map +1 -1
  277. package/dist/src/transports/db-schema.js +227 -88
  278. package/dist/src/transports/db-schema.js.map +1 -1
  279. package/dist/src/transports/db.d.ts +189 -6
  280. package/dist/src/transports/db.d.ts.map +1 -1
  281. package/dist/src/transports/db.js +1291 -137
  282. package/dist/src/transports/db.js.map +1 -1
  283. package/dist/src/transports/event-emitter.d.ts +8 -0
  284. package/dist/src/transports/event-emitter.d.ts.map +1 -1
  285. package/dist/src/transports/event-emitter.js +36 -3
  286. package/dist/src/transports/event-emitter.js.map +1 -1
  287. package/dist/src/transports/factory.d.ts +110 -5
  288. package/dist/src/transports/factory.d.ts.map +1 -1
  289. package/dist/src/transports/factory.js +56 -9
  290. package/dist/src/transports/factory.js.map +1 -1
  291. package/dist/src/transports/queue-mock-adapter.d.ts +7 -2
  292. package/dist/src/transports/queue-mock-adapter.d.ts.map +1 -1
  293. package/dist/src/transports/queue-mock-adapter.js +18 -2
  294. package/dist/src/transports/queue-mock-adapter.js.map +1 -1
  295. package/dist/src/transports/queue-remote.d.ts +146 -0
  296. package/dist/src/transports/queue-remote.d.ts.map +1 -0
  297. package/dist/src/transports/queue-remote.js +398 -0
  298. package/dist/src/transports/queue-remote.js.map +1 -0
  299. package/dist/src/transports/queue.d.ts +159 -6
  300. package/dist/src/transports/queue.d.ts.map +1 -1
  301. package/dist/src/transports/queue.js +747 -37
  302. package/dist/src/transports/queue.js.map +1 -1
  303. package/dist/src/transports/task-failure.d.ts +31 -0
  304. package/dist/src/transports/task-failure.d.ts.map +1 -0
  305. package/dist/src/transports/task-failure.js +50 -0
  306. package/dist/src/transports/task-failure.js.map +1 -0
  307. package/dist/src/workflow-als.d.ts +1 -1
  308. package/dist/src/workflow-als.d.ts.map +1 -1
  309. package/dist/src/workflow-ctx.d.ts +10 -0
  310. package/dist/src/workflow-ctx.d.ts.map +1 -1
  311. package/dist/src/workflow-ctx.js +97 -15
  312. package/dist/src/workflow-ctx.js.map +1 -1
  313. package/dist/src/workflow-discovery.d.ts +32 -41
  314. package/dist/src/workflow-discovery.d.ts.map +1 -1
  315. package/dist/src/workflow-discovery.js +65 -88
  316. package/dist/src/workflow-discovery.js.map +1 -1
  317. package/dist/src/workflow-ref.d.ts +26 -0
  318. package/dist/src/workflow-ref.d.ts.map +1 -1
  319. package/dist/src/workflow-ref.js.map +1 -1
  320. package/dist/stubs/config/durable.stub +6 -0
  321. package/dist/stubs/config/durable_dashboard.stub +7 -3
  322. package/dist/stubs/database/migrations/create_durable_tables.stub +2 -1
  323. package/dist/stubs/database/migrations/create_durable_transport_messages.stub +43 -0
  324. package/dist/stubs/database/migrations/create_durable_transport_tables.stub +12 -9
  325. package/dist/stubs/database/migrations/create_durable_transport_worker_keys.stub +1 -1
  326. package/dist/stubs/make/workflow/main.stub +1 -1
  327. package/package.json +6 -4
  328. package/skills/durable-cluster/SKILL.md +80 -11
  329. package/skills/durable-determinism/SKILL.md +11 -5
  330. package/skills/durable-reliability/SKILL.md +77 -37
  331. package/skills/durable-setup/SKILL.md +51 -22
  332. package/skills/durable-transports-stores/SKILL.md +128 -18
  333. package/skills/durable-workflows/SKILL.md +83 -18
  334. package/dist/assets/spa/assets/index-DdB9zxuX.js +0 -16
  335. package/dist/assets/spa/assets/index-DdB9zxuX.js.map +0 -1
@@ -20,6 +20,19 @@ export interface EntityHost {
20
20
  getEvent<T>(runId: string, key: string): Promise<T | undefined>;
21
21
  signal(token: string, payload: unknown): Promise<unknown>;
22
22
  }
23
+ /**
24
+ * What a workflow-side send needs on top of {@link EntityHost}: a durable buffer write it can AWAIT
25
+ * inside its turn, and a way to wake an entity run that is parked on its wait. Optional so a bare
26
+ * {@link EntityHost} (tests, older hosts) still works through {@link Entities.dispatch}.
27
+ */
28
+ export interface EntityWorkflowHost {
29
+ /** Durably buffer `payload` on `token` (the store's `bufferSignal`). */
30
+ bufferSignal(token: string, payload: unknown): Promise<void>;
31
+ /** If a run is parked on `token`, wake it with `payload`; if none is, do nothing (no buffering). */
32
+ wakeWaiter(token: string, payload: unknown): Promise<unknown>;
33
+ /** Start `runId` of `workflow` if it doesn't exist yet (idempotent by run id). */
34
+ ensureStarted(workflow: string, input: unknown, runId: string): Promise<unknown>;
35
+ }
23
36
  /**
24
37
  * Durable keyed **entities** (virtual objects): a keyed actor whose handlers run **serialized per
25
38
  * key** over **durable state**, exactly once. Each key is one long-lived run (`entity:<name>:<key>`)
@@ -28,14 +41,36 @@ export interface EntityHost {
28
41
  */
29
42
  export declare class Entities {
30
43
  private readonly host;
44
+ private readonly workflowHost?;
31
45
  private readonly configs;
32
- constructor(host: EntityHost);
46
+ constructor(host: EntityHost, workflowHost?: EntityWorkflowHost | undefined);
33
47
  register<S>(name: string, config: EntityConfig<S>): void;
34
48
  /** Deliver an op to an entity's runner, starting it on first contact. `reply` (a signal token)
35
49
  * receives the handler's result, for `ctx.callEntity`. */
36
50
  dispatch(name: string, key: string, op: string, arg: unknown, reply?: string): Promise<{
37
51
  runId: string;
38
52
  }>;
53
+ /**
54
+ * The durable half of a send from INSIDE a workflow (`ctx.callEntity` / `ctx.signalEntity`): write
55
+ * the op to the entity's signal buffer and return once it is stored, so the caller can checkpoint
56
+ * after it. The op carries `id`, the caller's stable `<runId>:<seq>`, so if the caller dies between
57
+ * this write and its checkpoint and sends again on replay, the entity skips the second copy. The
58
+ * wake-up ({@link kick}) is separate and may be lost: the buffered op is still consumed by the
59
+ * entity's next wait. Falls back to a plain {@link dispatch} on a host without a workflow host.
60
+ */
61
+ enqueue(name: string, key: string, op: string, arg: unknown, id: string, reply?: string): Promise<boolean>;
62
+ /**
63
+ * Make the entity act on what {@link enqueue} buffered: start its run if it has none, and wake it
64
+ * if it is parked on its wait. A run that is busy needs nothing: its next wait reads the buffer
65
+ * before suspending. The wake carries a no-op `nudge`, never the op itself, so the op stays in
66
+ * the buffer in arrival order and a lost or repeated kick costs at most one empty iteration.
67
+ */
68
+ kick(name: string, key: string): Promise<void>;
69
+ /**
70
+ * {@link kick} by the entity's run id (`entity:<name>:<key>`), for the lost-wake reconcile. Returns
71
+ * false for a run id that is not an entity's, or an entity this process does not know.
72
+ */
73
+ kickRunId(runId: string): Promise<boolean>;
39
74
  signal(name: string, key: string, op: string, arg?: unknown): Promise<void>;
40
75
  getState<S = unknown>(name: string, key: string): Promise<S | undefined>;
41
76
  /** The built-in runner: one long-lived run per key, processing ops serially over state. */
@@ -1 +1 @@
1
- {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../src/entities.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,yFAAyF;AACzF,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhG,iGAAiG;AACjG,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO;IACvC,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC,CAAC;IACtB,sFAAsF;IACtF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5C;AAED,4FAA4F;AAC5F,MAAM,WAAW,UAAU;IACzB,QAAQ,CACN,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GACzD,IAAI,CAAC;IACR,eAAe,CACb,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAC3C,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9B,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAChE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3D;AAKD;;;;;GAKG;AACH,qBAAa,QAAQ;IAGP,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAE3D,YAA6B,IAAI,EAAE,UAAU,EAE5C;IAED,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAEvD;IAED;+DAC2D;IAC3D,QAAQ,CACN,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,OAAO,EACZ,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAM5B;IAEK,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhF;IAED,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAEvE;IAED,2FAA2F;YAC7E,GAAG;CAyBlB"}
1
+ {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../src/entities.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { FatalError } from './errors.js';
2
+ const NUDGE = { nudge: true };
2
3
  const ENTITY_WORKFLOW = '__entity';
3
4
  const entityRunId = (name, key) => `entity:${name}:${key}`;
4
5
  /**
@@ -9,9 +10,11 @@ const entityRunId = (name, key) => `entity:${name}:${key}`;
9
10
  */
10
11
  export class Entities {
11
12
  host;
13
+ workflowHost;
12
14
  configs = new Map();
13
- constructor(host) {
15
+ constructor(host, workflowHost) {
14
16
  this.host = host;
17
+ this.workflowHost = workflowHost;
15
18
  host.register(ENTITY_WORKFLOW, '1', (ctx, input) => this.run(ctx, input));
16
19
  }
17
20
  register(name, config) {
@@ -26,6 +29,52 @@ export class Entities {
26
29
  payload: { op, arg, reply },
27
30
  });
28
31
  }
32
+ /**
33
+ * The durable half of a send from INSIDE a workflow (`ctx.callEntity` / `ctx.signalEntity`): write
34
+ * the op to the entity's signal buffer and return once it is stored, so the caller can checkpoint
35
+ * after it. The op carries `id`, the caller's stable `<runId>:<seq>`, so if the caller dies between
36
+ * this write and its checkpoint and sends again on replay, the entity skips the second copy. The
37
+ * wake-up ({@link kick}) is separate and may be lost: the buffered op is still consumed by the
38
+ * entity's next wait. Falls back to a plain {@link dispatch} on a host without a workflow host.
39
+ */
40
+ async enqueue(name, key, op, arg, id, reply) {
41
+ if (!this.workflowHost)
42
+ return false;
43
+ const message = { op, arg, id, ...(reply ? { reply } : {}) };
44
+ await this.workflowHost.bufferSignal(entityRunId(name, key), message);
45
+ return true;
46
+ }
47
+ /**
48
+ * Make the entity act on what {@link enqueue} buffered: start its run if it has none, and wake it
49
+ * if it is parked on its wait. A run that is busy needs nothing: its next wait reads the buffer
50
+ * before suspending. The wake carries a no-op `nudge`, never the op itself, so the op stays in
51
+ * the buffer in arrival order and a lost or repeated kick costs at most one empty iteration.
52
+ */
53
+ async kick(name, key) {
54
+ const host = this.workflowHost;
55
+ if (!host)
56
+ return;
57
+ const runId = entityRunId(name, key);
58
+ await host.ensureStarted(ENTITY_WORKFLOW, { name, key }, runId);
59
+ await host.wakeWaiter(runId, NUDGE);
60
+ }
61
+ /**
62
+ * {@link kick} by the entity's run id (`entity:<name>:<key>`), for the lost-wake reconcile. Returns
63
+ * false for a run id that is not an entity's, or an entity this process does not know.
64
+ */
65
+ async kickRunId(runId) {
66
+ if (!runId.startsWith('entity:'))
67
+ return false;
68
+ const rest = runId.slice('entity:'.length);
69
+ const sep = rest.indexOf(':');
70
+ if (sep <= 0)
71
+ return false;
72
+ const name = rest.slice(0, sep);
73
+ if (!this.configs.has(name))
74
+ return false;
75
+ await this.kick(name, rest.slice(sep + 1));
76
+ return true;
77
+ }
29
78
  async signal(name, key, op, arg) {
30
79
  await this.dispatch(name, key, op, arg);
31
80
  }
@@ -40,22 +89,34 @@ export class Entities {
40
89
  throw new FatalError(`entity "${name}" is not registered`);
41
90
  const token = entityRunId(name, key);
42
91
  let state = config.initialState();
92
+ // Ids of workflow-side sends already handled. Rebuilt on replay from the recorded messages, so
93
+ // the skip below is deterministic.
94
+ const seen = new Set();
43
95
  for (let i = 0;; i += 1) {
44
96
  const msg = (await ctx.waitForSignal(token));
97
+ if (msg.nudge)
98
+ continue; // a wake-up only: the op it announced is read from the buffer next
99
+ if (msg.id !== undefined) {
100
+ if (seen.has(msg.id))
101
+ continue; // a re-sent copy of an op already applied: exactly once
102
+ seen.add(msg.id);
103
+ }
104
+ const op = msg.op;
45
105
  // Run the handler and snapshot the (possibly mutated) state in ONE checkpoint, so replay
46
106
  // restores the state from the checkpoint instead of re-running the handler.
47
107
  const out = await ctx.localStep(`op:${i}`, async () => {
48
- const handler = config.handlers[msg.op];
108
+ const handler = config.handlers[op];
49
109
  if (!handler)
50
- throw new FatalError(`entity "${name}" has no handler for op "${msg.op}"`);
110
+ throw new FatalError(`entity "${name}" has no handler for op "${op}"`);
51
111
  const result = await handler(state, msg.arg);
52
112
  return { result, state };
53
113
  });
54
114
  state = out.state; // carry state forward (and restore it from the checkpoint on replay)
55
115
  await ctx.setEvent('state', state); // publish for getState
56
116
  if (msg.reply) {
117
+ const reply = msg.reply;
57
118
  await ctx.localStep(`reply:${i}`, async () => {
58
- await this.host.signal(msg.reply, out.result);
119
+ await this.host.signal(reply, out.result);
59
120
  });
60
121
  }
61
122
  }
@@ -1 +1 @@
1
- {"version":3,"file":"entities.js","sourceRoot":"","sources":["../../src/entities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entities.js","sourceRoot":"","sources":["../../src/entities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAyDzC,MAAM,KAAK,GAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAE7C,MAAM,eAAe,GAAG,UAAU,CAAC;AACnC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,GAAW,EAAU,EAAE,CAAC,UAAU,IAAI,IAAI,GAAG,EAAE,CAAC;AAEnF;;;;;GAKG;AACH,MAAM,OAAO,QAAQ;IAIA,IAAI;IACJ,YAAY;IAJd,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;IAE3D,YACmB,IAAgB,EAChB,YAAiC;oBADjC,IAAI;4BACJ,YAAY;QAE7B,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,QAAQ,CAAI,IAAY,EAAE,MAAuB;QAC/C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAsB,CAAC,CAAC;IACjD,CAAC;IAED;+DAC2D;IAC3D,QAAQ,CACN,IAAY,EACZ,GAAW,EACX,EAAU,EACV,GAAY,EACZ,KAAc;QAEd,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE;YACtE,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;SAC5B,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,OAAO,CACX,IAAY,EACZ,GAAW,EACX,EAAU,EACV,GAAY,EACZ,EAAU,EACV,KAAc;QAEd,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO,KAAK,CAAC;QACrC,MAAM,OAAO,GAAkB,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,GAAW;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;QAC/B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACrC,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;QAChE,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,KAAa;QAC3B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,GAAG,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1C,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,GAAW,EAAE,EAAU,EAAE,GAAa;QAC/D,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED,QAAQ,CAAc,IAAY,EAAE,GAAW;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAI,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAED,2FAA2F;IACnF,KAAK,CAAC,GAAG,CAAC,GAAgB,EAAE,KAAc;QAChD,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,KAAsC,CAAC;QAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,UAAU,CAAC,WAAW,IAAI,qBAAqB,CAAC,CAAC;QACxE,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACrC,IAAI,KAAK,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QAClC,+FAA+F;QAC/F,mCAAmC;QACnC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,GAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAkB,CAAC;YAC9D,IAAI,GAAG,CAAC,KAAK;gBAAE,SAAS,CAAC,mEAAmE;YAC5F,IAAI,GAAG,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAAE,SAAS,CAAC,wDAAwD;gBACxF,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnB,CAAC;YACD,MAAM,EAAE,GAAG,GAAG,CAAC,EAAY,CAAC;YAC5B,yFAAyF;YACzF,4EAA4E;YAC5E,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;gBACpD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACpC,IAAI,CAAC,OAAO;oBAAE,MAAM,IAAI,UAAU,CAAC,WAAW,IAAI,4BAA4B,EAAE,GAAG,CAAC,CAAC;gBACrF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC7C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YAC3B,CAAC,CAAC,CAAC;YACH,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,qEAAqE;YACxF,MAAM,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,uBAAuB;YAC3D,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACd,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;gBACxB,MAAM,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;oBAC3C,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
@@ -57,6 +57,19 @@ export declare class RemoteStepTimeout extends Error {
57
57
  readonly timeoutMs: number;
58
58
  constructor(stepId: string, timeoutMs: number);
59
59
  }
60
+ /**
61
+ * Raised when an INLINE remote workflow `advance` (an executor that returns its decision in-process)
62
+ * neither produced a decision nor received a run-scoped heartbeat within the engine's
63
+ * `remoteAdvanceSilenceMs` — the worker is presumed gone. NOT a run failure: the work may have
64
+ * completed and only the decision was lost. The engine releases the run lease and leaves the run
65
+ * `running`, so crash recovery re-drives it (replaying completed steps from history). An executor may
66
+ * throw it too, to ask for the same recovery instead of a failed run.
67
+ */
68
+ export declare class RemoteWorkflowTimeout extends Error {
69
+ readonly taskId: string;
70
+ readonly timeoutMs: number | undefined;
71
+ constructor(taskId: string, timeoutMs?: number);
72
+ }
60
73
  /**
61
74
  * Thrown on resume when the workflow code no longer matches the recorded history: the step at a
62
75
  * logical position has a different name/kind than the checkpoint saved there. This means the
@@ -92,6 +105,39 @@ export declare class NestedWorkflowCallError extends FatalError {
92
105
  readonly step: string;
93
106
  constructor(runId: string, primitive: string, step: string);
94
107
  }
108
+ /** One Standard Schema issue in JSON-safe form: its message and the dotted-path segments. */
109
+ export interface SchemaIssue {
110
+ message: string;
111
+ path: string[];
112
+ }
113
+ /**
114
+ * The code a {@link SchemaValidationError} carries: `invalid_input` for a step's `input` or a
115
+ * workflow's `inputSchema`, `invalid_output` for a step's `output`, `schema_validation` for anything
116
+ * else (a typed `searchAttributes` write, a direct `validateStandard` call). The same codes
117
+ * `@dudousxd/nestjs-durable` uses.
118
+ */
119
+ export type SchemaValidationCode = 'invalid_input' | 'invalid_output' | 'schema_validation';
120
+ /**
121
+ * Thrown when a value fails a Standard Schema (zod / valibot / arktype / …) the app declared: a
122
+ * `@Step({ input, output })` schema, a workflow's `inputSchema`, or its typed `searchAttributes`.
123
+ * A `FatalError`, so it is NOT retried — retrying cannot fix a payload that doesn't match its
124
+ * schema. Its `code` says which schema rejected the value ({@link SchemaValidationCode}). `issues`
125
+ * (also in `details.issues`, so it survives the transport to the run's error / an `onError`
126
+ * handler) lists every issue with a JSON-safe `path`. Route one code with
127
+ * `onError: [{ code: 'invalid_input', workflow: … }]`, or all three with
128
+ * `onError: [{ code: SchemaValidationError, workflow: … }]` (its `static code`, `schema_validation`,
129
+ * also catches `invalid_input` and `invalid_output` that no route of their own matches).
130
+ */
131
+ export declare class SchemaValidationError extends FatalError {
132
+ static readonly code = "schema_validation";
133
+ readonly issues: SchemaIssue[];
134
+ constructor(label: string, issues: ReadonlyArray<{
135
+ readonly message: string;
136
+ readonly path?: ReadonlyArray<PropertyKey | {
137
+ readonly key: PropertyKey;
138
+ }> | undefined;
139
+ }>, code?: SchemaValidationCode);
140
+ }
95
141
  /**
96
142
  * Thrown by `ctx.all` when one or more parallel child workflows fail. Carries the per-item failures
97
143
  * (input index, child run id, error message) and presents an aggregate message summarizing the count
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
@@ -85,6 +85,24 @@ export class RemoteStepTimeout extends Error {
85
85
  this.timeoutMs = timeoutMs;
86
86
  }
87
87
  }
88
+ /**
89
+ * Raised when an INLINE remote workflow `advance` (an executor that returns its decision in-process)
90
+ * neither produced a decision nor received a run-scoped heartbeat within the engine's
91
+ * `remoteAdvanceSilenceMs` — the worker is presumed gone. NOT a run failure: the work may have
92
+ * completed and only the decision was lost. The engine releases the run lease and leaves the run
93
+ * `running`, so crash recovery re-drives it (replaying completed steps from history). An executor may
94
+ * throw it too, to ask for the same recovery instead of a failed run.
95
+ */
96
+ export class RemoteWorkflowTimeout extends Error {
97
+ taskId;
98
+ timeoutMs;
99
+ constructor(taskId, timeoutMs) {
100
+ super(`remote workflow task ${taskId} produced no decision within ${timeoutMs}ms — presumed lost; re-driving via recovery`);
101
+ this.name = 'RemoteWorkflowTimeout';
102
+ this.taskId = taskId;
103
+ this.timeoutMs = timeoutMs;
104
+ }
105
+ }
88
106
  /**
89
107
  * Thrown on resume when the workflow code no longer matches the recorded history: the step at a
90
108
  * logical position has a different name/kind than the checkpoint saved there. This means the
@@ -132,6 +150,36 @@ export class NestedWorkflowCallError extends FatalError {
132
150
  this.step = step;
133
151
  }
134
152
  }
153
+ /**
154
+ * Thrown when a value fails a Standard Schema (zod / valibot / arktype / …) the app declared: a
155
+ * `@Step({ input, output })` schema, a workflow's `inputSchema`, or its typed `searchAttributes`.
156
+ * A `FatalError`, so it is NOT retried — retrying cannot fix a payload that doesn't match its
157
+ * schema. Its `code` says which schema rejected the value ({@link SchemaValidationCode}). `issues`
158
+ * (also in `details.issues`, so it survives the transport to the run's error / an `onError`
159
+ * handler) lists every issue with a JSON-safe `path`. Route one code with
160
+ * `onError: [{ code: 'invalid_input', workflow: … }]`, or all three with
161
+ * `onError: [{ code: SchemaValidationError, workflow: … }]` (its `static code`, `schema_validation`,
162
+ * also catches `invalid_input` and `invalid_output` that no route of their own matches).
163
+ */
164
+ export class SchemaValidationError extends FatalError {
165
+ static code = 'schema_validation';
166
+ issues;
167
+ constructor(label, issues, code = 'schema_validation') {
168
+ const normalized = issues.map((issue) => ({
169
+ message: issue.message,
170
+ path: (issue.path ?? []).map((segment) => String(typeof segment === 'object' && segment !== null ? segment.key : segment)),
171
+ }));
172
+ // The message format `@dudousxd/nestjs-durable` uses: `invalid <label>: <path>: <message>; …`.
173
+ const summary = normalized
174
+ .map((issue) => issue.path.length > 0 ? `${issue.path.join('.')}: ${issue.message}` : issue.message)
175
+ .join('; ');
176
+ super(`invalid ${label}: ${summary}`, code, {
177
+ issues: normalized,
178
+ });
179
+ this.name = 'SchemaValidationError';
180
+ this.issues = normalized;
181
+ }
182
+ }
135
183
  export class GatherError extends Error {
136
184
  failures;
137
185
  constructor(failures, total) {
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,14 @@ export interface EventTriggerBridgeOptions {
10
10
  engine: WorkflowEngine;
11
11
  /** The AdonisJS app emitter, when resolvable (missing = emitter triggers are inert). */
12
12
  emitter?: EmitterLike;
13
+ /**
14
+ * Called when a triggered start or publish fails (an unregistered workflow, a rejected input, a
15
+ * concurrency quota, a store error). Default: a `console.warn`. The bridge always catches, so a
16
+ * failing trigger never becomes an unhandled rejection that could take the process down.
17
+ */
18
+ onError?: (error: unknown, info: {
19
+ trigger: NormalizedEventTrigger;
20
+ }) => void;
13
21
  }
14
22
  /**
15
23
  * Bridge the event sources a workflow declares via `static on` / `@OnEvent` / `@OnDiagnostic`
@@ -1 +1 @@
1
- {"version":3,"file":"event-trigger-bridge.d.ts","sourceRoot":"","sources":["../../src/event-trigger-bridge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAA6B,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAoB9F,2FAA2F;AAC3F,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC;IAChE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC;CAClE;AAED,MAAM,WAAW,yBAAyB;IACxC,iDAAiD;IACjD,MAAM,EAAE,cAAc,CAAC;IACvB,wFAAwF;IACxF,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAOD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,SAAS,sBAAsB,EAAE,EAC3C,OAAO,EAAE,yBAAyB,GACjC,MAAM,IAAI,CASZ"}
1
+ {"version":3,"file":"event-trigger-bridge.d.ts","sourceRoot":"","sources":["../../src/event-trigger-bridge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAA6B,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAoB9F,2FAA2F;AAC3F,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC;IAChE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC;CAClE;AAED,MAAM,WAAW,yBAAyB;IACxC,iDAAiD;IACjD,MAAM,EAAE,cAAc,CAAC;IACvB,wFAAwF;IACxF,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;QAAE,OAAO,EAAE,sBAAsB,CAAA;KAAE,KAAK,IAAI,CAAC;CAC/E;AAkCD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,SAAS,sBAAsB,EAAE,EAC3C,OAAO,EAAE,yBAAyB,GACjC,MAAM,IAAI,CASZ"}
@@ -5,6 +5,27 @@ const DIAGNOSTICS_REGISTRY_KEY = Symbol.for('@agora/diagnostics:registry');
5
5
  function diagnosticsRegistry() {
6
6
  return globalThis[DIAGNOSTICS_REGISTRY_KEY];
7
7
  }
8
+ /** Run a trigger's start/publish, routing a rejection to `onError` (or a warning). */
9
+ function fire(trigger, options, run) {
10
+ const report = (error) => {
11
+ try {
12
+ if (options.onError) {
13
+ options.onError(error, { trigger });
14
+ return;
15
+ }
16
+ }
17
+ catch {
18
+ /* a throwing reporter must not escape either; fall through to the warning */
19
+ }
20
+ console.warn(`[durable] event trigger for workflow "${trigger.workflow}" (${String(trigger.event)}) failed:`, error);
21
+ };
22
+ try {
23
+ run().catch(report);
24
+ }
25
+ catch (error) {
26
+ report(error);
27
+ }
28
+ }
8
29
  /**
9
30
  * Bridge the event sources a workflow declares via `static on` / `@OnEvent` / `@OnDiagnostic`
10
31
  * into the engine:
@@ -39,7 +60,7 @@ function wireEmitter(trigger, options) {
39
60
  if (!options.emitter)
40
61
  return { disposer: () => { } };
41
62
  const handler = (payload) => {
42
- void options.engine.publishEvent(trigger.event, payload);
63
+ fire(trigger, options, () => options.engine.publishEvent(trigger.event, payload));
43
64
  };
44
65
  options.emitter.on(trigger.event, handler);
45
66
  return { disposer: () => options.emitter?.off(trigger.event, handler) };
@@ -57,11 +78,11 @@ function wireDiagnostics(trigger, options) {
57
78
  if (exact) {
58
79
  const name = eventTriggerCanonicalName(trigger);
59
80
  if (name !== null)
60
- void options.engine.publishEvent(name, payload);
81
+ fire(trigger, options, () => options.engine.publishEvent(name, payload));
61
82
  }
62
83
  else {
63
84
  // Regex/any: the concrete name is unknown upfront — start the workflow directly.
64
- void options.engine.start(trigger.workflow, payload, crypto.randomUUID());
85
+ fire(trigger, options, () => options.engine.start(trigger.workflow, payload, crypto.randomUUID()));
65
86
  }
66
87
  };
67
88
  const subscribeChannel = (name) => {
@@ -1 +1 @@
1
- {"version":3,"file":"event-trigger-bridge.js","sourceRoot":"","sources":["../../src/event-trigger-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,yBAAyB,EAA+B,MAAM,sBAAsB,CAAC;AAE9F,sGAAsG;AACtG,MAAM,wBAAwB,GAAG,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;AAK3E,SAAS,mBAAmB;IAC1B,OAAQ,UAAsC,CAAC,wBAAwB,CAE1D,CAAC;AAChB,CAAC;AA0BD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,wBAAwB,CACtC,QAA2C,EAC3C,OAAkC;IAElC,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;;YACvE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,GAAG,EAAE;QACV,OAAO,KAAK,CAAC,MAAM;YAAE,KAAK,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC;IAC/C,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAClB,OAA+D,EAC/D,OAAkC;IAElC,IAAI,CAAC,OAAO,CAAC,OAAO;QAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;IACpD,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAE,EAAE;QACnC,KAAK,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC,CAAC;IACF,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC3C,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;AAC1E,CAAC;AAED,SAAS,eAAe,CACtB,OAAmE,EACnE,OAAkC;IAElC,MAAM,KAAK,GAAG,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC;IAChD,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,YAAY,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,MAAM,SAAS,GAAG,SAAS,OAAO,CAAC,GAAG,GAAG,CAAC;IAC1C,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkC,CAAC;IAEhE,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,EAAE;QACrC,MAAM,QAAQ,GAAG,OAA8B,CAAC;QAChD,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,OAAO;QAC9D,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACjC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;YAChD,IAAI,IAAI,KAAK,IAAI;gBAAE,KAAK,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,iFAAiF;YACjF,KAAK,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,EAAE;QACxC,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO;QACpC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO;QACxC,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,IAAI,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC,KAAK,EAAE;gBAAE,OAAO;QACtD,CAAC;aAAM,IAAI,EAAE,EAAE,CAAC;YACd,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAE,OAAO;QACnC,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,GAAY,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACjD,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC,CAAC;IAEF,qFAAqF;IACrF,oFAAoF;IACpF,oFAAoF;IACpF,IAAI,KAAK,EAAE,CAAC;QACV,gBAAgB,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;QACvC,IAAI,gBAAgB,GAAoC,IAAI,CAAC;QAC7D,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,QAAQ;gBAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC7D,gBAAgB,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC5D,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC3C,CAAC;QACD,gFAAgF;QAChF,6EAA6E;QAC7E,OAAO;YACL,QAAQ,EAAE,GAAG,EAAE;gBACb,IAAI,gBAAgB,IAAI,QAAQ;oBAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;gBAC9E,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,aAAa,EAAE,CAAC;oBAC5C,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBACzD,CAAC;gBACD,aAAa,CAAC,KAAK,EAAE,CAAC;YACxB,CAAC;SACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,GAAG,EAAE;YACb,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,aAAa,EAAE,CAAC;gBAC5C,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACzD,CAAC;YACD,aAAa,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"event-trigger-bridge.js","sourceRoot":"","sources":["../../src/event-trigger-bridge.ts"],"names":[],"mappings":"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"}
@@ -91,4 +91,31 @@ export declare function announcementsOf(raw: RawWorkerDescriptor | WorkerDescrip
91
91
  * `instances` is a set, so it counts workers, not keys.
92
92
  */
93
93
  export declare function aggregateAnnouncements(descriptors: readonly (RawWorkerDescriptor | WorkerDescriptor)[]): AnnouncedWorkflow[];
94
+ /** One live worker heartbeat as {@link observedAnnouncements} reads it: the token and who beats. */
95
+ export interface HeartbeatSighting {
96
+ /** The routing token the beat was published under (already partition-suffixed when partitioned). */
97
+ group: string;
98
+ /** The beating process's instance id. */
99
+ instanceId: string;
100
+ }
101
+ /**
102
+ * The weaker tier: one `'observed'` entry per live routing token that NO descriptor accounts for —
103
+ * how a worker on an SDK too old to describe itself still appears. `covered` holds every token the
104
+ * declared announcements already explain (see {@link coveredTokens}); those are dropped, so a fleet
105
+ * that describes itself gets exactly the registry it got before, and no worker counts twice.
106
+ *
107
+ * Everything an observation cannot know stays empty rather than guessed: no version (nothing can be
108
+ * pinned against it), no origin, no requires, no runtime. The `name` is the token itself, which
109
+ * equals the workflow name for every name a queue token round-trips (`sanitizeQueueToken` rewrites
110
+ * `:` to `-`, which is not invertible).
111
+ */
112
+ export declare function observedAnnouncements(heartbeats: readonly HeartbeatSighting[], covered: ReadonlySet<string>): AnnouncedWorkflow[];
113
+ /**
114
+ * Every routing token a live descriptor already accounts for, so it needs no observation: a token
115
+ * some worker announced as a WORKFLOW (already in the registry, richer than an observation), and a
116
+ * token some worker declared as a STEP handler (a step is not callable from outside a run, and
117
+ * route-by-handler gives every step its own queue, so without this the liveness floor would list a
118
+ * fleet's whole step surface as fake workflows). `sanitize` is the queue-token form of a name.
119
+ */
120
+ export declare function coveredTokens(announced: readonly AnnouncedWorkflow[], descriptors: readonly (RawWorkerDescriptor | WorkerDescriptor)[], sanitize: (name: string) => string): Set<string>;
94
121
  //# sourceMappingURL=announced.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"announced.d.ts","sourceRoot":"","sources":["../../../src/handshake/announced.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAGnG,0FAA0F;AAC1F,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,qGAAqG;IACrG,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC5B;AAED;iGACiG;AACjG,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAClD,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,UAAU,CAAC;AAE3D,2FAA2F;AAC3F,MAAM,WAAW,iBAAiB;IAChC;;kFAE8E;IAC9E,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,8FAA8F;IAC9F,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,6FAA6F;IAC7F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;qGAEiG;IACjG,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,sFAAsF;IACtF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;sGACkG;IAClG,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC;IACrB;mGAC+F;IAC/F,OAAO,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,EAAE,CAAC;IACjD;;iDAE6C;IAC7C,QAAQ,EAAE,CAAC,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC;IAChC;;sGAEkG;IAClG,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;4FACwF;IACxF,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,mBAAmB,GAAG,gBAAgB,GAC1C,oBAAoB,EAAE,CASxB;AAYD;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,SAAS,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,EAAE,GAC/D,iBAAiB,EAAE,CAkErB"}
1
+ {"version":3,"file":"announced.d.ts","sourceRoot":"","sources":["../../../src/handshake/announced.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAGnG,0FAA0F;AAC1F,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,qGAAqG;IACrG,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC5B;AAED;iGACiG;AACjG,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAClD,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,UAAU,CAAC;AAE3D,2FAA2F;AAC3F,MAAM,WAAW,iBAAiB;IAChC;;kFAE8E;IAC9E,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,8FAA8F;IAC9F,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,6FAA6F;IAC7F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;qGAEiG;IACjG,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,sFAAsF;IACtF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;sGACkG;IAClG,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC;IACrB;mGAC+F;IAC/F,OAAO,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,EAAE,CAAC;IACjD;;iDAE6C;IAC7C,QAAQ,EAAE,CAAC,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC;IAChC;;sGAEkG;IAClG,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;4FACwF;IACxF,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,mBAAmB,GAAG,gBAAgB,GAC1C,oBAAoB,EAAE,CASxB;AAYD;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,SAAS,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,EAAE,GAC/D,iBAAiB,EAAE,CAkErB;AAED,oGAAoG;AACpG,MAAM,WAAW,iBAAiB;IAChC,oGAAoG;IACpG,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,SAAS,iBAAiB,EAAE,EACxC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAC3B,iBAAiB,EAAE,CAsBrB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,SAAS,iBAAiB,EAAE,EACvC,WAAW,EAAE,SAAS,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,EAAE,EAChE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GACjC,GAAG,CAAC,MAAM,CAAC,CAeb"}
@@ -110,4 +110,66 @@ export function aggregateAnnouncements(descriptors) {
110
110
  }
111
111
  return out.sort((a, b) => a.key.localeCompare(b.key));
112
112
  }
113
+ /**
114
+ * The weaker tier: one `'observed'` entry per live routing token that NO descriptor accounts for —
115
+ * how a worker on an SDK too old to describe itself still appears. `covered` holds every token the
116
+ * declared announcements already explain (see {@link coveredTokens}); those are dropped, so a fleet
117
+ * that describes itself gets exactly the registry it got before, and no worker counts twice.
118
+ *
119
+ * Everything an observation cannot know stays empty rather than guessed: no version (nothing can be
120
+ * pinned against it), no origin, no requires, no runtime. The `name` is the token itself, which
121
+ * equals the workflow name for every name a queue token round-trips (`sanitizeQueueToken` rewrites
122
+ * `:` to `-`, which is not invertible).
123
+ */
124
+ export function observedAnnouncements(heartbeats, covered) {
125
+ const byToken = new Map();
126
+ for (const beat of heartbeats) {
127
+ if (!beat.group || covered.has(beat.group))
128
+ continue;
129
+ const instances = byToken.get(beat.group);
130
+ if (instances)
131
+ instances.add(beat.instanceId);
132
+ else
133
+ byToken.set(beat.group, new Set([beat.instanceId]));
134
+ }
135
+ return [...byToken.entries()]
136
+ .map(([group, instances]) => ({
137
+ evidence: 'observed',
138
+ key: group,
139
+ name: group,
140
+ groups: [group],
141
+ origins: [],
142
+ requires: [],
143
+ onError: [],
144
+ runtimes: [],
145
+ instances: [...instances].sort(),
146
+ disagreements: [],
147
+ }))
148
+ .sort((a, b) => a.key.localeCompare(b.key));
149
+ }
150
+ /**
151
+ * Every routing token a live descriptor already accounts for, so it needs no observation: a token
152
+ * some worker announced as a WORKFLOW (already in the registry, richer than an observation), and a
153
+ * token some worker declared as a STEP handler (a step is not callable from outside a run, and
154
+ * route-by-handler gives every step its own queue, so without this the liveness floor would list a
155
+ * fleet's whole step surface as fake workflows). `sanitize` is the queue-token form of a name.
156
+ */
157
+ export function coveredTokens(announced, descriptors, sanitize) {
158
+ const tokens = new Set();
159
+ for (const entry of announced) {
160
+ tokens.add(sanitize(entry.name));
161
+ for (const group of entry.groups)
162
+ tokens.add(group);
163
+ }
164
+ for (const raw of descriptors) {
165
+ const d = normalizeDescriptor(raw);
166
+ for (const step of d.steps) {
167
+ const token = sanitize(step);
168
+ tokens.add(token);
169
+ if (d.partition)
170
+ tokens.add(`${token}@${d.partition}`);
171
+ }
172
+ }
173
+ return tokens;
174
+ }
113
175
  //# sourceMappingURL=announced.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"announced.js","sourceRoot":"","sources":["../../../src/handshake/announced.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"announced.js","sourceRoot":"","sources":["../../../src/handshake/announced.ts"],"names":[],"mappings":"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"}