@lostgradient/weft 0.2.1 → 0.4.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 (579) hide show
  1. package/README.md +123 -43
  2. package/dist/cli/conformance.js +7 -1
  3. package/dist/cli/generated/operation-client.generated.d.ts +55 -13
  4. package/dist/cli/generated/operation-client.generated.js +3 -0
  5. package/dist/cli/help-text.d.ts +1 -1
  6. package/dist/cli/help-text.js +1 -0
  7. package/dist/cli/operation-catalog-snapshot.d.ts +8 -0
  8. package/dist/cli/operation-catalog-snapshot.js +11 -0
  9. package/dist/cli/parse-schedule-arguments.js +3 -1
  10. package/dist/cli/schedule.js +2 -1
  11. package/dist/cli/types.d.ts +1 -0
  12. package/dist/cli-main.js +80 -79
  13. package/dist/client/handle-delegation.d.ts +7 -2
  14. package/dist/client/handle-delegation.js +9 -1
  15. package/dist/client/http-client-requests.d.ts +4 -1
  16. package/dist/client/http-client-requests.js +10 -0
  17. package/dist/client/http-client.d.ts +10 -4
  18. package/dist/client/http-client.js +18 -1
  19. package/dist/client/http-request.d.ts +11 -1
  20. package/dist/client/http-request.js +17 -7
  21. package/dist/client/index.d.ts +1 -1
  22. package/dist/client/interface.d.ts +100 -4
  23. package/dist/client/local.d.ts +7 -1
  24. package/dist/client/local.js +17 -2
  25. package/dist/client/start-body.d.ts +9 -2
  26. package/dist/client/start-body.js +13 -4
  27. package/dist/core/byte-arrays.d.ts +5 -0
  28. package/dist/core/byte-arrays.js +5 -0
  29. package/dist/core/checkpoint/lifecycle.d.ts +3 -0
  30. package/dist/core/checkpoint/lifecycle.js +9 -4
  31. package/dist/core/checkpoint/serialization.js +12 -5
  32. package/dist/core/codec/extension-codec.d.ts +16 -0
  33. package/dist/core/codec/extension-codec.js +104 -8
  34. package/dist/core/codec/index.d.ts +1 -0
  35. package/dist/core/codec/index.js +1 -0
  36. package/dist/core/codec/serializer-registry.d.ts +122 -0
  37. package/dist/core/codec/serializer-registry.js +51 -0
  38. package/dist/core/context/activity-retry-state.d.ts +38 -0
  39. package/dist/core/context/activity-retry-state.js +89 -0
  40. package/dist/core/context/activity-schedule-to-close.d.ts +159 -0
  41. package/dist/core/context/activity-schedule-to-close.js +69 -0
  42. package/dist/core/context/child-workflow-pipe.d.ts +5 -5
  43. package/dist/core/context/child-workflow-pipe.js +15 -2
  44. package/dist/core/context/context-presence.d.ts +19 -0
  45. package/dist/core/context/context-presence.js +13 -0
  46. package/dist/core/context/durable-operations.d.ts +25 -0
  47. package/dist/core/context/durable-operations.js +64 -0
  48. package/dist/core/context/index.d.ts +18 -5
  49. package/dist/core/context/index.js +17 -12
  50. package/dist/core/context/internals.d.ts +29 -0
  51. package/dist/core/context/internals.js +6 -1
  52. package/dist/core/context/operation-request.d.ts +35 -0
  53. package/dist/core/context/parallel-cache-entry.d.ts +14 -5
  54. package/dist/core/context/run-operation.d.ts +21 -3
  55. package/dist/core/context/run-operation.js +56 -93
  56. package/dist/core/context/session-state.js +7 -8
  57. package/dist/core/context/speculative-child.js +2 -0
  58. package/dist/core/context/types.d.ts +15 -0
  59. package/dist/core/context/version-patching.d.ts +8 -0
  60. package/dist/core/context/version-patching.js +40 -0
  61. package/dist/core/context/workflow-logger.d.ts +98 -0
  62. package/dist/core/context/workflow-logger.js +68 -0
  63. package/dist/core/engine/activity-heartbeat-tracking.d.ts +64 -0
  64. package/dist/core/engine/activity-heartbeat-tracking.js +42 -0
  65. package/dist/core/engine/activity-per-attempt-timeout.d.ts +41 -0
  66. package/dist/core/engine/activity-per-attempt-timeout.js +36 -0
  67. package/dist/core/engine/activity-reconciliation.d.ts +1 -0
  68. package/dist/core/engine/activity-reconciliation.js +12 -1
  69. package/dist/core/engine/activity-resolution.d.ts +23 -0
  70. package/dist/core/engine/activity-resolution.js +37 -0
  71. package/dist/core/engine/aggregate.js +66 -30
  72. package/dist/core/engine/async-activity-completion.d.ts +23 -6
  73. package/dist/core/engine/async-activity-completion.js +53 -12
  74. package/dist/core/engine/attributes-tags.js +9 -4
  75. package/dist/core/engine/bulk-operations-purge.d.ts +26 -0
  76. package/dist/core/engine/bulk-operations-purge.js +38 -3
  77. package/dist/core/engine/bulk-operations-shared.d.ts +2 -0
  78. package/dist/core/engine/bulk-operations-shared.js +8 -2
  79. package/dist/core/engine/bulk-operations.d.ts +4 -1
  80. package/dist/core/engine/bulk-operations.js +235 -24
  81. package/dist/core/engine/callback-creators-bundles.d.ts +9 -0
  82. package/dist/core/engine/callback-creators-bundles.js +30 -2
  83. package/dist/core/engine/callback-creators-core.js +6 -4
  84. package/dist/core/engine/callback-creators-router.js +10 -0
  85. package/dist/core/engine/callback-creators-schedule.d.ts +2 -2
  86. package/dist/core/engine/callback-creators-schedule.js +12 -8
  87. package/dist/core/engine/candidate-read-batching.d.ts +6 -0
  88. package/dist/core/engine/candidate-read-batching.js +1 -0
  89. package/dist/core/engine/checkpoint-io.js +61 -25
  90. package/dist/core/engine/checkpoint-reads.js +3 -2
  91. package/dist/core/engine/checkpoint-replay.d.ts +20 -0
  92. package/dist/core/engine/checkpoint-replay.js +242 -0
  93. package/dist/core/engine/checkpoint-side-effects.d.ts +23 -0
  94. package/dist/core/engine/checkpoint-side-effects.js +35 -0
  95. package/dist/core/engine/child-workflow-cancellation.d.ts +10 -0
  96. package/dist/core/engine/child-workflow-cancellation.js +40 -0
  97. package/dist/core/engine/child-workflow.js +27 -4
  98. package/dist/core/engine/condition-waiters.d.ts +14 -0
  99. package/dist/core/engine/condition-waiters.js +5 -0
  100. package/dist/core/engine/construction.d.ts +3 -1
  101. package/dist/core/engine/construction.js +30 -8
  102. package/dist/core/engine/coordination-branch-executors.d.ts +70 -0
  103. package/dist/core/engine/coordination-branch-executors.js +107 -0
  104. package/dist/core/engine/deferred-consume-envelope.d.ts +59 -0
  105. package/dist/core/engine/deferred-consume-envelope.js +14 -0
  106. package/dist/core/engine/disposal.js +25 -0
  107. package/dist/core/engine/engine-create-types.d.ts +14 -18
  108. package/dist/core/engine/engine-internal-types.d.ts +38 -3
  109. package/dist/core/engine/engine-leak-warnings.d.ts +6 -0
  110. package/dist/core/engine/engine-leak-warnings.js +4 -0
  111. package/dist/core/engine/engine-runtime-helpers.d.ts +17 -0
  112. package/dist/core/engine/engine-runtime-helpers.js +26 -5
  113. package/dist/core/engine/errors.d.ts +121 -0
  114. package/dist/core/engine/errors.js +45 -1
  115. package/dist/core/engine/event-log-compaction.d.ts +8 -0
  116. package/dist/core/engine/event-log-compaction.js +20 -2
  117. package/dist/core/engine/fenced-write.d.ts +65 -0
  118. package/dist/core/engine/fenced-write.js +71 -0
  119. package/dist/core/engine/finalizer-state.d.ts +28 -0
  120. package/dist/core/engine/finalizer-state.js +16 -0
  121. package/dist/core/engine/handle-result.js +1 -1
  122. package/dist/core/engine/handles.d.ts +97 -40
  123. package/dist/core/engine/handles.js +25 -27
  124. package/dist/core/engine/index.d.ts +125 -15
  125. package/dist/core/engine/index.js +207 -11
  126. package/dist/core/engine/inline-launch-queue.d.ts +14 -0
  127. package/dist/core/engine/inline-launch-queue.js +32 -7
  128. package/dist/core/engine/inline-parking.js +3 -2
  129. package/dist/core/engine/internals.d.ts +125 -13
  130. package/dist/core/engine/lease-codec.d.ts +35 -0
  131. package/dist/core/engine/lease-codec.js +32 -0
  132. package/dist/core/engine/lease-deposition.d.ts +66 -0
  133. package/dist/core/engine/lease-deposition.js +10 -0
  134. package/dist/core/engine/lease-errors.d.ts +99 -0
  135. package/dist/core/engine/lease-errors.js +30 -0
  136. package/dist/core/engine/lease-manager.d.ts +114 -0
  137. package/dist/core/engine/lease-manager.js +135 -0
  138. package/dist/core/engine/lifecycle/fork-helpers.js +1 -7
  139. package/dist/core/engine/lifecycle/persist.js +15 -52
  140. package/dist/core/engine/lifecycle/recovered-services.d.ts +8 -6
  141. package/dist/core/engine/lifecycle/recovered-services.js +18 -3
  142. package/dist/core/engine/lifecycle/resume.js +39 -11
  143. package/dist/core/engine/lifecycle/shared.d.ts +8 -1
  144. package/dist/core/engine/lifecycle/start-batch.d.ts +1 -1
  145. package/dist/core/engine/lifecycle/start-batch.js +2 -1
  146. package/dist/core/engine/lifecycle/start-commit.d.ts +56 -0
  147. package/dist/core/engine/lifecycle/start-commit.js +69 -0
  148. package/dist/core/engine/lifecycle/start-exec.d.ts +30 -2
  149. package/dist/core/engine/lifecycle/start-exec.js +38 -0
  150. package/dist/core/engine/lifecycle/start-or-signal-create.d.ts +58 -0
  151. package/dist/core/engine/lifecycle/start-or-signal-create.js +95 -0
  152. package/dist/core/engine/lifecycle/start-or-signal-resolution.d.ts +79 -0
  153. package/dist/core/engine/lifecycle/start-or-signal-resolution.js +60 -0
  154. package/dist/core/engine/lifecycle/start-or-signal.d.ts +46 -0
  155. package/dist/core/engine/lifecycle/start-or-signal.js +71 -0
  156. package/dist/core/engine/lifecycle/start-terminal-conflict-purge.d.ts +39 -0
  157. package/dist/core/engine/lifecycle/start-terminal-conflict-purge.js +28 -0
  158. package/dist/core/engine/lifecycle/start.d.ts +6 -6
  159. package/dist/core/engine/lifecycle/start.js +47 -45
  160. package/dist/core/engine/lifecycle/transition.js +17 -5
  161. package/dist/core/engine/lifecycle.d.ts +3 -2
  162. package/dist/core/engine/lifecycle.js +9 -2
  163. package/dist/core/engine/list-candidate-resolution.js +2 -2
  164. package/dist/core/engine/listing.js +10 -6
  165. package/dist/core/engine/operations-activity.d.ts +4 -11
  166. package/dist/core/engine/operations-activity.js +22 -49
  167. package/dist/core/engine/operations-coordination.d.ts +10 -0
  168. package/dist/core/engine/operations-coordination.js +43 -8
  169. package/dist/core/engine/operations-router.d.ts +6 -0
  170. package/dist/core/engine/operations-router.js +2 -0
  171. package/dist/core/engine/operations-speculate.js +6 -2
  172. package/dist/core/engine/operations-stream.js +12 -2
  173. package/dist/core/engine/operations-time.d.ts +4 -2
  174. package/dist/core/engine/operations-time.js +14 -2
  175. package/dist/core/engine/operations-wait-condition.d.ts +23 -0
  176. package/dist/core/engine/operations-wait-condition.js +62 -0
  177. package/dist/core/engine/ownership-options.d.ts +23 -0
  178. package/dist/core/engine/ownership-options.js +26 -0
  179. package/dist/core/engine/payload-size-policy.d.ts +3 -0
  180. package/dist/core/engine/payload-size-policy.js +4 -0
  181. package/dist/core/engine/pending-updates.d.ts +17 -0
  182. package/dist/core/engine/pending-updates.js +33 -11
  183. package/dist/core/engine/persisted-data-version.d.ts +5 -9
  184. package/dist/core/engine/persisted-data-version.js +4 -5
  185. package/dist/core/engine/queries.js +1 -1
  186. package/dist/core/engine/registration.d.ts +1 -0
  187. package/dist/core/engine/registration.js +18 -3
  188. package/dist/core/engine/schedule-handle.d.ts +45 -0
  189. package/dist/core/engine/schedule-handle.js +26 -0
  190. package/dist/core/engine/schedule-jitter.d.ts +5 -0
  191. package/dist/core/engine/schedule-jitter.js +10 -0
  192. package/dist/core/engine/schedule-run.d.ts +17 -0
  193. package/dist/core/engine/schedule-run.js +38 -0
  194. package/dist/core/engine/schedule-timer.js +81 -17
  195. package/dist/core/engine/schedules.d.ts +8 -5
  196. package/dist/core/engine/schedules.js +44 -19
  197. package/dist/core/engine/search-attribute-records.d.ts +4 -0
  198. package/dist/core/engine/search-attribute-records.js +17 -0
  199. package/dist/core/engine/second-instance-detector.d.ts +96 -0
  200. package/dist/core/engine/second-instance-detector.js +108 -0
  201. package/dist/core/engine/signals.d.ts +38 -0
  202. package/dist/core/engine/signals.js +55 -19
  203. package/dist/core/engine/state-utilities.d.ts +49 -2
  204. package/dist/core/engine/state-utilities.js +114 -3
  205. package/dist/core/engine/storage-io.d.ts +16 -2
  206. package/dist/core/engine/storage-io.js +26 -5
  207. package/dist/core/engine/stream-chunk-loading.d.ts +2 -0
  208. package/dist/core/engine/stream-chunk-loading.js +24 -1
  209. package/dist/core/engine/sub-operation.js +22 -3
  210. package/dist/core/engine/termination/cleanup.d.ts +28 -1
  211. package/dist/core/engine/termination/cleanup.js +44 -2
  212. package/dist/core/engine/termination/complete.js +48 -9
  213. package/dist/core/engine/termination/finalizer-activity.d.ts +53 -0
  214. package/dist/core/engine/termination/finalizer-activity.js +30 -0
  215. package/dist/core/engine/termination/finalizer-claim.d.ts +110 -0
  216. package/dist/core/engine/termination/finalizer-claim.js +80 -0
  217. package/dist/core/engine/termination/finalizer.d.ts +48 -0
  218. package/dist/core/engine/termination/finalizer.js +159 -0
  219. package/dist/core/engine/termination/suspend.d.ts +70 -0
  220. package/dist/core/engine/termination/suspend.js +41 -0
  221. package/dist/core/engine/termination.d.ts +5 -2
  222. package/dist/core/engine/termination.js +6 -0
  223. package/dist/core/engine/updates.js +5 -25
  224. package/dist/core/engine/validation/schedule.d.ts +2 -1
  225. package/dist/core/engine/validation/schedule.js +51 -2
  226. package/dist/core/engine/validation.js +54 -3
  227. package/dist/core/engine/waiting-update-response.d.ts +8 -0
  228. package/dist/core/engine/waiting-update-response.js +22 -0
  229. package/dist/core/engine/workflow-concurrency.d.ts +10 -0
  230. package/dist/core/engine/workflow-concurrency.js +136 -0
  231. package/dist/core/engine/workflow-feed.d.ts +9 -8
  232. package/dist/core/engine/workflow-feed.js +4 -1
  233. package/dist/core/engine/workflow-indexes.d.ts +9 -0
  234. package/dist/core/engine/workflow-indexes.js +10 -0
  235. package/dist/core/engine/workflow-state-stream.js +33 -13
  236. package/dist/core/engine/workflow-visibility-queries.d.ts +2 -2
  237. package/dist/core/engine-helpers.js +1 -0
  238. package/dist/core/events/activity-events.d.ts +43 -12
  239. package/dist/core/events/activity-events.js +28 -0
  240. package/dist/core/events/attribute-events.d.ts +2 -3
  241. package/dist/core/events/event-map.d.ts +19 -12
  242. package/dist/core/events/index.d.ts +1 -0
  243. package/dist/core/events/index.js +1 -0
  244. package/dist/core/events/schedule-events.d.ts +71 -0
  245. package/dist/core/events/schedule-events.js +29 -0
  246. package/dist/core/events/signal-events.d.ts +4 -6
  247. package/dist/core/events/system-events.d.ts +29 -19
  248. package/dist/core/events/system-events.js +26 -0
  249. package/dist/core/events/update-events.d.ts +6 -8
  250. package/dist/core/events/workflow-events.d.ts +108 -20
  251. package/dist/core/events/workflow-events.js +35 -0
  252. package/dist/core/failure-categories.js +5 -17
  253. package/dist/core/fault-code.d.ts +9 -3
  254. package/dist/core/fault-code.js +1 -0
  255. package/dist/core/inline-execution-strategy.context-options.d.ts +69 -0
  256. package/dist/core/inline-execution-strategy.context-options.js +56 -0
  257. package/dist/core/inline-execution-strategy.d.ts +31 -36
  258. package/dist/core/inline-execution-strategy.js +16 -27
  259. package/dist/core/list-filter-validation.d.ts +1 -1
  260. package/dist/core/list-filter-validation.js +2 -1
  261. package/dist/core/payload-size.d.ts +1 -1
  262. package/dist/core/persisted-data-incompatible-error.d.ts +9 -7
  263. package/dist/core/review/events.d.ts +6 -8
  264. package/dist/core/scheduler/scheduler-class.d.ts +10 -1
  265. package/dist/core/scheduler/scheduler-class.js +38 -11
  266. package/dist/core/scheduler/timer-batch.js +9 -1
  267. package/dist/core/scheduler/timer-sources.d.ts +1 -0
  268. package/dist/core/scheduler/timer-sources.js +11 -5
  269. package/dist/core/session-state.d.ts +0 -1
  270. package/dist/core/session-state.js +2 -2
  271. package/dist/core/start-workflow-validation.d.ts +56 -0
  272. package/dist/core/start-workflow-validation.js +30 -1
  273. package/dist/core/step-context.d.ts +10 -6
  274. package/dist/core/step-context.js +7 -15
  275. package/dist/core/types/activity-verification.d.ts +67 -0
  276. package/dist/core/types/activity-verification.js +0 -0
  277. package/dist/core/types/activity.d.ts +86 -64
  278. package/dist/core/types/bulk.d.ts +50 -9
  279. package/dist/core/types/checkpoint.d.ts +44 -8
  280. package/dist/core/types/identity.d.ts +8 -1
  281. package/dist/core/types/launch-metadata.d.ts +33 -0
  282. package/dist/core/types/launch-metadata.js +0 -0
  283. package/dist/core/types/list-options.d.ts +146 -0
  284. package/dist/core/types/list-options.js +0 -0
  285. package/dist/core/types/message-handles.d.ts +25 -0
  286. package/dist/core/types/options.d.ts +165 -215
  287. package/dist/core/types/reviews.d.ts +2 -1
  288. package/dist/core/types/schedules.d.ts +39 -3
  289. package/dist/core/types/services-resolution.d.ts +47 -0
  290. package/dist/core/types/services-resolution.js +0 -0
  291. package/dist/core/types/state.d.ts +11 -11
  292. package/dist/core/types/workflow-builder-runtime.d.ts +12 -3
  293. package/dist/core/types/workflow-builder-runtime.js +11 -2
  294. package/dist/core/types/workflow-builder.d.ts +47 -15
  295. package/dist/core/types/workflow-concurrency.d.ts +39 -0
  296. package/dist/core/types/workflow-concurrency.js +0 -0
  297. package/dist/core/types/workflow-context.d.ts +157 -14
  298. package/dist/core/types/workflow-definition.d.ts +53 -10
  299. package/dist/core/types/workflow-function.d.ts +101 -9
  300. package/dist/core/types/workflow-log.d.ts +98 -0
  301. package/dist/core/types/workflow-log.js +0 -0
  302. package/dist/core/types/workflow-registries.d.ts +14 -3
  303. package/dist/core/types/workflow-registry.d.ts +3 -0
  304. package/dist/core/types/workflow-snapshot.d.ts +29 -0
  305. package/dist/core/types/workflow-snapshot.js +0 -0
  306. package/dist/core/types.d.ts +7 -0
  307. package/dist/core/types.js +7 -0
  308. package/dist/core/versioning.d.ts +9 -39
  309. package/dist/core/versioning.js +2 -12
  310. package/dist/core/weft-error.d.ts +44 -1
  311. package/dist/core/weft-error.js +19 -1
  312. package/dist/core/worker-execution-strategy-options.d.ts +26 -0
  313. package/dist/core/worker-execution-strategy.js +40 -36
  314. package/dist/core/worker-inbound-message.d.ts +38 -0
  315. package/dist/core/worker-inbound-message.js +37 -0
  316. package/dist/core/worker-log-abuse-counter.d.ts +175 -0
  317. package/dist/core/worker-log-abuse-counter.js +107 -0
  318. package/dist/core/worker-message-helpers.d.ts +47 -0
  319. package/dist/core/worker-message-helpers.js +26 -0
  320. package/dist/core/worker-protocol-guard.js +1 -1
  321. package/dist/core/worker-protocol-log.d.ts +56 -0
  322. package/dist/core/worker-protocol-log.js +18 -0
  323. package/dist/core/worker-protocol.d.ts +23 -0
  324. package/dist/core/worker-protocol.js +12 -2
  325. package/dist/core/workflow-version-tuple.d.ts +3 -9
  326. package/dist/core/workflow-version-tuple.js +2 -3
  327. package/dist/diagnostics/doctor.js +6 -3
  328. package/dist/diagnostics/format.js +3 -8
  329. package/dist/diagnostics/types.d.ts +5 -5
  330. package/dist/diagnostics/validate.d.ts +0 -1
  331. package/dist/diagnostics/version-check.d.ts +1 -1
  332. package/dist/diagnostics/version-check.js +10 -13
  333. package/dist/index.d.ts +13 -11
  334. package/dist/index.js +39 -4
  335. package/dist/json-schema.js +3 -3
  336. package/dist/mcp/cli.js +35 -35
  337. package/dist/mcp/dispatcher.js +1 -1
  338. package/dist/mcp/http.js +16 -6
  339. package/dist/mcp/list-filter.js +2 -1
  340. package/dist/mcp/protocol.d.ts +2 -0
  341. package/dist/mcp/protocol.js +1 -1
  342. package/dist/mcp/session.d.ts +16 -0
  343. package/dist/mcp/session.js +60 -6
  344. package/dist/mcp/tools.js +73 -6
  345. package/dist/observability/index.js +2 -2
  346. package/dist/server/asyncapi-channels.js +5 -2
  347. package/dist/server/attribute-filters.d.ts +8 -3
  348. package/dist/server/attribute-filters.js +6 -1
  349. package/dist/server/authentication/api-key.d.ts +2 -1
  350. package/dist/server/authentication/api-key.js +5 -2
  351. package/dist/server/authentication/constant-time-api-key.d.ts +15 -0
  352. package/dist/server/authentication/constant-time-api-key.js +24 -0
  353. package/dist/server/authentication/index.d.ts +1 -1
  354. package/dist/server/authentication/index.js +7 -4
  355. package/dist/server/authentication/rotating-api-key-store.d.ts +5 -3
  356. package/dist/server/authentication/rotating-api-key-store.js +19 -11
  357. package/dist/server/engine-event-feed-backend.d.ts +4 -5
  358. package/dist/server/fault-to-http.js +8 -1
  359. package/dist/server/fault-to-json-rpc.js +1 -0
  360. package/dist/server/fleet-event-feed.d.ts +31 -0
  361. package/dist/server/fleet-event-feed.js +157 -0
  362. package/dist/server/handler/index.js +1 -1
  363. package/dist/server/handler/response-helpers.js +2 -1
  364. package/dist/server/handler/route-dispatch.d.ts +6 -3
  365. package/dist/server/handler/route-dispatch.js +2 -2
  366. package/dist/server/handler.js +31 -31
  367. package/dist/server/index.d.ts +32 -2
  368. package/dist/server/index.js +35 -35
  369. package/dist/server/interactive-operations.js +1 -0
  370. package/dist/server/json-rpc-transport-helpers.d.ts +1 -0
  371. package/dist/server/json-rpc-transport-helpers.js +2 -1
  372. package/dist/server/json-rpc-websocket-runtime.d.ts +11 -2
  373. package/dist/server/json-rpc-websocket-runtime.js +1 -0
  374. package/dist/server/json-rpc-websocket-subscriptions.d.ts +10 -0
  375. package/dist/server/json-rpc-websocket-subscriptions.js +29 -0
  376. package/dist/server/json-rpc-websocket-types.d.ts +22 -0
  377. package/dist/server/json-rpc-websocket-types.js +0 -0
  378. package/dist/server/json-rpc-websocket-validation.js +20 -4
  379. package/dist/server/json-rpc-websocket.d.ts +2 -43
  380. package/dist/server/json-rpc-websocket.js +57 -74
  381. package/dist/server/openapi.d.ts +2 -1
  382. package/dist/server/openapi.js +1 -3
  383. package/dist/server/openrpc-document-schema.d.ts +78 -0
  384. package/dist/server/openrpc-document-schema.js +27 -1
  385. package/dist/server/openrpc-errors.d.ts +3 -0
  386. package/dist/server/openrpc-errors.js +2 -1
  387. package/dist/server/openrpc.js +32 -0
  388. package/dist/server/operation-catalog/index.d.ts +1 -1
  389. package/dist/server/operation-catalog/pipeline-helpers.js +1 -0
  390. package/dist/server/operation-catalog/pipeline-stages.js +26 -12
  391. package/dist/server/operation-catalog/pipeline.js +8 -1
  392. package/dist/server/operation-catalog/registry.js +13 -0
  393. package/dist/server/operation-catalog/types.d.ts +20 -9
  394. package/dist/server/operation-fault.d.ts +10 -0
  395. package/dist/server/operation-fault.js +2 -0
  396. package/dist/server/operation-registry.d.ts +12 -11
  397. package/dist/server/operation-registry.js +12 -3
  398. package/dist/server/operations/aggregate-workflows.d.ts +15 -15
  399. package/dist/server/operations/async-activity.d.ts +2 -2
  400. package/dist/server/operations/async-activity.js +12 -7
  401. package/dist/server/operations/bulk-cancel-workflows.d.ts +1 -1
  402. package/dist/server/operations/bulk-cancel-workflows.js +2 -2
  403. package/dist/server/operations/bulk-delete-workflows.d.ts +1 -1
  404. package/dist/server/operations/bulk-delete-workflows.js +2 -2
  405. package/dist/server/operations/bulk-filter-helpers.d.ts +8 -6
  406. package/dist/server/operations/bulk-filter-helpers.js +54 -24
  407. package/dist/server/operations/bulk-mutate-workflow-tags.d.ts +11 -9
  408. package/dist/server/operations/bulk-mutate-workflow-tags.js +2 -2
  409. package/dist/server/operations/bulk-operation-helpers.d.ts +2 -2
  410. package/dist/server/operations/bulk-retry-failed-workflows.d.ts +7 -0
  411. package/dist/server/operations/bulk-retry-failed-workflows.js +64 -0
  412. package/dist/server/operations/bulk-signal-workflows.d.ts +11 -9
  413. package/dist/server/operations/bulk-signal-workflows.js +2 -2
  414. package/dist/server/operations/cancel-schedule.d.ts +1 -1
  415. package/dist/server/operations/create-schedule.d.ts +3 -1
  416. package/dist/server/operations/create-schedule.js +29 -11
  417. package/dist/server/operations/fleet-events-subscription.d.ts +54 -0
  418. package/dist/server/operations/fleet-events-subscription.js +99 -0
  419. package/dist/server/operations/fork-workflow.d.ts +1 -1
  420. package/dist/server/operations/fork-workflow.js +3 -2
  421. package/dist/server/operations/get-checkpoint-at.d.ts +1 -1
  422. package/dist/server/operations/get-registry.d.ts +1 -1
  423. package/dist/server/operations/get-retention-overview.d.ts +1 -1
  424. package/dist/server/operations/get-review.d.ts +1 -1
  425. package/dist/server/operations/get-schedule.d.ts +1 -1
  426. package/dist/server/operations/get-stream-chunks.d.ts +1 -1
  427. package/dist/server/operations/get-system-metrics.d.ts +2 -2
  428. package/dist/server/operations/get-task-diagnostics.d.ts +45 -6
  429. package/dist/server/operations/get-task-diagnostics.js +101 -7
  430. package/dist/server/operations/get-update-result.d.ts +1 -1
  431. package/dist/server/operations/get-workflow-attributes.d.ts +1 -1
  432. package/dist/server/operations/get-workflow-events.d.ts +1 -1
  433. package/dist/server/operations/get-workflow-result.d.ts +1 -1
  434. package/dist/server/operations/get-workflow-timeline.d.ts +1 -1
  435. package/dist/server/operations/get-workflow.d.ts +1 -1
  436. package/dist/server/operations/list-checkpoints.d.ts +1 -1
  437. package/dist/server/operations/list-reviews.d.ts +1 -1
  438. package/dist/server/operations/list-schedules.d.ts +1 -1
  439. package/dist/server/operations/list-task-queues.d.ts +2 -2
  440. package/dist/server/operations/list-workers.d.ts +2 -2
  441. package/dist/server/operations/list-workflows.d.ts +1 -1
  442. package/dist/server/operations/operation-helpers.d.ts +16 -1
  443. package/dist/server/operations/operation-helpers.js +15 -3
  444. package/dist/server/operations/pause-schedule.d.ts +1 -1
  445. package/dist/server/operations/purge-workflows.d.ts +5 -5
  446. package/dist/server/operations/purge-workflows.js +2 -2
  447. package/dist/server/operations/query-workflow.d.ts +1 -1
  448. package/dist/server/operations/query-workflow.js +3 -2
  449. package/dist/server/operations/recover-all.d.ts +1 -1
  450. package/dist/server/operations/replay-workflow.d.ts +1 -1
  451. package/dist/server/operations/resume-schedule.d.ts +1 -1
  452. package/dist/server/operations/resume-workflow.js +2 -2
  453. package/dist/server/operations/set-workflow-attributes.d.ts +1 -1
  454. package/dist/server/operations/set-workflow-attributes.js +6 -3
  455. package/dist/server/operations/signal-workflow.js +8 -3
  456. package/dist/server/operations/single-workflow-tag-mutation.js +13 -3
  457. package/dist/server/operations/start-or-signal-workflow.d.ts +44 -0
  458. package/dist/server/operations/start-or-signal-workflow.js +130 -0
  459. package/dist/server/operations/start-workflow-options.d.ts +38 -0
  460. package/dist/server/operations/start-workflow-options.js +63 -0
  461. package/dist/server/operations/start-workflow-rest-input.d.ts +14 -0
  462. package/dist/server/operations/start-workflow-rest-input.js +31 -0
  463. package/dist/server/operations/start-workflow.d.ts +1 -1
  464. package/dist/server/operations/start-workflow.js +15 -92
  465. package/dist/server/operations/storage.d.ts +6 -6
  466. package/dist/server/operations/storage.js +24 -14
  467. package/dist/server/operations/stream-workflow-sse.d.ts +1 -1
  468. package/dist/server/operations/submit-review-decision.d.ts +1 -1
  469. package/dist/server/operations/submit-review-decision.js +6 -3
  470. package/dist/server/operations/suspend-workflow.d.ts +13 -0
  471. package/dist/server/operations/suspend-workflow.js +36 -0
  472. package/dist/server/operations/update-schedule.d.ts +1 -1
  473. package/dist/server/operations/update-schedule.js +7 -4
  474. package/dist/server/operations/update-workflow.d.ts +1 -1
  475. package/dist/server/operations/update-workflow.js +7 -3
  476. package/dist/server/operations/worker-drain.d.ts +8 -8
  477. package/dist/server/operations/worker-drain.js +11 -8
  478. package/dist/server/operations/workflow-events-subscription.d.ts +7 -8
  479. package/dist/server/operations/workflow-events-subscription.js +43 -8
  480. package/dist/server/rest-binding.d.ts +21 -8
  481. package/dist/server/rest-bindings.js +24 -0
  482. package/dist/server/rest-body.d.ts +10 -0
  483. package/dist/server/rest-body.js +80 -0
  484. package/dist/server/runtime/authentication-bridge.d.ts +1 -0
  485. package/dist/server/runtime/authentication-bridge.js +33 -6
  486. package/dist/server/runtime/client-visible-events.d.ts +3 -0
  487. package/dist/server/runtime/client-visible-events.js +65 -0
  488. package/dist/server/runtime/context.d.ts +7 -0
  489. package/dist/server/runtime/event-broadcasting.d.ts +6 -0
  490. package/dist/server/runtime/event-broadcasting.js +72 -38
  491. package/dist/server/runtime/retry.d.ts +1 -0
  492. package/dist/server/runtime/retry.js +14 -0
  493. package/dist/server/runtime/shutdown.d.ts +7 -6
  494. package/dist/server/runtime/shutdown.js +6 -1
  495. package/dist/server/runtime/task-dispatch.js +5 -3
  496. package/dist/server/runtime/task-polling.d.ts +16 -2
  497. package/dist/server/runtime/task-polling.js +80 -24
  498. package/dist/server/runtime/task-reconciliation.js +9 -1
  499. package/dist/server/runtime/task-result-resolution.d.ts +15 -0
  500. package/dist/server/runtime/task-result-resolution.js +81 -0
  501. package/dist/server/runtime/websocket-stream.d.ts +20 -1
  502. package/dist/server/runtime/websocket-stream.js +173 -7
  503. package/dist/server/runtime/websocket-upgrade.js +22 -3
  504. package/dist/server/runtime/websocket-worker.d.ts +1 -1
  505. package/dist/server/runtime/websocket-worker.js +46 -30
  506. package/dist/server/serve-internals.d.ts +11 -1
  507. package/dist/server/serve-internals.js +20 -2
  508. package/dist/server/task-state.d.ts +38 -0
  509. package/dist/server/task-state.js +28 -0
  510. package/dist/server/workflow-event-feed.d.ts +36 -115
  511. package/dist/server/workflow-event-feed.js +92 -27
  512. package/dist/service-worker/index.js +31 -31
  513. package/dist/storage/auto.js +1 -1
  514. package/dist/storage/bun-sql.js +24 -0
  515. package/dist/storage/capabilities.d.ts +10 -2
  516. package/dist/storage/capabilities.js +2 -2
  517. package/dist/storage/compressed-storage.js +1 -1
  518. package/dist/storage/default-scope.d.ts +7 -4
  519. package/dist/storage/http.js +2 -2
  520. package/dist/storage/index.d.ts +81 -4
  521. package/dist/storage/indexeddb.js +1 -1
  522. package/dist/storage/interface.d.ts +189 -0
  523. package/dist/storage/interface.js +1 -1
  524. package/dist/storage/key-prefixes.d.ts +1 -1
  525. package/dist/storage/key-prefixes.js +12 -0
  526. package/dist/storage/lmdb.d.ts +4 -3
  527. package/dist/storage/lmdb.js +1 -1
  528. package/dist/storage/memory.js +1 -1
  529. package/dist/storage/neon-batch.d.ts +30 -0
  530. package/dist/storage/neon-batch.js +30 -0
  531. package/dist/storage/neon-value-mapping.d.ts +74 -0
  532. package/dist/storage/neon-value-mapping.js +23 -0
  533. package/dist/storage/neon.d.ts +124 -0
  534. package/dist/storage/neon.js +15 -0
  535. package/dist/storage/node-sqlite-loader.d.ts +71 -0
  536. package/dist/storage/node-sqlite-loader.js +41 -0
  537. package/dist/storage/node-sqlite.d.ts +1 -19
  538. package/dist/storage/node-sqlite.js +61 -32
  539. package/dist/storage/postgres-key-value-queries.d.ts +104 -0
  540. package/dist/storage/postgres-key-value-queries.js +101 -0
  541. package/dist/storage/resolve.d.ts +2 -165
  542. package/dist/storage/resolve.js +1 -1
  543. package/dist/storage/scoped-storage.js +1 -1
  544. package/dist/storage/storage-configuration.d.ts +209 -0
  545. package/dist/storage/storage-configuration.js +0 -0
  546. package/dist/storage/testing.d.ts +168 -0
  547. package/dist/storage/testing.js +2 -0
  548. package/dist/storage/text-value-store.d.ts +9 -9
  549. package/dist/storage/turso.d.ts +8 -0
  550. package/dist/storage/turso.js +2 -2
  551. package/dist/storage/typed-storage.js +1 -1
  552. package/dist/storage/web-extension.js +1 -1
  553. package/dist/testing/index.js +35 -35
  554. package/dist/version.d.ts +1 -1
  555. package/dist/version.js +1 -1
  556. package/dist/worker/index.js +9 -5
  557. package/dist/worker/long-poll.js +4 -0
  558. package/dist/worker/protocol-messages.d.ts +20 -0
  559. package/dist/worker/protocol-schemas.d.ts +32 -0
  560. package/dist/worker/protocol-schemas.js +8 -4
  561. package/dist/worker/protocol-task-result.d.ts +28 -0
  562. package/dist/worker/protocol-task-result.js +76 -0
  563. package/dist/worker/protocol.d.ts +4 -15
  564. package/dist/worker/protocol.js +1 -1
  565. package/dist/worker/registry/fair-share.d.ts +29 -0
  566. package/dist/worker/registry/fair-share.js +30 -0
  567. package/dist/worker/registry/routing.d.ts +18 -0
  568. package/dist/worker/registry/routing.js +14 -0
  569. package/dist/worker/registry/types.d.ts +7 -0
  570. package/dist/worker/registry.d.ts +16 -1
  571. package/dist/worker/registry.js +24 -36
  572. package/dist/workers/worker-replay-state.d.ts +32 -0
  573. package/dist/workers/worker-replay-state.js +35 -0
  574. package/dist/workers/worker-state-namespace.d.ts +21 -0
  575. package/dist/workers/worker-state-namespace.js +13 -0
  576. package/dist/workers/workflow-runner.d.ts +19 -15
  577. package/dist/workers/workflow-runner.js +72 -60
  578. package/dist/workers/workflow-worker-entry.js +5 -2
  579. package/package.json +21 -4
