@lostgradient/weft 0.3.0 → 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 (508) hide show
  1. package/README.md +79 -24
  2. package/dist/cli/conformance.js +7 -1
  3. package/dist/cli/generated/operation-client.generated.d.ts +28 -13
  4. package/dist/cli/generated/operation-client.generated.js +1 -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 +79 -78
  13. package/dist/client/handle-delegation.d.ts +3 -2
  14. package/dist/client/handle-delegation.js +3 -1
  15. package/dist/client/http-client-requests.d.ts +2 -1
  16. package/dist/client/http-client-requests.js +7 -0
  17. package/dist/client/http-client.d.ts +9 -6
  18. package/dist/client/http-client.js +10 -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 +46 -5
  23. package/dist/client/local.d.ts +4 -1
  24. package/dist/client/local.js +12 -4
  25. package/dist/client/start-body.d.ts +4 -3
  26. package/dist/core/byte-arrays.d.ts +5 -0
  27. package/dist/core/byte-arrays.js +5 -0
  28. package/dist/core/checkpoint/lifecycle.d.ts +3 -0
  29. package/dist/core/checkpoint/lifecycle.js +9 -4
  30. package/dist/core/checkpoint/serialization.js +12 -5
  31. package/dist/core/codec/extension-codec.d.ts +16 -0
  32. package/dist/core/codec/extension-codec.js +100 -6
  33. package/dist/core/context/activity-retry-state.d.ts +38 -0
  34. package/dist/core/context/activity-retry-state.js +89 -0
  35. package/dist/core/context/activity-schedule-to-close.d.ts +159 -0
  36. package/dist/core/context/activity-schedule-to-close.js +69 -0
  37. package/dist/core/context/child-workflow-pipe.d.ts +5 -5
  38. package/dist/core/context/child-workflow-pipe.js +15 -2
  39. package/dist/core/context/context-presence.d.ts +19 -0
  40. package/dist/core/context/context-presence.js +13 -0
  41. package/dist/core/context/durable-operations.d.ts +25 -0
  42. package/dist/core/context/durable-operations.js +64 -0
  43. package/dist/core/context/index.d.ts +9 -5
  44. package/dist/core/context/index.js +17 -12
  45. package/dist/core/context/internals.d.ts +20 -0
  46. package/dist/core/context/internals.js +3 -1
  47. package/dist/core/context/operation-request.d.ts +35 -0
  48. package/dist/core/context/parallel-cache-entry.d.ts +14 -5
  49. package/dist/core/context/run-operation.d.ts +6 -1
  50. package/dist/core/context/run-operation.js +41 -87
  51. package/dist/core/context/session-state.js +7 -8
  52. package/dist/core/context/speculative-child.js +2 -0
  53. package/dist/core/context/types.d.ts +15 -0
  54. package/dist/core/context/version-patching.d.ts +8 -0
  55. package/dist/core/context/version-patching.js +40 -0
  56. package/dist/core/context/workflow-logger.d.ts +98 -0
  57. package/dist/core/context/workflow-logger.js +68 -0
  58. package/dist/core/engine/activity-heartbeat-tracking.d.ts +64 -0
  59. package/dist/core/engine/activity-heartbeat-tracking.js +42 -0
  60. package/dist/core/engine/activity-per-attempt-timeout.d.ts +41 -0
  61. package/dist/core/engine/activity-per-attempt-timeout.js +36 -0
  62. package/dist/core/engine/activity-reconciliation.d.ts +1 -0
  63. package/dist/core/engine/activity-reconciliation.js +12 -1
  64. package/dist/core/engine/activity-resolution.d.ts +23 -0
  65. package/dist/core/engine/activity-resolution.js +37 -0
  66. package/dist/core/engine/aggregate.js +66 -30
  67. package/dist/core/engine/async-activity-completion.d.ts +23 -6
  68. package/dist/core/engine/async-activity-completion.js +53 -12
  69. package/dist/core/engine/attributes-tags.js +9 -4
  70. package/dist/core/engine/bulk-operations-purge.d.ts +26 -0
  71. package/dist/core/engine/bulk-operations-purge.js +38 -3
  72. package/dist/core/engine/bulk-operations-shared.d.ts +2 -0
  73. package/dist/core/engine/bulk-operations-shared.js +8 -2
  74. package/dist/core/engine/bulk-operations.d.ts +4 -1
  75. package/dist/core/engine/bulk-operations.js +235 -24
  76. package/dist/core/engine/callback-creators-bundles.d.ts +9 -0
  77. package/dist/core/engine/callback-creators-bundles.js +30 -2
  78. package/dist/core/engine/callback-creators-core.js +6 -4
  79. package/dist/core/engine/callback-creators-router.js +10 -0
  80. package/dist/core/engine/callback-creators-schedule.d.ts +2 -2
  81. package/dist/core/engine/callback-creators-schedule.js +12 -8
  82. package/dist/core/engine/candidate-read-batching.d.ts +6 -0
  83. package/dist/core/engine/candidate-read-batching.js +1 -0
  84. package/dist/core/engine/checkpoint-io.js +61 -25
  85. package/dist/core/engine/checkpoint-reads.js +3 -2
  86. package/dist/core/engine/checkpoint-replay.d.ts +20 -0
  87. package/dist/core/engine/checkpoint-replay.js +242 -0
  88. package/dist/core/engine/checkpoint-side-effects.d.ts +23 -0
  89. package/dist/core/engine/checkpoint-side-effects.js +35 -0
  90. package/dist/core/engine/child-workflow-cancellation.d.ts +10 -0
  91. package/dist/core/engine/child-workflow-cancellation.js +40 -0
  92. package/dist/core/engine/child-workflow.js +27 -4
  93. package/dist/core/engine/condition-waiters.d.ts +14 -0
  94. package/dist/core/engine/condition-waiters.js +5 -0
  95. package/dist/core/engine/construction.d.ts +3 -0
  96. package/dist/core/engine/construction.js +21 -8
  97. package/dist/core/engine/coordination-branch-executors.d.ts +70 -0
  98. package/dist/core/engine/coordination-branch-executors.js +107 -0
  99. package/dist/core/engine/deferred-consume-envelope.d.ts +59 -0
  100. package/dist/core/engine/deferred-consume-envelope.js +14 -0
  101. package/dist/core/engine/disposal.js +13 -0
  102. package/dist/core/engine/engine-create-types.d.ts +14 -4
  103. package/dist/core/engine/engine-internal-types.d.ts +26 -3
  104. package/dist/core/engine/errors.d.ts +47 -0
  105. package/dist/core/engine/errors.js +20 -0
  106. package/dist/core/engine/event-log-compaction.d.ts +8 -0
  107. package/dist/core/engine/event-log-compaction.js +20 -2
  108. package/dist/core/engine/fenced-write.d.ts +65 -0
  109. package/dist/core/engine/fenced-write.js +71 -0
  110. package/dist/core/engine/finalizer-state.d.ts +28 -0
  111. package/dist/core/engine/finalizer-state.js +16 -0
  112. package/dist/core/engine/handles.d.ts +8 -0
  113. package/dist/core/engine/index.d.ts +34 -16
  114. package/dist/core/engine/index.js +133 -8
  115. package/dist/core/engine/inline-parking.js +3 -2
  116. package/dist/core/engine/internals.d.ts +107 -3
  117. package/dist/core/engine/lease-codec.d.ts +35 -0
  118. package/dist/core/engine/lease-codec.js +32 -0
  119. package/dist/core/engine/lease-deposition.d.ts +66 -0
  120. package/dist/core/engine/lease-deposition.js +10 -0
  121. package/dist/core/engine/lease-errors.d.ts +99 -0
  122. package/dist/core/engine/lease-errors.js +30 -0
  123. package/dist/core/engine/lease-manager.d.ts +114 -0
  124. package/dist/core/engine/lease-manager.js +135 -0
  125. package/dist/core/engine/lifecycle/persist.js +10 -32
  126. package/dist/core/engine/lifecycle/recovered-services.d.ts +8 -6
  127. package/dist/core/engine/lifecycle/recovered-services.js +18 -3
  128. package/dist/core/engine/lifecycle/resume.js +16 -9
  129. package/dist/core/engine/lifecycle/shared.d.ts +8 -1
  130. package/dist/core/engine/lifecycle/start-batch.d.ts +1 -1
  131. package/dist/core/engine/lifecycle/start-batch.js +2 -1
  132. package/dist/core/engine/lifecycle/start-commit.d.ts +9 -0
  133. package/dist/core/engine/lifecycle/start-commit.js +50 -8
  134. package/dist/core/engine/lifecycle/start-or-signal-create.d.ts +58 -0
  135. package/dist/core/engine/lifecycle/start-or-signal-create.js +95 -0
  136. package/dist/core/engine/lifecycle/start-or-signal.d.ts +3 -2
  137. package/dist/core/engine/lifecycle/start-or-signal.js +11 -81
  138. package/dist/core/engine/lifecycle/start-terminal-conflict-purge.d.ts +39 -0
  139. package/dist/core/engine/lifecycle/start-terminal-conflict-purge.js +28 -0
  140. package/dist/core/engine/lifecycle/start.d.ts +4 -4
  141. package/dist/core/engine/lifecycle/start.js +17 -9
  142. package/dist/core/engine/lifecycle/transition.js +17 -5
  143. package/dist/core/engine/lifecycle.d.ts +1 -1
  144. package/dist/core/engine/list-candidate-resolution.js +2 -2
  145. package/dist/core/engine/listing.js +9 -5
  146. package/dist/core/engine/operations-activity.d.ts +4 -11
  147. package/dist/core/engine/operations-activity.js +22 -49
  148. package/dist/core/engine/operations-coordination.d.ts +10 -0
  149. package/dist/core/engine/operations-coordination.js +43 -8
  150. package/dist/core/engine/operations-router.d.ts +6 -0
  151. package/dist/core/engine/operations-router.js +2 -0
  152. package/dist/core/engine/operations-speculate.js +6 -2
  153. package/dist/core/engine/operations-stream.js +12 -2
  154. package/dist/core/engine/operations-time.d.ts +4 -2
  155. package/dist/core/engine/operations-time.js +14 -2
  156. package/dist/core/engine/operations-wait-condition.d.ts +23 -0
  157. package/dist/core/engine/operations-wait-condition.js +62 -0
  158. package/dist/core/engine/ownership-options.d.ts +23 -0
  159. package/dist/core/engine/ownership-options.js +26 -0
  160. package/dist/core/engine/payload-size-policy.d.ts +3 -0
  161. package/dist/core/engine/payload-size-policy.js +4 -0
  162. package/dist/core/engine/pending-updates.d.ts +17 -0
  163. package/dist/core/engine/pending-updates.js +33 -11
  164. package/dist/core/engine/queries.js +1 -1
  165. package/dist/core/engine/registration.d.ts +1 -0
  166. package/dist/core/engine/registration.js +18 -3
  167. package/dist/core/engine/schedule-jitter.d.ts +5 -0
  168. package/dist/core/engine/schedule-jitter.js +10 -0
  169. package/dist/core/engine/schedule-run.d.ts +17 -0
  170. package/dist/core/engine/schedule-run.js +38 -0
  171. package/dist/core/engine/schedule-timer.js +81 -17
  172. package/dist/core/engine/schedules.d.ts +7 -4
  173. package/dist/core/engine/schedules.js +37 -16
  174. package/dist/core/engine/search-attribute-records.d.ts +4 -0
  175. package/dist/core/engine/search-attribute-records.js +17 -0
  176. package/dist/core/engine/signals.d.ts +18 -2
  177. package/dist/core/engine/signals.js +42 -21
  178. package/dist/core/engine/state-utilities.d.ts +49 -2
  179. package/dist/core/engine/state-utilities.js +114 -3
  180. package/dist/core/engine/storage-io.d.ts +16 -2
  181. package/dist/core/engine/storage-io.js +26 -5
  182. package/dist/core/engine/stream-chunk-loading.d.ts +2 -0
  183. package/dist/core/engine/stream-chunk-loading.js +24 -1
  184. package/dist/core/engine/sub-operation.js +22 -3
  185. package/dist/core/engine/termination/cleanup.d.ts +3 -1
  186. package/dist/core/engine/termination/cleanup.js +25 -1
  187. package/dist/core/engine/termination/complete.js +44 -6
  188. package/dist/core/engine/termination/finalizer-activity.d.ts +53 -0
  189. package/dist/core/engine/termination/finalizer-activity.js +30 -0
  190. package/dist/core/engine/termination/finalizer-claim.d.ts +110 -0
  191. package/dist/core/engine/termination/finalizer-claim.js +80 -0
  192. package/dist/core/engine/termination/finalizer.d.ts +48 -0
  193. package/dist/core/engine/termination/finalizer.js +159 -0
  194. package/dist/core/engine/termination/suspend.d.ts +3 -1
  195. package/dist/core/engine/termination.d.ts +1 -0
  196. package/dist/core/engine/termination.js +4 -0
  197. package/dist/core/engine/updates.js +5 -25
  198. package/dist/core/engine/validation/schedule.d.ts +2 -1
  199. package/dist/core/engine/validation/schedule.js +51 -2
  200. package/dist/core/engine/validation.js +32 -5
  201. package/dist/core/engine/waiting-update-response.d.ts +8 -0
  202. package/dist/core/engine/waiting-update-response.js +22 -0
  203. package/dist/core/engine/workflow-concurrency.d.ts +10 -0
  204. package/dist/core/engine/workflow-concurrency.js +136 -0
  205. package/dist/core/engine/workflow-feed.d.ts +4 -5
  206. package/dist/core/engine/workflow-feed.js +4 -1
  207. package/dist/core/engine/workflow-indexes.d.ts +9 -0
  208. package/dist/core/engine/workflow-indexes.js +10 -0
  209. package/dist/core/engine/workflow-state-stream.js +33 -13
  210. package/dist/core/engine/workflow-visibility-queries.d.ts +2 -2
  211. package/dist/core/engine-helpers.js +1 -0
  212. package/dist/core/events/activity-events.d.ts +43 -12
  213. package/dist/core/events/activity-events.js +28 -0
  214. package/dist/core/events/attribute-events.d.ts +2 -3
  215. package/dist/core/events/event-map.d.ts +18 -12
  216. package/dist/core/events/index.d.ts +1 -0
  217. package/dist/core/events/index.js +1 -0
  218. package/dist/core/events/schedule-events.d.ts +71 -0
  219. package/dist/core/events/schedule-events.js +29 -0
  220. package/dist/core/events/signal-events.d.ts +4 -6
  221. package/dist/core/events/system-events.d.ts +29 -19
  222. package/dist/core/events/system-events.js +26 -0
  223. package/dist/core/events/update-events.d.ts +6 -8
  224. package/dist/core/events/workflow-events.d.ts +88 -23
  225. package/dist/core/events/workflow-events.js +26 -0
  226. package/dist/core/failure-categories.js +5 -17
  227. package/dist/core/fault-code.d.ts +9 -3
  228. package/dist/core/fault-code.js +1 -0
  229. package/dist/core/inline-execution-strategy.context-options.d.ts +69 -0
  230. package/dist/core/inline-execution-strategy.context-options.js +56 -0
  231. package/dist/core/inline-execution-strategy.d.ts +31 -36
  232. package/dist/core/inline-execution-strategy.js +16 -27
  233. package/dist/core/list-filter-validation.d.ts +1 -1
  234. package/dist/core/payload-size.d.ts +1 -1
  235. package/dist/core/persisted-data-incompatible-error.d.ts +9 -7
  236. package/dist/core/review/events.d.ts +6 -8
  237. package/dist/core/scheduler/scheduler-class.d.ts +10 -1
  238. package/dist/core/scheduler/scheduler-class.js +38 -11
  239. package/dist/core/scheduler/timer-batch.js +9 -1
  240. package/dist/core/scheduler/timer-sources.d.ts +1 -0
  241. package/dist/core/scheduler/timer-sources.js +11 -5
  242. package/dist/core/session-state.d.ts +0 -1
  243. package/dist/core/session-state.js +2 -2
  244. package/dist/core/start-workflow-validation.d.ts +34 -0
  245. package/dist/core/start-workflow-validation.js +19 -0
  246. package/dist/core/types/activity-verification.d.ts +67 -0
  247. package/dist/core/types/activity-verification.js +0 -0
  248. package/dist/core/types/activity.d.ts +80 -61
  249. package/dist/core/types/bulk.d.ts +50 -9
  250. package/dist/core/types/checkpoint.d.ts +44 -8
  251. package/dist/core/types/list-options.d.ts +146 -0
  252. package/dist/core/types/list-options.js +0 -0
  253. package/dist/core/types/options.d.ts +121 -165
  254. package/dist/core/types/schedules.d.ts +39 -3
  255. package/dist/core/types/services-resolution.d.ts +2 -2
  256. package/dist/core/types/workflow-builder-runtime.d.ts +12 -3
  257. package/dist/core/types/workflow-builder-runtime.js +11 -2
  258. package/dist/core/types/workflow-builder.d.ts +42 -11
  259. package/dist/core/types/workflow-concurrency.d.ts +39 -0
  260. package/dist/core/types/workflow-concurrency.js +0 -0
  261. package/dist/core/types/workflow-context.d.ts +157 -14
  262. package/dist/core/types/workflow-definition.d.ts +53 -10
  263. package/dist/core/types/workflow-function.d.ts +84 -9
  264. package/dist/core/types/workflow-log.d.ts +98 -0
  265. package/dist/core/types/workflow-log.js +0 -0
  266. package/dist/core/types/workflow-registries.d.ts +14 -3
  267. package/dist/core/types/workflow-registry.d.ts +3 -0
  268. package/dist/core/types.d.ts +4 -0
  269. package/dist/core/types.js +4 -0
  270. package/dist/core/versioning.d.ts +9 -39
  271. package/dist/core/versioning.js +2 -12
  272. package/dist/core/weft-error.d.ts +44 -1
  273. package/dist/core/weft-error.js +16 -0
  274. package/dist/core/worker-execution-strategy-options.d.ts +26 -0
  275. package/dist/core/worker-execution-strategy.js +40 -36
  276. package/dist/core/worker-inbound-message.d.ts +38 -0
  277. package/dist/core/worker-inbound-message.js +37 -0
  278. package/dist/core/worker-log-abuse-counter.d.ts +175 -0
  279. package/dist/core/worker-log-abuse-counter.js +107 -0
  280. package/dist/core/worker-message-helpers.d.ts +47 -0
  281. package/dist/core/worker-message-helpers.js +26 -0
  282. package/dist/core/worker-protocol-guard.js +1 -1
  283. package/dist/core/worker-protocol-log.d.ts +56 -0
  284. package/dist/core/worker-protocol-log.js +18 -0
  285. package/dist/core/worker-protocol.d.ts +23 -0
  286. package/dist/core/worker-protocol.js +12 -2
  287. package/dist/core/workflow-version-tuple.d.ts +3 -9
  288. package/dist/core/workflow-version-tuple.js +2 -3
  289. package/dist/diagnostics/format.js +1 -6
  290. package/dist/diagnostics/types.d.ts +4 -5
  291. package/dist/diagnostics/validate.d.ts +0 -1
  292. package/dist/diagnostics/version-check.d.ts +1 -1
  293. package/dist/diagnostics/version-check.js +4 -9
  294. package/dist/index.d.ts +12 -10
  295. package/dist/index.js +29 -3
  296. package/dist/json-schema.js +3 -3
  297. package/dist/mcp/cli.js +27 -27
  298. package/dist/mcp/dispatcher.js +1 -1
  299. package/dist/mcp/http.js +16 -6
  300. package/dist/mcp/protocol.d.ts +2 -0
  301. package/dist/mcp/protocol.js +1 -1
  302. package/dist/mcp/session.d.ts +16 -0
  303. package/dist/mcp/session.js +59 -6
  304. package/dist/mcp/tools.js +73 -6
  305. package/dist/observability/index.js +2 -2
  306. package/dist/server/asyncapi-channels.js +5 -2
  307. package/dist/server/attribute-filters.d.ts +8 -3
  308. package/dist/server/attribute-filters.js +6 -1
  309. package/dist/server/authentication/api-key.d.ts +2 -1
  310. package/dist/server/authentication/api-key.js +5 -2
  311. package/dist/server/authentication/constant-time-api-key.d.ts +15 -0
  312. package/dist/server/authentication/constant-time-api-key.js +24 -0
  313. package/dist/server/authentication/index.d.ts +1 -1
  314. package/dist/server/authentication/index.js +7 -4
  315. package/dist/server/authentication/rotating-api-key-store.d.ts +5 -3
  316. package/dist/server/authentication/rotating-api-key-store.js +19 -11
  317. package/dist/server/engine-event-feed-backend.d.ts +4 -5
  318. package/dist/server/fault-to-http.js +8 -1
  319. package/dist/server/fault-to-json-rpc.js +1 -0
  320. package/dist/server/fleet-event-feed.d.ts +31 -0
  321. package/dist/server/fleet-event-feed.js +157 -0
  322. package/dist/server/handler/index.js +1 -1
  323. package/dist/server/handler/response-helpers.js +2 -1
  324. package/dist/server/handler/route-dispatch.d.ts +6 -3
  325. package/dist/server/handler/route-dispatch.js +2 -2
  326. package/dist/server/handler.js +23 -23
  327. package/dist/server/index.d.ts +32 -2
  328. package/dist/server/index.js +26 -26
  329. package/dist/server/json-rpc-transport-helpers.d.ts +1 -0
  330. package/dist/server/json-rpc-transport-helpers.js +2 -1
  331. package/dist/server/json-rpc-websocket-runtime.d.ts +11 -2
  332. package/dist/server/json-rpc-websocket-runtime.js +1 -0
  333. package/dist/server/json-rpc-websocket-subscriptions.d.ts +10 -0
  334. package/dist/server/json-rpc-websocket-subscriptions.js +29 -0
  335. package/dist/server/json-rpc-websocket-types.d.ts +22 -0
  336. package/dist/server/json-rpc-websocket-types.js +0 -0
  337. package/dist/server/json-rpc-websocket-validation.js +20 -4
  338. package/dist/server/json-rpc-websocket.d.ts +2 -43
  339. package/dist/server/json-rpc-websocket.js +57 -74
  340. package/dist/server/openapi.d.ts +2 -1
  341. package/dist/server/openapi.js +1 -3
  342. package/dist/server/openrpc-document-schema.d.ts +78 -0
  343. package/dist/server/openrpc-document-schema.js +27 -1
  344. package/dist/server/openrpc-errors.d.ts +3 -0
  345. package/dist/server/openrpc-errors.js +2 -1
  346. package/dist/server/openrpc.js +32 -0
  347. package/dist/server/operation-catalog/index.d.ts +1 -1
  348. package/dist/server/operation-catalog/pipeline-helpers.js +1 -0
  349. package/dist/server/operation-catalog/pipeline-stages.js +26 -12
  350. package/dist/server/operation-catalog/pipeline.js +8 -1
  351. package/dist/server/operation-catalog/registry.js +13 -0
  352. package/dist/server/operation-catalog/types.d.ts +20 -9
  353. package/dist/server/operation-fault.d.ts +10 -0
  354. package/dist/server/operation-fault.js +2 -0
  355. package/dist/server/operation-registry.d.ts +12 -11
  356. package/dist/server/operation-registry.js +12 -3
  357. package/dist/server/operations/aggregate-workflows.d.ts +15 -15
  358. package/dist/server/operations/async-activity.d.ts +2 -2
  359. package/dist/server/operations/async-activity.js +12 -7
  360. package/dist/server/operations/bulk-cancel-workflows.d.ts +1 -1
  361. package/dist/server/operations/bulk-cancel-workflows.js +2 -2
  362. package/dist/server/operations/bulk-delete-workflows.d.ts +1 -1
  363. package/dist/server/operations/bulk-delete-workflows.js +2 -2
  364. package/dist/server/operations/bulk-filter-helpers.d.ts +8 -6
  365. package/dist/server/operations/bulk-filter-helpers.js +54 -24
  366. package/dist/server/operations/bulk-mutate-workflow-tags.d.ts +11 -9
  367. package/dist/server/operations/bulk-mutate-workflow-tags.js +2 -2
  368. package/dist/server/operations/bulk-operation-helpers.d.ts +2 -2
  369. package/dist/server/operations/bulk-retry-failed-workflows.d.ts +7 -0
  370. package/dist/server/operations/bulk-retry-failed-workflows.js +64 -0
  371. package/dist/server/operations/bulk-signal-workflows.d.ts +11 -9
  372. package/dist/server/operations/bulk-signal-workflows.js +2 -2
  373. package/dist/server/operations/cancel-schedule.d.ts +1 -1
  374. package/dist/server/operations/create-schedule.d.ts +3 -1
  375. package/dist/server/operations/create-schedule.js +29 -11
  376. package/dist/server/operations/fleet-events-subscription.d.ts +54 -0
  377. package/dist/server/operations/fleet-events-subscription.js +99 -0
  378. package/dist/server/operations/fork-workflow.d.ts +1 -1
  379. package/dist/server/operations/fork-workflow.js +3 -2
  380. package/dist/server/operations/get-checkpoint-at.d.ts +1 -1
  381. package/dist/server/operations/get-registry.d.ts +1 -1
  382. package/dist/server/operations/get-retention-overview.d.ts +1 -1
  383. package/dist/server/operations/get-review.d.ts +1 -1
  384. package/dist/server/operations/get-schedule.d.ts +1 -1
  385. package/dist/server/operations/get-stream-chunks.d.ts +1 -1
  386. package/dist/server/operations/get-system-metrics.d.ts +2 -2
  387. package/dist/server/operations/get-task-diagnostics.d.ts +45 -6
  388. package/dist/server/operations/get-task-diagnostics.js +101 -7
  389. package/dist/server/operations/get-update-result.d.ts +1 -1
  390. package/dist/server/operations/get-workflow-attributes.d.ts +1 -1
  391. package/dist/server/operations/get-workflow-events.d.ts +1 -1
  392. package/dist/server/operations/get-workflow-result.d.ts +1 -1
  393. package/dist/server/operations/get-workflow-timeline.d.ts +1 -1
  394. package/dist/server/operations/get-workflow.d.ts +1 -1
  395. package/dist/server/operations/list-checkpoints.d.ts +1 -1
  396. package/dist/server/operations/list-reviews.d.ts +1 -1
  397. package/dist/server/operations/list-schedules.d.ts +1 -1
  398. package/dist/server/operations/list-task-queues.d.ts +2 -2
  399. package/dist/server/operations/list-workers.d.ts +2 -2
  400. package/dist/server/operations/list-workflows.d.ts +1 -1
  401. package/dist/server/operations/operation-helpers.d.ts +16 -1
  402. package/dist/server/operations/operation-helpers.js +15 -3
  403. package/dist/server/operations/pause-schedule.d.ts +1 -1
  404. package/dist/server/operations/purge-workflows.d.ts +5 -5
  405. package/dist/server/operations/purge-workflows.js +2 -2
  406. package/dist/server/operations/query-workflow.d.ts +1 -1
  407. package/dist/server/operations/query-workflow.js +3 -2
  408. package/dist/server/operations/recover-all.d.ts +1 -1
  409. package/dist/server/operations/replay-workflow.d.ts +1 -1
  410. package/dist/server/operations/resume-schedule.d.ts +1 -1
  411. package/dist/server/operations/set-workflow-attributes.d.ts +1 -1
  412. package/dist/server/operations/set-workflow-attributes.js +6 -3
  413. package/dist/server/operations/signal-workflow.js +8 -3
  414. package/dist/server/operations/single-workflow-tag-mutation.js +13 -3
  415. package/dist/server/operations/start-or-signal-workflow.d.ts +6 -1
  416. package/dist/server/operations/start-or-signal-workflow.js +14 -24
  417. package/dist/server/operations/start-workflow-options.d.ts +6 -0
  418. package/dist/server/operations/start-workflow-rest-input.d.ts +14 -0
  419. package/dist/server/operations/start-workflow-rest-input.js +31 -0
  420. package/dist/server/operations/start-workflow.d.ts +1 -1
  421. package/dist/server/operations/start-workflow.js +8 -23
  422. package/dist/server/operations/storage.d.ts +6 -6
  423. package/dist/server/operations/storage.js +24 -14
  424. package/dist/server/operations/stream-workflow-sse.d.ts +1 -1
  425. package/dist/server/operations/submit-review-decision.d.ts +1 -1
  426. package/dist/server/operations/submit-review-decision.js +6 -3
  427. package/dist/server/operations/update-schedule.d.ts +1 -1
  428. package/dist/server/operations/update-schedule.js +7 -4
  429. package/dist/server/operations/update-workflow.d.ts +1 -1
  430. package/dist/server/operations/update-workflow.js +7 -3
  431. package/dist/server/operations/worker-drain.d.ts +8 -8
  432. package/dist/server/operations/worker-drain.js +11 -8
  433. package/dist/server/operations/workflow-events-subscription.d.ts +7 -8
  434. package/dist/server/operations/workflow-events-subscription.js +43 -8
  435. package/dist/server/rest-binding.d.ts +3 -1
  436. package/dist/server/rest-bindings.js +12 -0
  437. package/dist/server/rest-body.d.ts +10 -0
  438. package/dist/server/rest-body.js +80 -0
  439. package/dist/server/runtime/authentication-bridge.d.ts +1 -0
  440. package/dist/server/runtime/authentication-bridge.js +33 -6
  441. package/dist/server/runtime/client-visible-events.d.ts +3 -0
  442. package/dist/server/runtime/client-visible-events.js +65 -0
  443. package/dist/server/runtime/context.d.ts +7 -0
  444. package/dist/server/runtime/event-broadcasting.d.ts +6 -0
  445. package/dist/server/runtime/event-broadcasting.js +72 -38
  446. package/dist/server/runtime/retry.d.ts +1 -0
  447. package/dist/server/runtime/retry.js +14 -0
  448. package/dist/server/runtime/shutdown.d.ts +7 -6
  449. package/dist/server/runtime/shutdown.js +6 -1
  450. package/dist/server/runtime/task-polling.js +61 -20
  451. package/dist/server/runtime/task-reconciliation.js +9 -1
  452. package/dist/server/runtime/task-result-resolution.d.ts +15 -0
  453. package/dist/server/runtime/task-result-resolution.js +81 -0
  454. package/dist/server/runtime/websocket-stream.d.ts +20 -1
  455. package/dist/server/runtime/websocket-stream.js +173 -7
  456. package/dist/server/runtime/websocket-upgrade.js +22 -3
  457. package/dist/server/runtime/websocket-worker.d.ts +1 -1
  458. package/dist/server/runtime/websocket-worker.js +38 -30
  459. package/dist/server/serve-internals.d.ts +3 -1
  460. package/dist/server/serve-internals.js +18 -2
  461. package/dist/server/task-state.d.ts +30 -0
  462. package/dist/server/task-state.js +28 -0
  463. package/dist/server/workflow-event-feed.d.ts +36 -115
  464. package/dist/server/workflow-event-feed.js +92 -27
  465. package/dist/service-worker/index.js +30 -30
  466. package/dist/storage/auto.js +1 -1
  467. package/dist/storage/bun-sql.js +24 -0
  468. package/dist/storage/compressed-storage.js +1 -1
  469. package/dist/storage/default-scope.d.ts +7 -4
  470. package/dist/storage/http.js +2 -2
  471. package/dist/storage/index.d.ts +76 -4
  472. package/dist/storage/indexeddb.js +1 -1
  473. package/dist/storage/interface.d.ts +163 -0
  474. package/dist/storage/interface.js +1 -1
  475. package/dist/storage/key-prefixes.d.ts +1 -1
  476. package/dist/storage/key-prefixes.js +10 -0
  477. package/dist/storage/lmdb.d.ts +4 -3
  478. package/dist/storage/lmdb.js +1 -1
  479. package/dist/storage/memory.js +1 -1
  480. package/dist/storage/neon-batch.d.ts +30 -0
  481. package/dist/storage/neon-batch.js +30 -0
  482. package/dist/storage/neon-value-mapping.d.ts +30 -3
  483. package/dist/storage/neon-value-mapping.js +12 -0
  484. package/dist/storage/neon.d.ts +16 -0
  485. package/dist/storage/neon.js +9 -4
  486. package/dist/storage/node-sqlite.js +23 -0
  487. package/dist/storage/postgres-key-value-queries.d.ts +69 -44
  488. package/dist/storage/postgres-key-value-queries.js +62 -24
  489. package/dist/storage/resolve.js +1 -1
  490. package/dist/storage/scoped-storage.js +1 -1
  491. package/dist/storage/testing.d.ts +168 -0
  492. package/dist/storage/testing.js +2 -0
  493. package/dist/storage/turso.d.ts +8 -0
  494. package/dist/storage/turso.js +2 -2
  495. package/dist/storage/typed-storage.js +1 -1
  496. package/dist/storage/web-extension.js +1 -1
  497. package/dist/testing/index.js +28 -28
  498. package/dist/version.d.ts +1 -1
  499. package/dist/version.js +1 -1
  500. package/dist/worker/protocol.js +1 -1
  501. package/dist/workers/worker-replay-state.d.ts +32 -0
  502. package/dist/workers/worker-replay-state.js +35 -0
  503. package/dist/workers/worker-state-namespace.d.ts +21 -0
  504. package/dist/workers/worker-state-namespace.js +13 -0
  505. package/dist/workers/workflow-runner.d.ts +19 -15
  506. package/dist/workers/workflow-runner.js +72 -60
  507. package/dist/workers/workflow-worker-entry.js +5 -2
  508. package/package.json +5 -1
