@lostgradient/weft 0.23.1 → 0.24.1

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 (469) hide show
  1. package/README.md +72 -4
  2. package/dist/cli/codegen-emit-dedup.d.ts +81 -0
  3. package/dist/cli/codegen-emit-dedup.js +45 -0
  4. package/dist/cli/codegen-emit-registry.d.ts +90 -0
  5. package/dist/cli/codegen-emit-registry.js +50 -0
  6. package/dist/cli/codegen-emit.d.ts +26 -39
  7. package/dist/cli/codegen-emit.js +4 -27
  8. package/dist/cli/codegen-validate.d.ts +49 -0
  9. package/dist/cli/codegen-validate.js +186 -0
  10. package/dist/cli/codegen.js +6 -87
  11. package/dist/cli/conformance.js +5 -2
  12. package/dist/cli/generated/operation-catalog.snapshot.json +381 -3
  13. package/dist/cli/generated/operation-client.generated.d.ts +350 -10
  14. package/dist/cli/generated/operation-client.generated.js +14 -0
  15. package/dist/cli/output.js +1 -1
  16. package/dist/cli/parse-schedule-arguments.js +15 -3
  17. package/dist/cli/schedule.js +2 -1
  18. package/dist/cli/storage-factory.js +2 -0
  19. package/dist/cli/types.d.ts +2 -1
  20. package/dist/cli/workflow-commands.js +2 -0
  21. package/dist/cli-main.js +1 -1
  22. package/dist/client/http-client-requests.js +6 -9
  23. package/dist/client/start-body.js +1 -0
  24. package/dist/core/application-payload-digest.d.ts +42 -0
  25. package/dist/core/application-payload-digest.js +76 -0
  26. package/dist/core/application-primitive-abort.d.ts +50 -0
  27. package/dist/core/application-primitive-abort.js +40 -0
  28. package/dist/core/application-primitive-attempt-registry.d.ts +74 -0
  29. package/dist/core/application-primitive-attempt-registry.js +73 -0
  30. package/dist/core/application-primitive-codec.d.ts +36 -0
  31. package/dist/core/application-primitive-codec.js +56 -0
  32. package/dist/core/application-primitive-commit.d.ts +67 -0
  33. package/dist/core/application-primitive-commit.js +66 -0
  34. package/dist/core/application-primitive-guards.d.ts +62 -0
  35. package/dist/core/application-primitive-guards.js +89 -0
  36. package/dist/core/application-primitive-payload.d.ts +29 -0
  37. package/dist/core/application-primitive-payload.js +65 -0
  38. package/dist/core/application-primitive-timing.d.ts +18 -0
  39. package/dist/core/application-primitive-timing.js +22 -0
  40. package/dist/core/atomic-state.js +2 -0
  41. package/dist/core/catalog/codec.d.ts +40 -0
  42. package/dist/core/catalog/codec.js +45 -0
  43. package/dist/core/catalog/errors.d.ts +104 -0
  44. package/dist/core/catalog/errors.js +41 -0
  45. package/dist/core/catalog/index.d.ts +25 -0
  46. package/dist/core/catalog/index.js +22 -0
  47. package/dist/core/catalog/reference-counts.d.ts +120 -0
  48. package/dist/core/catalog/reference-counts.js +28 -0
  49. package/dist/core/catalog/removal.d.ts +105 -0
  50. package/dist/core/catalog/removal.js +30 -0
  51. package/dist/core/catalog/storage-io.d.ts +101 -0
  52. package/dist/core/catalog/storage-io.js +106 -0
  53. package/dist/core/catalog/types.d.ts +108 -0
  54. package/dist/core/catalog/types.js +0 -0
  55. package/dist/core/catalog/workflow-catalog.d.ts +165 -0
  56. package/dist/core/catalog/workflow-catalog.js +198 -0
  57. package/dist/core/compare-codepoint.d.ts +13 -0
  58. package/dist/core/compare-codepoint.js +7 -0
  59. package/dist/core/compression.js +2 -0
  60. package/dist/core/context/attributes.d.ts +1 -1
  61. package/dist/core/context/durable-operations.d.ts +2 -2
  62. package/dist/core/context/index.js +5 -3
  63. package/dist/core/context/state-namespace.d.ts +1 -1
  64. package/dist/core/contract/build.d.ts +64 -0
  65. package/dist/core/contract/build.js +99 -0
  66. package/dist/core/contract/compatibility.d.ts +187 -0
  67. package/dist/core/contract/compatibility.js +37 -0
  68. package/dist/core/contract/failure.d.ts +64 -0
  69. package/dist/core/contract/failure.js +4 -0
  70. package/dist/core/contract/hash.d.ts +92 -0
  71. package/dist/core/contract/hash.js +34 -0
  72. package/dist/core/contract/index.d.ts +21 -0
  73. package/dist/core/contract/index.js +22 -0
  74. package/dist/core/contract/limits.d.ts +74 -0
  75. package/dist/core/contract/limits.js +1 -0
  76. package/dist/core/contract/manifest-parse-schema.d.ts +37 -0
  77. package/dist/core/contract/manifest-parse-schema.js +106 -0
  78. package/dist/core/contract/manifest-parse.d.ts +76 -0
  79. package/dist/core/contract/manifest-parse.js +189 -0
  80. package/dist/core/contract/manifest.d.ts +56 -0
  81. package/dist/core/contract/manifest.js +31 -0
  82. package/dist/core/contract/normalize.d.ts +97 -0
  83. package/dist/core/contract/normalize.js +127 -0
  84. package/dist/core/contract/revision.d.ts +29 -0
  85. package/dist/core/contract/revision.js +5 -0
  86. package/dist/core/contract/types.d.ts +274 -0
  87. package/dist/core/contract/types.js +1 -0
  88. package/dist/core/engine/activity-resolution.js +17 -17
  89. package/dist/core/engine/bulk-operations-purge.js +14 -20
  90. package/dist/core/engine/bulk-operations-retry.d.ts +9 -0
  91. package/dist/core/engine/bulk-operations-retry.js +177 -0
  92. package/dist/core/engine/bulk-operations-shared.d.ts +18 -0
  93. package/dist/core/engine/bulk-operations-shared.js +14 -0
  94. package/dist/core/engine/bulk-operations.js +8 -167
  95. package/dist/core/engine/callback-creators-bundles.js +4 -2
  96. package/dist/core/engine/callback-creators-core.js +9 -1
  97. package/dist/core/engine/callback-creators-schedule.js +2 -2
  98. package/dist/core/engine/catalog-activation.d.ts +40 -0
  99. package/dist/core/engine/catalog-activation.js +17 -0
  100. package/dist/core/engine/catalog-events.d.ts +36 -0
  101. package/dist/core/engine/catalog-events.js +15 -0
  102. package/dist/core/engine/catalog-readiness.d.ts +49 -0
  103. package/dist/core/engine/catalog-readiness.js +61 -0
  104. package/dist/core/engine/catalog-removal.d.ts +236 -0
  105. package/dist/core/engine/catalog-removal.js +123 -0
  106. package/dist/core/engine/catalog-tombstone-recovery.d.ts +56 -0
  107. package/dist/core/engine/catalog-tombstone-recovery.js +39 -0
  108. package/dist/core/engine/constraints.js +5 -1
  109. package/dist/core/engine/construction.d.ts +2 -2
  110. package/dist/core/engine/construction.js +4 -2
  111. package/dist/core/engine/decode-revision.d.ts +32 -0
  112. package/dist/core/engine/decode-revision.js +9 -0
  113. package/dist/core/engine/disposal.d.ts +6 -2
  114. package/dist/core/engine/disposal.js +26 -3
  115. package/dist/core/engine/dynamic-source-errors.d.ts +81 -0
  116. package/dist/core/engine/dynamic-source-errors.js +25 -0
  117. package/dist/core/engine/dynamic-source-execution.d.ts +173 -0
  118. package/dist/core/engine/dynamic-source-execution.js +108 -0
  119. package/dist/core/engine/engine-internal-types.d.ts +16 -0
  120. package/dist/core/engine/engine-workflows-namespace.d.ts +140 -0
  121. package/dist/core/engine/engine-workflows-namespace.js +51 -0
  122. package/dist/core/engine/finalizer-metadata.d.ts +22 -0
  123. package/dist/core/engine/finalizer-metadata.js +12 -0
  124. package/dist/core/engine/handle-result.js +2 -0
  125. package/dist/core/engine/index.d.ts +91 -0
  126. package/dist/core/engine/index.js +78 -6
  127. package/dist/core/engine/inline-launch-queue.js +1 -1
  128. package/dist/core/engine/internals.d.ts +54 -15
  129. package/dist/core/engine/internals.js +6 -0
  130. package/dist/core/engine/lifecycle/checkpoint-launch.d.ts +29 -0
  131. package/dist/core/engine/lifecycle/checkpoint-launch.js +75 -0
  132. package/dist/core/engine/lifecycle/delayed-start-registration.d.ts +30 -0
  133. package/dist/core/engine/lifecycle/delayed-start-registration.js +11 -0
  134. package/dist/core/engine/lifecycle/fork-helpers.d.ts +33 -1
  135. package/dist/core/engine/lifecycle/fork-helpers.js +3 -1
  136. package/dist/core/engine/lifecycle/recovery-revision-groups.d.ts +75 -0
  137. package/dist/core/engine/lifecycle/recovery-revision-groups.js +64 -0
  138. package/dist/core/engine/lifecycle/resume-generation-guard.d.ts +58 -0
  139. package/dist/core/engine/lifecycle/resume-generation-guard.js +11 -0
  140. package/dist/core/engine/lifecycle/resume.js +18 -9
  141. package/dist/core/engine/lifecycle/shared.d.ts +43 -0
  142. package/dist/core/engine/lifecycle/standalone-claim-acquire.d.ts +12 -0
  143. package/dist/core/engine/lifecycle/standalone-claim-acquire.js +6 -0
  144. package/dist/core/engine/lifecycle/start-commit-errors.d.ts +12 -0
  145. package/dist/core/engine/lifecycle/start-commit-errors.js +6 -0
  146. package/dist/core/engine/lifecycle/start-commit.d.ts +22 -7
  147. package/dist/core/engine/lifecycle/start-commit.js +49 -15
  148. package/dist/core/engine/lifecycle/start-exec.d.ts +18 -2
  149. package/dist/core/engine/lifecycle/start-exec.js +7 -5
  150. package/dist/core/engine/lifecycle/start-or-signal-create.js +1 -3
  151. package/dist/core/engine/lifecycle/start-or-signal.js +1 -1
  152. package/dist/core/engine/lifecycle/start-precondition-attribution.d.ts +49 -0
  153. package/dist/core/engine/lifecycle/start-precondition-attribution.js +13 -0
  154. package/dist/core/engine/lifecycle/start-revision-resolution.d.ts +34 -0
  155. package/dist/core/engine/lifecycle/start-revision-resolution.js +11 -0
  156. package/dist/core/engine/lifecycle/start-state.d.ts +16 -0
  157. package/dist/core/engine/lifecycle/start-state.js +60 -0
  158. package/dist/core/engine/lifecycle/start-terminal-conflict-purge.d.ts +66 -3
  159. package/dist/core/engine/lifecycle/start-terminal-conflict-purge.js +13 -3
  160. package/dist/core/engine/lifecycle/start.d.ts +16 -6
  161. package/dist/core/engine/lifecycle/start.js +39 -66
  162. package/dist/core/engine/lifecycle/transition.d.ts +3 -4
  163. package/dist/core/engine/lifecycle/transition.js +30 -80
  164. package/dist/core/engine/lifecycle.d.ts +4 -2
  165. package/dist/core/engine/lifecycle.js +6 -6
  166. package/dist/core/engine/listing.js +15 -1
  167. package/dist/core/engine/memo-durable-activity.js +4 -1
  168. package/dist/core/engine/nonterminal-revision-count.d.ts +25 -0
  169. package/dist/core/engine/nonterminal-revision-count.js +16 -0
  170. package/dist/core/engine/operations-time.d.ts +5 -23
  171. package/dist/core/engine/operations-time.js +13 -11
  172. package/dist/core/engine/ownership-bootstrap.d.ts +1 -1
  173. package/dist/core/engine/pinned-schedule-revision-count.d.ts +26 -0
  174. package/dist/core/engine/pinned-schedule-revision-count.js +19 -0
  175. package/dist/core/engine/pinned-schedule-revision.d.ts +76 -0
  176. package/dist/core/engine/pinned-schedule-revision.js +53 -0
  177. package/dist/core/engine/registration.d.ts +106 -0
  178. package/dist/core/engine/registration.js +28 -7
  179. package/dist/core/engine/retention.js +9 -2
  180. package/dist/core/engine/revision-errors.d.ts +71 -0
  181. package/dist/core/engine/revision-errors.js +13 -0
  182. package/dist/core/engine/schedule-revision-fire.d.ts +17 -0
  183. package/dist/core/engine/schedule-revision-fire.js +3 -0
  184. package/dist/core/engine/schedule-run.js +2 -1
  185. package/dist/core/engine/schedules.d.ts +2 -1
  186. package/dist/core/engine/schedules.js +28 -9
  187. package/dist/core/engine/source-diagnostics.d.ts +76 -0
  188. package/dist/core/engine/source-diagnostics.js +105 -0
  189. package/dist/core/engine/source-registration.d.ts +42 -0
  190. package/dist/core/engine/source-registration.js +38 -0
  191. package/dist/core/engine/source-resolution.d.ts +101 -0
  192. package/dist/core/engine/source-resolution.js +154 -0
  193. package/dist/core/engine/source-runtime-state.d.ts +92 -0
  194. package/dist/core/engine/source-runtime-state.js +36 -0
  195. package/dist/core/engine/storage-io.d.ts +19 -2
  196. package/dist/core/engine/storage-io.js +21 -2
  197. package/dist/core/engine/termination/finalizer-registration.d.ts +18 -0
  198. package/dist/core/engine/termination/finalizer-registration.js +21 -0
  199. package/dist/core/engine/termination/finalizer.d.ts +16 -19
  200. package/dist/core/engine/termination/finalizer.js +3 -3
  201. package/dist/core/engine/time-operation-callbacks.d.ts +32 -0
  202. package/dist/core/engine/time-operation-callbacks.js +0 -0
  203. package/dist/core/engine/validation/schedule-cadence.d.ts +16 -0
  204. package/dist/core/engine/validation/schedule-cadence.js +20 -0
  205. package/dist/core/engine/validation/schedule-options.d.ts +4 -1
  206. package/dist/core/engine/validation/schedule-options.js +14 -0
  207. package/dist/core/engine/validation/schedule-revision.d.ts +24 -0
  208. package/dist/core/engine/validation/schedule-revision.js +21 -0
  209. package/dist/core/engine/validation/schedule-warnings.d.ts +11 -0
  210. package/dist/core/engine/validation/schedule-warnings.js +5 -0
  211. package/dist/core/engine/validation/schedule.d.ts +4 -3
  212. package/dist/core/engine/validation/schedule.js +15 -26
  213. package/dist/core/engine/validation.js +5 -2
  214. package/dist/core/engine/workflow-claim-reclaim-target.d.ts +1 -1
  215. package/dist/core/engine/workflow-claim-reclaim-target.js +16 -2
  216. package/dist/core/engine/workflow-retention-deadline.d.ts +16 -0
  217. package/dist/core/engine/workflow-retention-deadline.js +33 -0
  218. package/dist/core/events/catalog-events.d.ts +117 -0
  219. package/dist/core/events/catalog-events.js +62 -0
  220. package/dist/core/events/event-map.d.ts +11 -0
  221. package/dist/core/events/index.d.ts +2 -0
  222. package/dist/core/events/index.js +2 -0
  223. package/dist/core/events/workflow-source-events.d.ts +102 -0
  224. package/dist/core/events/workflow-source-events.js +57 -0
  225. package/dist/core/execution-strategy.d.ts +7 -0
  226. package/dist/core/inline-execution-strategy.context-options.d.ts +1 -1
  227. package/dist/core/inline-execution-strategy.js +1 -1
  228. package/dist/core/mailbox-admission.d.ts +26 -0
  229. package/dist/core/mailbox-admission.js +130 -0
  230. package/dist/core/mailbox-claims.d.ts +251 -0
  231. package/dist/core/mailbox-claims.js +0 -0
  232. package/dist/core/mailbox-codec.d.ts +32 -0
  233. package/dist/core/mailbox-codec.js +221 -0
  234. package/dist/core/mailbox-contract.d.ts +290 -0
  235. package/dist/core/mailbox-contract.js +0 -0
  236. package/dist/core/mailbox-delivery.d.ts +37 -0
  237. package/dist/core/mailbox-delivery.js +193 -0
  238. package/dist/core/mailbox-guards.d.ts +78 -0
  239. package/dist/core/mailbox-guards.js +58 -0
  240. package/dist/core/mailbox-index-codec.d.ts +41 -0
  241. package/dist/core/mailbox-index-codec.js +71 -0
  242. package/dist/core/mailbox-internals.d.ts +156 -0
  243. package/dist/core/mailbox-internals.js +154 -0
  244. package/dist/core/mailbox-maintenance.d.ts +29 -0
  245. package/dist/core/mailbox-maintenance.js +196 -0
  246. package/dist/core/mailbox-settlement.d.ts +69 -0
  247. package/dist/core/mailbox-settlement.js +206 -0
  248. package/dist/core/mailbox-storage.d.ts +117 -0
  249. package/dist/core/mailbox-storage.js +115 -0
  250. package/dist/core/mailbox-transition-helpers.d.ts +70 -0
  251. package/dist/core/mailbox-transition-helpers.js +43 -0
  252. package/dist/core/mailbox-transitions-recovery.d.ts +28 -0
  253. package/dist/core/mailbox-transitions-recovery.js +64 -0
  254. package/dist/core/mailbox-transitions.d.ts +138 -0
  255. package/dist/core/mailbox-transitions.js +180 -0
  256. package/dist/core/mailbox-types.d.ts +406 -0
  257. package/dist/core/mailbox-types.js +16 -0
  258. package/dist/core/mailbox-validation.d.ts +65 -0
  259. package/dist/core/mailbox-validation.js +73 -0
  260. package/dist/core/mailbox-waits.d.ts +50 -0
  261. package/dist/core/mailbox-waits.js +97 -0
  262. package/dist/core/mailbox.d.ts +163 -0
  263. package/dist/core/mailbox.js +211 -0
  264. package/dist/core/outbox-claims.d.ts +307 -0
  265. package/dist/core/outbox-claims.js +0 -0
  266. package/dist/core/outbox-codec.d.ts +24 -0
  267. package/dist/core/outbox-codec.js +257 -0
  268. package/dist/core/outbox-contract.d.ts +346 -0
  269. package/dist/core/outbox-contract.js +0 -0
  270. package/dist/core/outbox-delivery.d.ts +34 -0
  271. package/dist/core/outbox-delivery.js +149 -0
  272. package/dist/core/outbox-drain.d.ts +29 -0
  273. package/dist/core/outbox-drain.js +158 -0
  274. package/dist/core/outbox-enqueue.d.ts +24 -0
  275. package/dist/core/outbox-enqueue.js +115 -0
  276. package/dist/core/outbox-guards.d.ts +76 -0
  277. package/dist/core/outbox-guards.js +60 -0
  278. package/dist/core/outbox-index-codec.d.ts +33 -0
  279. package/dist/core/outbox-index-codec.js +71 -0
  280. package/dist/core/outbox-internals.d.ts +99 -0
  281. package/dist/core/outbox-internals.js +159 -0
  282. package/dist/core/outbox-listing.d.ts +12 -0
  283. package/dist/core/outbox-listing.js +38 -0
  284. package/dist/core/outbox-maintenance.d.ts +28 -0
  285. package/dist/core/outbox-maintenance.js +191 -0
  286. package/dist/core/outbox-operations.d.ts +18 -0
  287. package/dist/core/outbox-operations.js +46 -0
  288. package/dist/core/outbox-runner.d.ts +30 -0
  289. package/dist/core/outbox-runner.js +217 -0
  290. package/dist/core/outbox-settlement.d.ts +57 -0
  291. package/dist/core/outbox-settlement.js +183 -0
  292. package/dist/core/outbox-storage.d.ts +107 -0
  293. package/dist/core/outbox-storage.js +127 -0
  294. package/dist/core/outbox-transition-helpers.d.ts +83 -0
  295. package/dist/core/outbox-transition-helpers.js +63 -0
  296. package/dist/core/outbox-transitions-recovery.d.ts +30 -0
  297. package/dist/core/outbox-transitions-recovery.js +42 -0
  298. package/dist/core/outbox-transitions.d.ts +145 -0
  299. package/dist/core/outbox-transitions.js +236 -0
  300. package/dist/core/outbox-types.d.ts +400 -0
  301. package/dist/core/outbox-types.js +20 -0
  302. package/dist/core/outbox-validation.d.ts +101 -0
  303. package/dist/core/outbox-validation.js +127 -0
  304. package/dist/core/outbox-waits.d.ts +39 -0
  305. package/dist/core/outbox-waits.js +88 -0
  306. package/dist/core/outbox.d.ts +156 -0
  307. package/dist/core/outbox.js +234 -0
  308. package/dist/core/registry-limits.d.ts +49 -0
  309. package/dist/core/registry-limits.js +10 -0
  310. package/dist/core/registry-schema-conversion.d.ts +20 -0
  311. package/dist/core/registry-schema-conversion.js +22 -0
  312. package/dist/core/registry-snapshot.d.ts +91 -42
  313. package/dist/core/registry-snapshot.js +39 -77
  314. package/dist/core/registry-workflow-contract-draft.d.ts +32 -0
  315. package/dist/core/registry-workflow-contract-draft.js +28 -0
  316. package/dist/core/registry-workflow-manifest.d.ts +122 -0
  317. package/dist/core/registry-workflow-manifest.js +92 -0
  318. package/dist/core/source/errors.d.ts +55 -0
  319. package/dist/core/source/errors.js +13 -0
  320. package/dist/core/source/index.d.ts +19 -0
  321. package/dist/core/source/index.js +4 -0
  322. package/dist/core/source/resolvers.d.ts +45 -0
  323. package/dist/core/source/resolvers.js +9 -0
  324. package/dist/core/source/types.d.ts +211 -0
  325. package/dist/core/source/types.js +0 -0
  326. package/dist/core/source/validate.d.ts +91 -0
  327. package/dist/core/source/validate.js +62 -0
  328. package/dist/core/source/workflow-source.d.ts +43 -0
  329. package/dist/core/source/workflow-source.js +16 -0
  330. package/dist/core/types/checkpoint.d.ts +14 -0
  331. package/dist/core/types/schedules.d.ts +52 -1
  332. package/dist/core/types/state.d.ts +16 -0
  333. package/dist/core/types/workflow-registries.d.ts +7 -0
  334. package/dist/core/types/workflow-registry.d.ts +12 -0
  335. package/dist/core/versioning.js +2 -0
  336. package/dist/core/weft-error.d.ts +1 -1
  337. package/dist/core/weft-error.js +12 -1
  338. package/dist/core/worker-execution-strategy.d.ts +1 -0
  339. package/dist/core/worker-execution-strategy.js +13 -1
  340. package/dist/core/worker-fault-handling.d.ts +10 -0
  341. package/dist/core/worker-fault-handling.js +1 -0
  342. package/dist/core/worker-inbound-message.d.ts +1 -0
  343. package/dist/core/worker-inbound-message.js +1 -0
  344. package/dist/core/worker-protocol-guard.js +4 -0
  345. package/dist/core/worker-protocol.d.ts +7 -0
  346. package/dist/core/worker-protocol.js +2 -1
  347. package/dist/core/worker-turn-watchdog.d.ts +8 -1
  348. package/dist/core/worker-turn-watchdog.js +3 -2
  349. package/dist/diagnostics/format.js +5 -0
  350. package/dist/diagnostics/types.d.ts +24 -0
  351. package/dist/diagnostics/version-check.js +8 -2
  352. package/dist/http.js +2 -2
  353. package/dist/index.d.ts +25 -4
  354. package/dist/index.js +57 -0
  355. package/dist/indexeddb.js +1 -1
  356. package/dist/json-schema.js +3 -3
  357. package/dist/mcp/resources.js +2 -0
  358. package/dist/runtime/portable.d.ts +9 -1
  359. package/dist/server/fault-to-json-rpc.js +4 -1
  360. package/dist/server/handler/auth-context-principal.js +4 -0
  361. package/dist/server/index.d.ts +11 -0
  362. package/dist/server/json-rpc-http.js +2 -0
  363. package/dist/server/json-rpc-websocket.js +6 -4
  364. package/dist/server/operation-catalog/index.d.ts +1 -1
  365. package/dist/server/operation-catalog/pipeline-helpers.js +2 -0
  366. package/dist/server/operation-catalog/types.d.ts +17 -0
  367. package/dist/server/operation-fault.d.ts +5 -0
  368. package/dist/server/operation-fault.js +4 -1
  369. package/dist/server/operations/activate-workflow-revision.d.ts +30 -0
  370. package/dist/server/operations/activate-workflow-revision.js +69 -0
  371. package/dist/server/operations/create-schedule.d.ts +2 -0
  372. package/dist/server/operations/create-schedule.js +10 -6
  373. package/dist/server/operations/fleet-events-subscription.js +1 -1
  374. package/dist/server/operations/fork-workflow.js +1 -1
  375. package/dist/server/operations/get-active-workflow-revision.d.ts +32 -0
  376. package/dist/server/operations/get-active-workflow-revision.js +46 -0
  377. package/dist/server/operations/get-catalog-diagnostics.d.ts +113 -0
  378. package/dist/server/operations/get-catalog-diagnostics.js +65 -0
  379. package/dist/server/operations/get-registry.js +17 -4
  380. package/dist/server/operations/get-task-detail-schema.d.ts +8 -0
  381. package/dist/server/operations/get-task-detail-schema.js +1 -0
  382. package/dist/server/operations/get-task-detail.d.ts +8 -0
  383. package/dist/server/operations/get-task-detail.js +1 -0
  384. package/dist/server/operations/get-task-diagnostics.d.ts +4 -4
  385. package/dist/server/operations/get-workflow-revision.d.ts +25 -0
  386. package/dist/server/operations/get-workflow-revision.js +50 -0
  387. package/dist/server/operations/install-workflow-revision.d.ts +27 -0
  388. package/dist/server/operations/install-workflow-revision.js +46 -0
  389. package/dist/server/operations/list-workflow-revisions.d.ts +20 -0
  390. package/dist/server/operations/list-workflow-revisions.js +40 -0
  391. package/dist/server/operations/preload-workflow-revision.d.ts +28 -0
  392. package/dist/server/operations/preload-workflow-revision.js +60 -0
  393. package/dist/server/operations/schedule-faults.d.ts +1 -0
  394. package/dist/server/operations/schedule-faults.js +32 -4
  395. package/dist/server/operations/schedule-rest-body.d.ts +1 -0
  396. package/dist/server/operations/schedule-rest-body.js +2 -1
  397. package/dist/server/operations/start-or-signal-workflow.js +1 -1
  398. package/dist/server/operations/start-workflow.js +1 -1
  399. package/dist/server/operations/static-registrations.js +42 -0
  400. package/dist/server/operations/storage.js +2 -2
  401. package/dist/server/operations/submit-review-decision.js +1 -1
  402. package/dist/server/operations/update-schedule.d.ts +2 -0
  403. package/dist/server/operations/update-schedule.js +4 -2
  404. package/dist/server/operations/workflow-catalog-operation-helpers.d.ts +59 -0
  405. package/dist/server/operations/workflow-catalog-operation-helpers.js +162 -0
  406. package/dist/server/runtime/task-dispatch-envelope.d.ts +14 -0
  407. package/dist/server/runtime/task-dispatch-envelope.js +32 -0
  408. package/dist/server/runtime/task-dispatch-revision.d.ts +29 -0
  409. package/dist/server/runtime/task-dispatch-revision.js +13 -0
  410. package/dist/server/runtime/task-dispatch.js +12 -37
  411. package/dist/server/runtime/task-ledger-recovery.js +1 -1
  412. package/dist/server/runtime/task-ledger-runtime.d.ts +14 -2
  413. package/dist/server/runtime/task-ledger-runtime.js +5 -3
  414. package/dist/server/runtime/task-polling.js +9 -3
  415. package/dist/server/runtime/task-reconciliation.js +2 -1
  416. package/dist/server/runtime/websocket-upgrade.js +2 -0
  417. package/dist/server/runtime/websocket-worker.js +9 -0
  418. package/dist/server/task-ledger-codec.d.ts +9 -0
  419. package/dist/server/task-ledger-codec.js +4 -1
  420. package/dist/server/task-ledger-transition-helpers.js +1 -0
  421. package/dist/server/task-ledger-types.d.ts +9 -0
  422. package/dist/server/task-ledger.d.ts +1 -1
  423. package/dist/server/task-ledger.js +2 -1
  424. package/dist/server/task-queue-types.d.ts +2 -0
  425. package/dist/storage/bun-sql.js +51 -6
  426. package/dist/storage/catalog-keys.d.ts +64 -0
  427. package/dist/storage/catalog-keys.js +8 -0
  428. package/dist/storage/compressed-storage.js +1 -1
  429. package/dist/storage/derived-operations.js +1 -1
  430. package/dist/storage/index.d.ts +28 -1
  431. package/dist/storage/interface.d.ts +28 -1
  432. package/dist/storage/interface.js +1 -1
  433. package/dist/storage/key-encoding.d.ts +15 -0
  434. package/dist/storage/key-encoding.js +3 -0
  435. package/dist/storage/key-prefixes.d.ts +1 -1
  436. package/dist/storage/key-prefixes.js +16 -0
  437. package/dist/storage/lmdb.d.ts +54 -1
  438. package/dist/storage/lmdb.js +1 -1
  439. package/dist/storage/mailbox-keys.d.ts +80 -0
  440. package/dist/storage/mailbox-keys.js +14 -0
  441. package/dist/storage/memory.js +1 -1
  442. package/dist/storage/neon.js +2 -2
  443. package/dist/storage/node-sqlite-loader.d.ts +1 -1
  444. package/dist/storage/node-sqlite.js +51 -6
  445. package/dist/storage/outbox-keys.d.ts +77 -0
  446. package/dist/storage/outbox-keys.js +14 -0
  447. package/dist/storage/postgres.js +2 -2
  448. package/dist/storage/resolve.js +1 -1
  449. package/dist/storage/scoped-storage.js +1 -1
  450. package/dist/storage/storage-configuration.d.ts +6 -0
  451. package/dist/storage/testing.js +1 -1
  452. package/dist/storage/turso.js +2 -2
  453. package/dist/version.d.ts +1 -1
  454. package/dist/version.js +1 -1
  455. package/dist/web-extension.js +1 -1
  456. package/dist/worker/manifest/registry-contract-builder.d.ts +21 -3
  457. package/dist/worker/manifest/registry-contract-builder.js +40 -31
  458. package/dist/worker/protocol-messages.d.ts +17 -0
  459. package/dist/worker/protocol-schemas.d.ts +32 -0
  460. package/dist/worker/protocol-schemas.js +7 -3
  461. package/dist/worker/protocol-task-result.js +35 -3
  462. package/dist/worker/protocol.js +1 -1
  463. package/dist/worker/registry/types.d.ts +2 -0
  464. package/dist/worker/registry.d.ts +1 -1
  465. package/dist/worker/registry.js +3 -1
  466. package/dist/workers/workflow-runner.d.ts +9 -0
  467. package/dist/workers/workflow-runner.js +9 -2
  468. package/dist/workers/workflow-worker-entry.js +9 -4
  469. package/package.json +2 -2