@@ -0,0 +1,29 @@
1
+ export class ScheduleFiredEvent extends Event {
2
+ static type = "schedule:fired";
3
+ scheduleId;
4
+ workflowId;
5
+ firedAt;
6
+ occurrence;
7
+ constructor(scheduleId, workflowId, firedAt, occurrence) {
8
+ super(ScheduleFiredEvent.type);
9
+ this.scheduleId = scheduleId;
10
+ this.workflowId = workflowId;
11
+ this.firedAt = firedAt;
12
+ this.occurrence = occurrence;
13
+ }
14
+ }
15
+
16
+ export class ScheduleMissedFireEvent extends Event {
17
+ static type = "schedule:missed-fire";
18
+ scheduleId;
19
+ missedCount;
20
+ windowStart;
21
+ windowEnd;
22
+ constructor(scheduleId, missedCount, windowStart, windowEnd) {
23
+ super(ScheduleMissedFireEvent.type);
24
+ this.scheduleId = scheduleId;
25
+ this.missedCount = missedCount;
26
+ this.windowStart = windowStart;
27
+ this.windowEnd = windowEnd;
28
+ }
29
+ }
@@ -8,9 +8,8 @@
8
8
  * import { Engine, SignalReceivedEvent } from '@lostgradient/weft';
9
9
  *