@@ -1,5 +1,5 @@
1
1
  import type { WorkflowId, WorkflowStatus } from './identity.ts';
2
- import type { SearchAttributeValue } from './search-attributes.ts';
2
+ import type { AttributeFilterScalarValue } from './list-options.ts';
3
3
  export declare const MAX_BULK_OPERATION_REQUEST_ID_LENGTH = 200;
4
4
  export declare const MAX_BULK_CONFIRMATION_TOKEN_LENGTH = 256;
5
5
  /**
@@ -14,7 +14,7 @@ export declare const MAX_BULK_CONFIRMATION_TOKEN_LENGTH = 256;
14
14
  * void action;
15
15
  * ```
16
16
  */
17
- export type BulkOperationAction = 'cancel' | 'signal' | 'delete' | 'tag:add' | 'tag:remove' | 'recover';
17
+ export type BulkOperationAction = 'cancel' | 'signal' | 'delete' | 'tag:add' | 'tag:remove' | 'retry-failed';
18
18
  /**
19
19
  * Credential-safe caller summary recorded on bulk audit events. Claims,
20
20
  * bearer tokens, API keys, and other credentials are intentionally absent.
@@ -55,11 +55,11 @@ export type BulkOperationFilterSummary = {
55
55
  tags?: string[];
56
56
  attributes?: Array<{
57
57
  key: string;
58
- value?: SearchAttributeValue;
59
- gt?: SearchAttributeValue;
60
- lt?: SearchAttributeValue;
61
- gte?: SearchAttributeValue;
62
- lte?: SearchAttributeValue;
58
+ value?: AttributeFilterScalarValue | AttributeFilterScalarValue[];
59
+ gt?: AttributeFilterScalarValue;
60
+ lt?: AttributeFilterScalarValue;
61
+ gte?: AttributeFilterScalarValue;
62
+ lte?: AttributeFilterScalarValue;
63
63
  }>;
64
64
  limit?: number;
65
65
  offset?: number;
@@ -126,6 +126,16 @@ export type BulkOperationDryRunResult = {
126
126
  sampleWorkflowIds: WorkflowId[];
127
127
  confirmationToken: string;
128
128
  confirmationTokenVersion: 1;
129
+ /**
130
+ * Delete-only, point-in-time advisory: ids in the matched scope that currently owe an
131
+ * engine-driven finalizer (#446) and so would be SKIPPED by the commit (mirrors
132
+ * {@link BulkDeleteResult.skippedTeardownPending}). Present only on a `delete` preview
133
+ * and only when non-empty. `matched`, `scope`, and `confirmationToken` still describe
134
+ * the full filter scope — they are stable and derive the commit token — so this field
135
+ * surfaces the skip without recomputing them (teardown-owed is transient and is
136
+ * re-evaluated at commit time, where the authoritative skip list is reported).
137
+ */
138
+ skippedTeardownPending?: WorkflowId[];
129
139
  };