@@ -1,7 +1,7 @@
1
1
  import { type CatalogWeftClient, type WeftClientConnection } from '../operation-client-runtime.ts';
2
- export declare const CATALOG_OPERATION_NAMES: readonly ["weft.activities.complete", "weft.activities.fail", "weft.alerts.list", "weft.recover.all", "weft.retention.get", "weft.reviews.decision.submit", "weft.reviews.get", "weft.reviews.list", "weft.schedules.cancel", "weft.schedules.create", "weft.schedules.get", "weft.schedules.list", "weft.schedules.pause", "weft.schedules.resume", "weft.schedules.update", "weft.storage.capabilities", "weft.system.lease", "weft.system.metrics", "weft.system.principal", "weft.system.registry", "weft.task.queues.list", "weft.tasks.diagnostics", "weft.tasks.get", "weft.updates.result.get", "weft.worker.deployments.drain", "weft.worker.deployments.resume", "weft.workers.diagnostics", "weft.workers.drain", "weft.workers.list", "weft.workers.rejections", "weft.workers.resume", "weft.workflows.activities.pending.list", "weft.workflows.aggregate", "weft.workflows.attributes.get", "weft.workflows.attributes.set", "weft.workflows.bulk.cancel", "weft.workflows.bulk.delete", "weft.workflows.bulk.retryfailed", "weft.workflows.bulk.signal", "weft.workflows.bulk.tags", "weft.workflows.cancel", "weft.workflows.checkpoints.get", "weft.workflows.checkpoints.list", "weft.workflows.events.list", "weft.workflows.finalizer.get", "weft.workflows.fork", "weft.workflows.get", "weft.workflows.list", "weft.workflows.purge", "weft.workflows.query", "weft.workflows.replay", "weft.workflows.result.get", "weft.workflows.resume", "weft.workflows.scheduleprovenance.get", "weft.workflows.signal", "weft.workflows.start", "weft.workflows.startorsignal", "weft.workflows.streams.chunks", "weft.workflows.suspend", "weft.workflows.tags.add", "weft.workflows.tags.remove", "weft.workflows.timeline.get", "weft.workflows.timeout", "weft.workflows.update"];
2
+ export declare const CATALOG_OPERATION_NAMES: readonly ["weft.activities.complete", "weft.activities.fail", "weft.alerts.list", "weft.catalog.diagnostics", "weft.recover.all", "weft.retention.get", "weft.reviews.decision.submit", "weft.reviews.get", "weft.reviews.list", "weft.schedules.cancel", "weft.schedules.create", "weft.schedules.get", "weft.schedules.list", "weft.schedules.pause", "weft.schedules.resume", "weft.schedules.update", "weft.storage.capabilities", "weft.system.lease", "weft.system.metrics", "weft.system.principal", "weft.system.registry", "weft.task.queues.list", "weft.tasks.diagnostics", "weft.tasks.get", "weft.updates.result.get", "weft.worker.deployments.drain", "weft.worker.deployments.resume", "weft.workers.diagnostics", "weft.workers.drain", "weft.workers.list", "weft.workers.rejections", "weft.workers.resume", "weft.workflows.active.get", "weft.workflows.activities.pending.list", "weft.workflows.aggregate", "weft.workflows.attributes.get", "weft.workflows.attributes.set", "weft.workflows.bulk.cancel", "weft.workflows.bulk.delete", "weft.workflows.bulk.retryfailed", "weft.workflows.bulk.signal", "weft.workflows.bulk.tags", "weft.workflows.cancel", "weft.workflows.checkpoints.get", "weft.workflows.checkpoints.list", "weft.workflows.events.list", "weft.workflows.finalizer.get", "weft.workflows.fork", "weft.workflows.get", "weft.workflows.list", "weft.workflows.purge", "weft.workflows.query", "weft.workflows.replay", "weft.workflows.result.get", "weft.workflows.resume", "weft.workflows.revisions.activate", "weft.workflows.revisions.get", "weft.workflows.revisions.install", "weft.workflows.revisions.list", "weft.workflows.revisions.preload", "weft.workflows.scheduleprovenance.get", "weft.workflows.signal", "weft.workflows.start", "weft.workflows.startorsignal", "weft.workflows.streams.chunks", "weft.workflows.suspend", "weft.workflows.tags.add", "weft.workflows.tags.remove", "weft.workflows.timeline.get", "weft.workflows.timeout", "weft.workflows.update"];
3
3
  export type CatalogOperationName = (typeof CATALOG_OPERATION_NAMES)[number];