10
10
  * const engine = new Engine();
11
- * engine.addEventListener('signal:received', (e: Event) => {
12
- * const ev = e as SignalReceivedEvent;
13
- * console.log(ev.workflowId, 'received signal', ev.signalName);
11
+ * engine.addEventListener(SignalReceivedEvent.type, (event) => {
12
+ * console.log(event.workflowId, 'received signal', event.signalName);
14
13
  * });
15
14
  * ```
16
15
  */
@@ -31,9 +30,8 @@ export declare class SignalReceivedEvent extends Event {
31
30
  * import { Engine, SignalDeliveredEvent } from '@lostgradient/weft';
32
31
  *
33
32
  * const engine = new Engine();
34
- * engine.addEventListener('signal:delivered', (e: Event) => {
35
- * const ev = e as SignalDeliveredEvent;
36
- * console.log('signal', ev.signalName, 'delivered to', ev.workflowId);
33
+ * engine.addEventListener(SignalDeliveredEvent.type, (event) => {
34
+ * console.log('signal', event.signalName, 'delivered to', event.workflowId);
37
35
  * });
38
36
  * ```
39
37
  */
@@ -9,9 +9,8 @@ import type { ConstraintViolation } from '../constraint.ts';
9
9
  * import { Engine, CheckpointSizeWarningEvent } from '@lostgradient/weft';
10
10
  *
11
11
  * const engine = new Engine({ checkpointSizeWarningThreshold: 32_000 });
12
- * engine.addEventListener('checkpoint:size-warning', (e: Event) => {
13
- * const ev = e as CheckpointSizeWarningEvent;
14
- * console.warn(ev.workflowId, 'checkpoint at step', ev.step, 'is', ev.sizeBytes, 'bytes');
12
+ * engine.addEventListener(CheckpointSizeWarningEvent.type, (event) => {
13
+ * console.warn(event.workflowId, 'checkpoint at step', event.step, 'is', event.sizeBytes, 'bytes');
15
14
  * });
16
15
  * ```
17
16
  */
@@ -33,9 +32,8 @@ export declare class CheckpointSizeWarningEvent extends Event {
33
32
  * import { Engine, DevelopmentWarningEvent } from '@lostgradient/weft';
34
33
  *
35
34
  * const engine = new Engine({ development: true });
36
- * engine.addEventListener('development:warning', (e: Event) => {
37
- * const ev = e as DevelopmentWarningEvent;
38
- * console.warn('[dev]', ev.message, 'paths:', ev.fieldPaths);
35
+ * engine.addEventListener(DevelopmentWarningEvent.type, (event) => {
36
+ * console.warn('[dev]', event.message, 'paths:', event.fieldPaths);
39
37
  * });
40
38
  * ```
41
39
  */
@@ -63,9 +61,8 @@ export declare class CleanupWarningEvent extends Event {
63
61
  * import { Engine, StorageSizeReportedEvent } from '@lostgradient/weft';
64
62
  *
65
63
  * const engine = new Engine();
66
- * engine.addEventListener('storage:size-reported', (e: Event) => {
67
- * const ev = e as StorageSizeReportedEvent;
68
- * console.log('total storage:', ev.sizeBytes, 'bytes');
64
+ * engine.addEventListener(StorageSizeReportedEvent.type, (event) => {
65
+ * console.log('total storage:', event.sizeBytes, 'bytes');
69
66
  * });
70
67
  * ```
71
68
  */
@@ -74,6 +71,22 @@ export declare class StorageSizeReportedEvent extends Event {
74
71
  readonly sizeBytes: number;
75
72
  constructor(sizeBytes: number);
76
73
  }
74
+ /** Fired when a remote worker successfully registers with the server runtime. */
75
+ export declare class WorkerConnectedEvent extends Event {
76
+ static readonly type: "worker:connected";
77
+ readonly workerId: string;
78
+ readonly queue: string;
79
+ readonly activities: readonly string[];
80
+ readonly concurrency: number;
81
+ constructor(workerId: string, queue: string, activities: readonly string[], concurrency: number);
82
+ }
83
+ /** Fired when a registered remote worker is removed after disconnect handling. */
84
+ export declare class WorkerDisconnectedEvent extends Event {
85
+ static readonly type: "worker:disconnected";
86
+ readonly workerId: string;
87
+ readonly inFlightTaskCount: number;
88
+ constructor(workerId: string, inFlightTaskCount: number);
89
+ }
77
90
  /**
78
91
  * Fired on the {@link Engine} when a built-in alert metric breaches its
79
92
  * threshold. Read `e.metric`, `e.threshold`, `e.currentValue`, and
@@ -84,9 +97,8 @@ export declare class StorageSizeReportedEvent extends Event {
84
97
  * import { Engine, AlertFiredEvent } from '@lostgradient/weft';
85
98
  *
86
99
  * const engine = new Engine();
87
- * engine.addEventListener('alert:fired', (e: Event) => {
88
- * const ev = e as AlertFiredEvent;
89
- * console.warn('alert fired:', ev.metric, 'current:', ev.currentValue, 'threshold:', ev.threshold);
100
+ * engine.addEventListener(AlertFiredEvent.type, (event) => {
101
+ * console.warn('alert fired:', event.metric, 'current:', event.currentValue, 'threshold:', event.threshold);
90
102
  * });
91
103
  * ```
92
104
  */
@@ -108,9 +120,8 @@ export declare class AlertFiredEvent extends Event {
108
120
  * import { Engine, AlertResolvedEvent } from '@lostgradient/weft';
109
121
  *
110
122
  * const engine = new Engine();
111
- * engine.addEventListener('alert:resolved', (e: Event) => {
112
- * const ev = e as AlertResolvedEvent;
113
- * console.log('alert resolved:', ev.metric, 'value back to', ev.currentValue);
123
+ * engine.addEventListener(AlertResolvedEvent.type, (event) => {
124
+ * console.log('alert resolved:', event.metric, 'value back to', event.currentValue);
114
125
  * });
115
126
  * ```
116
127
  */
@@ -132,10 +143,9 @@ export declare class AlertResolvedEvent extends Event {
132
143
  * import { Engine, ConstraintViolatedEvent } from '@lostgradient/weft';
133
144
  *
134
145
  * const engine = new Engine();
135
- * engine.addEventListener('constraint:violated', (e: Event) => {
136
- * const ev = e as ConstraintViolatedEvent;
137
- * console.warn('constraint', ev.constraintName, 'violated in', ev.workflowId,
138
- * 'action:', ev.onViolation);
146
+ * engine.addEventListener(ConstraintViolatedEvent.type, (event) => {
147
+ * console.warn('constraint', event.constraintName, 'violated in', event.workflowId,
148
+ * 'action:', event.onViolation);
139
149
  * });
140
150
  * ```
141
151
  */
@@ -46,6 +46,32 @@ export class StorageSizeReportedEvent extends Event {
46
46
  }
47
47
  }
48
48
 
49
+ export class WorkerConnectedEvent extends Event {
50
+ static type = "worker:connected";
51
+ workerId;
52
+ queue;
53
+ activities;
54
+ concurrency;
55
+ constructor(workerId, queue, activities, concurrency) {
56
+ super(WorkerConnectedEvent.type);
57
+ this.workerId = workerId;
58
+ this.queue = queue;
59
+ this.activities = activities;
60
+ this.concurrency = concurrency;
61
+ }
62
+ }
63
+
64
+ export class WorkerDisconnectedEvent extends Event {
65
+ static type = "worker:disconnected";
66
+ workerId;
67
+ inFlightTaskCount;
68
+ constructor(workerId, inFlightTaskCount) {
69
+ super(WorkerDisconnectedEvent.type);
70
+ this.workerId = workerId;
71
+ this.inFlightTaskCount = inFlightTaskCount;
72
+ }
73
+ }
74
+
49
75
  export class AlertFiredEvent extends Event {
50
76
  static type = "alert:fired";
51
77
  metric;
@@ -8,9 +8,8 @@
8
8
  * import { Engine, UpdateReceivedEvent } from '@lostgradient/weft';
9
9
  *
10
10
  * const engine = new Engine();
11
- * engine.addEventListener('update:received', (e: Event) => {
12
- * const ev = e as UpdateReceivedEvent;
13
- * console.log('update', ev.name, 'received for', ev.workflowId, '(id:', ev.updateId, ')');
11
+ * engine.addEventListener(UpdateReceivedEvent.type, (event) => {
12
+ * console.log('update', event.name, 'received for', event.workflowId, '(id:', event.updateId, ')');
14
13
  * });
15
14
  * ```
16
15
  */
@@ -32,12 +31,11 @@ export declare class UpdateReceivedEvent extends Event {
32
31
  * import { Engine, UpdateCompletedEvent } from '@lostgradient/weft';
33
32
  *
34
33
  * const engine = new Engine();
35
- * engine.addEventListener('update:completed', (e: Event) => {
36
- * const ev = e as UpdateCompletedEvent;
37
- * if (ev.error) {
38
- * console.error('update', ev.name, 'failed:', ev.error);
34
+ * engine.addEventListener(UpdateCompletedEvent.type, (event) => {
35
+ * if (event.error) {
36
+ * console.error('update', event.name, 'failed:', event.error);
39
37
  * } else {
40
- * console.log('update', ev.name, 'result:', ev.result);
38
+ * console.log('update', event.name, 'result:', event.result);
41
39
  * }
42
40
  * });
43
41
  * ```
@@ -1,4 +1,24 @@
1
1
  import type { TerminationReason } from '../types/history-policy.ts';
2
+ /**
3
+ * Fired on the {@link Engine} after a workflow definition is successfully
4
+ * registered. Same-reference idempotent registration does not emit this event.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * import { Engine, WorkflowDefinitionRegisteredEvent, workflow } from '@lostgradient/weft';
9
+ *
10
+ * const engine = new Engine();
11
+ * engine.addEventListener(WorkflowDefinitionRegisteredEvent.type, (event) => {
12
+ * console.log('registered workflow:', event.workflowType);
13
+ * });
14
+ * engine.register(workflow({ name: 'ping' }).execute(async function* () { return 'pong'; }));
15
+ * ```
16
+ */
17
+ export declare class WorkflowDefinitionRegisteredEvent extends Event {
18
+ static readonly type: "workflow:definition-registered";
19
+ readonly workflowType: string;
20
+ constructor(workflowType: string);
21
+ }
2
22
  /**
3
23
  * Fired on the {@link Engine} when a new workflow execution begins. Listen via
4
24
  * `engine.addEventListener('workflow:started', handler)` and read
@@ -9,9 +29,8 @@ import type { TerminationReason } from '../types/history-policy.ts';
9
29
  * import { workflow, Engine, WorkflowStartedEvent } from '@lostgradient/weft';
10
30
  *
11
31
  * const engine = new Engine();
12
- * engine.addEventListener('workflow:started', (e: Event) => {
13
- * const ev = e as WorkflowStartedEvent;
14
- * console.log('started', ev.workflowId, ev.workflowType);
32
+ * engine.addEventListener(WorkflowStartedEvent.type, (event) => {
33
+ * console.log('started', event.workflowId, event.workflowType);
15
34
  * });
16
35
  * engine.register(workflow({ name: 'ping' }).execute(async function* () { return 'pong'; }));
17
36
  * await engine.start('ping', null);
@@ -34,9 +53,8 @@ export declare class WorkflowStartedEvent extends Event {
34
53
  * import { workflow, Engine, WorkflowCompletedEvent } from '@lostgradient/weft';
35
54
  *
36
55
  * const engine = new Engine();
37
- * engine.addEventListener('workflow:completed', (e: Event) => {
38
- * const ev = e as WorkflowCompletedEvent;
39
- * console.log('completed in', ev.duration, 'ms, result:', ev.result);
56
+ * engine.addEventListener(WorkflowCompletedEvent.type, (event) => {
57
+ * console.log('completed in', event.duration, 'ms, result:', event.result);
40
58
  * });
41
59
  * engine.register(workflow({ name: 'ping' }).execute(async function* () { return 'pong'; }));
42
60
  * await (await engine.start('ping', null)).result();
@@ -59,9 +77,8 @@ export declare class WorkflowCompletedEvent extends Event {
59
77
  * import { workflow, Engine, WorkflowFailedEvent } from '@lostgradient/weft';
60
78
  *
61
79
  * const engine = new Engine();
62
- * engine.addEventListener('workflow:failed', (e: Event) => {
63
- * const ev = e as WorkflowFailedEvent;
64
- * console.error('workflow', ev.workflowId, 'failed:', ev.error.message);
80
+ * engine.addEventListener(WorkflowFailedEvent.type, (event) => {
81
+ * console.error('workflow', event.workflowId, 'failed:', event.error.message);
65
82
  * });
66
83
  * engine.register(workflow({ name: 'boom' }).execute(async function* () { throw new Error('oops'); }));
67
84
  * await engine.start('boom', null).then(h => h.result()).catch(() => undefined);
@@ -83,9 +100,8 @@ export declare class WorkflowFailedEvent extends Event {
83
100
  * import { Engine, workflow, WorkflowCancelledEvent } from '@lostgradient/weft';
84
101
  *
85
102
  * const engine = new Engine();
86
- * engine.addEventListener('workflow:cancelled', (e: Event) => {
87
- * const ev = e as WorkflowCancelledEvent;
88
- * console.log('cancelled', ev.workflowId);
103
+ * engine.addEventListener(WorkflowCancelledEvent.type, (event) => {
104
+ * console.log('cancelled', event.workflowId);
89
105
  * });
90
106
  * engine.register(
91
107
  * workflow({ name: 'slow' }).execute(async function* (
@@ -117,9 +133,8 @@ export declare class WorkflowCancelledEvent extends Event {
117
133
  * import { Engine, WorkflowTimedOutEvent } from '@lostgradient/weft';
118
134
  *
119
135
  * const engine = new Engine();
120
- * engine.addEventListener('workflow:timed-out', (e: Event) => {
121
- * const ev = e as WorkflowTimedOutEvent;
122
- * console.log(ev.workflowId, 'timed out after', ev.elapsed, 'ms (', ev.timeoutType, ')');
136
+ * engine.addEventListener(WorkflowTimedOutEvent.type, (event) => {
137
+ * console.log(event.workflowId, 'timed out after', event.elapsed, 'ms (', event.timeoutType, ')');
123
138
  * });
124
139
  * ```
125
140
  */
@@ -148,9 +163,8 @@ export declare const WORKFLOW_TERMINAL_EVENT_TYPES: ReadonlySet<string>;
148
163
  * import { Engine, WorkflowResumedEvent } from '@lostgradient/weft';
149
164
  *
150
165
  * const engine = new Engine();
151
- * engine.addEventListener('workflow:resumed', (e: Event) => {
152
- * const ev = e as WorkflowResumedEvent;
153
- * console.log('resumed', ev.workflowId, 'from step', ev.fromStep);
166
+ * engine.addEventListener(WorkflowResumedEvent.type, (event) => {
167
+ * console.log('resumed', event.workflowId, 'from step', event.fromStep);
154
168
  * });
155
169
  * ```
156
170
  */
@@ -160,6 +174,28 @@ export declare class WorkflowResumedEvent extends Event {
160
174
  readonly fromStep: number;
161
175
  constructor(workflowId: string, fromStep: number);
162
176
  }
177
+ /**
178
+ * Fired when a running workflow is explicitly suspended via
179
+ * `handle.suspend()` / `engine.suspend(id)`. Suspension is a non-terminal pause:
180
+ * the workflow keeps its checkpoint and is later resumable. This event is
181
+ * intentionally NOT in {@link WORKFLOW_TERMINAL_EVENT_TYPES} — a suspended
182
+ * workflow has not ended, and `handle.result()` stays pending.
183
+ *
184
+ * @example
185
+ * ```ts
186
+ * import { Engine, WorkflowSuspendedEvent } from '@lostgradient/weft';
187
+ *
188
+ * const engine = new Engine();
189
+ * engine.addEventListener(WorkflowSuspendedEvent.type, (event) => {
190
+ * console.log('suspended', event.workflowId);
191
+ * });
192
+ * ```
193
+ */
194
+ export declare class WorkflowSuspendedEvent extends Event {
195
+ static readonly type: "workflow:suspended";
196
+ readonly workflowId: string;
197
+ constructor(workflowId: string);
198
+ }
163
199
  /**
164
200
  * Reason carried by {@link WorkflowRecoverySkippedEvent}.
165
201
  *
@@ -184,8 +220,7 @@ export type WorkflowRecoverySkippedReason = 'type-not-registered';
184
220
  *
185
221
  * const engine = new Engine();
186
222
  * engine.addEventListener(WorkflowRecoverySkippedEvent.type, (event) => {
187
- * const skipped = event as WorkflowRecoverySkippedEvent;
188
- * console.warn('skipped recovery for', skipped.workflowType);
223
+ * console.warn('skipped recovery for', event.workflowType);
189
224
  * });
190
225
  * ```
191
226
  */
@@ -196,3 +231,56 @@ export declare class WorkflowRecoverySkippedEvent extends Event {
196
231
  readonly reason: WorkflowRecoverySkippedReason;
197
232
  constructor(workflowId: string, workflowType: string, reason: WorkflowRecoverySkippedReason);
198
233
  }
234
+ /**
235
+ * The lifecycle stage a {@link WorkflowTeardownEvent} reports for a workflow's
236
+ * definition-level `finalizer` (issue #446):
237
+ *
238
+ * - `'completed'`: the finalizer succeeded — the external resource recorded via
239
+ * `ctx.setFinalizerState` has been torn down.
240
+ * - `'failed'`: a single attempt failed; the engine backs off and re-fires unless the
241
+ * dead-letter horizon is reached. Per-attempt observability — fires on every retry.
242
+ * - `'dead-lettered'`: the retry horizon was reached without success; the external
243
+ * resource may be leaked. The durable record is `KEYS.teardownDeadLetter`, which
244
+ * survives purge so the leak is auditable after the workflow record is gone.
245
+ *
246
+ * @example
247
+ * ```ts
248
+ * import type { WorkflowTeardownStatus } from '@lostgradient/weft';
249
+ *
250
+ * const status: WorkflowTeardownStatus = 'dead-lettered';
251
+ * void status;
252
+ * ```
253
+ */
254
+ export type WorkflowTeardownStatus = 'completed' | 'failed' | 'dead-lettered';
255
+ /**
256
+ * Fired on the {@link Engine} as a workflow's definition-level `finalizer` progresses
257
+ * through teardown after a `cancelled`/`timed-out` terminal (issue #446). One event
258
+ * type carries the stage in `status`; `attempts` is the attempt count; `error` is the
259
+ * failure message on `'failed'`/`'dead-lettered'` (absent on `'completed'`). The schema is
260
+ * stable and compact, and `status` is low-cardinality; `workflowId`/`workflowType` are
261
+ * naturally high-cardinality identifiers. Keep `'failed'` listeners side-effect-light —
262
+ * they fire on every retry.
263
+ *
264
+ * @example
265
+ * ```ts
266
+ * import { Engine, WorkflowTeardownEvent } from '@lostgradient/weft';
267
+ *
268
+ * const engine = new Engine();
269
+ * engine.addEventListener(WorkflowTeardownEvent.type, (event) => {
270
+ * if (event.status === 'dead-lettered') {
271
+ * console.error('LEAKED resource: teardown for', event.workflowId, 'gave up after', event.attempts);
272
+ * } else {
273
+ * console.log('teardown', event.status, 'for', event.workflowId, 'attempt', event.attempts);
274
+ * }
275
+ * });
276
+ * ```
277
+ */
278
+ export declare class WorkflowTeardownEvent extends Event {
279
+ static readonly type: "workflow:teardown";
280
+ readonly workflowId: string;
281
+ readonly workflowType: string;
282
+ readonly status: WorkflowTeardownStatus;
283
+ readonly attempts: number;
284
+ readonly error: string | undefined;
285
+ constructor(workflowId: string, workflowType: string, status: WorkflowTeardownStatus, attempts: number, error?: string);
286
+ }
@@ -1,3 +1,12 @@
1
+ export class WorkflowDefinitionRegisteredEvent extends Event {
2
+ static type = "workflow:definition-registered";
3
+ workflowType;
4
+ constructor(workflowType) {
5
+ super(WorkflowDefinitionRegisteredEvent.type);
6
+ this.workflowType = workflowType;
7
+ }
8
+ }
9
+
1
10
  export class WorkflowStartedEvent extends Event {
2
11
  static type = "workflow:started";
3
12
  workflowId;
@@ -77,6 +86,15 @@ export class WorkflowResumedEvent extends Event {
77
86
  }
78
87
  }
79
88
 
89
+ export class WorkflowSuspendedEvent extends Event {
90
+ static type = "workflow:suspended";
91
+ workflowId;
92
+ constructor(workflowId) {
93
+ super(WorkflowSuspendedEvent.type);
94
+ this.workflowId = workflowId;
95
+ }
96
+ }
97
+
80
98
  export class WorkflowRecoverySkippedEvent extends Event {
81
99
  static type = "workflow:recovery-skipped";
82
100
  workflowId;
@@ -89,3 +107,20 @@ export class WorkflowRecoverySkippedEvent extends Event {
89
107
  this.reason = reason;
90
108
  }
91
109
  }
110
+
111
+ export class WorkflowTeardownEvent extends Event {
112
+ static type = "workflow:teardown";
113
+ workflowId;
114
+ workflowType;
115
+ status;
116
+ attempts;
117
+ error;
118
+ constructor(workflowId, workflowType, status, attempts, error) {
119
+ super(WorkflowTeardownEvent.type);
120
+ this.workflowId = workflowId;
121
+ this.workflowType = workflowType;
122
+ this.status = status;
123
+ this.attempts = attempts;
124
+ this.error = error;
125
+ }
126
+ }
@@ -6,6 +6,8 @@ export const FAILURE_CATEGORIES = [
6
6
  "system"
7
7
  ];
8
8
  const currentFailureCategories = new Set(FAILURE_CATEGORIES), timeoutErrorNames = new Set([
9
+ "ActivityScheduleToCloseTimeoutError",
10
+ "ActivityPerAttemptTimeoutError",
9
11
  "MCPToolTimeoutError",
10
12
  "ReviewTimeoutError",
11
13
  "UpdateTimeoutError",
@@ -23,31 +25,17 @@ const cancellationErrorNames = new Set([
23
25
  "ResourceExhaustedError",
24
26
  "OutOfMemoryError",
25
27
  "StorageQuotaExceededError"
26
- ]), legacyFailureCategoryMapping = {
27
- action: "application",
28
- memory: "resource",
29
- planning: "application",
30
- reflection: "application",
31
- system: "system"
32
- }, failureCategorySearchAliases = {
33
- application: ["application", "action", "planning", "reflection"],
34
- timeout: ["timeout"],
35
- cancellation: ["cancellation"],
36
- resource: ["resource", "memory"],
37
- system: ["system"]
38
- };
28
+ ]);
39
29
  export function isFailureCategory(value) {
40
30
  return currentFailureCategories.has(value);
41
31
  }
42
32
  export function normalizeFailureCategory(value) {
43
33
  if (isFailureCategory(value))
44
34
  return value;
45
- if (typeof value !== "string")
46
- return;
47
- return legacyFailureCategoryMapping[value];
35
+ return;
48
36
  }
49
37
  export function failureCategorySearchValues(category) {
50
- return failureCategorySearchAliases[category];
38
+ return [category];
51
39
  }
52
40
  export function classifyErrorAsFailureCategory(error, options = {}) {
53
41
  if (!(error instanceof Error))
@@ -4,8 +4,10 @@
4
4
  * onto the wire so clients can branch on the failure programmatically rather
5
5
  * than string-matching a human message:
6
6
  *
7
- * - REST: `{ error: { code, message, data? } }` (see `fault-to-http.ts`).
8
- * - JSON-RPC: `data.weftCode` (see `fault-to-json-rpc.ts`).
7
+ * - REST operation routes: HTTP status plus `{ error: string }` for declared
8
+ * faults, with `EngineFailure` masked to `"Internal server error"`.
9
+ * - JSON-RPC: `error.data.weftCode` plus `error.data.httpStatus` (see
10
+ * `fault-to-json-rpc.ts`).
9
11
  *
10
12
  * The type lives in `core` — not `server` — because both the server (which
11
13
  * produces faults) and the client (which consumes them off the wire) need it,
@@ -23,6 +25,9 @@ import type { FailureCategory } from './types/identity.ts';
23
25
  * be added additively, and the `satisfies` map below forces every new code to
24
26
  * declare its failure category at compile time.
25
27
  *
28
+ * See `documentation/reference/api-errors.md#faultcode` for the REST HTTP
29
+ * status and JSON-RPC error-data mappings for every public fault code.
30
+ *
26
31
  * @example
27
32
  * ```ts
28
33
  * import { HttpClientError, type FaultCode } from '@lostgradient/weft';
@@ -34,7 +39,7 @@ import type { FailureCategory } from './types/identity.ts';
34
39
  * void describe;
35
40
  * ```
36
41
  */
37
- export type FaultCode = 'Unauthorized' | 'Forbidden' | 'NotFound' | 'Conflict' | 'Unprocessable' | 'Timeout' | 'NotImplemented' | 'UnsupportedTransport' | 'SubscriptionOverflow' | 'InvalidParams' | 'MethodNotFound' | 'EngineFailure';
42
+ export type FaultCode = 'Unauthorized' | 'Forbidden' | 'NotFound' | 'Conflict' | 'Unprocessable' | 'Timeout' | 'PayloadTooLarge' | 'NotImplemented' | 'UnsupportedTransport' | 'SubscriptionOverflow' | 'InvalidParams' | 'MethodNotFound' | 'EngineFailure';
38
43
  /**
39
44
  * Maps each wire {@link FaultCode} onto a {@link FailureCategory}.
40
45
  *
@@ -61,6 +66,7 @@ export declare const FAULT_CODE_TO_FAILURE_CATEGORY: Readonly<{
61
66
  readonly InvalidParams: "application";
62
67
  readonly MethodNotFound: "application";
63
68
  readonly Timeout: "timeout";
69
+ readonly PayloadTooLarge: "resource";
64
70
  readonly SubscriptionOverflow: "resource";
65
71
  readonly NotImplemented: "system";
66
72
  readonly UnsupportedTransport: "system";
@@ -7,6 +7,7 @@ export const FAULT_CODE_TO_FAILURE_CATEGORY = Object.freeze({
7
7
  InvalidParams: "application",
8
8
  MethodNotFound: "application",
9
9
  Timeout: "timeout",
10
+ PayloadTooLarge: "resource",
10
11
  SubscriptionOverflow: "resource",
11
12
  NotImplemented: "system",
12
13
  UnsupportedTransport: "system",
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Dependency shapes and the context-options builder used by
3
+ * {@link InlineExecutionStrategy}. Kept beside the strategy so the strategy
4
+ * module stays focused on generator lifecycle and context bookkeeping.
5
+ *
6
+ * @module core/inline-execution-strategy.context-options
7
+ */
8
+ import type { ContextOptions } from './context.ts';
9
+ import type { ComposedWorkflowInterceptor } from './interceptor.ts';
10
+ import type { SearchAttributeSchema, WorkflowFunction } from './types.ts';
11
+ import type { WorkflowLogRecord } from './types/workflow-log.ts';
12
+ /** Capabilities the engine injects into the inline strategy at construction. */
13
+ export interface InlineExecutionDependencies {
14
+ getRegistration: (workflowType: string) => {
15
+ handler: WorkflowFunction;
16
+ version: string;
17
+ searchAttributes?: SearchAttributeSchema;
18
+ } | undefined;
19
+ getNow: () => number;
20
+ resolveWorkflowType?: (target: string | Function) => string;
21
+ maxNestingDepth: number;
22
+ development?: boolean;
23
+ getComposedWorkflowInterceptor?: () => ComposedWorkflowInterceptor | null;
24
+ registerCancelHandler?: (workflowId: string, handler: () => Promise<void> | void) => () => void;
25
+ /**
26
+ * Durably record a `ctx.setFinalizerState(value)` payload for a workflow (#446).
27
+ * The engine stages it as a pending atomic side-effect so it commits with the
28
+ * next checkpoint or the terminal batch. Absent in worker mode.
29
+ */
30
+ recordFinalizerState?: (workflowId: string, value: unknown) => void;
31
+ /**
32
+ * Look up the non-serialized per-run `services` value for a workflow, exposed
33
+ * to the body as `ctx.services`. Returns `undefined` when none was supplied.
34
+ */
35
+ getWorkflowServices?: (workflowId: string) => unknown;
36
+ /**
37
+ * The host log sink (`EngineOptions.onLog`) for `ctx.log` records, or
38
+ * `undefined` for the default console behavior. Engine-scoped, so it takes no
39
+ * workflow id.
40
+ */
41
+ getLogSink?: () => ((record: WorkflowLogRecord) => void) | undefined;
42
+ }
43
+ /** A registration resolved through {@link InlineExecutionDependencies.getRegistration}, narrowed to the present case. */
44
+ export type InlineWorkflowRegistration = NonNullable<ReturnType<InlineExecutionDependencies['getRegistration']>>;
45
+ /** Parameters for starting a workflow run on the inline strategy. */
46
+ export type InlineStartWorkflowParameters = {
47
+ workflowId: string;
48
+ workflowType: string;
49
+ input: unknown;
50
+ checkpoint: ArrayBuffer | Uint8Array;
51
+ nestingDepth?: number;
52
+ executionStateOwnerId?: string;
53
+ startedAt?: number;
54
+ sleepReferenceTime?: number;
55
+ deadline?: number;
56
+ headers?: [string, string][];
57
+ };
58
+ /** Build the {@link ContextOptions} for a single inline workflow run from the injected dependencies and start parameters. */
59
+ export declare function createInlineContextOptions(dependencies: InlineExecutionDependencies, registration: InlineWorkflowRegistration, parameters: InlineStartWorkflowParameters, workflowAbort: AbortController): ContextOptions;
60
+ /**
61
+ * Keep only the defined optional inline-strategy dependencies. Under
62
+ * `exactOptionalPropertyTypes` a key set to `undefined` is rejected while an
63
+ * absent key is fine, so each optional is included only when present. Lives here
64
+ * (rather than inline in `createExecutionStrategyBundle`) so its conditional
65
+ * spreads do not tip that function over the cyclomatic-complexity cap.
66
+ */
67
+ export declare function optionalInlineDependencies(candidates: {
68
+ [Key in 'getComposedWorkflowInterceptor' | 'registerCancelHandler' | 'recordFinalizerState' | 'getWorkflowServices' | 'getLogSink']: InlineExecutionDependencies[Key] | undefined;
69
+ }): Partial<InlineExecutionDependencies>;