130
140
  /**
131
141
  * Options for a dry-run bulk operation preview.
@@ -145,6 +155,7 @@ export type BulkOperationDryRunOptions = {
145
155
  dryRun: true;
146
156
  requestId?: string;
147
157
  principal?: BulkOperationPrincipal;
158
+ bulkConcurrency?: number;
148
159
  };
149
160
  /**
150
161
  * Options for a committed bulk operation.
@@ -165,6 +176,7 @@ export type BulkOperationCommitOptions = {
165
176
  confirmationToken?: string;
166
177
  requestId?: string;
167
178
  principal?: BulkOperationPrincipal;
179
+ bulkConcurrency?: number;
168
180
  };
169
181
  /**
170
182
  * Options accepted by bulk workflow operations.
@@ -173,7 +185,7 @@ export type BulkOperationCommitOptions = {
173
185
  * ```ts
174
186
  * import type { BulkOperationOptions } from '@lostgradient/weft';
175
187
  *
176
- * const options: BulkOperationOptions = { dryRun: true };
188
+ * const options: BulkOperationOptions = { dryRun: true, bulkConcurrency: 4 };
177
189
  * void options;
178
190
  * ```
179
191
  */
@@ -278,6 +290,29 @@ export type BulkCancelResult = {
278
290
  errors: BulkOperationError[];
279
291
  auditEvent?: BulkOperationAuditEvent;
280
292
  };