4
- export declare const CLIENT_OPERATION_NAMES: readonly ["weft.activities.complete", "weft.activities.fail", "weft.alerts.list", "weft.recover.all", "weft.retention.get", "weft.reviews.decision.submit", "weft.reviews.get", "weft.reviews.list", "weft.schedules.cancel", "weft.schedules.create", "weft.schedules.get", "weft.schedules.list", "weft.schedules.pause", "weft.schedules.resume", "weft.schedules.update", "weft.storage.capabilities", "weft.system.lease", "weft.system.metrics", "weft.system.principal", "weft.system.registry", "weft.task.queues.list", "weft.tasks.diagnostics", "weft.tasks.diagnostics.deadletters.clear", "weft.tasks.get", "weft.updates.result.get", "weft.worker.deployments.drain", "weft.worker.deployments.resume", "weft.workers.diagnostics", "weft.workers.drain", "weft.workers.list", "weft.workers.rejections", "weft.workers.resume", "weft.workflows.activities.pending.list", "weft.workflows.aggregate", "weft.workflows.attributes.get", "weft.workflows.attributes.set", "weft.workflows.bulk.cancel", "weft.workflows.bulk.delete", "weft.workflows.bulk.retryfailed", "weft.workflows.bulk.signal", "weft.workflows.bulk.tags", "weft.workflows.cancel", "weft.workflows.checkpoints.get", "weft.workflows.checkpoints.list", "weft.workflows.events.list", "weft.workflows.finalizer.get", "weft.workflows.fork", "weft.workflows.get", "weft.workflows.list", "weft.workflows.purge", "weft.workflows.query", "weft.workflows.replay", "weft.workflows.result.get", "weft.workflows.resume", "weft.workflows.scheduleprovenance.get", "weft.workflows.signal", "weft.workflows.start", "weft.workflows.startorsignal", "weft.workflows.streams.chunks", "weft.workflows.suspend", "weft.workflows.tags.add", "weft.workflows.tags.remove", "weft.workflows.timeline.get", "weft.workflows.timeout", "weft.workflows.update"];
4
+ export declare const CLIENT_OPERATION_NAMES: readonly ["weft.activities.complete", "weft.activities.fail", "weft.alerts.list", "weft.catalog.diagnostics", "weft.recover.all", "weft.retention.get", "weft.reviews.decision.submit", "weft.reviews.get", "weft.reviews.list", "weft.schedules.cancel", "weft.schedules.create", "weft.schedules.get", "weft.schedules.list", "weft.schedules.pause", "weft.schedules.resume", "weft.schedules.update", "weft.storage.capabilities", "weft.system.lease", "weft.system.metrics", "weft.system.principal", "weft.system.registry", "weft.task.queues.list", "weft.tasks.diagnostics", "weft.tasks.diagnostics.deadletters.clear", "weft.tasks.get", "weft.updates.result.get", "weft.worker.deployments.drain", "weft.worker.deployments.resume", "weft.workers.diagnostics", "weft.workers.drain", "weft.workers.list", "weft.workers.rejections", "weft.workers.resume", "weft.workflows.active.get", "weft.workflows.activities.pending.list", "weft.workflows.aggregate", "weft.workflows.attributes.get", "weft.workflows.attributes.set", "weft.workflows.bulk.cancel", "weft.workflows.bulk.delete", "weft.workflows.bulk.retryfailed", "weft.workflows.bulk.signal", "weft.workflows.bulk.tags", "weft.workflows.cancel", "weft.workflows.checkpoints.get", "weft.workflows.checkpoints.list", "weft.workflows.events.list", "weft.workflows.finalizer.get", "weft.workflows.fork", "weft.workflows.get", "weft.workflows.list", "weft.workflows.purge", "weft.workflows.query", "weft.workflows.replay", "weft.workflows.result.get", "weft.workflows.resume", "weft.workflows.revisions.activate", "weft.workflows.revisions.get", "weft.workflows.revisions.install", "weft.workflows.revisions.list", "weft.workflows.revisions.preload", "weft.workflows.scheduleprovenance.get", "weft.workflows.signal", "weft.workflows.start", "weft.workflows.startorsignal", "weft.workflows.streams.chunks", "weft.workflows.suspend", "weft.workflows.tags.add", "weft.workflows.tags.remove", "weft.workflows.timeline.get", "weft.workflows.timeout", "weft.workflows.update"];
5
5
  export type ClientOperationName = (typeof CLIENT_OPERATION_NAMES)[number];
