@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
@@ -6,19 +6,20 @@ import {
6
6
  MAX_BULK_CONFIRMATION_TOKEN_LENGTH,
7
7
  MAX_BULK_OPERATION_REQUEST_ID_LENGTH
8
8
  } from "../../core/types/bulk.js";
9
+ import { readRestTextBody } from "../rest-body.js";
9
10
  import { parseOptionalFailureCategoryFilter } from "./failure-category-filter.js";
10
- import { invalidParamsFault } from "./operation-helpers.js";
11
+ import { invalidParamsFault, isOperationFault } from "./operation-helpers.js";
11
12
  const workflowStatusSchema = z.custom((value) => typeof value === "string"), searchAttributeValueSchema = z.custom((value) => {
12
13
  if (typeof value === "string" || typeof value === "number" || typeof value === "boolean")
13
14
  return !0;
14
- return Array.isArray(value) && value.every((entry) => typeof entry === "string");
15
- }), attributeFilterSchema = z.object({
15
+ return Array.isArray(value) && value.every((entry) => typeof entry === "string" || typeof entry === "number" || typeof entry === "boolean");
16
+ }), attributeFilterScalarValueSchema = z.custom((value) => typeof value === "string" || typeof value === "number" || typeof value === "boolean"), attributeFilterSchema = z.object({
16
17
  key: z.string().min(1),
17
18
  value: searchAttributeValueSchema.optional(),
18
- gt: searchAttributeValueSchema.optional(),
19
- lt: searchAttributeValueSchema.optional(),
20
- gte: searchAttributeValueSchema.optional(),
21
- lte: searchAttributeValueSchema.optional()
19
+ gt: attributeFilterScalarValueSchema.optional(),
20
+ lt: attributeFilterScalarValueSchema.optional(),
21
+ gte: attributeFilterScalarValueSchema.optional(),
22
+ lte: attributeFilterScalarValueSchema.optional()
22
23
  }), failureCategorySchema = z.custom(isFailureCategory), timeRangeSchema = z.object({
23
24
  gte: z.number().optional(),
24
25
  gt: z.number().optional(),
@@ -40,7 +41,8 @@ export const bulkListFilterInputSchema = z.object({
40
41
  }), bulkOperationControlInputSchema = z.object({
41
42
  dryRun: z.boolean().optional(),
42
43
  confirmationToken: z.string().min(1).max(MAX_BULK_CONFIRMATION_TOKEN_LENGTH).optional(),
43
- requestId: z.string().min(1).max(MAX_BULK_OPERATION_REQUEST_ID_LENGTH).optional()
44
+ requestId: z.string().min(1).max(MAX_BULK_OPERATION_REQUEST_ID_LENGTH).optional(),
45
+ bulkConcurrency: z.number().int().min(1).optional()
44
46
  }), bulkOperatorAccessPolicy = {
45
47
  kind: "scoped",
46
48
  scopes: { kind: "anyOf", scopes: ["workflows:admin"] }
@@ -62,11 +64,13 @@ export function engineFailureFault(message) {
62
64
  data: {}
63
65
  };
64
66
  }
65
- export async function readOptionalJsonBody(request) {
67
+ export async function readOptionalJsonBody(request, context) {
66
68
  try {
67
- const text = await request.text();
69
+ const text = await readRestTextBody(request, context);
68
70
  return text.trim() === "" ? void 0 : JSON.parse(text);
69
- } catch {
71
+ } catch (error) {
72
+ if (isOperationFault(error))
73
+ throw error;
70
74
  throw invalidParamsFault("Invalid JSON body");
71
75
  }
72
76
  }
@@ -92,7 +96,13 @@ function parseAttributeFiltersFromBody(value) {
92
96
  if (attributeValue === void 0)
93
97
  continue;
94
98
  if (!isJsonSearchAttributeValue(attributeValue))
95
- throw Error(`Field "filter.attributes[${index}].${property}" must be a string, number, boolean, or string array`);
99
+ throw Error(`Field "filter.attributes[${index}].${property}" must be a string, number, boolean, or scalar array`);
100
+ if (property === "value") {
101
+ filter.value = attributeValue;
102
+ continue;
103
+ }
104
+ if (Array.isArray(attributeValue))
105
+ throw Error(`Field "filter.attributes[${index}].${property}" must be a string, number, or boolean`);
96
106
  filter[property] = attributeValue;
97
107
  }
98
108
  return filter;
@@ -243,14 +253,23 @@ function applyBasicBulkFilterFields(filter, input) {
243
253
  filter.offset = input.offset;
244
254
  }
245
255
  function copyAttributeFilter(attribute) {
246
- return {
247
- key: attribute.key,
248
- ...attribute.value === void 0 ? {} : { value: attribute.value },
249
- ...attribute.gt === void 0 ? {} : { gt: attribute.gt },
250
- ...attribute.lt === void 0 ? {} : { lt: attribute.lt },
251
- ...attribute.gte === void 0 ? {} : { gte: attribute.gte },
252
- ...attribute.lte === void 0 ? {} : { lte: attribute.lte }
253
- };
256
+ const filter = { key: attribute.key };
257
+ if (attribute.value !== void 0)
258
+ filter.value = attribute.value;
259
+ if (attribute.gt !== void 0)
260
+ filter.gt = copyAttributeRangeBound(attribute.gt, "gt");
261
+ if (attribute.lt !== void 0)
262
+ filter.lt = copyAttributeRangeBound(attribute.lt, "lt");
263
+ if (attribute.gte !== void 0)
264
+ filter.gte = copyAttributeRangeBound(attribute.gte, "gte");
265
+ if (attribute.lte !== void 0)
266
+ filter.lte = copyAttributeRangeBound(attribute.lte, "lte");
267
+ return filter;
268
+ }
269
+ function copyAttributeRangeBound(value, property) {
270
+ if (Array.isArray(value))
271
+ throw Error(`Field "filter.attributes[].${property}" must be a string, number, or boolean`);
272
+ return value;
254
273
  }
255
274
  function applyExtendedBulkFilterFields(filter, input) {
256
275
  if (input.idPrefix !== void 0)
@@ -272,11 +291,12 @@ function applyBulkTimeRangeFields(filter, input) {
272
291
  export function parseBulkOperationControlFromBody(body) {
273
292
  if (body === void 0)
274
293
  return {};
275
- const record = parseJsonObjectBody(body), dryRun = parseOptionalBooleanControl(record, "dryRun"), confirmationToken = parseOptionalNonEmptyStringControl(record, "confirmationToken"), requestId = parseOptionalBulkRequestId(record);
294
+ const record = parseJsonObjectBody(body), dryRun = parseOptionalBooleanControl(record, "dryRun"), confirmationToken = parseOptionalNonEmptyStringControl(record, "confirmationToken"), requestId = parseOptionalBulkRequestId(record), bulkConcurrency = parseOptionalPositiveIntegerControl(record, "bulkConcurrency");
276
295
  return {
277
296
  ...dryRun === void 0 ? {} : { dryRun },
278
297
  ...confirmationToken === void 0 ? {} : { confirmationToken },
279
- ...requestId === void 0 ? {} : { requestId }
298
+ ...requestId === void 0 ? {} : { requestId },
299
+ ...bulkConcurrency === void 0 ? {} : { bulkConcurrency }
280
300
  };
281
301
  }
282
302
  export function bulkOperationOptionsFromInput(input, principal) {
@@ -285,14 +305,16 @@ export function bulkOperationOptionsFromInput(input, principal) {
285
305
  return {
286
306
  dryRun: !0,
287
307
  principal: auditPrincipal,
288
- ...input.requestId === void 0 ? {} : { requestId: input.requestId }
308
+ ...input.requestId === void 0 ? {} : { requestId: input.requestId },
309
+ ...input.bulkConcurrency === void 0 ? {} : { bulkConcurrency: input.bulkConcurrency }
289
310
  };
290
311
  if (input.confirmationToken === void 0)
291
312
  throw invalidParamsFault('Field "confirmationToken" is required after a dry run');
292
313
  return {
293
314
  confirmationToken: input.confirmationToken,
294
315
  principal: auditPrincipal,
295
- ...input.requestId === void 0 ? {} : { requestId: input.requestId }
316
+ ...input.requestId === void 0 ? {} : { requestId: input.requestId },
317
+ ...input.bulkConcurrency === void 0 ? {} : { bulkConcurrency: input.bulkConcurrency }
296
318
  };
297
319
  }
298
320
  function principalToBulkOperationPrincipal(principal) {
@@ -316,6 +338,14 @@ function parseOptionalBooleanControl(record, fieldName) {
316
338
  return value;
317
339
  throw Error(`Field "${fieldName}" must be a boolean`);
318
340
  }
341
+ function parseOptionalPositiveIntegerControl(record, fieldName) {
342
+ const value = record[fieldName];
343
+ if (value === void 0)
344
+ return;
345
+ if (typeof value === "number" && Number.isSafeInteger(value) && value >= 1)
346
+ return value;
347
+ throw Error(`Field "${fieldName}" must be a positive integer`);
348
+ }
319
349
  function parseOptionalNonEmptyStringControl(record, fieldName) {
320
350
  const value = record[fieldName];
321
351
  if (value === void 0)
@@ -9,10 +9,10 @@ declare const bulkMutateWorkflowTagsInput: z.ZodObject<{
9
9
  attributes: z.ZodOptional<z.ZodArray<z.ZodObject<{
10
10
  key: z.ZodString;
11
11
  value: z.ZodOptional<z.ZodCustom<import("../../index.ts").SearchAttributeValue, import("../../index.ts").SearchAttributeValue>>;
12
- gt: z.ZodOptional<z.ZodCustom<import("../../index.ts").SearchAttributeValue, import("../../index.ts").SearchAttributeValue>>;
13
- lt: z.ZodOptional<z.ZodCustom<import("../../index.ts").SearchAttributeValue, import("../../index.ts").SearchAttributeValue>>;
14
- gte: z.ZodOptional<z.ZodCustom<import("../../index.ts").SearchAttributeValue, import("../../index.ts").SearchAttributeValue>>;
15
- lte: z.ZodOptional<z.ZodCustom<import("../../index.ts").SearchAttributeValue, import("../../index.ts").SearchAttributeValue>>;
12
+ gt: z.ZodOptional<z.ZodCustom<import("../../core/types.ts").AttributeFilterScalarValue, import("../../core/types.ts").AttributeFilterScalarValue>>;
13
+ lt: z.ZodOptional<z.ZodCustom<import("../../core/types.ts").AttributeFilterScalarValue, import("../../core/types.ts").AttributeFilterScalarValue>>;
14
+ gte: z.ZodOptional<z.ZodCustom<import("../../core/types.ts").AttributeFilterScalarValue, import("../../core/types.ts").AttributeFilterScalarValue>>;
15
+ lte: z.ZodOptional<z.ZodCustom<import("../../core/types.ts").AttributeFilterScalarValue, import("../../core/types.ts").AttributeFilterScalarValue>>;
16
16
  }, z.core.$strip>>>;
17
17
  limit: z.ZodOptional<z.ZodNumber>;
18
18
  offset: z.ZodOptional<z.ZodNumber>;
@@ -45,6 +45,7 @@ declare const bulkMutateWorkflowTagsInput: z.ZodObject<{
45
45
  dryRun: z.ZodOptional<z.ZodBoolean>;
46
46
  confirmationToken: z.ZodOptional<z.ZodString>;
47
47
  requestId: z.ZodOptional<z.ZodString>;
48
+ bulkConcurrency: z.ZodOptional<z.ZodNumber>;
48
49
  }, z.core.$strip>;
49
50
  export type BulkMutateWorkflowTagsInput = z.infer<typeof bulkMutateWorkflowTagsInput>;
50
51
  export type BulkMutateWorkflowTagsOutput = BulkTagResult | BulkOperationDryRunResult;
@@ -58,10 +59,10 @@ export declare const bulkMutateWorkflowTagsOperation: import("../operation-catal
58
59
  attributes?: {
59
60
  key: string;
60
61
  value?: import("../../index.ts").SearchAttributeValue | undefined;
61
- gt?: import("../../index.ts").SearchAttributeValue | undefined;
62
- lt?: import("../../index.ts").SearchAttributeValue | undefined;
63
- gte?: import("../../index.ts").SearchAttributeValue | undefined;
64
- lte?: import("../../index.ts").SearchAttributeValue | undefined;
62
+ gt?: import("../../core/types.ts").AttributeFilterScalarValue | undefined;
63
+ lt?: import("../../core/types.ts").AttributeFilterScalarValue | undefined;
64
+ gte?: import("../../core/types.ts").AttributeFilterScalarValue | undefined;
65
+ lte?: import("../../core/types.ts").AttributeFilterScalarValue | undefined;
65
66
  }[] | undefined;
66
67
  limit?: number | undefined;
67
68
  offset?: number | undefined;
@@ -89,6 +90,7 @@ export declare const bulkMutateWorkflowTagsOperation: import("../operation-catal
89
90
  dryRun?: boolean | undefined;
90
91
  confirmationToken?: string | undefined;
91
92
  requestId?: string | undefined;
92
- }, BulkMutateWorkflowTagsOutput>;
93
+ bulkConcurrency?: number | undefined;
94
+ }, BulkMutateWorkflowTagsOutput, unknown>;
93
95
  export declare const bulkMutateWorkflowTagsRestBinding: UnknownRestBinding;
94
96
  export {};
@@ -67,8 +67,8 @@ export const bulkMutateWorkflowTagsRestBinding = {
67
67
  tags: { kind: "body-field", bodyField: "tags" },
68
68
  operation: { kind: "body-field", bodyField: "operation" }
69
69
  },
70
- extractInput: async (request) => {
71
- const raw = await readOptionalJsonBody(request);
70
+ extractInput: async (request, _pathParams, context) => {
71
+ const raw = await readOptionalJsonBody(request, context);
72
72
  if (raw === void 0 || typeof raw !== "object" || raw === null || Array.isArray(raw))
73
73
  throw invalidParamsFault("Request body must be a JSON object");
74
74
  const body = raw;
@@ -1,4 +1,4 @@
1
- import type { BulkCancelResult, BulkDeleteResult, BulkOperationDryRunResult, BulkSignalResult, BulkTagResult, ListFilter, PurgeResult } from '../../core/types.ts';
1
+ import type { BulkCancelResult, BulkDeleteResult, BulkOperationDryRunResult, BulkRetryFailedResult, BulkSignalResult, BulkTagResult, ListFilter, PurgeResult } from '../../core/types.ts';
2
2
  import { type BulkListFilterInput } from './bulk-filter-helpers.ts';
3
3
  /**
4
4
  * Coerces filter tags (label `Field "filter.tags"`), builds a `ListFilter`
@@ -17,7 +17,7 @@ import { type BulkListFilterInput } from './bulk-filter-helpers.ts';
17
17
  * raw engine messages through unmasked.
18
18
  */
19
19
  export declare function validatedListFilterFromBulkInput(input: BulkListFilterInput): ListFilter;
20
- export type BulkOperationSuccessResult = BulkCancelResult | BulkDeleteResult | BulkSignalResult | BulkTagResult | BulkOperationDryRunResult | PurgeResult;
20
+ export type BulkOperationSuccessResult = BulkCancelResult | BulkDeleteResult | BulkRetryFailedResult | BulkSignalResult | BulkTagResult | BulkOperationDryRunResult | PurgeResult;
21
21
  /**
22
22
  * Standard JSON 200 response shape for bulk-workflow operations. Used by
23
23
  * every bulk operation's REST `shapeSuccess`; the result types are unioned
@@ -0,0 +1,7 @@
1
+ import type { BulkOperationDryRunResult, BulkRetryFailedResult } from '../../core/types.ts';
2
+ import type { UnknownRestBinding } from '../rest-bindings.ts';
3
+ import { type BulkListFilterInput, type BulkOperationControlInput } from './bulk-filter-helpers.ts';
4
+ export type BulkRetryFailedWorkflowsInput = BulkListFilterInput & BulkOperationControlInput;
5
+ export type BulkRetryFailedWorkflowsOutput = BulkRetryFailedResult | BulkOperationDryRunResult;
6
+ export declare const bulkRetryFailedWorkflowsOperation: import("../operation-catalog.ts").OperationDefinition<BulkRetryFailedWorkflowsInput, BulkRetryFailedWorkflowsOutput, unknown>;
7
+ export declare const bulkRetryFailedWorkflowsRestBinding: UnknownRestBinding;
@@ -0,0 +1,64 @@
1
+ import { z } from "zod";
2
+ import { BulkOperationConfirmationError } from "../../core/engine.js";
3
+ import { defineOperation } from "../operation-registry.js";
4
+ import {
5
+ bulkListFilterInputSchema,
6
+ bulkOperationControlInputSchema,
7
+ bulkOperationOptionsFromInput,
8
+ bulkOperatorAccessPolicy,
9
+ engineFailureFault,
10
+ faultMessage,
11
+ parseBulkListFilterFromBody,
12
+ parseBulkOperationControlFromBody,
13
+ readOptionalJsonBody
14
+ } from "./bulk-filter-helpers.js";
15
+ import {
16
+ shapeBulkJsonSuccess,
17
+ validatedListFilterFromBulkInput
18
+ } from "./bulk-operation-helpers.js";
19
+ import { invalidParamsFault, shapeRestFault } from "./operation-helpers.js";
20
+ const bulkRetryFailedWorkflowsInput = bulkListFilterInputSchema.merge(bulkOperationControlInputSchema), bulkRetryFailedWorkflowsOutput = z.unknown();
21
+ export const bulkRetryFailedWorkflowsOperation = defineOperation({
22
+ name: "weft.workflows.bulk.retryfailed",
23
+ mcpExposable: !1,
24
+ summary: "Retry failed workflows in bulk",
25
+ destructive: !0,
26
+ tags: ["Workflows"],
27
+ inputSchema: bulkRetryFailedWorkflowsInput,
28
+ outputSchema: bulkRetryFailedWorkflowsOutput,
29
+ access: bulkOperatorAccessPolicy,
30
+ transports: { http: !0, jsonRpcHttp: !0, jsonRpcWebSocket: !0, jsonRpcStdio: !0 },
31
+ unknownKeyPolicy: { http: "strip", jsonRpc: "reject" },
32
+ invoke: async ({ input, engine, principal }) => {
33
+ const e = engine, filter = validatedListFilterFromBulkInput(input), operationOptions = bulkOperationOptionsFromInput(input, principal);
34
+ try {
35
+ if (operationOptions.dryRun === !0)
36
+ return await e.retryFailedAll(filter, operationOptions);
37
+ return await e.retryFailedAll(filter, operationOptions);
38
+ } catch (error) {
39
+ if (error instanceof BulkOperationConfirmationError)
40
+ throw invalidParamsFault(error.message);
41
+ throw engineFailureFault(faultMessage(error));
42
+ }
43
+ }
44
+ }), bulkRetryFailedWorkflowsRestBinding = {
45
+ method: "POST",
46
+ path: "/v1/workflows/bulk/retry-failed",
47
+ pathParamNames: [],
48
+ operationName: "weft.workflows.bulk.retryfailed",
49
+ inputSources: {},
50
+ extractInput: async (request, _pathParams, context) => {
51
+ const raw = await readOptionalJsonBody(request, context);
52
+ try {
53
+ return {
54
+ ...parseBulkListFilterFromBody(raw),
55
+ ...parseBulkOperationControlFromBody(raw)
56
+ };
57
+ } catch (error) {
58
+ throw invalidParamsFault(faultMessage(error));
59
+ }
60
+ },
61
+ success: { kind: "json", status: 200 },
62
+ shapeSuccess: (output) => shapeBulkJsonSuccess(output),
63
+ shapeFault: shapeRestFault
64
+ };
@@ -8,10 +8,10 @@ declare const bulkSignalWorkflowsInput: z.ZodObject<{
8
8
  attributes: z.ZodOptional<z.ZodArray<z.ZodObject<{
9
9
  key: z.ZodString;
10
10
  value: z.ZodOptional<z.ZodCustom<import("../../index.ts").SearchAttributeValue, import("../../index.ts").SearchAttributeValue>>;
11
- gt: z.ZodOptional<z.ZodCustom<import("../../index.ts").SearchAttributeValue, import("../../index.ts").SearchAttributeValue>>;
12
- lt: z.ZodOptional<z.ZodCustom<import("../../index.ts").SearchAttributeValue, import("../../index.ts").SearchAttributeValue>>;
13
- gte: z.ZodOptional<z.ZodCustom<import("../../index.ts").SearchAttributeValue, import("../../index.ts").SearchAttributeValue>>;
14
- lte: z.ZodOptional<z.ZodCustom<import("../../index.ts").SearchAttributeValue, import("../../index.ts").SearchAttributeValue>>;
11
+ gt: z.ZodOptional<z.ZodCustom<import("../../core/types.ts").AttributeFilterScalarValue, import("../../core/types.ts").AttributeFilterScalarValue>>;
12
+ lt: z.ZodOptional<z.ZodCustom<import("../../core/types.ts").AttributeFilterScalarValue, import("../../core/types.ts").AttributeFilterScalarValue>>;
13
+ gte: z.ZodOptional<z.ZodCustom<import("../../core/types.ts").AttributeFilterScalarValue, import("../../core/types.ts").AttributeFilterScalarValue>>;
14
+ lte: z.ZodOptional<z.ZodCustom<import("../../core/types.ts").AttributeFilterScalarValue, import("../../core/types.ts").AttributeFilterScalarValue>>;
15
15
  }, z.core.$strip>>>;
16
16
  limit: z.ZodOptional<z.ZodNumber>;
17
17
  offset: z.ZodOptional<z.ZodNumber>;
@@ -40,6 +40,7 @@ declare const bulkSignalWorkflowsInput: z.ZodObject<{
40
40
  dryRun: z.ZodOptional<z.ZodBoolean>;
41
41
  confirmationToken: z.ZodOptional<z.ZodString>;
42
42
  requestId: z.ZodOptional<z.ZodString>;
43
+ bulkConcurrency: z.ZodOptional<z.ZodNumber>;
43
44
  }, z.core.$strip>;
44
45
  export type BulkSignalWorkflowsInput = z.infer<typeof bulkSignalWorkflowsInput>;
45
46
  export type BulkSignalWorkflowsOutput = BulkSignalResult | BulkOperationDryRunResult;
@@ -51,10 +52,10 @@ export declare const bulkSignalWorkflowsOperation: import("../operation-catalog.
51
52
  attributes?: {
52
53
  key: string;
53
54
  value?: import("../../index.ts").SearchAttributeValue | undefined;
54
- gt?: import("../../index.ts").SearchAttributeValue | undefined;
55
- lt?: import("../../index.ts").SearchAttributeValue | undefined;
56
- gte?: import("../../index.ts").SearchAttributeValue | undefined;
57
- lte?: import("../../index.ts").SearchAttributeValue | undefined;
55
+ gt?: import("../../core/types.ts").AttributeFilterScalarValue | undefined;
56
+ lt?: import("../../core/types.ts").AttributeFilterScalarValue | undefined;
57
+ gte?: import("../../core/types.ts").AttributeFilterScalarValue | undefined;
58
+ lte?: import("../../core/types.ts").AttributeFilterScalarValue | undefined;
58
59
  }[] | undefined;
59
60
  limit?: number | undefined;
60
61
  offset?: number | undefined;
@@ -82,6 +83,7 @@ export declare const bulkSignalWorkflowsOperation: import("../operation-catalog.
82
83
  dryRun?: boolean | undefined;
83
84
  confirmationToken?: string | undefined;
84
85
  requestId?: string | undefined;
85
- }, BulkSignalWorkflowsOutput>;
86
+ bulkConcurrency?: number | undefined;
87
+ }, BulkSignalWorkflowsOutput, unknown>;
86
88
  export declare const bulkSignalWorkflowsRestBinding: UnknownRestBinding;
87
89
  export {};
@@ -53,8 +53,8 @@ export const bulkSignalWorkflowsOperation = defineOperation({
53
53
  name: { kind: "body-field", bodyField: "name" },
54
54
  payload: { kind: "body-field", bodyField: "payload" }
55
55
  },
56
- extractInput: async (request) => {
57
- const raw = await readOptionalJsonBody(request);
56
+ extractInput: async (request, _pathParams, context) => {
57
+ const raw = await readOptionalJsonBody(request, context);
58
58
  if (raw === void 0 || typeof raw !== "object" || raw === null || Array.isArray(raw))
59
59
  throw invalidParamsFault("Request body must be a JSON object");
60
60
  const body = raw;
@@ -8,6 +8,6 @@ export type CancelScheduleInput = z.infer<typeof cancelScheduleInput>;
8
8
  export type CancelScheduleOutput = z.infer<typeof cancelScheduleOutput>;
9
9
  export declare const cancelScheduleOperation: import("../operation-catalog.ts").OperationDefinition<{
10
10
  scheduleId: string;
11
- }, undefined>;
11
+ }, undefined, unknown>;
12
12
  export declare const cancelScheduleRestBinding: UnknownRestBinding;
13
13
  export {};
@@ -8,6 +8,7 @@ declare const createScheduleInput: z.ZodObject<{
8
8
  id: z.ZodOptional<z.ZodUnknown>;
9
9
  overlap: z.ZodOptional<z.ZodUnknown>;
10
10
  backfill: z.ZodOptional<z.ZodUnknown>;
11
+ jitter: z.ZodOptional<z.ZodUnknown>;
11
12
  }, z.core.$strip>;
12
13
  declare const createScheduleOutput: z.ZodObject<{
13
14
  id: z.ZodString;
@@ -22,8 +23,9 @@ export declare const createScheduleOperation: import("../operation-catalog.ts").
22
23
  id?: unknown;
23
24
  overlap?: unknown;
24
25
  backfill?: unknown;
26
+ jitter?: unknown;
25
27
  }, {
26
28
  id: string;
27
- }>;
29
+ }, unknown>;
28
30
  export declare const createScheduleRestBinding: UnknownRestBinding;
29
31
  export {};
@@ -1,6 +1,7 @@
1
1
  import { z } from "zod";
2
2
  import { defineOperation } from "../operation-registry.js";
3
- import { invalidParamsFault, shapeRestFault } from "./operation-helpers.js";
3
+ import { readRestJsonBody } from "../rest-body.js";
4
+ import { invalidParamsFault, isOperationFault, shapeRestFault } from "./operation-helpers.js";
4
5
  import { mapScheduleErrorToFault, validateScheduleInputCadence } from "./schedule-faults.js";
5
6
  const VALID_SCHEDULE_OVERLAP_POLICIES = new Set([
6
7
  "skip",
@@ -14,7 +15,8 @@ const VALID_SCHEDULE_OVERLAP_POLICIES = new Set([
14
15
  input: z.unknown().optional(),
15
16
  id: z.unknown().optional(),
16
17
  overlap: z.unknown().optional(),
17
- backfill: z.unknown().optional()
18
+ backfill: z.unknown().optional(),
19
+ jitter: z.unknown().optional()
18
20
  }), createScheduleOutput = z.object({
19
21
  id: z.string()
20
22
  });
@@ -42,11 +44,22 @@ function validateOptionalScheduleFields(input) {
42
44
  throw invalidParamsFault('Field "backfill" must be a boolean');
43
45
  validatedBackfill = input.backfill;
44
46
  }
45
- return { id: validatedId, overlap: validatedOverlap, backfill: validatedBackfill };
47
+ let validatedJitter;
48
+ if (input.jitter !== void 0) {
49
+ if (typeof input.jitter !== "string" && typeof input.jitter !== "number")
50
+ throw invalidParamsFault('Field "jitter" must be a duration string or a number of milliseconds');
51
+ validatedJitter = input.jitter;
52
+ }
53
+ return {
54
+ id: validatedId,
55
+ overlap: validatedOverlap,
56
+ backfill: validatedBackfill,
57
+ jitter: validatedJitter
58
+ };
46
59
  }
47
60
  function validateCreateScheduleInput(input) {
48
- const { type, spec } = validateRequiredScheduleFields(input), { id, overlap, backfill } = validateOptionalScheduleFields(input);
49
- return { type, spec, id, overlap, backfill };
61
+ const { type, spec } = validateRequiredScheduleFields(input), { id, overlap, backfill, jitter } = validateOptionalScheduleFields(input);
62
+ return { type, spec, id, overlap, backfill, jitter };
50
63
  }
51
64
  export const createScheduleOperation = defineOperation({
52
65
  name: "weft.schedules.create",
@@ -65,7 +78,8 @@ export const createScheduleOperation = defineOperation({
65
78
  const typedEngine = engine, validated = validateCreateScheduleInput(input), options = {
66
79
  ...validated.id !== void 0 ? { id: validated.id } : {},
67
80
  ...validated.overlap !== void 0 ? { overlap: validated.overlap } : {},
68
- ...validated.backfill !== void 0 ? { backfill: validated.backfill } : {}
81
+ ...validated.backfill !== void 0 ? { backfill: validated.backfill } : {},
82
+ ...validated.jitter !== void 0 ? { jitter: validated.jitter } : {}
69
83
  };
70
84
  try {
71
85
  return { id: (await typedEngine.schedule(validated.type, input.input, validated.spec, options)).id };
@@ -89,13 +103,16 @@ export const createScheduleRestBinding = {
89
103
  input: { kind: "body-field", bodyField: "input" },
90
104
  id: { kind: "body-field", bodyField: "id" },
91
105
  overlap: { kind: "body-field", bodyField: "overlap" },
92
- backfill: { kind: "body-field", bodyField: "backfill" }
106
+ backfill: { kind: "body-field", bodyField: "backfill" },
107
+ jitter: { kind: "body-field", bodyField: "jitter" }
93
108
  },
94
- extractInput: async (request) => {
109
+ extractInput: async (request, _pathParams, context) => {
95
110
  let body;
96
111
  try {
97
- body = await request.json();
98
- } catch {
112
+ body = await readRestJsonBody(request, context);
113
+ } catch (error) {
114
+ if (isOperationFault(error))
115
+ throw error;
99
116
  throw invalidParamsFault("Invalid JSON body");
100
117
  }
101
118
  if (typeof body !== "object" || body === null)
@@ -108,7 +125,8 @@ export const createScheduleRestBinding = {
108
125
  input: record.input,
109
126
  id: record.id,
110
127
  overlap: record.overlap,
111
- backfill: record.backfill
128
+ backfill: record.backfill,
129
+ jitter: record.jitter
112
130
  };
113
131
  },
114
132
  success: { kind: "json", status: 201 },
@@ -0,0 +1,54 @@
1
+ import { z } from 'zod';
2
+ import type { FleetEventEnvelope } from '../fleet-event-feed.ts';
3
+ declare const fleetEventsSubscriptionInput: z.ZodObject<{
4
+ workflowId: z.ZodOptional<z.ZodString>;
5
+ kind: z.ZodOptional<z.ZodEnum<{
6
+ "human-review:requested": "human-review:requested";
7
+ "human-review:completed": "human-review:completed";
8
+ "alert:fired": "alert:fired";
9
+ "alert:resolved": "alert:resolved";
10
+ "activity:started": "activity:started";
11
+ "activity:completed": "activity:completed";
12
+ "activity:async-pending": "activity:async-pending";
13
+ "activity:failed": "activity:failed";
14
+ "task:dead-lettered": "task:dead-lettered";
15
+ "attributes:changed": "attributes:changed";
16
+ "schedule:fired": "schedule:fired";
17
+ "schedule:missed-fire": "schedule:missed-fire";
18
+ "signal:received": "signal:received";
19
+ "signal:delivered": "signal:delivered";
20
+ "checkpoint:size-warning": "checkpoint:size-warning";
21
+ "development:warning": "development:warning";
22
+ "cleanup:warning": "cleanup:warning";
23
+ "storage:size-reported": "storage:size-reported";
24
+ "worker:connected": "worker:connected";
25
+ "worker:disconnected": "worker:disconnected";
26
+ "constraint:violated": "constraint:violated";
27
+ "update:received": "update:received";
28
+ "update:completed": "update:completed";
29
+ "workflow:started": "workflow:started";
30
+ "workflow:completed": "workflow:completed";
31
+ "workflow:failed": "workflow:failed";
32
+ "workflow:cancelled": "workflow:cancelled";
33
+ "workflow:timed-out": "workflow:timed-out";
34
+ "workflow:resumed": "workflow:resumed";
35
+ "workflow:suspended": "workflow:suspended";
36
+ "workflow:teardown": "workflow:teardown";
37
+ }>>;
38
+ fromCursor: z.ZodOptional<z.ZodString>;
39
+ }, z.core.$strip>;
40
+ declare const fleetEventsSubscriptionEnvelope: z.ZodObject<{
41
+ subscriptionId: z.ZodString;
42
+ cursor: z.ZodString;
43
+ }, z.core.$strip>;
44
+ export type FleetEventsSubscriptionInput = z.infer<typeof fleetEventsSubscriptionInput>;
45
+ export type FleetEventsSubscriptionEnvelope = z.infer<typeof fleetEventsSubscriptionEnvelope>;
46
+ export declare const fleetEventsSubscriptionOperation: import("../operation-catalog.ts").OperationDefinition<{
47
+ workflowId?: string | undefined;
48
+ kind?: "human-review:requested" | "human-review:completed" | "alert:fired" | "alert:resolved" | "activity:started" | "activity:completed" | "activity:async-pending" | "activity:failed" | "task:dead-lettered" | "attributes:changed" | "schedule:fired" | "schedule:missed-fire" | "signal:received" | "signal:delivered" | "checkpoint:size-warning" | "development:warning" | "cleanup:warning" | "storage:size-reported" | "worker:connected" | "worker:disconnected" | "constraint:violated" | "update:received" | "update:completed" | "workflow:started" | "workflow:completed" | "workflow:failed" | "workflow:cancelled" | "workflow:timed-out" | "workflow:resumed" | "workflow:suspended" | "workflow:teardown" | undefined;
49
+ fromCursor?: string | undefined;
50
+ }, {
51
+ subscriptionId: string;
52
+ cursor: string;
53
+ }, FleetEventEnvelope>;
54
+ export {};
@@ -0,0 +1,99 @@
1
+ import { z } from "zod";
2
+ import { raiseFault } from "../operation-catalog/raise-fault.js";
3
+ import { defineOperation } from "../operation-registry.js";
4
+ import { EVENTS_READ_EVENT_TYPES } from "../runtime/client-visible-events.js";
5
+ import { decodeCursor } from "../workflow-event-feed.js";
6
+ import { invalidParamsFault } from "./operation-helpers.js";
7
+ const INITIAL_SUBSCRIPTION_CURSOR = "-1", MAX_FLEET_SUBSCRIPTION_REPLAY_EVENTS = 1000, fleetEventKindSchema = z.enum(EVENTS_READ_EVENT_TYPES), fleetCursorSchema = z.string().regex(/^(?:-1|\d+)$/, "Invalid cursor").refine((cursor) => decodeCursor(cursor) !== null, {
8
+ message: "Invalid cursor"
9
+ }), fleetEventsSubscriptionInput = z.object({
10
+ workflowId: z.string().min(1).optional(),
11
+ kind: fleetEventKindSchema.optional(),
12
+ fromCursor: fleetCursorSchema.optional()
13
+ }), fleetEventsSubscriptionEnvelope = z.object({
14
+ subscriptionId: z.string(),
15
+ cursor: z.string()
16
+ }), fleetEventEnvelopeSchema = z.object({
17
+ kind: z.string(),
18
+ workflowId: z.string().optional(),
19
+ sequence: z.number(),
20
+ cursor: z.string(),
21
+ emittedAtMs: z.number(),
22
+ payload: z.unknown()
23
+ });
24
+ export const fleetEventsSubscriptionOperation = defineOperation({
25
+ name: "weft.events.subscribe",
26
+ mcpExposable: !1,
27
+ kind: "subscription",
28
+ summary: "Subscribe to fleet-wide events with replay-from-cursor",
29
+ description: "Subscribes to the server-level event feed across workflows. Optional filters narrow delivery by workflow id or event kind after the single fleet cursor has been applied. Historical replay is capped at 1,000 matching retained events per subscription; use a recent fromCursor for older feeds.",
30
+ destructive: !1,
31
+ tags: ["Events"],
32
+ inputSchema: fleetEventsSubscriptionInput,
33
+ outputSchema: fleetEventsSubscriptionEnvelope,
34
+ producibleFaults: ["UnsupportedTransport", "InvalidParams"],
35
+ eventSchema: fleetEventEnvelopeSchema,
36
+ access: {
37
+ kind: "scoped",
38
+ scopes: { kind: "anyOf", scopes: ["events:read"] }
39
+ },
40
+ discoverable: !0,
41
+ transports: { http: !1, jsonRpcHttp: !1, jsonRpcWebSocket: !0, jsonRpcStdio: !1 },
42
+ unknownKeyPolicy: { http: "strip", jsonRpc: "reject" },
43
+ invoke: async ({ input, engine, transport }) => {
44
+ const startingCursor = input.fromCursor ?? INITIAL_SUBSCRIPTION_CURSOR;
45
+ if (decodeCursor(startingCursor) === null)
46
+ raiseFault(fleetEventsSubscriptionOperation, invalidParamsFault("Invalid cursor"));
47
+ const fleetFeed = getFleetEventFeed(engine, transport), controller = new AbortController, iterable = fleetFeed.subscribe({
48
+ ...input.fromCursor === void 0 ? {} : { fromCursor: input.fromCursor },
49
+ signal: controller.signal,
50
+ replayLimit: MAX_FLEET_SUBSCRIPTION_REPLAY_EVENTS,
51
+ filterEnvelope: (envelope) => matchesFleetEventFilter(envelope, input),
52
+ createReplayLimitError: (count, limit) => fleetReplayLimitFault(count, limit)
53
+ });
54
+ return {
55
+ envelope: { subscriptionId: `sub_${crypto.randomUUID()}`, cursor: startingCursor },
56
+ iterable,
57
+ close: async () => {
58
+ controller.abort();
59
+ }
60
+ };
61
+ }
62
+ });
63
+ function fleetReplayLimitFault(count, limit) {
64
+ return invalidParamsFault(`Fleet event replay window is ${count} matching events; maximum is ${limit}. Supply a more recent fromCursor.`);
65
+ }
66
+ function matchesFleetEventFilter(envelope, input) {
67
+ if (!matchesWorkflowIdFilter(envelope, input.workflowId))
68
+ return !1;
69
+ if (!matchesKindFilter(envelope, input.kind))
70
+ return !1;
71
+ return !0;
72
+ }
73
+ function matchesWorkflowIdFilter(envelope, workflowId) {
74
+ if (workflowId === void 0)
75
+ return !0;
76
+ return envelope.workflowId === workflowId;
77
+ }
78
+ function matchesKindFilter(envelope, kind) {
79
+ if (kind === void 0)
80
+ return !0;
81
+ return envelope.kind === kind;
82
+ }
83
+ function getFleetEventFeed(engine, transport) {
84
+ if (typeof engine === "object" && engine !== null && "fleetFeed" in engine) {
85
+ const fleetFeed = engine.fleetFeed;
86
+ if (isFleetEventSubscriber(fleetFeed))
87
+ return fleetFeed;
88
+ }
89
+ raiseFault(fleetEventsSubscriptionOperation, {
90
+ code: "UnsupportedTransport",
91
+ message: "Fleet event subscription requires a WebSocket fleet event feed",
92
+ data: { transport, supported: ["jsonRpcWebSocket"] }
93
+ });
94
+ }
95
+ function isFleetEventSubscriber(value) {
96
+ if (typeof value !== "object" || value === null)
97
+ return !1;
98
+ return typeof value.subscribe === "function";
99
+ }
@@ -24,6 +24,6 @@ export declare const forkWorkflowOperation: import("../operation-catalog.ts").Op
24
24
  fromStep?: unknown;
25
25
  }, {
26
26
  id: string;
27
- }>;
27
+ }, unknown>;
28
28
  export declare const forkWorkflowRestBinding: UnknownRestBinding;
29
29
  export {};