293
+ /**
294
+ * Result of a bulk failed-workflow retry operation (`engine.retryFailedAll`).
295
+ * Reports the number of workflows accepted for retry, the number that failed
296
+ * to restart or resume, and per-workflow error details in `errors`.
297
+ *
298
+ * @example
299
+ * ```ts
300
+ * import type { BulkRetryFailedResult } from '@lostgradient/weft';
301
+ *
302
+ * const result: BulkRetryFailedResult = {
303
+ * retried: 2,
304
+ * failed: 1,
305
+ * errors: [{ id: 'wf-3', error: 'Checkpoint no longer exists' }],
306
+ * };
307
+ * void result;
308
+ * ```
309
+ */
310
+ export type BulkRetryFailedResult = {
311
+ retried: number;
312
+ failed: number;
313
+ errors: BulkOperationError[];
314
+ auditEvent?: BulkOperationAuditEvent;
315
+ };
281
316
  /**
282
317
  * Result of a bulk signal operation (`engine.signalAll`). Reports the number
283
318
  * of workflows that received the signal and the number for which delivery failed.
@@ -289,10 +324,16 @@ export type BulkSignalResult = {
289
324
  };
290
325
  /**
291
326
  * Result of a bulk delete operation (`engine.deleteAll`). Reports how many
292
- * terminal workflows were deleted from storage.
327
+ * terminal workflows were deleted from storage. Workflows that still owe an
328
+ * engine-driven finalizer (#446) are NOT deleted — deleting them would drop the
329
+ * finalizer payload before the resource is torn down — and are reported, by id, in
330
+ * `skippedTeardownPending` so the skip is visible rather than silent. The skip is
331
+ * transient: once the finalizer settles, a later `deleteAll` removes the record.
293
332
  */