6
6
  export declare const CLIENT_REST_OPERATION_BINDINGS: {
7
7
  readonly 'weft.tasks.diagnostics.deadletters.clear': {
@@ -19,6 +19,27 @@ export declare const CLIENT_REST_OPERATION_BINDINGS: {
19
19
  };
20
20
  };
21
21
  };
22
+ type SharedActivityContractHashArti_d7d91df4 = {
23
+ readonly activityContractHash?: string;
24
+ readonly artifactDigest?: string;
25
+ readonly buildId?: string;
26
+ readonly deploymentName?: string;
27
+ readonly workflowRevision?: string;
28
+ };
29
+ type SharedAffectedWorkersDeploymen_e4c61ae8 = {
30
+ readonly affectedWorkers: number;
31
+ readonly deploymentName: string;
32
+ readonly health: 'active' | 'draining' | 'drained';
33
+ readonly inFlight: number;
34
+ readonly target: 'deployment';
35
+ };
36
+ type SharedAffectedWorkersHealthInF_c3f6ebcc = {
37
+ readonly affectedWorkers: number;
38
+ readonly health: 'active' | 'draining' | 'drained';
39
+ readonly inFlight: number;
40
+ readonly target: 'worker';
41
+ readonly workerId: string;
42
+ };
22
43
  type SharedAttributesBulkConcurrenc_0f0d07d6 = {
23
44
  readonly attributes?: ReadonlyArray<SharedGtGteKey_e658e64c>;
24
45
  readonly bulkConcurrency?: number;
@@ -55,6 +76,13 @@ type SharedAttributesCreatedAtExecu_47f8e20e = {
55
76
  readonly type?: string;
56
77
  readonly updatedAt?: SharedGtGteLt_d9a61361;
57
78
  };
79
+ type SharedBackoffMultiplierInitial_64d024ea = {
80
+ readonly backoffMultiplier: number;
81
+ readonly initialBackoff: number | string;
82
+ readonly maxAttempts: number;
83
+ readonly maxBackoff: number | string;
84
+ readonly nonRetryableErrors?: ReadonlyArray<string>;
85
+ };
58
86
  type SharedGtGteKey_e658e64c = {
59
87
  readonly gt?: unknown;
60
88
  readonly gte?: unknown;
@@ -106,6 +134,38 @@ export type ClientOperationTypes = {
106
134
  };
107
135
  readonly faults: never;
108
136
  };
137
+ 'weft.catalog.diagnostics': {
138
+ readonly input: {
139
+ readonly name: string;
140
+ readonly revision: string;
141
+ };
142
+ readonly output: {
143
+ readonly active: boolean;
144
+ readonly activeRevision?: string;
145
+ readonly installed: boolean;
146
+ readonly name: string;
147
+ readonly references: {
148
+ readonly activeExecutionRealms: number;
149
+ readonly inFlightStarts: number;
150
+ readonly nonTerminalRuns: number;
151
+ readonly pendingDispatches: number;
152
+ readonly pinnedSchedules: number;
153
+ readonly registeredDefinitions: number;
154
+ readonly retainedRecoveryRecords: number;
155
+ };
156
+ readonly removable: boolean;
157
+ readonly revision: string;
158
+ readonly source?: {
159
+ readonly kind: 'module';
160
+ readonly lastFailureCategory?: 'application' | 'timeout' | 'cancellation' | 'resource' | 'system';
161
+ readonly loadDurationMs?: number;
162
+ readonly requestedRevision: string;
163
+ readonly state: 'idle' | 'loading' | 'ready' | 'failed' | 'cancelled';
164
+ readonly waiterCount: number;
165
+ };
166
+ };
167
+ readonly faults: never;
168
+ };
109
169
  'weft.recover.all': {
110
170
  readonly input: {};
111
171
  readonly output: {
@@ -195,6 +255,7 @@ export type ClientOperationTypes = {
195
255
  readonly input?: unknown;
196
256
  readonly jitter?: unknown;
197
257
  readonly overlap?: unknown;
258
+ readonly revisionPolicy?: unknown;
198
259
  readonly type: unknown;
199
260
  };
200
261
  readonly output: {
@@ -241,6 +302,7 @@ export type ClientOperationTypes = {
241
302
  readonly every?: unknown;
242
303
  readonly jitter?: unknown;
243
304
  readonly overlap?: unknown;
305
+ readonly revisionPolicy?: unknown;
244
306
  readonly scheduleId: string;
245
307
  };
246
308
  readonly output: null;
@@ -290,9 +352,11 @@ export type ClientOperationTypes = {
290
352
  'weft.system.registry': {
291
353
  readonly input: {};
292
354
  readonly output: {
355
+ readonly activeRevisions: unknown;
293
356
  readonly activities: unknown;
294
- readonly registryVersion: 1;
295
- readonly workflows: unknown;
357
+ readonly generatedAt: string;
358
+ readonly registryVersion: 2;
359
+ readonly workflows: ReadonlyArray<unknown>;
296
360
  };
297
361
  readonly faults: never;
298
362
  };
@@ -391,7 +455,220 @@ export type ClientOperationTypes = {
391
455
  readonly input: {
392
456
  readonly operationId: string;
393
457
  };
394
- readonly output: unknown;
458
+ readonly output: {
459
+ readonly activityName: string;
460
+ readonly attempt: number;
461
+ readonly availableAt: number;
462
+ readonly createdAt: number;
463
+ readonly executionRequirement?: SharedActivityContractHashArti_d7d91df4;
464
+ readonly fairShareKey?: string;
465
+ readonly firstQueuedAt: number;
466
+ readonly headerKeys: ReadonlyArray<string>;
467
+ readonly lastDispatchedAt?: number;
468
+ readonly lastQueuedAt: number;
469
+ readonly lastRequeueReason?: string;
470
+ readonly operationId: string;
471
+ readonly priority?: number;
472
+ readonly queue: string;
473
+ readonly requeueCount: number;
474
+ readonly retryCount: number;
475
+ readonly retryPolicy?: SharedBackoffMultiplierInitial_64d024ea;
476
+ readonly scheduleToCloseDeadline?: number;
477
+ readonly startedAt?: number;
478
+ readonly state: 'queued';
479
+ readonly stickyWorkflowId?: string;
480
+ readonly visibilityTimeoutMilliseconds: number;
481
+ readonly workflowExecutionToken?: string;
482
+ readonly workflowId?: string;
483
+ readonly workflowRevision?: string;
484
+ readonly workflowType: string;
485
+ } | {
486
+ readonly activityName: string;
487
+ readonly attempt: number;
488
+ readonly createdAt: number;
489
+ readonly executionRequirement?: SharedActivityContractHashArti_d7d91df4;
490
+ readonly fairShareKey?: string;
491
+ readonly firstQueuedAt: number;
492
+ readonly headerKeys: ReadonlyArray<string>;
493
+ readonly lastHeartbeatAt: number;
494
+ readonly lastQueuedAt: number;
495
+ readonly lastRequeueReason?: string;
496
+ readonly leaseDeadline: number;
497
+ readonly operationId: string;
498
+ readonly priority?: number;
499
+ readonly queue: string;
500
+ readonly requeueCount: number;
501
+ readonly retryCount: number;
502
+ readonly retryPolicy?: SharedBackoffMultiplierInitial_64d024ea;
503
+ readonly scheduleToCloseDeadline?: number;
504
+ readonly startedAt: number;
505
+ readonly state: 'leased';
506
+ readonly stickyWorkflowId?: string;
507
+ readonly visibilityTimeoutMilliseconds: number;
508
+ readonly workflowExecutionToken?: string;
509
+ readonly workflowId?: string;
510
+ readonly workflowRevision?: string;
511
+ readonly workflowType: string;
512
+ } | {
513
+ readonly activityName: string;
514
+ readonly attempt: number;
515
+ readonly createdAt: number;
516
+ readonly executionRequirement?: SharedActivityContractHashArti_d7d91df4;
517
+ readonly fairShareKey?: string;
518
+ readonly firstQueuedAt: number;
519
+ readonly headerKeys: ReadonlyArray<string>;
520
+ readonly lastHeartbeatAt: number;
521
+ readonly lastQueuedAt: number;
522
+ readonly lastRequeueReason?: string;
523
+ readonly leaseDeadline: number;
524
+ readonly operationId: string;
525
+ readonly pendingStatus: 'completed' | 'failed';
526
+ readonly priority?: number;
527
+ readonly queue: string;
528
+ readonly requeueCount: number;
529
+ readonly resultDigest: string;
530
+ readonly retryCount: number;
531
+ readonly retryPolicy?: SharedBackoffMultiplierInitial_64d024ea;
532
+ readonly scheduleToCloseDeadline?: number;
533
+ readonly startedAt: number;
534
+ readonly state: 'completing';
535
+ readonly stickyWorkflowId?: string;
536
+ readonly visibilityTimeoutMilliseconds: number;
537
+ readonly workflowExecutionToken?: string;
538
+ readonly workflowId?: string;
539
+ readonly workflowRevision?: string;
540
+ readonly workflowType: string;
541
+ } | {
542
+ readonly activityName: string;
543
+ readonly attempt: number;
544
+ readonly cancellationReason: string;
545
+ readonly cancellationRequestedAt: number;
546
+ readonly createdAt: number;
547
+ readonly executionRequirement?: SharedActivityContractHashArti_d7d91df4;
548
+ readonly fairShareKey?: string;
549
+ readonly firstQueuedAt: number;
550
+ readonly headerKeys: ReadonlyArray<string>;
551
+ readonly lastHeartbeatAt: number;
552
+ readonly lastQueuedAt: number;
553
+ readonly lastRequeueReason?: string;
554
+ readonly leaseDeadline: number;
555
+ readonly operationId: string;
556
+ readonly priority?: number;
557
+ readonly queue: string;
558
+ readonly requeueCount: number;
559
+ readonly retryCount: number;
560
+ readonly retryPolicy?: SharedBackoffMultiplierInitial_64d024ea;
561
+ readonly scheduleToCloseDeadline?: number;
562
+ readonly startedAt: number;
563
+ readonly state: 'cancelling';
564
+ readonly stickyWorkflowId?: string;
565
+ readonly visibilityTimeoutMilliseconds: number;
566
+ readonly workflowExecutionToken?: string;
567
+ readonly workflowId?: string;
568
+ readonly workflowRevision?: string;
569
+ readonly workflowType: string;
570
+ } | {
571
+ readonly activityName: string;
572
+ readonly adopted: boolean;
573
+ readonly adoptedAt?: number;
574
+ readonly attempt: number;
575
+ readonly createdAt: number;
576
+ readonly disposition: 'resolved';
577
+ readonly error?: string;
578
+ readonly executionRequirement?: SharedActivityContractHashArti_d7d91df4;
579
+ readonly fairShareKey?: string;
580
+ readonly headerKeys: ReadonlyArray<string>;
581
+ readonly operationId: string;
582
+ readonly priority?: number;
583
+ readonly queue: string;
584
+ readonly resultDigest: string;
585
+ readonly resultStatus: 'completed' | 'failed';
586
+ readonly retryPolicy?: SharedBackoffMultiplierInitial_64d024ea;
587
+ readonly scheduleToCloseDeadline?: number;
588
+ readonly state: 'terminal';
589
+ readonly stickyWorkflowId?: string;
590
+ readonly terminalAt: number;
591
+ readonly visibilityTimeoutMilliseconds: number;
592
+ readonly workflowExecutionToken?: string;
593
+ readonly workflowId?: string;
594
+ readonly workflowRevision?: string;
595
+ readonly workflowType: string;
596
+ } | {
597
+ readonly activityName: string;
598
+ readonly adopted: boolean;
599
+ readonly adoptedAt?: number;
600
+ readonly attempt: number;
601
+ readonly cancellationReason: string;
602
+ readonly createdAt: number;
603
+ readonly disposition: 'cancelled';
604
+ readonly executionRequirement?: SharedActivityContractHashArti_d7d91df4;
605
+ readonly fairShareKey?: string;
606
+ readonly headerKeys: ReadonlyArray<string>;
607
+ readonly operationId: string;
608
+ readonly priority?: number;
609
+ readonly queue: string;
610
+ readonly retryPolicy?: SharedBackoffMultiplierInitial_64d024ea;
611
+ readonly scheduleToCloseDeadline?: number;
612
+ readonly state: 'terminal';
613
+ readonly stickyWorkflowId?: string;
614
+ readonly terminalAt: number;
615
+ readonly visibilityTimeoutMilliseconds: number;
616
+ readonly workflowExecutionToken?: string;
617
+ readonly workflowId?: string;
618
+ readonly workflowRevision?: string;
619
+ readonly workflowType: string;
620
+ } | {
621
+ readonly activityName: string;
622
+ readonly adopted: boolean;
623
+ readonly adoptedAt?: number;
624
+ readonly attempt: number;
625
+ readonly createdAt: number;
626
+ readonly disposition: 'retryExhausted';
627
+ readonly error: string;
628
+ readonly executionRequirement?: SharedActivityContractHashArti_d7d91df4;
629
+ readonly fairShareKey?: string;
630
+ readonly headerKeys: ReadonlyArray<string>;
631
+ readonly operationId: string;
632
+ readonly priority?: number;
633
+ readonly queue: string;
634
+ readonly retryPolicy?: SharedBackoffMultiplierInitial_64d024ea;
635
+ readonly scheduleToCloseDeadline?: number;
636
+ readonly state: 'terminal';
637
+ readonly stickyWorkflowId?: string;
638
+ readonly terminalAt: number;
639
+ readonly visibilityTimeoutMilliseconds: number;
640
+ readonly workflowExecutionToken?: string;
641
+ readonly workflowId?: string;
642
+ readonly workflowRevision?: string;
643
+ readonly workflowType: string;
644
+ } | {
645
+ readonly activityName: string;
646
+ readonly attempt: number;
647
+ readonly createdAt: number;
648
+ readonly deadLetteredAt: number;
649
+ readonly error?: string;
650
+ readonly executionRequirement?: SharedActivityContractHashArti_d7d91df4;
651
+ readonly fairShareKey?: string;
652
+ readonly headerKeys: ReadonlyArray<string>;
653
+ readonly lastRequeueReason?: string;
654
+ readonly operationId: string;
655
+ readonly pendingStatus: 'completed' | 'failed';
656
+ readonly persistenceFailureReason: string;
657
+ readonly priority?: number;
658
+ readonly queue: string;
659
+ readonly requeueCount: number;
660
+ readonly resultDigest: string;
661
+ readonly retryCount: number;
662
+ readonly retryPolicy?: SharedBackoffMultiplierInitial_64d024ea;
663
+ readonly scheduleToCloseDeadline?: number;
664
+ readonly state: 'deadLettered';
665
+ readonly stickyWorkflowId?: string;
666
+ readonly visibilityTimeoutMilliseconds: number;
667
+ readonly workflowExecutionToken?: string;
668
+ readonly workflowId?: string;
669
+ readonly workflowRevision?: string;
670
+ readonly workflowType: string;
671
+ };
395
672
  readonly faults: 'NotFound';
396
673
  };
397
674
  'weft.updates.result.get': {
@@ -406,14 +683,14 @@ export type ClientOperationTypes = {
406
683
  readonly deploymentName: string;
407
684
  readonly reason?: string;
408
685
  };
409
- readonly output: unknown;
686
+ readonly output: SharedAffectedWorkersHealthInF_c3f6ebcc | SharedAffectedWorkersDeploymen_e4c61ae8;
410
687
  readonly faults: never;
411
688
  };
412
689
  'weft.worker.deployments.resume': {
413
690
  readonly input: {
414
691
  readonly deploymentName: string;
415
692
  };
416
- readonly output: unknown;
693
+ readonly output: SharedAffectedWorkersHealthInF_c3f6ebcc | SharedAffectedWorkersDeploymen_e4c61ae8;
417
694
  readonly faults: never;
418
695
  };
419
696
  'weft.workers.diagnostics': {
@@ -452,7 +729,7 @@ export type ClientOperationTypes = {
452
729
  readonly reason?: string;
453
730
  readonly workerId: string;
454
731
  };
455
- readonly output: unknown;
732
+ readonly output: SharedAffectedWorkersHealthInF_c3f6ebcc | SharedAffectedWorkersDeploymen_e4c61ae8;
456
733
  readonly faults: 'NotFound';
457
734
  };
458
735
  'weft.workers.list': {
@@ -512,9 +789,16 @@ export type ClientOperationTypes = {
512
789
  readonly input: {
513
790
  readonly workerId: string;
514
791
  };
515
- readonly output: unknown;
792
+ readonly output: SharedAffectedWorkersHealthInF_c3f6ebcc | SharedAffectedWorkersDeploymen_e4c61ae8;
516
793
  readonly faults: 'NotFound';
517
794
  };
795
+ 'weft.workflows.active.get': {
796
+ readonly input: {
797
+ readonly name: unknown;
798
+ };
799
+ readonly output: unknown;
800
+ readonly faults: 'InvalidParams' | 'NotFound';
801
+ };
518
802
  'weft.workflows.activities.pending.list': {
519
803
  readonly input: {
520
804
  readonly cursor?: string;
@@ -667,7 +951,23 @@ export type ClientOperationTypes = {
667
951
  readonly input: {
668
952
  readonly workflowId: string;
669
953
  };
670
- readonly output: unknown;
954
+ readonly output: {
955
+ readonly attempts: number;
956
+ readonly status: 'pending';
957
+ } | {
958
+ readonly attempts: number;
959
+ readonly startedAt: number;
960
+ readonly status: 'running';
961
+ } | {
962
+ readonly attempts: number;
963
+ readonly completedAt: number;
964
+ readonly status: 'succeeded';
965
+ } | {
966
+ readonly attempts: number;
967
+ readonly error: string;
968
+ readonly failedAt: number;
969
+ readonly status: 'failed';
970
+ } | null;
671
971
  readonly faults: never;
672
972
  };
673
973
  'weft.workflows.fork': {
@@ -746,6 +1046,46 @@ export type ClientOperationTypes = {
746
1046
  };
747
1047
  readonly faults: 'Conflict' | 'NotFound';
748
1048
  };
1049
+ 'weft.workflows.revisions.activate': {
1050
+ readonly input: {
1051
+ readonly expectedGeneration?: unknown;
1052
+ readonly name: unknown;
1053
+ readonly policy?: unknown;
1054
+ readonly revision: unknown;
1055
+ };
1056
+ readonly output: unknown;
1057
+ readonly faults: 'Conflict' | 'InvalidParams' | 'NotFound';
1058
+ };
1059
+ 'weft.workflows.revisions.get': {
1060
+ readonly input: {
1061
+ readonly name: unknown;
1062
+ readonly revision: unknown;
1063
+ };
1064
+ readonly output: unknown;
1065
+ readonly faults: 'InvalidParams' | 'NotFound';
1066
+ };
1067
+ 'weft.workflows.revisions.install': {
1068
+ readonly input: {
1069
+ readonly manifest: unknown;
1070
+ };
1071
+ readonly output: unknown;
1072
+ readonly faults: 'Conflict' | 'InvalidParams';
1073
+ };
1074
+ 'weft.workflows.revisions.list': {
1075
+ readonly input: {
1076
+ readonly name: unknown;
1077
+ };
1078
+ readonly output: unknown;
1079
+ readonly faults: 'InvalidParams';
1080
+ };
1081
+ 'weft.workflows.revisions.preload': {
1082
+ readonly input: {
1083
+ readonly name: unknown;
1084
+ readonly revision: unknown;
1085
+ };
1086
+ readonly output: unknown;
1087
+ readonly faults: 'Conflict' | 'InvalidParams' | 'NotFound';
1088
+ };
749
1089
  'weft.workflows.scheduleprovenance.get': {
750
1090
  readonly input: {
751
1091
  readonly workflowId: string;
@@ -6,6 +6,7 @@ export const CATALOG_OPERATION_NAMES = [
6
6
  "weft.activities.complete",
7
7
  "weft.activities.fail",
8
8
  "weft.alerts.list",
9
+ "weft.catalog.diagnostics",
9
10
  "weft.recover.all",
10
11
  "weft.retention.get",
11
12
  "weft.reviews.decision.submit",
@@ -34,6 +35,7 @@ export const CATALOG_OPERATION_NAMES = [
34
35
  "weft.workers.list",
35
36
  "weft.workers.rejections",
36
37
  "weft.workers.resume",
38
+ "weft.workflows.active.get",
37
39
  "weft.workflows.activities.pending.list",
38
40
  "weft.workflows.aggregate",
39
41
  "weft.workflows.attributes.get",
@@ -56,6 +58,11 @@ export const CATALOG_OPERATION_NAMES = [
56
58
  "weft.workflows.replay",
57
59
  "weft.workflows.result.get",
58
60
  "weft.workflows.resume",
61
+ "weft.workflows.revisions.activate",
62
+ "weft.workflows.revisions.get",
63
+ "weft.workflows.revisions.install",
64
+ "weft.workflows.revisions.list",
65
+ "weft.workflows.revisions.preload",
59
66
  "weft.workflows.scheduleprovenance.get",
60
67
  "weft.workflows.signal",
61
68
  "weft.workflows.start",
@@ -71,6 +78,7 @@ export const CATALOG_OPERATION_NAMES = [
71
78
  "weft.activities.complete",
72
79
  "weft.activities.fail",
73
80
  "weft.alerts.list",
81
+ "weft.catalog.diagnostics",
74
82
  "weft.recover.all",
75
83
  "weft.retention.get",
76
84
  "weft.reviews.decision.submit",
@@ -100,6 +108,7 @@ export const CATALOG_OPERATION_NAMES = [
100
108
  "weft.workers.list",
101
109
  "weft.workers.rejections",
102
110
  "weft.workers.resume",
111
+ "weft.workflows.active.get",
103
112
  "weft.workflows.activities.pending.list",
104
113
  "weft.workflows.aggregate",
105
114
  "weft.workflows.attributes.get",
@@ -122,6 +131,11 @@ export const CATALOG_OPERATION_NAMES = [
122
131
  "weft.workflows.replay",
123
132
  "weft.workflows.result.get",
124
133
  "weft.workflows.resume",
134
+ "weft.workflows.revisions.activate",
135
+ "weft.workflows.revisions.get",
136
+ "weft.workflows.revisions.install",
137
+ "weft.workflows.revisions.list",
138
+ "weft.workflows.revisions.preload",
125
139
  "weft.workflows.scheduleprovenance.get",
126
140
  "weft.workflows.signal",
127
141
  "weft.workflows.start",
@@ -54,7 +54,7 @@ export function truncateToWidth(value, width) {
54
54
  export async function confirmDestructive(options) {
55
55
  if (options.assumeYes)
56
56
  return "confirmed";
57
- if (!(options.isTty ?? Boolean(process.stdin.isTTY)))
57
+ if (!(options.isTty ?? process.stdin.isTTY))
58
58
  return "non-interactive";
59
59
  const readLine = options.readLine ?? defaultReadLine;
60
60
  process.stdout.write(`${options.prompt} [y/N] `);
@@ -1,6 +1,6 @@
1
1
  import { parseArgs } from "node:util";
2
2
  import { parsePersistentStorageBackend } from "./storage-backend-arguments.js";
3
- const SCHEDULE_ACTIONS = new Set(["list", "create", "pause", "resume", "cancel"]), VALID_SCHEDULE_OVERLAP_POLICIES = new Set(["skip", "queue", "cancel-running", "allow"]);
3
+ const SCHEDULE_ACTIONS = new Set(["list", "create", "pause", "resume", "cancel"]), VALID_SCHEDULE_OVERLAP_POLICIES = new Set(["skip", "queue", "cancel-running", "allow"]), VALID_SCHEDULE_REVISION_POLICIES = new Set(["active-at-fire", "pinned"]);
4
4
  function parseScheduleCliValues(args) {
5
5
  return parseArgs({
6
6
  args,
@@ -14,6 +14,7 @@ function parseScheduleCliValues(args) {
14
14
  overlap: { type: "string" },
15
15
  backfill: { type: "boolean", default: !1 },
16
16
  jitter: { type: "string" },
17
+ "revision-policy": { type: "string" },
17
18
  help: { type: "boolean", short: "h", default: !1 },
18
19
  json: { type: "boolean", short: "j", default: !1 }
19
20
  },
@@ -76,12 +77,23 @@ function requireScheduleAction(positionals) {
76
77
  throw Error(`Unknown schedule action "${action}". Expected one of: ${formatScheduleActionList()}`);
77
78
  return action;
78
79
  }
80
+ function isScheduleRevisionPolicy(value) {
81
+ return VALID_SCHEDULE_REVISION_POLICIES.has(value);
82
+ }
83
+ function parseScheduleRevisionPolicy(value) {
84
+ if (value === void 0)
85
+ return;
86
+ if (!isScheduleRevisionPolicy(value))
87
+ throw Error(`Invalid revision policy '${value}'. Must be one of: active-at-fire, pinned`);
88
+ return value;
89
+ }
79
90
  function buildScheduleCreateOptionalFields(values) {
80
- const overlap = parseScheduleOverlapPolicy(values.overlap);
91
+ const overlap = parseScheduleOverlapPolicy(values.overlap), revisionPolicy = parseScheduleRevisionPolicy(values["revision-policy"]);
81
92
  return {
82
93
  ...values.id !== void 0 ? { id: values.id } : {},
83
94
  ...overlap !== void 0 ? { overlap } : {},
84
- ...values.jitter !== void 0 ? { jitter: values.jitter } : {}
95
+ ...values.jitter !== void 0 ? { jitter: values.jitter } : {},
96
+ ...revisionPolicy !== void 0 ? { revisionPolicy } : {}
85
97
  };
86
98
  }
87
99
  function buildScheduleCreateCommand(values, positionals) {
@@ -64,7 +64,8 @@ async function executeScheduleCreate(options, engine, loadRegistrationsFromModul
64
64
  ...options.id !== void 0 ? { id: options.id } : {},
65
65
  ...options.overlap !== void 0 ? { overlap: options.overlap } : {},
66
66
  ...options.backfill ? { backfill: !0 } : {},
67
- ...options.jitter !== void 0 ? { jitter: options.jitter } : {}
67
+ ...options.jitter !== void 0 ? { jitter: options.jitter } : {},
68
+ ...options.revisionPolicy !== void 0 ? { revisionPolicy: options.revisionPolicy } : {}
68
69
  }), schedule = await handle.describe();
69
70
  return {
70
71
  stdout: formatScheduleCommandOutput(schedule, options.json, `Created schedule ${handle.id}`),
@@ -10,6 +10,8 @@ export async function createStorage(backend, database) {
10
10
  }
11
11
  case "memory":
12
12
  return createMemoryStorage();
13
+ default:
14
+ throw Error(`Unknown storage backend: ${JSON.stringify(backend)}`);
13
15
  }
14
16
  }
15
17
  async function createMemoryStorage() {
@@ -1,4 +1,4 @@
1
- import type { ScheduleOverlapPolicy } from '../core/types.ts';
1
+ import type { ScheduleOverlapPolicy, ScheduleRevisionPolicy } from '../core/types.ts';
2
2
  /** Supported storage backend identifiers for the `--storage` flag. */
3
3
  export type StorageBackend = 'sqlite' | 'lmdb' | 'memory';
4
4
  /** Storage backends suitable for commands that must survive process exit. */
@@ -86,6 +86,7 @@ export type CliCommand = {
86
86
  overlap?: ScheduleOverlapPolicy;
87
87
  backfill: boolean;
88
88
  jitter?: string;
89
+ revisionPolicy?: ScheduleRevisionPolicy;
89
90
  help: boolean;
90
91
  json: boolean;
91
92
  } | {
@@ -26,6 +26,8 @@ export async function executeWorkflow(command) {
26
26
  return executeWorkflowCancel(command, connection);
27
27
  case "signal":
28
28
  return executeWorkflowSignal(command, connection);
29
+ default:
30
+ throw Error(`Unknown workflow command action: ${JSON.stringify(command)}`);
29
31
  }
30
32
  }
31
33
  function isRecord(value) {
package/dist/cli-main.js CHANGED
@@ -42,7 +42,7 @@ const parsedArguments = (() => {
42
42
  } catch (error) {
43
43
  const message = error instanceof Error ? error.message : String(error);
44
44
  console.error(`Error: ${message}`);
45
- process.exit(findCliSubcommandName(Bun.argv.slice(2)) === "api" ? 3 : 1);
45
+ return process.exit(findCliSubcommandName(Bun.argv.slice(2)) === "api" ? 3 : 1);
46
46
  }
47
47
  })();
48
48
  if (parsedArguments.command === "version") {
@@ -1,7 +1,7 @@
1
1
  import { assertScopedBulkWorkflowFilter } from "../core/bulk-workflow-filter.js";
2
2
  import { HttpClientError, request } from "./http-request.js";
3
3
  import { buildReviewListSearchParams } from "./search-params.js";
4
- import { scheduleSpecToWireFields } from "./start-body.js";
4
+ import { scheduleSpecToWireFields, setIfDefined } from "./start-body.js";
5
5
  export async function listReviewRequests(context, filter) {
6
6
  const search = buildReviewListSearchParams(filter).toString(), path = search.length > 0 ? `/reviews?${search}` : "/reviews";
7
7
  return (await request(context.baseUrl, path, context.headers)).items;
@@ -187,14 +187,11 @@ export function cancelScheduleRequest(context, id) {
187
187
  }
188
188
  export function updateScheduleRequest(context, id, newSpec, options) {
189
189
  const body = scheduleSpecToWireFields(newSpec);
190
- if (options?.description !== void 0)
191
- body.description = options.description;
192
- if (options?.overlap !== void 0)
193
- body.overlap = options.overlap;
194
- if (options?.backfill !== void 0)
195
- body.backfill = options.backfill;
196
- if (options?.jitter !== void 0)
197
- body.jitter = options.jitter;
190
+ setIfDefined(body, "description", options?.description);
191
+ setIfDefined(body, "overlap", options?.overlap);
192
+ setIfDefined(body, "backfill", options?.backfill);
193
+ setIfDefined(body, "jitter", options?.jitter);
194
+ setIfDefined(body, "revisionPolicy", options?.revisionPolicy);
198
195
  return request(context.baseUrl, `/schedules/${encodeURIComponent(id)}`, context.headers, {
199
196
  method: "PATCH",
200
197
  body: JSON.stringify(body)
@@ -16,6 +16,7 @@ export function buildScheduleBody(type, input, spec, options) {
16
16
  setIfDefined(body, "overlap", options?.overlap);
17
17
  setIfDefined(body, "backfill", options?.backfill);
18
18
  setIfDefined(body, "jitter", options?.jitter);
19
+ setIfDefined(body, "revisionPolicy", options?.revisionPolicy);
19
20
  return body;
20
21
  }
21
22
  function applyStartOptionsToBody(body, options) {