294
333
  export type BulkDeleteResult = {
295
334
  deleted: number;
335
+ /** Ids of terminal workflows skipped because they still owe a finalizer run. */
336
+ skippedTeardownPending?: WorkflowId[];
296
337
  auditEvent?: BulkOperationAuditEvent;
297
338
  };
298
339
  /**
@@ -3,6 +3,7 @@ import { WeftError } from '../weft-error.ts';
3
3
  import type { FailureCategory, OperationId, WorkflowId } from './identity.ts';
4
4
  import type { Duration, RetryPolicy } from './retry-retention.ts';
5
5
  import type { SearchAttributeValue } from './search-attributes.ts';
6
+ import type { WorkflowLogRecord } from './workflow-log.ts';
6
7
  /** Version tag for Worker-mode operation replay signatures stored in checkpoints. */
7
8
  export declare const WORKER_REPLAY_SIGNATURE_FORMAT = "weft-worker-operation-signature-v1";
8
9
  /**
@@ -69,7 +70,7 @@ export interface WorkerReplayOperationFailure {
69
70
  /**
70
71
  * Durable snapshot of a workflow's execution state persisted at each
71
72
  * `yield` boundary. Contains the accumulated operation results, local
72
- * variables, pending signals, search attributes, and the step counter.
73
+ * variables, search attributes, and the step counter.
73
74
  * Users don't construct checkpoints directly; the engine manages them.
74
75
  * Available via time-travel APIs and {@link WorkflowReplay}.
75
76
  *
@@ -91,6 +92,12 @@ export interface Checkpoint {
91
92
  step: number;
92
93
  locals: Record<string, unknown>;
93
94
  accumulatedResults: Array<[number, unknown]>;
95
+ /**
96
+ * Highest accumulated-result step whose replay data has been emitted to the
97
+ * workflow event log. Missing means no consumed results have been emitted yet,
98
+ * which is how old unpruned checkpoints are read.
99
+ */
100
+ accumulatedResultReplayWatermark?: number;
94
101
  /**
95
102
  * Worker-mode replay guards for cached operation results. Inline execution
96
103
  * ignores this optional field; Worker recovery uses it to prove a cached
@@ -103,15 +110,13 @@ export interface Checkpoint {
103
110
  * can throw them back into the generator without trusting user result shape.
104
111
  */
105
112
  workerReplayFailures?: Array<[number, WorkerReplayOperationFailure]>;
106
- pendingSignals: string[];
107
113
  searchAttributes: Record<string, SearchAttributeValue>;
108
- /** User-defined workflow code version. Used for code migrations. */
114
+ /** User-defined workflow code version. Checked during recovery. */
109
115
  version: string;
110
116
  /**
111
117
  * Checkpoint schema version. Distinct from `version` (which is the
112
118
  * user's workflow code version). Bumped whenever the engine changes
113
- * the on-disk checkpoint format. Pre-1.0: refuse to load older
114
- * versions; post-1.0: every bump must ship a migration.
119
+ * the on-disk checkpoint format. Pre-1.0: refuse to load older versions.
115
120
  */
116
121
  schemaVersion: number;
117
122
  createdAt: number;
@@ -126,8 +131,9 @@ export interface Checkpoint {
126
131
  export declare const CURRENT_CHECKPOINT_SCHEMA_VERSION = 2;
127
132
  /**
128
133
  * Thrown by `validateCheckpointShape` when a checkpoint's
129
- * `schemaVersion` does not match the engine's current version. Pre-1.0
130
- * we refuse to load mismatched checkpoints rather than migrating.
134
+ * `schemaVersion` does not match the engine's current version. A mismatched
135
+ * checkpoint is rejected, never upgraded in place: the engine loads only
136
+ * checkpoints stamped with the exact current schema version.
131
137
  */
132
138
  export declare class CheckpointSchemaVersionError extends WeftError<'CheckpointSchemaVersionError'> {
133
139
  readonly found: number | 'pre-versioned';
@@ -183,7 +189,7 @@ export interface TimerEntry {
183
189
  id: string;
184
190
  workflowId: WorkflowId;
185
191
  fireAt: number;
186
- kind: 'sleep' | 'visibility-timeout' | 'execution-deadline' | 'delayed-start' | 'schedule' | 'terminal-cleanup';
192
+ kind: 'sleep' | 'visibility-timeout' | 'execution-deadline' | 'delayed-start' | 'schedule' | 'terminal-cleanup' | 'teardown' | 'wait-condition';
187
193
  executionTimeoutMs?: number;
188
194
  }
189
195
  export type WorkerInboundMessage = {
@@ -198,6 +204,14 @@ export type WorkerInboundMessage = {
198
204
  executionStateOwnerId?: string;
199
205
  deadline?: number;
200
206
  headers?: [string, string][];
207
+ /**
208
+ * Whether the engine host has an `EngineOptions.onLog` sink installed. The
209
+ * worker routes `ctx.log` records back to the host (as a `log` outbound
210
+ * message) only when this is `true`; otherwise it logs to the worker's own
211
+ * console, preserving the default. Omitted (treated as `false`) when no host
212
+ * sink exists, so a worker can never lose logs to a no-op host callback.
213
+ */
214
+ hostHasLogSink?: boolean;
201
215
  } | {
202
216
  type: 'resume';
203
217
  protocolVersion?: number;
@@ -206,6 +220,8 @@ export type WorkerInboundMessage = {
206
220
  workflowId: WorkflowId;
207
221
  checkpoint: ArrayBuffer;
208
222
  operationResult: OperationOutcome;
223
+ /** See {@link WorkerInboundMessage} `run.hostHasLogSink`; carried on every turn so a rebuilt or resumed worker keeps the capability. */
224
+ hostHasLogSink?: boolean;
209
225
  } | {
210
226
  type: 'cancel';
211
227
  protocolVersion?: number;
@@ -234,4 +250,24 @@ export type WorkerOutboundMessage = {
234
250
  errorStack?: string;
235
251
  /** Populated when the execution strategy can classify the failure cause. */
236
252
  failureCategory?: FailureCategory;
253
+ } | {
254
+ /**
255
+ * A `ctx.log` record forwarded from a worker to the engine host's
256
+ * `EngineOptions.onLog` sink (#529). Unlike the other variants, `log` is a
257
+ * NON-TERMINAL, best-effort observability message: it carries no turn-protocol
258
+ * state, never settles or clears the worker turn, and never reaches the strict
259
+ * accept-or-discard gate. The host delivers a record to the sink IFF the sending
260
+ * worker owns `workflowId` (active or parked) AND `record.workflowId` matches the
261
+ * envelope AND the record is a structurally valid `WorkflowLogRecord` within the
262
+ * size cap; otherwise the record is dropped — a wrong-owner, malformed, oversize,
263
+ * or out-of-turn `log` is never a protocol violation and never discards the
264
+ * worker. A between-turns self-log (a fire-and-forget log resolving while the
265
+ * worker is parked) IS delivered, because the worker still owns its parked
266
+ * workflow. The worker emits these only when the inbound message reported
267
+ * `hostHasLogSink: true`.
268
+ */
269
+ type: 'log';
270
+ protocolVersion?: number;
271
+ workflowId: WorkflowId;
272
+ record: WorkflowLogRecord;
237
273
  };
@@ -0,0 +1,146 @@
1
+ import type { FailureCategory, WorkflowStatus } from './identity.ts';
2
+ import type { SearchAttributeHandle, SearchAttributeValue } from './search-attributes.ts';
3
+ /**
4
+ * Numeric half-open range bound, used by visibility filters that match a
5
+ * stored numeric field (timestamps, deadlines). Provide at least one of the
6
+ * four bounds. `gt`/`gte` are mutually exclusive on the lower side; `lt`/`lte`
7
+ * are mutually exclusive on the upper side.
8
+ */
9
+ export interface TimeRange {
10
+ gte?: number;
11
+ lte?: number;
12
+ gt?: number;
13
+ lt?: number;
14
+ }
15
+ /**
16
+ * Filter passed to {@link Engine.list} (and equivalent visibility transports)
17
+ * to narrow which {@link WorkflowSummary} entries are returned. Every field
18
+ * is optional; combining fields applies them as AND.
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * import { Engine, type ListFilter } from '@lostgradient/weft';
23
+ *
24
+ * const engine = new Engine();
25
+ * const filter: ListFilter = {
26
+ * status: ['running', 'failed'],
27
+ * createdAt: { gte: Date.now() - 60_000 },
28
+ * };
29
+ *
30
+ * const page = await engine.list(filter);
31
+ * ```
32
+ */
33
+ export interface ListFilter {
34
+ /** Match workflows whose {@link WorkflowState.status} is one of the listed values. */
35
+ status?: WorkflowStatus | WorkflowStatus[];
36
+ /**
37
+ * Match workflows by registered workflow type (e.g. `'order-fulfillment'`).
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * import type { ListFilter } from '@lostgradient/weft';
42
+ * const filter: ListFilter = { type: 'order-fulfillment' };
43
+ * ```
44
+ */
45
+ type?: string;
46
+ /** Match workflows that carry every listed tag. */
47
+ tags?: string[];
48
+ /** Filter on indexed search attributes (equality, string any-of, or range). */
49
+ attributes?: readonly AttributeFilter[];
50
+ /** Maximum number of summaries to return. Server enforces an upper bound. */
51
+ limit?: number;
52
+ /** Number of summaries to skip before returning results. */
53
+ offset?: number;
54
+ /**
55
+ * Workflow id prefix. Restricted to `[A-Za-z0-9_-]+`; values containing
56
+ * other characters are rejected during validation. Matches by raw
57
+ * `state.id.startsWith(idPrefix)` after candidate enumeration.
58
+ */
59
+ idPrefix?: string;
60
+ /** Range filter on `WorkflowState.createdAt` (ms epoch). */
61
+ createdAt?: TimeRange;
62
+ /** Range filter on `WorkflowState.updatedAt` (ms epoch). */
63
+ updatedAt?: TimeRange;
64
+ /** Range filter on `WorkflowState.executionDeadline` (ms epoch). */
65
+ executionDeadline?: TimeRange;
66
+ /**
67
+ * Match by the workflow's `failureCategory`. The engine uses the
68
+ * `failureCategory` search-attribute index to narrow candidate workflow IDs,
69
+ * then still verifies the loaded `WorkflowState.failureCategory` so state
70
+ * remains authoritative when index entries are stale.
71
+ */
72
+ failureCategory?: FailureCategory | FailureCategory[];
73
+ }
74
+ /**
75
+ * Projection options for {@link Engine.list}. These options do not change
76
+ * which workflows match the list filter; they only control optional summary
77
+ * fields that may require additional storage reads.
78
+ *
79
+ * @example Include failure categories projected from search attributes
80
+ * ```ts
81
+ * import { Engine, type ListOptions } from '@lostgradient/weft';
82
+ *
83
+ * const engine = new Engine();
84
+ * const options: ListOptions = { includeFailureCategory: true };
85
+ * const page = await engine.list({ status: 'failed' }, options);
86
+ * void page;
87
+ * ```
88
+ */
89
+ export interface ListOptions {
90
+ /**
91
+ * Populate `WorkflowSummary.failureCategory` for failed workflows from the
92
+ * stored `failureCategory` search attribute when the workflow state itself
93
+ * does not carry a category. Defaults to `false`.
94
+ */
95
+ includeFailureCategory?: boolean;
96
+ }
97
+ export type AttributeFilterKey = string | SearchAttributeHandle;
98
+ export type AttributeFilterScalarValue = Exclude<SearchAttributeValue, string[]>;
99
+ export type AttributeFilterValue<TKey extends AttributeFilterKey> = TKey extends SearchAttributeHandle<infer TValue> ? TValue extends string[] ? string : TValue : AttributeFilterScalarValue;
100
+ export type AttributeFilterAnyOfValue<TKey extends AttributeFilterKey> = TKey extends SearchAttributeHandle<infer TValue> ? TValue extends string[] ? string[] : TValue extends AttributeFilterScalarValue ? TValue[] : never : AttributeFilterScalarValue[];
101
+ export type AttributeRangeValue<TKey extends AttributeFilterKey> = TKey extends SearchAttributeHandle<infer TValue> ? Extract<TValue, Date | number> : AttributeFilterScalarValue;
102
+ export type AttributeFilter<TKey extends AttributeFilterKey = AttributeFilterKey> = TKey extends SearchAttributeHandle ? {
103
+ key: TKey;
104
+ value?: AttributeFilterValue<TKey> | AttributeFilterAnyOfValue<TKey>;
105
+ gt?: never;
106
+ lt?: never;
107
+ gte?: never;
108
+ lte?: never;
109
+ } | {
110
+ key: TKey;
111
+ value?: never;
112
+ gt?: AttributeRangeValue<TKey>;
113
+ lt?: AttributeRangeValue<TKey>;
114
+ gte?: AttributeRangeValue<TKey>;
115
+ lte?: AttributeRangeValue<TKey>;
116
+ } : {
117
+ key: TKey;
118
+ /**
119
+ * Match a single indexed scalar value, or provide a scalar array to match
120
+ * any listed value for the same attribute.
121
+ */
122
+ value?: AttributeFilterScalarValue | AttributeFilterScalarValue[];
123
+ gt?: AttributeRangeValue<TKey>;
124
+ lt?: AttributeRangeValue<TKey>;
125
+ gte?: AttributeRangeValue<TKey>;
126
+ lte?: AttributeRangeValue<TKey>;
127
+ };
128
+ export type AttributeFilterList<TAttributeKeys extends readonly AttributeFilterKey[]> = {
129
+ readonly [TIndex in keyof TAttributeKeys]: AttributeFilter<TAttributeKeys[TIndex]>;
130
+ };
131
+ export type TypedListFilter<TAttributeKeys extends readonly AttributeFilterKey[]> = Omit<ListFilter, 'attributes'> & {
132
+ attributes?: AttributeFilterList<TAttributeKeys>;
133
+ };
134
+ /**
135
+ * Generic paginated response envelope returned by list operations such as
136
+ * {@link Engine.list} and `engine.listSchedules`. `total` is the full count
137
+ * matching the filter; `items` is the current page slice. `items.length` is
138
+ * bounded by `limit`; the consumer reaches the end of the result set when
139
+ * `offset + items.length >= total`.
140
+ */
141
+ export interface PaginatedResult<T> {
142
+ items: T[];
143
+ total: number;
144
+ offset: number;
145
+ limit: number;
146
+ }
File without changes