@lostgradient/weft 0.24.0 → 0.24.2

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 (283) hide show
  1. package/README.md +2 -2
  2. package/dist/cli/conformance.js +5 -2
  3. package/dist/cli/generated/operation-catalog.snapshot.json +95 -1
  4. package/dist/cli/generated/operation-client.generated.d.ts +28 -2
  5. package/dist/cli/generated/operation-client.generated.js +2 -0
  6. package/dist/cli/parse-schedule-arguments.js +15 -3
  7. package/dist/cli/schedule.js +2 -1
  8. package/dist/cli/types.d.ts +2 -1
  9. package/dist/client/http-client-requests.js +6 -9
  10. package/dist/client/start-body.js +1 -0
  11. package/dist/core/catalog/index.d.ts +2 -2
  12. package/dist/core/catalog/index.js +9 -2
  13. package/dist/core/catalog/reference-counts.d.ts +29 -14
  14. package/dist/core/catalog/removal.d.ts +63 -10
  15. package/dist/core/catalog/removal.js +18 -2
  16. package/dist/core/catalog/storage-io.d.ts +23 -0
  17. package/dist/core/catalog/storage-io.js +1 -1
  18. package/dist/core/engine/activity-resolution.js +17 -17
  19. package/dist/core/engine/bulk-operations-purge.d.ts +1 -1
  20. package/dist/core/engine/bulk-operations-purge.js +17 -22
  21. package/dist/core/engine/bulk-operations-retry.d.ts +24 -0
  22. package/dist/core/engine/bulk-operations-retry.js +190 -0
  23. package/dist/core/engine/bulk-operations-shared.d.ts +18 -0
  24. package/dist/core/engine/bulk-operations-shared.js +14 -0
  25. package/dist/core/engine/bulk-operations.d.ts +3 -2
  26. package/dist/core/engine/bulk-operations.js +10 -169
  27. package/dist/core/engine/callback-creators-bundles.js +5 -3
  28. package/dist/core/engine/callback-creators-core.js +9 -1
  29. package/dist/core/engine/callback-creators-schedule.js +2 -2
  30. package/dist/core/engine/catalog-readiness.js +2 -0
  31. package/dist/core/engine/catalog-removal.d.ts +107 -3
  32. package/dist/core/engine/catalog-removal.js +66 -13
  33. package/dist/core/engine/catalog-tombstone-recovery.d.ts +56 -0
  34. package/dist/core/engine/catalog-tombstone-recovery.js +39 -0
  35. package/dist/core/engine/child-workflow.d.ts +13 -1
  36. package/dist/core/engine/child-workflow.js +22 -4
  37. package/dist/core/engine/constraints.js +5 -1
  38. package/dist/core/engine/construction.d.ts +1 -1
  39. package/dist/core/engine/decode-revision.d.ts +32 -0
  40. package/dist/core/engine/decode-revision.js +9 -0
  41. package/dist/core/engine/disposal.d.ts +6 -2
  42. package/dist/core/engine/disposal.js +24 -10
  43. package/dist/core/engine/dynamic-source-errors.d.ts +81 -0
  44. package/dist/core/engine/dynamic-source-errors.js +25 -0
  45. package/dist/core/engine/dynamic-source-execution.d.ts +173 -0
  46. package/dist/core/engine/dynamic-source-execution.js +108 -0
  47. package/dist/core/engine/engine-internal-types.d.ts +16 -0
  48. package/dist/core/engine/engine-workflows-namespace.d.ts +10 -0
  49. package/dist/core/engine/engine-workflows-namespace.js +3 -1
  50. package/dist/core/engine/generation-codec.d.ts +22 -0
  51. package/dist/core/engine/generation-codec.js +2 -0
  52. package/dist/core/engine/index.d.ts +18 -10
  53. package/dist/core/engine/index.js +22 -11
  54. package/dist/core/engine/inline-launch-queue.js +1 -1
  55. package/dist/core/engine/internals.d.ts +26 -30
  56. package/dist/core/engine/lifecycle/checkpoint-launch.d.ts +29 -0
  57. package/dist/core/engine/lifecycle/checkpoint-launch.js +75 -0
  58. package/dist/core/engine/lifecycle/delayed-start-registration.d.ts +30 -0
  59. package/dist/core/engine/lifecycle/delayed-start-registration.js +11 -0
  60. package/dist/core/engine/lifecycle/fork-helpers.d.ts +33 -1
  61. package/dist/core/engine/lifecycle/fork-helpers.js +3 -1
  62. package/dist/core/engine/lifecycle/recovery-isolation.d.ts +20 -0
  63. package/dist/core/engine/lifecycle/recovery-isolation.js +26 -0
  64. package/dist/core/engine/lifecycle/recovery-revision-groups.d.ts +75 -0
  65. package/dist/core/engine/lifecycle/recovery-revision-groups.js +64 -0
  66. package/dist/core/engine/lifecycle/resume-body.d.ts +44 -0
  67. package/dist/core/engine/lifecycle/resume-body.js +211 -0
  68. package/dist/core/engine/lifecycle/resume-generation-guard.d.ts +58 -0
  69. package/dist/core/engine/lifecycle/resume-generation-guard.js +11 -0
  70. package/dist/core/engine/lifecycle/resume.d.ts +46 -3
  71. package/dist/core/engine/lifecycle/resume.js +21 -201
  72. package/dist/core/engine/lifecycle/shared.d.ts +43 -0
  73. package/dist/core/engine/lifecycle/standalone-claim-acquire.d.ts +80 -2
  74. package/dist/core/engine/lifecycle/standalone-claim-acquire.js +20 -4
  75. package/dist/core/engine/lifecycle/start-commit-errors.d.ts +12 -0
  76. package/dist/core/engine/lifecycle/start-commit-errors.js +6 -0
  77. package/dist/core/engine/lifecycle/start-commit.d.ts +24 -7
  78. package/dist/core/engine/lifecycle/start-commit.js +57 -15
  79. package/dist/core/engine/lifecycle/start-exec.d.ts +18 -2
  80. package/dist/core/engine/lifecycle/start-exec.js +7 -5
  81. package/dist/core/engine/lifecycle/start-or-signal-create.js +1 -3
  82. package/dist/core/engine/lifecycle/start-or-signal-resolution.d.ts +8 -2
  83. package/dist/core/engine/lifecycle/start-or-signal-resolution.js +11 -3
  84. package/dist/core/engine/lifecycle/start-or-signal.js +1 -1
  85. package/dist/core/engine/lifecycle/start-precondition-attribution.d.ts +55 -0
  86. package/dist/core/engine/lifecycle/start-precondition-attribution.js +13 -0
  87. package/dist/core/engine/lifecycle/start-revision-resolution.d.ts +34 -0
  88. package/dist/core/engine/lifecycle/start-revision-resolution.js +11 -0
  89. package/dist/core/engine/lifecycle/start-schedule-timing.d.ts +11 -0
  90. package/dist/core/engine/lifecycle/start-schedule-timing.js +21 -0
  91. package/dist/core/engine/lifecycle/start-state.d.ts +16 -0
  92. package/dist/core/engine/lifecycle/start-state.js +60 -0
  93. package/dist/core/engine/lifecycle/start-terminal-conflict-purge.d.ts +146 -4
  94. package/dist/core/engine/lifecycle/start-terminal-conflict-purge.js +33 -4
  95. package/dist/core/engine/lifecycle/start.d.ts +54 -7
  96. package/dist/core/engine/lifecycle/start.js +53 -90
  97. package/dist/core/engine/lifecycle/transition.d.ts +12 -4
  98. package/dist/core/engine/lifecycle/transition.js +40 -95
  99. package/dist/core/engine/lifecycle.d.ts +5 -2
  100. package/dist/core/engine/lifecycle.js +7 -6
  101. package/dist/core/engine/listing.js +15 -1
  102. package/dist/core/engine/memo-durable-activity.js +4 -1
  103. package/dist/core/engine/nonterminal-revision-count.d.ts +25 -0
  104. package/dist/core/engine/nonterminal-revision-count.js +16 -0
  105. package/dist/core/engine/operations-time.d.ts +5 -23
  106. package/dist/core/engine/operations-time.js +13 -11
  107. package/dist/core/engine/ownership-bootstrap.d.ts +1 -1
  108. package/dist/core/engine/pinned-schedule-revision-count.d.ts +26 -0
  109. package/dist/core/engine/pinned-schedule-revision-count.js +19 -0
  110. package/dist/core/engine/pinned-schedule-revision.d.ts +76 -0
  111. package/dist/core/engine/pinned-schedule-revision.js +53 -0
  112. package/dist/core/engine/registration.d.ts +30 -0
  113. package/dist/core/engine/registration.js +17 -2
  114. package/dist/core/engine/retention.js +9 -2
  115. package/dist/core/engine/revision-errors.d.ts +71 -0
  116. package/dist/core/engine/revision-errors.js +13 -0
  117. package/dist/core/engine/schedule-overlap.js +2 -1
  118. package/dist/core/engine/schedule-revision-fire.d.ts +17 -0
  119. package/dist/core/engine/schedule-revision-fire.js +3 -0
  120. package/dist/core/engine/schedule-run.d.ts +10 -0
  121. package/dist/core/engine/schedule-run.js +2 -1
  122. package/dist/core/engine/schedules.d.ts +11 -1
  123. package/dist/core/engine/schedules.js +28 -9
  124. package/dist/core/engine/source-diagnostics.d.ts +76 -0
  125. package/dist/core/engine/source-diagnostics.js +105 -0
  126. package/dist/core/engine/source-registration.js +4 -2
  127. package/dist/core/engine/source-resolution.d.ts +25 -9
  128. package/dist/core/engine/source-resolution.js +49 -14
  129. package/dist/core/engine/source-runtime-state.d.ts +92 -0
  130. package/dist/core/engine/source-runtime-state.js +36 -0
  131. package/dist/core/engine/storage-io.d.ts +19 -2
  132. package/dist/core/engine/storage-io.js +21 -2
  133. package/dist/core/engine/termination/complete.js +1 -1
  134. package/dist/core/engine/termination/finalizer-registration.d.ts +18 -0
  135. package/dist/core/engine/termination/finalizer-registration.js +21 -0
  136. package/dist/core/engine/termination/finalizer.d.ts +16 -19
  137. package/dist/core/engine/termination/finalizer.js +3 -3
  138. package/dist/core/engine/termination/suspend.js +3 -0
  139. package/dist/core/engine/time-operation-callbacks.d.ts +32 -0
  140. package/dist/core/engine/time-operation-callbacks.js +0 -0
  141. package/dist/core/engine/validation/schedule-cadence.d.ts +16 -0
  142. package/dist/core/engine/validation/schedule-cadence.js +20 -0
  143. package/dist/core/engine/validation/schedule-options.d.ts +4 -1
  144. package/dist/core/engine/validation/schedule-options.js +14 -0
  145. package/dist/core/engine/validation/schedule-revision.d.ts +24 -0
  146. package/dist/core/engine/validation/schedule-revision.js +21 -0
  147. package/dist/core/engine/validation/schedule-warnings.d.ts +11 -0
  148. package/dist/core/engine/validation/schedule-warnings.js +5 -0
  149. package/dist/core/engine/validation/schedule.d.ts +29 -4
  150. package/dist/core/engine/validation/schedule.js +19 -36
  151. package/dist/core/engine/validation.js +13 -17
  152. package/dist/core/engine/workflow-claim-reclaim-target.d.ts +1 -1
  153. package/dist/core/engine/workflow-claim-reclaim-target.js +22 -8
  154. package/dist/core/engine/workflow-claim-registry.d.ts +79 -75
  155. package/dist/core/engine/workflow-claim-registry.js +15 -2
  156. package/dist/core/engine/workflow-generation-fence.d.ts +74 -0
  157. package/dist/core/engine/workflow-generation-fence.js +19 -0
  158. package/dist/core/engine/workflow-retention-deadline.d.ts +16 -0
  159. package/dist/core/engine/workflow-retention-deadline.js +33 -0
  160. package/dist/core/events/event-map.d.ts +5 -0
  161. package/dist/core/events/index.d.ts +1 -0
  162. package/dist/core/events/index.js +1 -0
  163. package/dist/core/events/workflow-source-events.d.ts +102 -0
  164. package/dist/core/events/workflow-source-events.js +57 -0
  165. package/dist/core/execution-strategy.d.ts +7 -0
  166. package/dist/core/inline-execution-strategy.context-options.d.ts +1 -1
  167. package/dist/core/inline-execution-strategy.js +1 -1
  168. package/dist/core/start-workflow-validation.d.ts +15 -0
  169. package/dist/core/start-workflow-validation.js +11 -1
  170. package/dist/core/types/checkpoint.d.ts +14 -0
  171. package/dist/core/types/schedules.d.ts +52 -1
  172. package/dist/core/types/state.d.ts +16 -0
  173. package/dist/core/weft-error.d.ts +1 -1
  174. package/dist/core/weft-error.js +4 -1
  175. package/dist/core/worker-execution-strategy.d.ts +1 -0
  176. package/dist/core/worker-execution-strategy.js +13 -1
  177. package/dist/core/worker-fault-handling.d.ts +10 -0
  178. package/dist/core/worker-fault-handling.js +1 -0
  179. package/dist/core/worker-inbound-message.d.ts +1 -0
  180. package/dist/core/worker-inbound-message.js +1 -0
  181. package/dist/core/worker-protocol-guard.js +4 -0
  182. package/dist/core/worker-protocol.d.ts +7 -0
  183. package/dist/core/worker-protocol.js +2 -1
  184. package/dist/core/worker-turn-watchdog.d.ts +8 -1
  185. package/dist/core/worker-turn-watchdog.js +3 -2
  186. package/dist/core/workflow-identifiers.d.ts +37 -0
  187. package/dist/core/workflow-identifiers.js +19 -1
  188. package/dist/diagnostics/format.js +5 -0
  189. package/dist/diagnostics/types.d.ts +24 -0
  190. package/dist/diagnostics/version-check.js +8 -2
  191. package/dist/http.js +2 -2
  192. package/dist/index.d.ts +3 -3
  193. package/dist/index.js +7 -0
  194. package/dist/indexeddb.js +1 -1
  195. package/dist/json-schema.js +3 -3
  196. package/dist/server/fault-to-json-rpc.js +2 -1
  197. package/dist/server/fleet-event-feed.js +6 -6
  198. package/dist/server/index.d.ts +11 -0
  199. package/dist/server/operation-fault.d.ts +2 -0
  200. package/dist/server/operation-fault.js +2 -1
  201. package/dist/server/operations/create-schedule.d.ts +2 -0
  202. package/dist/server/operations/create-schedule.js +10 -6
  203. package/dist/server/operations/get-catalog-diagnostics.d.ts +28 -0
  204. package/dist/server/operations/get-catalog-diagnostics.js +10 -2
  205. package/dist/server/operations/get-task-detail-schema.d.ts +8 -0
  206. package/dist/server/operations/get-task-detail-schema.js +1 -0
  207. package/dist/server/operations/get-task-detail.d.ts +8 -0
  208. package/dist/server/operations/get-task-detail.js +1 -0
  209. package/dist/server/operations/get-task-diagnostics.d.ts +4 -4
  210. package/dist/server/operations/preload-workflow-revision.d.ts +28 -0
  211. package/dist/server/operations/preload-workflow-revision.js +60 -0
  212. package/dist/server/operations/schedule-faults.d.ts +1 -0
  213. package/dist/server/operations/schedule-faults.js +32 -4
  214. package/dist/server/operations/schedule-rest-body.d.ts +1 -0
  215. package/dist/server/operations/schedule-rest-body.js +2 -1
  216. package/dist/server/operations/static-registrations.js +6 -0
  217. package/dist/server/operations/update-schedule.d.ts +2 -0
  218. package/dist/server/operations/update-schedule.js +4 -2
  219. package/dist/server/operations/workflow-catalog-operation-helpers.js +27 -0
  220. package/dist/server/rest-binding.d.ts +11 -0
  221. package/dist/server/runtime/task-dispatch-envelope.d.ts +41 -0
  222. package/dist/server/runtime/task-dispatch-envelope.js +54 -0
  223. package/dist/server/runtime/task-dispatch-revision.d.ts +29 -0
  224. package/dist/server/runtime/task-dispatch-revision.js +13 -0
  225. package/dist/server/runtime/task-dispatch.d.ts +3 -1
  226. package/dist/server/runtime/task-dispatch.js +20 -44
  227. package/dist/server/runtime/task-ledger-recovery.js +1 -1
  228. package/dist/server/runtime/task-ledger-runtime.d.ts +14 -2
  229. package/dist/server/runtime/task-ledger-runtime.js +5 -3
  230. package/dist/server/runtime/task-polling.js +9 -3
  231. package/dist/server/runtime/task-reconciliation.js +2 -1
  232. package/dist/server/runtime/websocket-worker.js +9 -0
  233. package/dist/server/task-ledger-codec.d.ts +28 -0
  234. package/dist/server/task-ledger-codec.js +7 -1
  235. package/dist/server/task-ledger-transition-helpers.js +1 -0
  236. package/dist/server/task-ledger-types.d.ts +9 -0
  237. package/dist/server/task-ledger.d.ts +1 -1
  238. package/dist/server/task-ledger.js +3 -1
  239. package/dist/server/task-queue-types.d.ts +2 -0
  240. package/dist/storage/bun-sql.js +135 -100
  241. package/dist/storage/catalog-keys.d.ts +19 -0
  242. package/dist/storage/catalog-keys.js +3 -1
  243. package/dist/storage/compressed-storage.js +1 -1
  244. package/dist/storage/generation-keys.d.ts +52 -0
  245. package/dist/storage/generation-keys.js +4 -0
  246. package/dist/storage/index.d.ts +76 -63
  247. package/dist/storage/interface.d.ts +24 -230
  248. package/dist/storage/interface.js +1 -1
  249. package/dist/storage/key-prefixes.d.ts +1 -1
  250. package/dist/storage/key-prefixes.js +2 -0
  251. package/dist/storage/lease-keys.d.ts +48 -0
  252. package/dist/storage/lease-keys.js +8 -0
  253. package/dist/storage/lmdb.d.ts +30 -2
  254. package/dist/storage/lmdb.js +1 -1
  255. package/dist/storage/memory.js +1 -1
  256. package/dist/storage/neon.js +3 -3
  257. package/dist/storage/node-sqlite.js +135 -100
  258. package/dist/storage/postgres.js +3 -3
  259. package/dist/storage/resolve.js +1 -1
  260. package/dist/storage/scoped-storage.js +1 -1
  261. package/dist/storage/signal-keys.d.ts +23 -0
  262. package/dist/storage/signal-keys.js +9 -0
  263. package/dist/storage/testing.js +1 -1
  264. package/dist/storage/turso.js +2 -2
  265. package/dist/storage/workflow-lifecycle-keys.d.ts +128 -0
  266. package/dist/storage/workflow-lifecycle-keys.js +46 -0
  267. package/dist/storage/workflow-record-keys.d.ts +98 -0
  268. package/dist/storage/workflow-record-keys.js +47 -0
  269. package/dist/version.d.ts +1 -1
  270. package/dist/version.js +1 -1
  271. package/dist/web-extension.js +1 -1
  272. package/dist/worker/protocol-messages.d.ts +17 -0
  273. package/dist/worker/protocol-schemas.d.ts +32 -0
  274. package/dist/worker/protocol-schemas.js +7 -3
  275. package/dist/worker/protocol-task-result.js +35 -3
  276. package/dist/worker/protocol.js +1 -1
  277. package/dist/worker/registry/types.d.ts +2 -0
  278. package/dist/worker/registry.d.ts +1 -1
  279. package/dist/worker/registry.js +3 -1
  280. package/dist/workers/workflow-runner.d.ts +9 -0
  281. package/dist/workers/workflow-runner.js +9 -2
  282. package/dist/workers/workflow-worker-entry.js +9 -4
  283. package/package.json +2 -2
@@ -12,11 +12,15 @@ async function groupActiveWorkflowsByType(storage) {
12
12
  const storedVersion = state.versionTuple.workflowVersion;
13
13
  let group = groups.get(state.type);
14
14
  if (!group) {
15
- group = { count: 0, versionCounts: new Map };
15
+ group = { count: 0, versionCounts: new Map, revisionCounts: new Map, unpinnedCount: 0 };
16
16
  groups.set(state.type, group);
17
17
  }
18
18
  group.count++;
19
19
  group.versionCounts.set(storedVersion, (group.versionCounts.get(storedVersion) ?? 0) + 1);
20
+ if (state.revision === void 0)
21
+ group.unpinnedCount++;
22
+ else
23
+ group.revisionCounts.set(state.revision, (group.revisionCounts.get(state.revision) ?? 0) + 1);
20
24
  }
21
25
  return groups;
22
26
  }
@@ -41,7 +45,9 @@ function buildWorkflowTypeReports(groups, registrations) {
41
45
  storedVersion,
42
46
  registeredVersion,
43
47
  runningCount: group.count,
44
- compatibility
48
+ compatibility,
49
+ revisionCounts: Object.fromEntries(group.revisionCounts),
50
+ unpinnedRunningCount: group.unpinnedCount
45
51
  });
46
52
  }
47
53
  return reports;
package/dist/http.js CHANGED
@@ -1,2 +1,2 @@
1
- async function*B(e,t){if(e.body===null)return;let r=e.body.getReader(),i=new TextDecoder,o="",l=0,u=!1;try{while(!0){let{done:V,value:O}=await r.read();if(V){u=!0;break}if(l+=O.byteLength,l>t.maximumBytes)throw t.sizeLimitError();o+=i.decode(O,{stream:!0});let C=o.split(`
2
- `);o=C.pop()??"";for(let Y of C)yield Y}if(o+=i.decode(),o.length>0)yield o}finally{if(!u)try{await r.cancel()}catch{}r.releaseLock()}}function b(e){let t=[];for(let r=0;r<e.length;r+=512)t.push(String.fromCharCode(...e.subarray(r,r+512)));return btoa(t.join(""))}function R(e){let t=atob(e),r=new Uint8Array(t.length);for(let i=0;i<t.length;i+=1)r[i]=t.charCodeAt(i);return r}function S(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}async function f(e,t){return await e.get(t)!==null}async function*c(e,t,r){for await(let[i]of e.scan(t,r))yield i}async function m(e,t){let r=0;for await(let i of c(e,t))r++;return r}async function y(e,t){let r=[];for await(let i of c(e,t))r.push({type:"delete",key:i});if(r.length===0)return 0;return await e.batch(r),r.length}async function h(e,t,r){let i=[];for await(let o of c(e,t,r))i.push({type:"delete",key:o});if(i.length===0)return 0;return await e.batch(i),i.length}function P(e,t,r){if(!e.capabilities()[t])throw Error(`Feature "${r}" requires storage capability "${t}", but this storage backend does not provide it.`)}function n(e){return encodeURIComponent(e)}function s(e){return String(e).padStart(16,"0")}var k={catalogEntry:(e,t)=>`catalog-entry:${n(e)}:${n(t)}`,catalogEntryPrefix:(e)=>`catalog-entry:${n(e)}:`,catalogActive:(e)=>`catalog-active:${n(e)}`};var T="default";var E={applicationMailbox:(e,t)=>`appmbx:v1:${n(e)}:${n(t)}`,applicationMailboxSinkProbe:(e,t,r)=>`appprobe:v1:${n(e)}:${n(t)}:${n(r)}`,applicationCommandPrefix:(e,t)=>`appcmd:v1:${n(e)}:${n(t)}:`,applicationCommand:(e,t,r)=>`appcmd:v1:${n(e)}:${n(t)}:${n(r)}`,applicationCommandReadyPrefix:(e,t)=>`appready:v1:${n(e)}:${n(t)}:`,applicationCommandReady:(e,t,r)=>`appready:v1:${n(e)}:${n(t)}:${s(r)}`,applicationCommandIdempotency:(e,t,r)=>`appidem:v1:${n(e)}:${n(t)}:${n(r)}`,applicationCommandBySequencePrefix:(e,t)=>`appseq:v1:${n(e)}:${n(t)}:`,applicationCommandBySequence:(e,t,r)=>`appseq:v1:${n(e)}:${n(t)}:${s(r)}`,applicationCommandTerminalPrefix:(e,t)=>`appterm:v1:${n(e)}:${n(t)}:`,applicationCommandTerminal:(e,t,r,i)=>`appterm:v1:${n(e)}:${n(t)}:${s(r)}:${n(i)}`};var A={applicationOutbox:(e,t)=>`appobx:v1:${n(e)}:${n(t)}`,applicationOutboxSinkProbe:(e,t,r)=>`appprobe:v1:outbox:${n(e)}:${n(t)}:${n(r)}`,applicationDeliveryPrefix:(e,t)=>`appdlv:v1:${n(e)}:${n(t)}:`,applicationDelivery:(e,t,r)=>`appdlv:v1:${n(e)}:${n(t)}:${n(r)}`,applicationDeliveryDuePrefix:(e,t)=>`appdue:v1:${n(e)}:${n(t)}:`,applicationDeliveryDue:(e,t,r,i)=>`appdue:v1:${n(e)}:${n(t)}:${s(r)}:${n(i)}`,applicationDeliveryIdempotency:(e,t,r)=>`appdidem:v1:${n(e)}:${n(t)}:${n(r)}`,applicationDeliveryBySequencePrefix:(e,t)=>`appdseq:v1:${n(e)}:${n(t)}:`,applicationDeliveryBySequence:(e,t,r)=>`appdseq:v1:${n(e)}:${n(t)}:${s(r)}`,applicationDeliveryTerminalPrefix:(e,t)=>`appdterm:v1:${n(e)}:${n(t)}:`,applicationDeliveryTerminal:(e,t,r,i)=>`appdterm:v1:${n(e)}:${n(t)}:${s(r)}:${n(i)}`};var D={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${n(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${n(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var w=1e4;class I extends Error{code="StorageBatchOperationLimitExceededError";cap=w;count;target;constructor(e,t){super(`${e} count ${t} exceeds MAX_BATCH_OPERATIONS (${w}).`);this.name="StorageBatchOperationLimitExceededError",this.target=e,this.count=t}}function g(e,t){if(t>w)throw new I(e,t)}function L(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"ÿ"}function Re(e,t={}){if(t.gt!==void 0&&e<=t.gt)return!1;if(t.gte!==void 0&&e<t.gte)return!1;if(t.lt!==void 0&&e>=t.lt)return!1;if(t.lte!==void 0&&e>t.lte)return!1;return!0}function Pe(e,t){if(e===null||t===null)return e===t;if(e.byteLength!==t.byteLength)return!1;for(let r=0;r<e.byteLength;r++)if(e[r]!==t[r])return!1;return!0}async function _(e,t){if(e.has)return e.has(t);return f(e,t)}function K(e,t,r){if(e.keys)return e.keys(t,r);return c(e,t,r)}async function N(e,t){if(e.count)return e.count(t);return m(e,t)}async function H(e,t){if(e.deletePrefix)return e.deletePrefix(t);return y(e,t)}async function z(e,t,r){if(g("conditionalBatch conditions",t.length),g("conditionalBatch operations",r.length),P(e,"conditionalBatch","storageConditionalBatch"),!e.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return e.conditionalBatch(t,r)}var a=s,G="0",j="1",U=(e,t,r,i)=>`sig:${n(e)}:${n(t)}:${i}:${n(r)}`,ke={workflow:(e)=>`wf:${n(e)}`,checkpoint:(e)=>`wf:${n(e)}:ckpt`,checkpointHistory:(e,t)=>`wf:${n(e)}:ckpt:${String(t).padStart(10,"0")}`,timelinePrefix:(e)=>`wf:${n(e)}:timeline:`,timeline:(e,t)=>`wf:${n(e)}:timeline:${String(t).padStart(10,"0")}`,schedule:(e)=>`schedule:${n(e)}`,scheduleTick:(e,t)=>`schedule-due:${String(e).padStart(16,"0")}:${n(t)}`,scheduleRun:(e)=>`schedule-run:${n(e)}`,scheduleRunLink:(e)=>`schedule-run-link:${n(e)}`,scheduleRunBySchedulePrefix:(e)=>`schedule-run-by-schedule:${n(e)}:`,scheduleRunBySchedule:(e,t)=>`schedule-run-by-schedule:${n(e)}:${n(t)}`,operation:(e,t,r)=>`op:${e}:${a(t)}:${r}`,operationInflight:(e)=>`op:inflight:${e}`,operationQueued:(e)=>`op:queued:${e}`,operationResolved:(e)=>`op:resolved:${e}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(e,t,r)=>`audit:bulk:${a(e)}:${n(t)}:${n(r)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(e,t)=>`op:resolved-by-time:${a(e)}:${n(t)}`,asyncActivity:(e,t)=>`async-act:v1:${n(e)}:${n(t)}`,asyncActivityResolution:(e,t)=>`async-act:v1:${n(e)}:${n(t)}:resolution`,activityReconciliationPrefix:(e)=>`actrec:v1:${n(e)}:`,activityReconciliation:(e,t,r)=>`actrec:v1:${n(e)}:${n(t)}:${r}`,eventPrefix:(e)=>`ev:${n(e)}:`,event:(e,t)=>`ev:${n(e)}:${String(t).padStart(10,"0")}`,eventHead:(e)=>`ev:${n(e)}:head`,eventWatermark:(e)=>`ev:${n(e)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(e)=>`fleet-event:${String(e).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventWatermark:()=>"fleet-event-watermark",fleetEventByWorkflowPrefix:(e)=>`fleet-event-by-workflow:${n(e)}:`,fleetEventByWorkflow:(e,t)=>`fleet-event-by-workflow:${n(e)}:${String(t).padStart(10,"0")}`,signal:(e,t,r)=>U(e,t,r,j),startSignal:(e,t,r)=>U(e,t,r,G),signalSequence:(e)=>`sigseq:v1:${n(e)}`,signalAcceptedResponsePrefix:(e)=>`sigres:v1:${n(e)}:`,signalAcceptedResponse:(e,t,r)=>`sigres:v1:${n(e)}:${n(t)}:${n(r)}`,deadline:(e,t)=>`wf-deadline:${a(e)}:${n(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${a(e)}:${n(t)}`,teardownTimer:(e,t)=>`wf-teardown:${a(e)}:${n(t)}`,delayedStart:(e,t)=>`wf-delayed:${a(e)}:${n(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${a(e)}:${n(t)}`,attribute:(e)=>`attr:${n(e)}`,attributeIndex:(e,t,r)=>`idx:${e}:${t}:${n(r)}`,tagIndex:(e,t)=>`tag:${n(e)}:${n(t)}`,updatePrefix:(e)=>`upd:${n(e)}:`,update:(e,t)=>`upd:${n(e)}:${t}`,updateResponse:(e)=>`upr:${e}`,updateIdempotency:(e,t)=>`upk:${n(e)}:${t}`,startIdempotency:(e)=>`start-idem:${n(e)}`,startIdempotencySignalId:(e)=>`start-idem:${e}`,livenessPrefix:()=>"liveness:",liveness:(e)=>`liveness:${n(e)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",...E,...A,...D,...k,budget:(e,t,r)=>`budget:${e}:${t}:${r}`,review:(e,t)=>`review:${n(e)}:${t}`,workflowHeaders:(e)=>`wf-headers:${n(e)}`,childCancellationPrefix:(e)=>`child-cancel:${n(e)}:`,childCancellation:(e,t)=>`child-cancel:${n(e)}:${n(t)}`,childWorkflowByParentPrefix:(e,t)=>`child-by-parent:${n(e)}:${t===void 0?"":`${n(t)}:`}`,childWorkflowByParent:(e,t,r)=>`child-by-parent:${n(e)}:${t===void 0?"":`${n(t)}:`}${n(r)}`,terminalCleanupNeeded:(e)=>`wf-cleanup-needed:${n(e)}`,workflowConcurrency:(e,t)=>`wf-concurrency:${n(e)}:${n(t)}`,workflowConcurrencyHolder:(e)=>`wf-concurrency-holder:${n(e)}`,workflowHasServices:(e)=>`wf-has-services:${n(e)}`,finalizerState:(e)=>`wf-finalizer-state:${n(e)}`,teardownOwed:(e)=>`wf-teardown-needed:${n(e)}`,teardownSucceeded:(e)=>`wf-teardown-succeeded:${n(e)}`,teardownDeadLetter:(e)=>`wf-teardown-deadletter:${n(e)}`,offload:(e,t)=>`offload:${n(e)}:${t}`,archive:(e,t)=>`archive:${n(e)}:${t}`,stateExecution:(e,t)=>`state:execution:${n(e)}:${n(t)}`,stateWorkflow:(e,t)=>`state:workflow-scope:${T}:${n(e)}:${n(t)}`,streamChunkPrefix:(e,t)=>`blob:${n(e)}:${t}:chunk:`,streamChunk:(e,t,r)=>`blob:${n(e)}:${t}:chunk:${String(r).padStart(10,"0")}`,streamTail:(e,t)=>`blob:${n(e)}:${t}:tail`,streamMetadata:(e,t)=>`blob:${n(e)}:${t}:meta`,budgetCharged:(e)=>`budget-charged:${e}`,toolEffect:(e,t,r)=>`tool-effect:${n(e)}:${t}:${r}`,workflowVisibilityStatus:(e,t)=>`wf-idx-status:${n(e)}:${n(t)}`,workflowVisibilityType:(e,t)=>`wf-idx-type:${n(e)}:${n(t)}`,workflowVisibilityCreated:(e,t)=>`wf-idx-created:${a(e)}:${n(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${a(e)}:${n(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${a(e)}:${n(t)}`,workflowVisibilityManifest:(e)=>`wf-idx-manifest:${n(e)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function F(e){if(e===void 0)return;if(typeof e!=="number"||!Number.isInteger(e)||e<0)throw Error("deleteRange limit must be a finite non-negative integer");return e===0?0:e}function p(e){let t={},r=!1;for(let o of["gt","gte","lt","lte"]){let l=e[o];if(l===void 0)continue;if(typeof l!=="string")throw Error("deleteRange bounds must be strings");t[o]=l,r=!0}if(!r)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let i=F(e.limit);if(i!==void 0)t.limit=i;return t}async function q(e,t,r){let i=p(r);if(e.deleteRange)return e.deleteRange(t,i);return h(e,t,i)}function X(e,t){let r={key:e,open:!1};if(t.gte!==void 0&&t.gte>r.key)r.key=t.gte,r.open=!1;if(t.gt!==void 0&&t.gt>=r.key)r.key=t.gt,r.open=!0;return r}function J(e,t){let r={key:L(e),open:!0};if(t.lt!==void 0&&t.lt<=r.key)r.key=t.lt,r.open=!0;if(t.lte!==void 0&&t.lte<r.key)r.key=t.lte,r.open=!1;return r}function De(e,t){let r=X(e,t),i=J(e,t);if(r.key>i.key||r.key===i.key&&(r.open||i.open))return null;return{lower:r,upper:i}}function x(e){return e.replaceAll(/:+$/g,"")}function Z(e,t){let r=x(e),i=x(t);if(r.length===0)return i;if(i.length===0)return r;return`${r}:${i}`}class v{#e;#n;constructor(e,t){this.#e=e,this.#n=x(t)}#t(e){if(this.#n.length===0)return e;return e.length===0?`${this.#n}:`:`${this.#n}:${e}`}#i(e){return e.map((t)=>{if(t.type==="put")return{type:"put",key:this.#t(t.key),value:t.value};return{type:"delete",key:this.#t(t.key)}})}#o(e){if(this.#n.length===0)return e;return e.slice(this.#n.length+1)}#a(e){let t={};if(e.limit!==void 0)t.limit=e.limit;if(e.gt!==void 0)t.gt=this.#t(e.gt);if(e.gte!==void 0)t.gte=this.#t(e.gte);if(e.lt!==void 0)t.lt=this.#t(e.lt);if(e.lte!==void 0)t.lte=this.#t(e.lte);return t}#r(e={}){let t=this.#a(e);if(e.reverse!==void 0)t.reverse=e.reverse;return t}#s(e){return this.#a(e)}capabilities(){return this.#e.capabilities()}scoped(e){return new v(this.#e,Z(this.#n,e))}async get(e){return this.#e.get(this.#t(e))}async put(e,t){await this.#e.put(this.#t(e),t)}async delete(e){await this.#e.delete(this.#t(e))}async*scan(e,t){for await(let[r,i]of this.#e.scan(this.#t(e),this.#r(t)))yield[this.#o(r),i]}async batch(e){g("batch operations",e.length),await this.#e.batch(this.#i(e))}async conditionalBatch(e,t){return z(this.#e,e.map((r)=>({key:this.#t(r.key),expectedValue:r.expectedValue})),this.#i(t))}async has(e){return _(this.#e,this.#t(e))}async deletePrefix(e){return H(this.#e,this.#t(e))}async deleteRange(e,t){let r=this.#s(p(t));return q(this.#e,this.#t(e),r)}async*keys(e,t){for await(let r of K(this.#e,this.#t(e),this.#r(t)))yield this.#o(r)}async count(e){return N(this.#e,this.#t(e))}[Symbol.dispose](){this.#e[Symbol.dispose]()}}function W(e,t){return new v(e,t)}var Q=67108864;function M(e){if(e.type==="put")return{type:"put",key:e.key,value:b(e.value)};return{type:"delete",key:e.key}}function ee(e){return{key:e.key,expectedValue:e.expectedValue===null?null:b(e.expectedValue)}}function te(e){if(!S(e)||typeof e.key!=="string"||typeof e.value!=="string")throw Error("HTTPStorage scan response contained an invalid NDJSON entry.");return{key:e.key,value:e.value}}function ne(e){if(!S(e)||typeof e.applied!=="boolean")throw Error('HTTPStorage conditional batch response must include a boolean "applied" field.');return e.applied}function d(e,t,r){if(r!==void 0)e.searchParams.set(t,String(r))}function re(e){if(e.trim().length===0)return null;let t=te(JSON.parse(e));return[t.key,R(t.value)]}class ie{#e;#n;#t;constructor(e){this.#e=e.baseUrl instanceof URL?e.baseUrl:new URL(e.baseUrl),this.#n={...e.headers},this.#t=e.remoteConditionalBatch??!1}capabilities(){return{persistence:"remote",readAfterWrite:"eventual",scanConsistency:"best-effort",atomicBatch:!0,conditionalBatch:this.#t,boundedRangeDelete:!1}}#i(e){let t=this.#e.href.endsWith("/")?this.#e.href:`${this.#e.href}/`;return new URL(e.replace(/^\/+/,""),t)}#o(e){return this.#i(`/v1/storage/${encodeURIComponent(e)}`)}#a(e,t){let r=this.#i("/v1/storage");return r.searchParams.set("prefix",e),d(r,"limit",t.limit),d(r,"reverse",t.reverse),d(r,"gt",t.gt),d(r,"gte",t.gte),d(r,"lt",t.lt),d(r,"lte",t.lte),r}async#r(e,t={},r=[]){let i=new Headers(this.#n);for(let[l,u]of new Headers(t.headers).entries())i.set(l,u);let o=await fetch(e,{...t,headers:i});if(!o.ok&&!r.includes(o.status))throw Error(`HTTPStorage request failed: ${t.method??"GET"} ${e.pathname} returned ${String(o.status)}.`);return o}async get(e){let t=await this.#r(this.#o(e),{method:"GET"},[404]);if(t.status===404)return null;return new Uint8Array(await t.arrayBuffer())}async put(e,t){await this.#r(this.#o(e),{method:"PUT",headers:{"content-type":"application/octet-stream"},body:new Blob([new Uint8Array(t)])})}async delete(e){await this.#r(this.#o(e),{method:"DELETE"})}async*scan(e,t={}){let r=await this.#r(this.#a(e,t),{method:"GET",headers:{accept:"application/x-ndjson"}});for await(let i of B(r,{maximumBytes:Q,sizeLimitError:()=>Error("HTTPStorage scan response exceeded the maximum allowed size.")})){let o=re(i);if(o!==null)yield o}}async batch(e){g("batch operations",e.length),await this.#r(this.#i("/v1/storage/-/batch"),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({operations:e.map(M)})})}async conditionalBatch(e,t){g("conditionalBatch conditions",e.length),g("conditionalBatch operations",t.length);let r=await this.#r(this.#i("/v1/storage/-/conditional-batch"),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({conditions:e.map(ee),operations:t.map(M)})});return ne(await r.json())}has(e){return f(this,e)}async*keys(e,t){yield*c(this,e,t)}count(e){return m(this,e)}deletePrefix(e){return y(this,e)}deleteRange(e,t){return h(this,e,p(t))}scoped(e){return W(this,e)}[Symbol.dispose](){}}export{ie as HTTPStorage};
1
+ async function*v(e,t){if(e.body===null)return;let r=e.body.getReader(),i=new TextDecoder,o="",s=0,u=!1;try{while(!0){let{done:Q,value:C}=await r.read();if(Q){u=!0;break}if(s+=C.byteLength,s>t.maximumBytes)throw t.sizeLimitError();o+=i.decode(C,{stream:!0});let x=o.split(`
2
+ `);o=x.pop()??"";for(let ee of x)yield ee}if(o+=i.decode(),o.length>0)yield o}finally{if(!u)try{await r.cancel()}catch{}r.releaseLock()}}function S(e){let t=[];for(let r=0;r<e.length;r+=512)t.push(String.fromCharCode(...e.subarray(r,r+512)));return btoa(t.join(""))}function B(e){let t=atob(e),r=new Uint8Array(t.length);for(let i=0;i<t.length;i+=1)r[i]=t.charCodeAt(i);return r}function b(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}async function f(e,t){return await e.get(t)!==null}async function*c(e,t,r){for await(let[i]of e.scan(t,r))yield i}async function m(e,t){let r=0;for await(let i of c(e,t))r++;return r}async function y(e,t){let r=[];for await(let i of c(e,t))r.push({type:"delete",key:i});if(r.length===0)return 0;return await e.batch(r),r.length}async function h(e,t,r){let i=[];for await(let o of c(e,t,r))i.push({type:"delete",key:o});if(i.length===0)return 0;return await e.batch(i),i.length}function P(e,t,r){if(!e.capabilities()[t])throw Error(`Feature "${r}" requires storage capability "${t}", but this storage backend does not provide it.`)}function n(e){return encodeURIComponent(e)}function a(e){return String(e).padStart(16,"0")}var k={catalogEntry:(e,t)=>`catalog-entry:${n(e)}:${n(t)}`,catalogEntryPrefix:(e)=>`catalog-entry:${n(e)}:`,catalogActive:(e)=>`catalog-active:${n(e)}`,catalogTombstone:(e,t)=>`catalog-tombstone:${n(e)}:${n(t)}`,catalogTombstonePrefix:()=>"catalog-tombstone:"};var T={workflowGeneration:(e)=>`wf-gen:${n(e)}`};var _={livenessPrefix:()=>"liveness:",liveness:(e)=>`liveness:${n(e)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder"};var D={applicationMailbox:(e,t)=>`appmbx:v1:${n(e)}:${n(t)}`,applicationMailboxSinkProbe:(e,t,r)=>`appprobe:v1:${n(e)}:${n(t)}:${n(r)}`,applicationCommandPrefix:(e,t)=>`appcmd:v1:${n(e)}:${n(t)}:`,applicationCommand:(e,t,r)=>`appcmd:v1:${n(e)}:${n(t)}:${n(r)}`,applicationCommandReadyPrefix:(e,t)=>`appready:v1:${n(e)}:${n(t)}:`,applicationCommandReady:(e,t,r)=>`appready:v1:${n(e)}:${n(t)}:${a(r)}`,applicationCommandIdempotency:(e,t,r)=>`appidem:v1:${n(e)}:${n(t)}:${n(r)}`,applicationCommandBySequencePrefix:(e,t)=>`appseq:v1:${n(e)}:${n(t)}:`,applicationCommandBySequence:(e,t,r)=>`appseq:v1:${n(e)}:${n(t)}:${a(r)}`,applicationCommandTerminalPrefix:(e,t)=>`appterm:v1:${n(e)}:${n(t)}:`,applicationCommandTerminal:(e,t,r,i)=>`appterm:v1:${n(e)}:${n(t)}:${a(r)}:${n(i)}`};var A={applicationOutbox:(e,t)=>`appobx:v1:${n(e)}:${n(t)}`,applicationOutboxSinkProbe:(e,t,r)=>`appprobe:v1:outbox:${n(e)}:${n(t)}:${n(r)}`,applicationDeliveryPrefix:(e,t)=>`appdlv:v1:${n(e)}:${n(t)}:`,applicationDelivery:(e,t,r)=>`appdlv:v1:${n(e)}:${n(t)}:${n(r)}`,applicationDeliveryDuePrefix:(e,t)=>`appdue:v1:${n(e)}:${n(t)}:`,applicationDeliveryDue:(e,t,r,i)=>`appdue:v1:${n(e)}:${n(t)}:${a(r)}:${n(i)}`,applicationDeliveryIdempotency:(e,t,r)=>`appdidem:v1:${n(e)}:${n(t)}:${n(r)}`,applicationDeliveryBySequencePrefix:(e,t)=>`appdseq:v1:${n(e)}:${n(t)}:`,applicationDeliveryBySequence:(e,t,r)=>`appdseq:v1:${n(e)}:${n(t)}:${a(r)}`,applicationDeliveryTerminalPrefix:(e,t)=>`appdterm:v1:${n(e)}:${n(t)}:`,applicationDeliveryTerminal:(e,t,r,i)=>`appdterm:v1:${n(e)}:${n(t)}:${a(r)}:${n(i)}`};var L={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${n(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${n(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var te="0",ne="1",K=(e,t,r,i)=>`sig:${n(e)}:${n(t)}:${i}:${n(r)}`,I={signal:(e,t,r)=>K(e,t,r,ne),startSignal:(e,t,r)=>K(e,t,r,te),signalSequence:(e)=>`sigseq:v1:${n(e)}`,signalAcceptedResponsePrefix:(e)=>`sigres:v1:${n(e)}:`,signalAcceptedResponse:(e,t,r)=>`sigres:v1:${n(e)}:${n(t)}:${n(r)}`};var U="default";var l=a,N={deadline:(e,t)=>`wf-deadline:${l(e)}:${n(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${l(e)}:${n(t)}`,teardownTimer:(e,t)=>`wf-teardown:${l(e)}:${n(t)}`,delayedStart:(e,t)=>`wf-delayed:${l(e)}:${n(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${l(e)}:${n(t)}`},W={budget:(e,t,r)=>`budget:${e}:${t}:${r}`,review:(e,t)=>`review:${n(e)}:${t}`,workflowHeaders:(e)=>`wf-headers:${n(e)}`,childCancellationPrefix:(e)=>`child-cancel:${n(e)}:`,childCancellation:(e,t)=>`child-cancel:${n(e)}:${n(t)}`,childWorkflowByParentPrefix:(e,t)=>`child-by-parent:${n(e)}:${t===void 0?"":`${n(t)}:`}`,childWorkflowByParent:(e,t,r)=>`child-by-parent:${n(e)}:${t===void 0?"":`${n(t)}:`}${n(r)}`,terminalCleanupNeeded:(e)=>`wf-cleanup-needed:${n(e)}`,workflowConcurrency:(e,t)=>`wf-concurrency:${n(e)}:${n(t)}`,workflowConcurrencyHolder:(e)=>`wf-concurrency-holder:${n(e)}`,workflowHasServices:(e)=>`wf-has-services:${n(e)}`,finalizerState:(e)=>`wf-finalizer-state:${n(e)}`,teardownOwed:(e)=>`wf-teardown-needed:${n(e)}`,teardownSucceeded:(e)=>`wf-teardown-succeeded:${n(e)}`,teardownDeadLetter:(e)=>`wf-teardown-deadletter:${n(e)}`,offload:(e,t)=>`offload:${n(e)}:${t}`,archive:(e,t)=>`archive:${n(e)}:${t}`,stateExecution:(e,t)=>`state:execution:${n(e)}:${n(t)}`,stateWorkflow:(e,t)=>`state:workflow-scope:${U}:${n(e)}:${n(t)}`,streamChunkPrefix:(e,t)=>`blob:${n(e)}:${t}:chunk:`,streamChunk:(e,t,r)=>`blob:${n(e)}:${t}:chunk:${String(r).padStart(10,"0")}`,streamTail:(e,t)=>`blob:${n(e)}:${t}:tail`,streamMetadata:(e,t)=>`blob:${n(e)}:${t}:meta`,budgetCharged:(e)=>`budget-charged:${e}`,toolEffect:(e,t,r)=>`tool-effect:${n(e)}:${t}:${r}`,workflowVisibilityStatus:(e,t)=>`wf-idx-status:${n(e)}:${n(t)}`,workflowVisibilityType:(e,t)=>`wf-idx-type:${n(e)}:${n(t)}`,workflowVisibilityCreated:(e,t)=>`wf-idx-created:${l(e)}:${n(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${l(e)}:${n(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${l(e)}:${n(t)}`,workflowVisibilityManifest:(e)=>`wf-idx-manifest:${n(e)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};var O=a,Y={workflow:(e)=>`wf:${n(e)}`,checkpoint:(e)=>`wf:${n(e)}:ckpt`,checkpointHistory:(e,t)=>`wf:${n(e)}:ckpt:${String(t).padStart(10,"0")}`,timelinePrefix:(e)=>`wf:${n(e)}:timeline:`,timeline:(e,t)=>`wf:${n(e)}:timeline:${String(t).padStart(10,"0")}`,schedule:(e)=>`schedule:${n(e)}`,scheduleTick:(e,t)=>`schedule-due:${String(e).padStart(16,"0")}:${n(t)}`,scheduleRun:(e)=>`schedule-run:${n(e)}`,scheduleRunLink:(e)=>`schedule-run-link:${n(e)}`,scheduleRunBySchedulePrefix:(e)=>`schedule-run-by-schedule:${n(e)}:`,scheduleRunBySchedule:(e,t)=>`schedule-run-by-schedule:${n(e)}:${n(t)}`,operation:(e,t,r)=>`op:${e}:${O(t)}:${r}`,operationInflight:(e)=>`op:inflight:${e}`,operationQueued:(e)=>`op:queued:${e}`,operationResolved:(e)=>`op:resolved:${e}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(e,t,r)=>`audit:bulk:${O(e)}:${n(t)}:${n(r)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(e,t)=>`op:resolved-by-time:${O(e)}:${n(t)}`,asyncActivity:(e,t)=>`async-act:v1:${n(e)}:${n(t)}`,asyncActivityResolution:(e,t)=>`async-act:v1:${n(e)}:${n(t)}:resolution`,activityReconciliationPrefix:(e)=>`actrec:v1:${n(e)}:`,activityReconciliation:(e,t,r)=>`actrec:v1:${n(e)}:${n(t)}:${r}`,eventPrefix:(e)=>`ev:${n(e)}:`,event:(e,t)=>`ev:${n(e)}:${String(t).padStart(10,"0")}`,eventHead:(e)=>`ev:${n(e)}:head`,eventWatermark:(e)=>`ev:${n(e)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(e)=>`fleet-event:${String(e).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventWatermark:()=>"fleet-event-watermark",fleetEventByWorkflowPrefix:(e)=>`fleet-event-by-workflow:${n(e)}:`,fleetEventByWorkflow:(e,t)=>`fleet-event-by-workflow:${n(e)}:${String(t).padStart(10,"0")}`},H={attribute:(e)=>`attr:${n(e)}`,attributeIndex:(e,t,r)=>`idx:${e}:${t}:${n(r)}`,tagIndex:(e,t)=>`tag:${n(e)}:${n(t)}`,updatePrefix:(e)=>`upd:${n(e)}:`,update:(e,t)=>`upd:${n(e)}:${t}`,updateResponse:(e)=>`upr:${e}`,updateIdempotency:(e,t)=>`upk:${n(e)}:${t}`,startIdempotency:(e)=>`start-idem:${n(e)}`,startIdempotencySignalId:(e)=>`start-idem:${e}`};var w=1e4;class F extends Error{code="StorageBatchOperationLimitExceededError";cap=w;count;target;constructor(e,t){super(`${e} count ${t} exceeds MAX_BATCH_OPERATIONS (${w}).`);this.name="StorageBatchOperationLimitExceededError",this.target=e,this.count=t}}function g(e,t){if(t>w)throw new F(e,t)}function z(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"ÿ"}function Xe(e,t={}){if(t.gt!==void 0&&e<=t.gt)return!1;if(t.gte!==void 0&&e<t.gte)return!1;if(t.lt!==void 0&&e>=t.lt)return!1;if(t.lte!==void 0&&e>t.lte)return!1;return!0}function je(e,t){if(e===null||t===null)return e===t;if(e.byteLength!==t.byteLength)return!1;for(let r=0;r<e.byteLength;r++)if(e[r]!==t[r])return!1;return!0}async function q(e,t){if(e.has)return e.has(t);return f(e,t)}function G(e,t,r){if(e.keys)return e.keys(t,r);return c(e,t,r)}async function M(e,t){if(e.count)return e.count(t);return m(e,t)}async function V(e,t){if(e.deletePrefix)return e.deletePrefix(t);return y(e,t)}async function X(e,t,r){if(g("conditionalBatch conditions",t.length),g("conditionalBatch operations",r.length),P(e,"conditionalBatch","storageConditionalBatch"),!e.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return e.conditionalBatch(t,r)}var Je={...Y,...I,...N,...H,..._,...D,...A,...L,...k,...T,...W};function re(e){if(e===void 0)return;if(typeof e!=="number"||!Number.isInteger(e)||e<0)throw Error("deleteRange limit must be a finite non-negative integer");return e===0?0:e}function d(e){let t={},r=!1;for(let o of["gt","gte","lt","lte"]){let s=e[o];if(s===void 0)continue;if(typeof s!=="string")throw Error("deleteRange bounds must be strings");t[o]=s,r=!0}if(!r)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let i=re(e.limit);if(i!==void 0)t.limit=i;return t}async function j(e,t,r){let i=d(r);if(e.deleteRange)return e.deleteRange(t,i);return h(e,t,i)}function ie(e,t){let r={key:e,open:!1};if(t.gte!==void 0&&t.gte>r.key)r.key=t.gte,r.open=!1;if(t.gt!==void 0&&t.gt>=r.key)r.key=t.gt,r.open=!0;return r}function oe(e,t){let r={key:z(e),open:!0};if(t.lt!==void 0&&t.lt<=r.key)r.key=t.lt,r.open=!0;if(t.lte!==void 0&&t.lte<r.key)r.key=t.lte,r.open=!1;return r}function tt(e,t){let r=ie(e,t),i=oe(e,t);if(r.key>i.key||r.key===i.key&&(r.open||i.open))return null;return{lower:r,upper:i}}function E(e){return e.replaceAll(/:+$/g,"")}function ae(e,t){let r=E(e),i=E(t);if(r.length===0)return i;if(i.length===0)return r;return`${r}:${i}`}class R{#e;#n;constructor(e,t){this.#e=e,this.#n=E(t)}#t(e){if(this.#n.length===0)return e;return e.length===0?`${this.#n}:`:`${this.#n}:${e}`}#i(e){return e.map((t)=>{if(t.type==="put")return{type:"put",key:this.#t(t.key),value:t.value};return{type:"delete",key:this.#t(t.key)}})}#o(e){if(this.#n.length===0)return e;return e.slice(this.#n.length+1)}#a(e){let t={};if(e.limit!==void 0)t.limit=e.limit;if(e.gt!==void 0)t.gt=this.#t(e.gt);if(e.gte!==void 0)t.gte=this.#t(e.gte);if(e.lt!==void 0)t.lt=this.#t(e.lt);if(e.lte!==void 0)t.lte=this.#t(e.lte);return t}#r(e={}){let t=this.#a(e);if(e.reverse!==void 0)t.reverse=e.reverse;return t}#s(e){return this.#a(e)}capabilities(){return this.#e.capabilities()}scoped(e){return new R(this.#e,ae(this.#n,e))}async get(e){return this.#e.get(this.#t(e))}async put(e,t){await this.#e.put(this.#t(e),t)}async delete(e){await this.#e.delete(this.#t(e))}async*scan(e,t){for await(let[r,i]of this.#e.scan(this.#t(e),this.#r(t)))yield[this.#o(r),i]}async batch(e){g("batch operations",e.length),await this.#e.batch(this.#i(e))}async conditionalBatch(e,t){return X(this.#e,e.map((r)=>({key:this.#t(r.key),expectedValue:r.expectedValue})),this.#i(t))}async has(e){return q(this.#e,this.#t(e))}async deletePrefix(e){return V(this.#e,this.#t(e))}async deleteRange(e,t){let r=this.#s(d(t));return j(this.#e,this.#t(e),r)}async*keys(e,t){for await(let r of G(this.#e,this.#t(e),this.#r(t)))yield this.#o(r)}async count(e){return M(this.#e,this.#t(e))}[Symbol.dispose](){this.#e[Symbol.dispose]()}}function J(e,t){return new R(e,t)}var se=67108864;function Z(e){if(e.type==="put")return{type:"put",key:e.key,value:S(e.value)};return{type:"delete",key:e.key}}function le(e){return{key:e.key,expectedValue:e.expectedValue===null?null:S(e.expectedValue)}}function ge(e){if(!b(e)||typeof e.key!=="string"||typeof e.value!=="string")throw Error("HTTPStorage scan response contained an invalid NDJSON entry.");return{key:e.key,value:e.value}}function ce(e){if(!b(e)||typeof e.applied!=="boolean")throw Error('HTTPStorage conditional batch response must include a boolean "applied" field.');return e.applied}function p(e,t,r){if(r!==void 0)e.searchParams.set(t,String(r))}function pe(e){if(e.trim().length===0)return null;let t=ge(JSON.parse(e));return[t.key,B(t.value)]}class de{#e;#n;#t;constructor(e){this.#e=e.baseUrl instanceof URL?e.baseUrl:new URL(e.baseUrl),this.#n={...e.headers},this.#t=e.remoteConditionalBatch??!1}capabilities(){return{persistence:"remote",readAfterWrite:"eventual",scanConsistency:"best-effort",atomicBatch:!0,conditionalBatch:this.#t,boundedRangeDelete:!1}}#i(e){let t=this.#e.href.endsWith("/")?this.#e.href:`${this.#e.href}/`;return new URL(e.replace(/^\/+/,""),t)}#o(e){return this.#i(`/v1/storage/${encodeURIComponent(e)}`)}#a(e,t){let r=this.#i("/v1/storage");return r.searchParams.set("prefix",e),p(r,"limit",t.limit),p(r,"reverse",t.reverse),p(r,"gt",t.gt),p(r,"gte",t.gte),p(r,"lt",t.lt),p(r,"lte",t.lte),r}async#r(e,t={},r=[]){let i=new Headers(this.#n);for(let[s,u]of new Headers(t.headers).entries())i.set(s,u);let o=await fetch(e,{...t,headers:i});if(!o.ok&&!r.includes(o.status))throw Error(`HTTPStorage request failed: ${t.method??"GET"} ${e.pathname} returned ${String(o.status)}.`);return o}async get(e){let t=await this.#r(this.#o(e),{method:"GET"},[404]);if(t.status===404)return null;return new Uint8Array(await t.arrayBuffer())}async put(e,t){await this.#r(this.#o(e),{method:"PUT",headers:{"content-type":"application/octet-stream"},body:new Blob([new Uint8Array(t)])})}async delete(e){await this.#r(this.#o(e),{method:"DELETE"})}async*scan(e,t={}){let r=await this.#r(this.#a(e,t),{method:"GET",headers:{accept:"application/x-ndjson"}});for await(let i of v(r,{maximumBytes:se,sizeLimitError:()=>Error("HTTPStorage scan response exceeded the maximum allowed size.")})){let o=pe(i);if(o!==null)yield o}}async batch(e){g("batch operations",e.length),await this.#r(this.#i("/v1/storage/-/batch"),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({operations:e.map(Z)})})}async conditionalBatch(e,t){g("conditionalBatch conditions",e.length),g("conditionalBatch operations",t.length);let r=await this.#r(this.#i("/v1/storage/-/conditional-batch"),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({conditions:e.map(le),operations:t.map(Z)})});return ce(await r.json())}has(e){return f(this,e)}async*keys(e,t){yield*c(this,e,t)}count(e){return m(this,e)}deletePrefix(e){return y(this,e)}deleteRange(e,t){return h(this,e,d(t))}scoped(e){return J(this,e)}[Symbol.dispose](){}}export{de as HTTPStorage};
package/dist/index.d.ts CHANGED
@@ -21,7 +21,7 @@ export type { WeftErrorCode } from './core/weft-error.ts';
21
21
  export { FAULT_CODE_TO_FAILURE_CATEGORY, failureCategoryForFaultCode, isFaultCode, } from './core/fault-code.ts';
22
22
  export type { FaultCode } from './core/fault-code.ts';
23
23
  export { DurableActivityScopeError, DurableActivityUnsupportedError, durableActivity, } from './core/context/durable-activity.ts';
24
- export { ActivityReconciliationCapabilityError, ActivityReconciliationConflictError, ActivityReconciliationIndeterminateError, ActivityResolutionError, AsyncActivityTokenNotFoundError, BulkDeleteRequiresTerminalWorkflowsError, BulkOperationConfirmationError, ENGINE_LEASE_LOST_WARNING_NAME, ENGINE_LEASE_SYNCHRONOUS_DISPOSE_WARNING_NAME, Engine, EngineCreateNameMismatchError, EngineDisposalError, EngineDisposedError, EngineLeaseAcquisitionTimeoutError, EngineLeaseCorruptedError, EngineLeaseNotHeldError, IdempotencyKeyPurgedError, PersistedDataCorruptError, PersistedDataIncompatibleError, ScheduleHandle, StartOrSignalConflictError, WorkflowAlreadyExistsError, WorkflowConcurrencyLimitExceededError, WorkflowHandle, WorkflowNotFoundError, WorkflowNotRegisteredError, WorkflowSuspendNotSupportedError, WorkflowTeardownPendingError, WorkflowTypeNotRegisteredForRecoveryError, } from './core/engine';
24
+ export { ActivityReconciliationCapabilityError, ActivityReconciliationConflictError, ActivityReconciliationIndeterminateError, ActivityResolutionError, AsyncActivityTokenNotFoundError, BulkDeleteRequiresTerminalWorkflowsError, BulkOperationConfirmationError, DynamicWorkflowSourceUnavailableError, ENGINE_LEASE_LOST_WARNING_NAME, ENGINE_LEASE_SYNCHRONOUS_DISPOSE_WARNING_NAME, Engine, EngineCreateNameMismatchError, EngineDisposalError, EngineDisposedError, EngineLeaseAcquisitionTimeoutError, EngineLeaseCorruptedError, EngineLeaseNotHeldError, IdempotencyKeyPurgedError, PersistedDataCorruptError, PersistedDataIncompatibleError, ScheduleHandle, StartOrSignalConflictError, WorkflowAlreadyExistsError, WorkflowConcurrencyLimitExceededError, WorkflowHandle, WorkflowNotFoundError, WorkflowNotRegisteredError, WorkflowRevisionUnavailableError, WorkflowSourceNotRegisteredError, WorkflowSuspendNotSupportedError, WorkflowTeardownPendingError, WorkflowTypeNotRegisteredForRecoveryError, } from './core/engine';
25
25
  export { OwnershipModeMismatchError, WORKFLOW_CLAIM_LOST_WARNING_NAME, WORKFLOW_WAKE_DISCARDED_WARNING_NAME, WeftWorkflowClaimLostWarning, WeftWorkflowWakeDiscardedWarning, WorkflowClaimUnavailableError, } from './core/engine';
26
26
  export type { ActivateWorkflowRevisionOptions, EngineCreateOptions, EngineLeaseHealth, EngineStateNamespace, EngineWorkflowsNamespace, LeaseLostReason, RecoverAllOptions, RecoveredWorkflowInfo, RegistryAgnosticEngine, ResolveWorkflowSourceOptions, WorkflowWakeKind, } from './core/engine';
27
27
  export { WorkflowCatalogConflictError, WorkflowRevisionNotInstalledError, } from './core/catalog/index.ts';
@@ -31,10 +31,10 @@ export type { WorkflowSourceDescriptor, WorkflowSourceDescriptorInput, WorkflowS
31
31
  export { getWorkflowRevisionDiagnostics, removeWorkflowRevision } from './core/engine';
32
32
  export type { WorkflowCatalogRemovalResult, WorkflowRevisionDiagnostics, WorkflowRevisionReferenceCounts, } from './core/engine';
33
33
  export { DEFAULT_CHECKPOINT_SIZE_WARNING_THRESHOLD, DEFAULT_MAX_NESTING_DEPTH, DEFAULT_POLL_INTERVAL_MS, DEFAULT_RETRY_POLICY, DEFAULT_VISIBILITY_TIMEOUT_MS, HISTORY_CIRCUIT_BREAKER_REASON, WorkflowBuilderError, query, schedule, signal, update, workflow, } from './core/types';
34
- export type { ActivityArgsFor, ActivityCallOptions, ActivityCallable, ActivityContext, ActivityDefinition, ActivityEntryInput, ActivityFunction, ActivityMap, ActivityMapInput, ActivityObjectInput, ActivityResultFor, ActivityVerificationContext, ActivityVerificationPhase, ActivityVerificationResult, AnyActivityDefinition, AnyWorkflowDefinition, ArchiveAdapter, BuilderState, BuiltWorkflowDefinition, BulkCancelResult, BulkDeleteResult, BulkOperationAction, BulkOperationAuditEvent, BulkOperationCommitOptions, BulkOperationDryRunOptions, BulkOperationDryRunResult, BulkOperationError, BulkOperationFilterSummary, BulkOperationOptions, BulkOperationPrincipal, BulkOperationScopeSummary, BulkRetryFailedResult, BulkSignalAllCommitOptions, BulkSignalAllDryRunOptions, BulkSignalAllOptions, BulkSignalResult, BulkTagResult, Checkpoint, CheckpointState, CheckpointSummary, CompletedReviewEntry, CoordinatedUpdateResult, DefinitionSchema, Duration, EngineOptions, FailureCategory, ForkLineage, ForkOptions, HistoryPolicy, InferActivityEntries, InferActivityEntry, InferWorkflowEntries, InferWorkflowEntry, InitialBuilderState, LaunchMetadata, ListFilter, ListOptions, MarkBuilderState, NormalizeActivities, NormalizedActivityEntry, NormalizedRetentionPolicy, PaginatedResult, PayloadSizePolicy, PendingAsyncActivityInfo, PendingAsyncActivityListOptions, PendingAsyncActivityPage, PendingReviewEntry, PurgeResult, QueryDefinition, QueryMap, QueryShape, RegisteredWorkflowDefinition, RestartLineage, RetentionOverview, RetentionPolicy, RetryPolicy, ReviewDecision, ReviewListEntry, ReviewListFilter, ReviewStatus, ScheduleDefinition, ScheduleFilter, ScheduleOptions, ScheduleOverlapPolicy, ScheduleQueuedRun, ScheduleSpec, ScheduleState, ScheduleStatus, ScheduleSummary, ScheduleUpdateOptions, SearchAttributeDefinition, SearchAttributeHandle, SearchAttributeSchema, SearchAttributeValue, Serializer, SignalDefinition, SignalDeliveryOptions, SignalMap, SignalPayload, StartOptions, StartOrSignalOptions, StartOrSignalSignal, SubmitReviewOptions, TerminationReason, UpdateDefinition, UpdateMap, UpdatePayload, WorkerReplayOperationFailure, WorkerReplayOperationSignature, WorkflowAlreadyRegistered, WorkflowAtomicState, WorkflowAtomicStateOptions, WorkflowBuilder, WorkflowBuilderOptions, WorkflowConcurrencyOptions, WorkflowContext, WorkflowDefinition, WorkflowEvent, WorkflowFinalizerStatus, WorkflowFunction, WorkflowGenerator, WorkflowId, WorkflowKeyedRaceResult, WorkflowLogLevel, WorkflowLogRecord, WorkflowLogger, WorkflowRegistry, WorkflowReplay, WorkflowScheduleProvenance, WorkflowServicesResolution, WorkflowServicesResolverInfo, WorkflowServicesResolverLaunchOptions, WorkflowServicesResolverScheduleInfo, WorkflowSessionState, WorkflowSnapshot, WorkflowState, WorkflowStateNamespace, WorkflowStatus, WorkflowSummary, WorkflowTimelineEntry, WorkflowTimelineOperationDetail, WorkflowTimelineStatus, WorkflowTypeRetentionPolicy, } from './core/types';
34
+ export type { ActivityArgsFor, ActivityCallOptions, ActivityCallable, ActivityContext, ActivityDefinition, ActivityEntryInput, ActivityFunction, ActivityMap, ActivityMapInput, ActivityObjectInput, ActivityResultFor, ActivityVerificationContext, ActivityVerificationPhase, ActivityVerificationResult, AnyActivityDefinition, AnyWorkflowDefinition, ArchiveAdapter, BuilderState, BuiltWorkflowDefinition, BulkCancelResult, BulkDeleteResult, BulkOperationAction, BulkOperationAuditEvent, BulkOperationCommitOptions, BulkOperationDryRunOptions, BulkOperationDryRunResult, BulkOperationError, BulkOperationFilterSummary, BulkOperationOptions, BulkOperationPrincipal, BulkOperationScopeSummary, BulkRetryFailedResult, BulkSignalAllCommitOptions, BulkSignalAllDryRunOptions, BulkSignalAllOptions, BulkSignalResult, BulkTagResult, Checkpoint, CheckpointState, CheckpointSummary, CompletedReviewEntry, CoordinatedUpdateResult, DefinitionSchema, Duration, EngineOptions, FailureCategory, ForkLineage, ForkOptions, HistoryPolicy, InferActivityEntries, InferActivityEntry, InferWorkflowEntries, InferWorkflowEntry, InitialBuilderState, LaunchMetadata, ListFilter, ListOptions, MarkBuilderState, NormalizeActivities, NormalizedActivityEntry, NormalizedRetentionPolicy, PaginatedResult, PayloadSizePolicy, PendingAsyncActivityInfo, PendingAsyncActivityListOptions, PendingAsyncActivityPage, PendingReviewEntry, PurgeResult, QueryDefinition, QueryMap, QueryShape, RegisteredWorkflowDefinition, RestartLineage, RetentionOverview, RetentionPolicy, RetryPolicy, ReviewDecision, ReviewListEntry, ReviewListFilter, ReviewStatus, ScheduleDefinition, ScheduleFilter, ScheduleOptions, ScheduleOverlapPolicy, ScheduleQueuedRun, ScheduleRevisionPolicy, ScheduleSpec, ScheduleState, ScheduleStatus, ScheduleSummary, ScheduleUpdateOptions, SearchAttributeDefinition, SearchAttributeHandle, SearchAttributeSchema, SearchAttributeValue, Serializer, SignalDefinition, SignalDeliveryOptions, SignalMap, SignalPayload, StartOptions, StartOrSignalOptions, StartOrSignalSignal, SubmitReviewOptions, TerminationReason, UpdateDefinition, UpdateMap, UpdatePayload, WorkerReplayOperationFailure, WorkerReplayOperationSignature, WorkflowAlreadyRegistered, WorkflowAtomicState, WorkflowAtomicStateOptions, WorkflowBuilder, WorkflowBuilderOptions, WorkflowConcurrencyOptions, WorkflowContext, WorkflowDefinition, WorkflowEvent, WorkflowFinalizerStatus, WorkflowFunction, WorkflowGenerator, WorkflowId, WorkflowKeyedRaceResult, WorkflowLogLevel, WorkflowLogRecord, WorkflowLogger, WorkflowRegistry, WorkflowReplay, WorkflowScheduleProvenance, WorkflowServicesResolution, WorkflowServicesResolverInfo, WorkflowServicesResolverLaunchOptions, WorkflowServicesResolverScheduleInfo, WorkflowSessionState, WorkflowSnapshot, WorkflowState, WorkflowStateNamespace, WorkflowStatus, WorkflowSummary, WorkflowTimelineEntry, WorkflowTimelineOperationDetail, WorkflowTimelineStatus, WorkflowTypeRetentionPolicy, } from './core/types';
35
35
  export { AlertManager } from './alerting/index';
36
36
  export type { AlertAction, AlertMetric, AlertRule, AlertStateSnapshot, AlertStatus, AlertingOptions, WebhookTarget, } from './alerting/types';
37
- export { ActivityAsyncPendingEvent, ActivityCompletedEvent, ActivityFailedEvent, ActivityStartedEvent, AlertFiredEvent, AlertResolvedEvent, AttributesChangedEvent, CheckpointSizeWarningEvent, ConstraintViolatedEvent, DevelopmentWarningEvent, ScheduleFiredEvent, ScheduleMissedFireEvent, SignalDeliveredEvent, SignalReceivedEvent, StorageSizeReportedEvent, TaskResultDeadLetteredEvent, UpdateCompletedEvent, UpdateReceivedEvent, WorkflowCancelledEvent, WorkflowCompletedEvent, WorkflowDefinitionRegisteredEvent, WorkflowFailedEvent, WorkflowRecoverySkippedEvent, WorkflowResumedEvent, WorkflowRevisionActivatedEvent, WorkflowRevisionActivationRejectedEvent, WorkflowRevisionDrainingEvent, WorkflowRevisionInstalledEvent, WorkflowRevisionRemovedEvent, WorkflowStartedEvent, WorkflowSuspendedEvent, WorkflowTeardownEvent, WorkflowTimedOutEvent, } from './core/events';
37
+ export { ActivityAsyncPendingEvent, ActivityCompletedEvent, ActivityFailedEvent, ActivityStartedEvent, AlertFiredEvent, AlertResolvedEvent, AttributesChangedEvent, CheckpointSizeWarningEvent, ConstraintViolatedEvent, DevelopmentWarningEvent, ScheduleFiredEvent, ScheduleMissedFireEvent, SignalDeliveredEvent, SignalReceivedEvent, StorageSizeReportedEvent, TaskResultDeadLetteredEvent, UpdateCompletedEvent, UpdateReceivedEvent, WorkflowCancelledEvent, WorkflowCompletedEvent, WorkflowDefinitionRegisteredEvent, WorkflowFailedEvent, WorkflowRecoverySkippedEvent, WorkflowResumedEvent, WorkflowRevisionActivatedEvent, WorkflowRevisionActivationRejectedEvent, WorkflowRevisionDrainingEvent, WorkflowRevisionInstalledEvent, WorkflowRevisionRemovedEvent, WorkflowSourceLoadCancelledEvent, WorkflowSourceLoadFailedEvent, WorkflowSourceLoadReadyEvent, WorkflowSourceLoadStartedEvent, WorkflowStartedEvent, WorkflowSuspendedEvent, WorkflowTeardownEvent, WorkflowTimedOutEvent, } from './core/events';
38
38
  export type { TypedEventTarget, WeftEventMap, WorkflowRecoverySkippedReason, WorkflowTeardownStatus, } from './core/events';
39
39
  export { detectRuntime, detectRuntimeVersion, hashBytes, hashString, sleep, } from './runtime/portable';
40
40
  export type { RuntimeKind } from './runtime/portable';
package/dist/index.js CHANGED
@@ -24,6 +24,7 @@ export {
24
24
  AsyncActivityTokenNotFoundError,
25
25
  BulkDeleteRequiresTerminalWorkflowsError,
26
26
  BulkOperationConfirmationError,
27
+ DynamicWorkflowSourceUnavailableError,
27
28
  ENGINE_LEASE_LOST_WARNING_NAME,
28
29
  ENGINE_LEASE_SYNCHRONOUS_DISPOSE_WARNING_NAME,
29
30
  Engine,
@@ -43,6 +44,8 @@ export {
43
44
  WorkflowHandle,
44
45
  WorkflowNotFoundError,
45
46
  WorkflowNotRegisteredError,
47
+ WorkflowRevisionUnavailableError,
48
+ WorkflowSourceNotRegisteredError,
46
49
  WorkflowSuspendNotSupportedError,
47
50
  WorkflowTeardownPendingError,
48
51
  WorkflowTypeNotRegisteredForRecoveryError
@@ -106,6 +109,10 @@ export {
106
109
  WorkflowRevisionDrainingEvent,
107
110
  WorkflowRevisionInstalledEvent,
108
111
  WorkflowRevisionRemovedEvent,
112
+ WorkflowSourceLoadCancelledEvent,
113
+ WorkflowSourceLoadFailedEvent,
114
+ WorkflowSourceLoadReadyEvent,
115
+ WorkflowSourceLoadStartedEvent,
109
116
  WorkflowStartedEvent,
110
117
  WorkflowSuspendedEvent,
111
118
  WorkflowTeardownEvent,
package/dist/indexeddb.js CHANGED
@@ -1 +1 @@
1
- async function I(e,t){return await e.get(t)!==null}async function*C(e,t,r){for await(let[i]of e.scan(t,r))yield i}async function A(e,t){let r=0;for await(let i of C(e,t))r++;return r}async function E(e,t){let r=[];for await(let i of C(e,t))r.push({type:"delete",key:i});if(r.length===0)return 0;return await e.batch(r),r.length}async function T(e,t,r){let i=[];for await(let o of C(e,t,r))i.push({type:"delete",key:o});if(i.length===0)return 0;return await e.batch(i),i.length}function K(e,t,r){if(!e.capabilities()[t])throw Error(`Feature "${r}" requires storage capability "${t}", but this storage backend does not provide it.`)}function n(e){return encodeURIComponent(e)}function y(e){return String(e).padStart(16,"0")}var _={catalogEntry:(e,t)=>`catalog-entry:${n(e)}:${n(t)}`,catalogEntryPrefix:(e)=>`catalog-entry:${n(e)}:`,catalogActive:(e)=>`catalog-active:${n(e)}`};var L="default";var z={applicationMailbox:(e,t)=>`appmbx:v1:${n(e)}:${n(t)}`,applicationMailboxSinkProbe:(e,t,r)=>`appprobe:v1:${n(e)}:${n(t)}:${n(r)}`,applicationCommandPrefix:(e,t)=>`appcmd:v1:${n(e)}:${n(t)}:`,applicationCommand:(e,t,r)=>`appcmd:v1:${n(e)}:${n(t)}:${n(r)}`,applicationCommandReadyPrefix:(e,t)=>`appready:v1:${n(e)}:${n(t)}:`,applicationCommandReady:(e,t,r)=>`appready:v1:${n(e)}:${n(t)}:${y(r)}`,applicationCommandIdempotency:(e,t,r)=>`appidem:v1:${n(e)}:${n(t)}:${n(r)}`,applicationCommandBySequencePrefix:(e,t)=>`appseq:v1:${n(e)}:${n(t)}:`,applicationCommandBySequence:(e,t,r)=>`appseq:v1:${n(e)}:${n(t)}:${y(r)}`,applicationCommandTerminalPrefix:(e,t)=>`appterm:v1:${n(e)}:${n(t)}:`,applicationCommandTerminal:(e,t,r,i)=>`appterm:v1:${n(e)}:${n(t)}:${y(r)}:${n(i)}`};var U={applicationOutbox:(e,t)=>`appobx:v1:${n(e)}:${n(t)}`,applicationOutboxSinkProbe:(e,t,r)=>`appprobe:v1:outbox:${n(e)}:${n(t)}:${n(r)}`,applicationDeliveryPrefix:(e,t)=>`appdlv:v1:${n(e)}:${n(t)}:`,applicationDelivery:(e,t,r)=>`appdlv:v1:${n(e)}:${n(t)}:${n(r)}`,applicationDeliveryDuePrefix:(e,t)=>`appdue:v1:${n(e)}:${n(t)}:`,applicationDeliveryDue:(e,t,r,i)=>`appdue:v1:${n(e)}:${n(t)}:${y(r)}:${n(i)}`,applicationDeliveryIdempotency:(e,t,r)=>`appdidem:v1:${n(e)}:${n(t)}:${n(r)}`,applicationDeliveryBySequencePrefix:(e,t)=>`appdseq:v1:${n(e)}:${n(t)}:`,applicationDeliveryBySequence:(e,t,r)=>`appdseq:v1:${n(e)}:${n(t)}:${y(r)}`,applicationDeliveryTerminalPrefix:(e,t)=>`appdterm:v1:${n(e)}:${n(t)}:`,applicationDeliveryTerminal:(e,t,r,i)=>`appdterm:v1:${n(e)}:${n(t)}:${y(r)}:${n(i)}`};var q={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${n(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${n(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var O=1e4;class M extends Error{code="StorageBatchOperationLimitExceededError";cap=O;count;target;constructor(e,t){super(`${e} count ${t} exceeds MAX_BATCH_OPERATIONS (${O}).`);this.name="StorageBatchOperationLimitExceededError",this.target=e,this.count=t}}function h(e,t){if(t>O)throw new M(e,t)}function w(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"ÿ"}function W(e,t={}){if(t.gt!==void 0&&e<=t.gt)return!1;if(t.gte!==void 0&&e<t.gte)return!1;if(t.lt!==void 0&&e>=t.lt)return!1;if(t.lte!==void 0&&e>t.lte)return!1;return!0}function N(e,t){if(e===null||t===null)return e===t;if(e.byteLength!==t.byteLength)return!1;for(let r=0;r<e.byteLength;r++)if(e[r]!==t[r])return!1;return!0}async function j(e,t){if(e.has)return e.has(t);return I(e,t)}function H(e,t,r){if(e.keys)return e.keys(t,r);return C(e,t,r)}async function F(e,t){if(e.count)return e.count(t);return A(e,t)}async function Y(e,t){if(e.deletePrefix)return e.deletePrefix(t);return E(e,t)}async function X(e,t,r){if(h("conditionalBatch conditions",t.length),h("conditionalBatch operations",r.length),K(e,"conditionalBatch","storageConditionalBatch"),!e.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return e.conditionalBatch(t,r)}var f=y,te="0",ne="1",V=(e,t,r,i)=>`sig:${n(e)}:${n(t)}:${i}:${n(r)}`,ke={workflow:(e)=>`wf:${n(e)}`,checkpoint:(e)=>`wf:${n(e)}:ckpt`,checkpointHistory:(e,t)=>`wf:${n(e)}:ckpt:${String(t).padStart(10,"0")}`,timelinePrefix:(e)=>`wf:${n(e)}:timeline:`,timeline:(e,t)=>`wf:${n(e)}:timeline:${String(t).padStart(10,"0")}`,schedule:(e)=>`schedule:${n(e)}`,scheduleTick:(e,t)=>`schedule-due:${String(e).padStart(16,"0")}:${n(t)}`,scheduleRun:(e)=>`schedule-run:${n(e)}`,scheduleRunLink:(e)=>`schedule-run-link:${n(e)}`,scheduleRunBySchedulePrefix:(e)=>`schedule-run-by-schedule:${n(e)}:`,scheduleRunBySchedule:(e,t)=>`schedule-run-by-schedule:${n(e)}:${n(t)}`,operation:(e,t,r)=>`op:${e}:${f(t)}:${r}`,operationInflight:(e)=>`op:inflight:${e}`,operationQueued:(e)=>`op:queued:${e}`,operationResolved:(e)=>`op:resolved:${e}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(e,t,r)=>`audit:bulk:${f(e)}:${n(t)}:${n(r)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(e,t)=>`op:resolved-by-time:${f(e)}:${n(t)}`,asyncActivity:(e,t)=>`async-act:v1:${n(e)}:${n(t)}`,asyncActivityResolution:(e,t)=>`async-act:v1:${n(e)}:${n(t)}:resolution`,activityReconciliationPrefix:(e)=>`actrec:v1:${n(e)}:`,activityReconciliation:(e,t,r)=>`actrec:v1:${n(e)}:${n(t)}:${r}`,eventPrefix:(e)=>`ev:${n(e)}:`,event:(e,t)=>`ev:${n(e)}:${String(t).padStart(10,"0")}`,eventHead:(e)=>`ev:${n(e)}:head`,eventWatermark:(e)=>`ev:${n(e)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(e)=>`fleet-event:${String(e).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventWatermark:()=>"fleet-event-watermark",fleetEventByWorkflowPrefix:(e)=>`fleet-event-by-workflow:${n(e)}:`,fleetEventByWorkflow:(e,t)=>`fleet-event-by-workflow:${n(e)}:${String(t).padStart(10,"0")}`,signal:(e,t,r)=>V(e,t,r,ne),startSignal:(e,t,r)=>V(e,t,r,te),signalSequence:(e)=>`sigseq:v1:${n(e)}`,signalAcceptedResponsePrefix:(e)=>`sigres:v1:${n(e)}:`,signalAcceptedResponse:(e,t,r)=>`sigres:v1:${n(e)}:${n(t)}:${n(r)}`,deadline:(e,t)=>`wf-deadline:${f(e)}:${n(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${f(e)}:${n(t)}`,teardownTimer:(e,t)=>`wf-teardown:${f(e)}:${n(t)}`,delayedStart:(e,t)=>`wf-delayed:${f(e)}:${n(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${f(e)}:${n(t)}`,attribute:(e)=>`attr:${n(e)}`,attributeIndex:(e,t,r)=>`idx:${e}:${t}:${n(r)}`,tagIndex:(e,t)=>`tag:${n(e)}:${n(t)}`,updatePrefix:(e)=>`upd:${n(e)}:`,update:(e,t)=>`upd:${n(e)}:${t}`,updateResponse:(e)=>`upr:${e}`,updateIdempotency:(e,t)=>`upk:${n(e)}:${t}`,startIdempotency:(e)=>`start-idem:${n(e)}`,startIdempotencySignalId:(e)=>`start-idem:${e}`,livenessPrefix:()=>"liveness:",liveness:(e)=>`liveness:${n(e)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",...z,...U,...q,..._,budget:(e,t,r)=>`budget:${e}:${t}:${r}`,review:(e,t)=>`review:${n(e)}:${t}`,workflowHeaders:(e)=>`wf-headers:${n(e)}`,childCancellationPrefix:(e)=>`child-cancel:${n(e)}:`,childCancellation:(e,t)=>`child-cancel:${n(e)}:${n(t)}`,childWorkflowByParentPrefix:(e,t)=>`child-by-parent:${n(e)}:${t===void 0?"":`${n(t)}:`}`,childWorkflowByParent:(e,t,r)=>`child-by-parent:${n(e)}:${t===void 0?"":`${n(t)}:`}${n(r)}`,terminalCleanupNeeded:(e)=>`wf-cleanup-needed:${n(e)}`,workflowConcurrency:(e,t)=>`wf-concurrency:${n(e)}:${n(t)}`,workflowConcurrencyHolder:(e)=>`wf-concurrency-holder:${n(e)}`,workflowHasServices:(e)=>`wf-has-services:${n(e)}`,finalizerState:(e)=>`wf-finalizer-state:${n(e)}`,teardownOwed:(e)=>`wf-teardown-needed:${n(e)}`,teardownSucceeded:(e)=>`wf-teardown-succeeded:${n(e)}`,teardownDeadLetter:(e)=>`wf-teardown-deadletter:${n(e)}`,offload:(e,t)=>`offload:${n(e)}:${t}`,archive:(e,t)=>`archive:${n(e)}:${t}`,stateExecution:(e,t)=>`state:execution:${n(e)}:${n(t)}`,stateWorkflow:(e,t)=>`state:workflow-scope:${L}:${n(e)}:${n(t)}`,streamChunkPrefix:(e,t)=>`blob:${n(e)}:${t}:chunk:`,streamChunk:(e,t,r)=>`blob:${n(e)}:${t}:chunk:${String(r).padStart(10,"0")}`,streamTail:(e,t)=>`blob:${n(e)}:${t}:tail`,streamMetadata:(e,t)=>`blob:${n(e)}:${t}:meta`,budgetCharged:(e)=>`budget-charged:${e}`,toolEffect:(e,t,r)=>`tool-effect:${n(e)}:${t}:${r}`,workflowVisibilityStatus:(e,t)=>`wf-idx-status:${n(e)}:${n(t)}`,workflowVisibilityType:(e,t)=>`wf-idx-type:${n(e)}:${n(t)}`,workflowVisibilityCreated:(e,t)=>`wf-idx-created:${f(e)}:${n(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${f(e)}:${n(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${f(e)}:${n(t)}`,workflowVisibilityManifest:(e)=>`wf-idx-manifest:${n(e)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function re(e){if(e===void 0)return;if(typeof e!=="number"||!Number.isInteger(e)||e<0)throw Error("deleteRange limit must be a finite non-negative integer");return e===0?0:e}function D(e){let t={},r=!1;for(let o of["gt","gte","lt","lte"]){let a=e[o];if(a===void 0)continue;if(typeof a!=="string")throw Error("deleteRange bounds must be strings");t[o]=a,r=!0}if(!r)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let i=re(e.limit);if(i!==void 0)t.limit=i;return t}async function G(e,t,r){let i=D(r);if(e.deleteRange)return e.deleteRange(t,i);return T(e,t,i)}function ie(e,t){let r={key:e,open:!1};if(t.gte!==void 0&&t.gte>r.key)r.key=t.gte,r.open=!1;if(t.gt!==void 0&&t.gt>=r.key)r.key=t.gt,r.open=!0;return r}function oe(e,t){let r={key:w(e),open:!0};if(t.lt!==void 0&&t.lt<=r.key)r.key=t.lt,r.open=!0;if(t.lte!==void 0&&t.lte<r.key)r.key=t.lte,r.open=!1;return r}function Q(e,t){let r=ie(e,t),i=oe(e,t);if(r.key>i.key||r.key===i.key&&(r.open||i.open))return null;return{lower:r,upper:i}}function P(e){return e.replaceAll(/:+$/g,"")}function ae(e,t){let r=P(e),i=P(t);if(r.length===0)return i;if(i.length===0)return r;return`${r}:${i}`}class k{#t;#n;constructor(e,t){this.#t=e,this.#n=P(t)}#e(e){if(this.#n.length===0)return e;return e.length===0?`${this.#n}:`:`${this.#n}:${e}`}#r(e){return e.map((t)=>{if(t.type==="put")return{type:"put",key:this.#e(t.key),value:t.value};return{type:"delete",key:this.#e(t.key)}})}#i(e){if(this.#n.length===0)return e;return e.slice(this.#n.length+1)}#o(e){let t={};if(e.limit!==void 0)t.limit=e.limit;if(e.gt!==void 0)t.gt=this.#e(e.gt);if(e.gte!==void 0)t.gte=this.#e(e.gte);if(e.lt!==void 0)t.lt=this.#e(e.lt);if(e.lte!==void 0)t.lte=this.#e(e.lte);return t}#a(e={}){let t=this.#o(e);if(e.reverse!==void 0)t.reverse=e.reverse;return t}#s(e){return this.#o(e)}capabilities(){return this.#t.capabilities()}scoped(e){return new k(this.#t,ae(this.#n,e))}async get(e){return this.#t.get(this.#e(e))}async put(e,t){await this.#t.put(this.#e(e),t)}async delete(e){await this.#t.delete(this.#e(e))}async*scan(e,t){for await(let[r,i]of this.#t.scan(this.#e(e),this.#a(t)))yield[this.#i(r),i]}async batch(e){h("batch operations",e.length),await this.#t.batch(this.#r(e))}async conditionalBatch(e,t){return X(this.#t,e.map((r)=>({key:this.#e(r.key),expectedValue:r.expectedValue})),this.#r(t))}async has(e){return j(this.#t,this.#e(e))}async deletePrefix(e){return Y(this.#t,this.#e(e))}async deleteRange(e,t){let r=this.#s(D(t));return G(this.#t,this.#e(e),r)}async*keys(e,t){for await(let r of H(this.#t,this.#e(e),this.#a(t)))yield this.#i(r)}async count(e){return F(this.#t,this.#e(e))}[Symbol.dispose](){this.#t[Symbol.dispose]()}}function J(e,t){return new k(e,t)}var l="kv";function se(e=globalThis){let{indexedDB:t,IDBKeyRange:r}=e;if(t===void 0||r===void 0)throw Error("IndexedDBStorage requires both indexedDB and IDBKeyRange runtime globals.");return{indexedDB:t,IDBKeyRange:r}}function x(e){return new Promise((t,r)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>r(e.error)})}function le(e,t){let r=null,i=null,o=null,a=(s,c)=>{let u=s??Error(c);if(i){let d=i;r=null,i=null,d(u);return}o=u};return e.onsuccess=()=>{if(!r)return;let s=r;r=null,i=null,s(e.result)},e.onerror=()=>{a(e.error,"IndexedDB cursor request failed.")},t.onerror=()=>{a(t.error,"IndexedDB transaction failed.")},t.onabort=()=>{a(t.error,"IndexedDB transaction aborted.")},()=>new Promise((s,c)=>{if(o){let u=o;o=null,c(u);return}if(r=s,i=c,e.readyState==="done"){let u=r;r=null,i=null,u?.(e.result)}})}async function*Z(e,t,r,i,o,a){let{limit:s,reverse:c}=i,u=w(r),d=t.bound(r,u,!1,!0),b=c?"prev":"next",p=e.transaction(l,"readonly"),g=p.objectStore(l),m=o(g,d,b),S=le(m,p),v=0,R=!1;try{let B=await S();while(B){if(s!==void 0&&v>=s)break;let ee=B.key;if(W(ee,i))yield a(B),v++;B.continue(),B=await S()}R=!0}finally{if(!R)try{p.abort()}catch{}}}class ce{#t;#n=null;#e;#r;constructor(e="weft",t=se()){this.#t=e,this.#r=t,this.#e=this.#i()}capabilities(){return{persistence:"local",readAfterWrite:"linearizable",scanConsistency:"best-effort",atomicBatch:!0,conditionalBatch:!0,boundedRangeDelete:!0}}#i(){let e=this.#r.indexedDB.open(this.#t,1);return e.onupgradeneeded=()=>{let t=e.result;if(!t.objectStoreNames.contains(l))t.createObjectStore(l)},x(e).then((t)=>(this.#n=t,t))}async get(e){let i=(await this.#e).transaction(l,"readonly").objectStore(l),o=await x(i.get(e));return o===void 0?null:new Uint8Array(o)}async put(e,t){let o=(await this.#e).transaction(l,"readwrite").objectStore(l);await x(o.put(t,e))}async delete(e){let i=(await this.#e).transaction(l,"readwrite").objectStore(l);await x(i.delete(e))}async has(e){let i=(await this.#e).transaction(l,"readonly").objectStore(l);return await x(i.count(e))>0}async deletePrefix(e){let t=await this.#e,r=w(e),i=this.#r.IDBKeyRange.bound(e,r,!1,!0);return new Promise((o,a)=>{let s=t.transaction(l,"readwrite"),c=s.objectStore(l),u=0,d=c.count(i);d.onsuccess=()=>{u=d.result,c.delete(i)},s.oncomplete=()=>o(u),s.onerror=()=>a(s.error)})}async deleteRange(e,t){let r=D(t),i=Q(e,r);if(i===null)return 0;let o=this.#r.IDBKeyRange.bound(i.lower.key,i.upper.key,i.lower.open,i.upper.open),a=await this.#e,{limit:s}=r;return new Promise((c,u)=>{let d=a.transaction(l,"readwrite"),b=d.objectStore(l),p=0;if(s===void 0){let g=b.count(o);g.onsuccess=()=>{p=g.result,b.delete(o)}}else{let g=b.openCursor(o,"next");g.onsuccess=()=>{let m=g.result;if(m===null||p>=s)return;if(m.delete(),p++,p<s)m.continue()}}d.oncomplete=()=>c(p),d.onerror=()=>u(d.error)})}async*scan(e,t={}){let r=await this.#e;yield*Z(r,this.#r.IDBKeyRange,e,t,(i,o,a)=>i.openCursor(o,a),(i)=>[i.key,new Uint8Array(i.value)])}async batch(e){if(h("batch operations",e.length),e.length===0)return;let t=await this.#e;return new Promise((r,i)=>{let o=t.transaction(l,"readwrite"),a=o.objectStore(l);for(let s of e)if(s.type==="put")a.put(s.value,s.key);else a.delete(s.key);o.oncomplete=()=>r(),o.onerror=()=>i(o.error)})}async conditionalBatch(e,t){h("conditionalBatch conditions",e.length),h("conditionalBatch operations",t.length);let r=await this.#e;return new Promise((i,o)=>{let a=r.transaction(l,"readwrite"),s=a.objectStore(l),c=!1,u=!1,d=(g,m)=>{if(c)return;c=!0,o(g??Error(m))};a.oncomplete=()=>{if(c)return;c=!0,i(!0)},a.onerror=()=>{d(a.error,"IndexedDB conditionalBatch transaction failed.")},a.onabort=()=>{if(c)return;if(c=!0,u){i(!1);return}o(a.error??Error("IndexedDB conditionalBatch transaction aborted."))};let b=()=>{for(let g of t)if(g.type==="put")s.put(g.value,g.key);else s.delete(g.key)},p=(g)=>{if(g>=e.length){b();return}let m=e[g],S=s.get(m.key);S.onsuccess=()=>{let v=S.result,R=v===void 0?null:new Uint8Array(v);if(!N(R,m.expectedValue)){u=!0,a.abort();return}p(g+1)},S.onerror=()=>{d(S.error,"IndexedDB conditionalBatch condition check failed.")}};p(0)})}async*keys(e,t={}){let r=await this.#e;yield*Z(r,this.#r.IDBKeyRange,e,t,(i,o,a)=>i.openKeyCursor(o,a),(i)=>i.key)}async count(e){let t=await this.#e,r=w(e),o=t.transaction(l,"readonly").objectStore(l);return x(o.count(this.#r.IDBKeyRange.bound(e,r,!1,!0)))}scoped(e){return J(this,e)}[Symbol.dispose](){if(this.#n)this.#n.close(),this.#n=null}}export{ce as IndexedDBStorage};
1
+ async function I(e,t){return await e.get(t)!==null}async function*R(e,t,r){for await(let[i]of e.scan(t,r))yield i}async function K(e,t){let r=0;for await(let i of R(e,t))r++;return r}async function _(e,t){let r=[];for await(let i of R(e,t))r.push({type:"delete",key:i});if(r.length===0)return 0;return await e.batch(r),r.length}async function A(e,t,r){let i=[];for await(let o of R(e,t,r))i.push({type:"delete",key:o});if(i.length===0)return 0;return await e.batch(i),i.length}function T(e,t,r){if(!e.capabilities()[t])throw Error(`Feature "${r}" requires storage capability "${t}", but this storage backend does not provide it.`)}function n(e){return encodeURIComponent(e)}function f(e){return String(e).padStart(16,"0")}var L={catalogEntry:(e,t)=>`catalog-entry:${n(e)}:${n(t)}`,catalogEntryPrefix:(e)=>`catalog-entry:${n(e)}:`,catalogActive:(e)=>`catalog-active:${n(e)}`,catalogTombstone:(e,t)=>`catalog-tombstone:${n(e)}:${n(t)}`,catalogTombstonePrefix:()=>"catalog-tombstone:"};var W={workflowGeneration:(e)=>`wf-gen:${n(e)}`};var Y={livenessPrefix:()=>"liveness:",liveness:(e)=>`liveness:${n(e)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder"};var N={applicationMailbox:(e,t)=>`appmbx:v1:${n(e)}:${n(t)}`,applicationMailboxSinkProbe:(e,t,r)=>`appprobe:v1:${n(e)}:${n(t)}:${n(r)}`,applicationCommandPrefix:(e,t)=>`appcmd:v1:${n(e)}:${n(t)}:`,applicationCommand:(e,t,r)=>`appcmd:v1:${n(e)}:${n(t)}:${n(r)}`,applicationCommandReadyPrefix:(e,t)=>`appready:v1:${n(e)}:${n(t)}:`,applicationCommandReady:(e,t,r)=>`appready:v1:${n(e)}:${n(t)}:${f(r)}`,applicationCommandIdempotency:(e,t,r)=>`appidem:v1:${n(e)}:${n(t)}:${n(r)}`,applicationCommandBySequencePrefix:(e,t)=>`appseq:v1:${n(e)}:${n(t)}:`,applicationCommandBySequence:(e,t,r)=>`appseq:v1:${n(e)}:${n(t)}:${f(r)}`,applicationCommandTerminalPrefix:(e,t)=>`appterm:v1:${n(e)}:${n(t)}:`,applicationCommandTerminal:(e,t,r,i)=>`appterm:v1:${n(e)}:${n(t)}:${f(r)}:${n(i)}`};var F={applicationOutbox:(e,t)=>`appobx:v1:${n(e)}:${n(t)}`,applicationOutboxSinkProbe:(e,t,r)=>`appprobe:v1:outbox:${n(e)}:${n(t)}:${n(r)}`,applicationDeliveryPrefix:(e,t)=>`appdlv:v1:${n(e)}:${n(t)}:`,applicationDelivery:(e,t,r)=>`appdlv:v1:${n(e)}:${n(t)}:${n(r)}`,applicationDeliveryDuePrefix:(e,t)=>`appdue:v1:${n(e)}:${n(t)}:`,applicationDeliveryDue:(e,t,r,i)=>`appdue:v1:${n(e)}:${n(t)}:${f(r)}:${n(i)}`,applicationDeliveryIdempotency:(e,t,r)=>`appdidem:v1:${n(e)}:${n(t)}:${n(r)}`,applicationDeliveryBySequencePrefix:(e,t)=>`appdseq:v1:${n(e)}:${n(t)}:`,applicationDeliveryBySequence:(e,t,r)=>`appdseq:v1:${n(e)}:${n(t)}:${f(r)}`,applicationDeliveryTerminalPrefix:(e,t)=>`appdterm:v1:${n(e)}:${n(t)}:`,applicationDeliveryTerminal:(e,t,r,i)=>`appdterm:v1:${n(e)}:${n(t)}:${f(r)}:${n(i)}`};var U={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${n(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${n(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var ce="0",ge="1",z=(e,t,r,i)=>`sig:${n(e)}:${n(t)}:${i}:${n(r)}`,q={signal:(e,t,r)=>z(e,t,r,ge),startSignal:(e,t,r)=>z(e,t,r,ce),signalSequence:(e)=>`sigseq:v1:${n(e)}`,signalAcceptedResponsePrefix:(e)=>`sigres:v1:${n(e)}:`,signalAcceptedResponse:(e,t,r)=>`sigres:v1:${n(e)}:${n(t)}:${n(r)}`};var M="default";var y=f,V={deadline:(e,t)=>`wf-deadline:${y(e)}:${n(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${y(e)}:${n(t)}`,teardownTimer:(e,t)=>`wf-teardown:${y(e)}:${n(t)}`,delayedStart:(e,t)=>`wf-delayed:${y(e)}:${n(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${y(e)}:${n(t)}`},j={budget:(e,t,r)=>`budget:${e}:${t}:${r}`,review:(e,t)=>`review:${n(e)}:${t}`,workflowHeaders:(e)=>`wf-headers:${n(e)}`,childCancellationPrefix:(e)=>`child-cancel:${n(e)}:`,childCancellation:(e,t)=>`child-cancel:${n(e)}:${n(t)}`,childWorkflowByParentPrefix:(e,t)=>`child-by-parent:${n(e)}:${t===void 0?"":`${n(t)}:`}`,childWorkflowByParent:(e,t,r)=>`child-by-parent:${n(e)}:${t===void 0?"":`${n(t)}:`}${n(r)}`,terminalCleanupNeeded:(e)=>`wf-cleanup-needed:${n(e)}`,workflowConcurrency:(e,t)=>`wf-concurrency:${n(e)}:${n(t)}`,workflowConcurrencyHolder:(e)=>`wf-concurrency-holder:${n(e)}`,workflowHasServices:(e)=>`wf-has-services:${n(e)}`,finalizerState:(e)=>`wf-finalizer-state:${n(e)}`,teardownOwed:(e)=>`wf-teardown-needed:${n(e)}`,teardownSucceeded:(e)=>`wf-teardown-succeeded:${n(e)}`,teardownDeadLetter:(e)=>`wf-teardown-deadletter:${n(e)}`,offload:(e,t)=>`offload:${n(e)}:${t}`,archive:(e,t)=>`archive:${n(e)}:${t}`,stateExecution:(e,t)=>`state:execution:${n(e)}:${n(t)}`,stateWorkflow:(e,t)=>`state:workflow-scope:${M}:${n(e)}:${n(t)}`,streamChunkPrefix:(e,t)=>`blob:${n(e)}:${t}:chunk:`,streamChunk:(e,t,r)=>`blob:${n(e)}:${t}:chunk:${String(r).padStart(10,"0")}`,streamTail:(e,t)=>`blob:${n(e)}:${t}:tail`,streamMetadata:(e,t)=>`blob:${n(e)}:${t}:meta`,budgetCharged:(e)=>`budget-charged:${e}`,toolEffect:(e,t,r)=>`tool-effect:${n(e)}:${t}:${r}`,workflowVisibilityStatus:(e,t)=>`wf-idx-status:${n(e)}:${n(t)}`,workflowVisibilityType:(e,t)=>`wf-idx-type:${n(e)}:${n(t)}`,workflowVisibilityCreated:(e,t)=>`wf-idx-created:${y(e)}:${n(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${y(e)}:${n(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${y(e)}:${n(t)}`,workflowVisibilityManifest:(e)=>`wf-idx-manifest:${n(e)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};var B=f,H={workflow:(e)=>`wf:${n(e)}`,checkpoint:(e)=>`wf:${n(e)}:ckpt`,checkpointHistory:(e,t)=>`wf:${n(e)}:ckpt:${String(t).padStart(10,"0")}`,timelinePrefix:(e)=>`wf:${n(e)}:timeline:`,timeline:(e,t)=>`wf:${n(e)}:timeline:${String(t).padStart(10,"0")}`,schedule:(e)=>`schedule:${n(e)}`,scheduleTick:(e,t)=>`schedule-due:${String(e).padStart(16,"0")}:${n(t)}`,scheduleRun:(e)=>`schedule-run:${n(e)}`,scheduleRunLink:(e)=>`schedule-run-link:${n(e)}`,scheduleRunBySchedulePrefix:(e)=>`schedule-run-by-schedule:${n(e)}:`,scheduleRunBySchedule:(e,t)=>`schedule-run-by-schedule:${n(e)}:${n(t)}`,operation:(e,t,r)=>`op:${e}:${B(t)}:${r}`,operationInflight:(e)=>`op:inflight:${e}`,operationQueued:(e)=>`op:queued:${e}`,operationResolved:(e)=>`op:resolved:${e}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(e,t,r)=>`audit:bulk:${B(e)}:${n(t)}:${n(r)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(e,t)=>`op:resolved-by-time:${B(e)}:${n(t)}`,asyncActivity:(e,t)=>`async-act:v1:${n(e)}:${n(t)}`,asyncActivityResolution:(e,t)=>`async-act:v1:${n(e)}:${n(t)}:resolution`,activityReconciliationPrefix:(e)=>`actrec:v1:${n(e)}:`,activityReconciliation:(e,t,r)=>`actrec:v1:${n(e)}:${n(t)}:${r}`,eventPrefix:(e)=>`ev:${n(e)}:`,event:(e,t)=>`ev:${n(e)}:${String(t).padStart(10,"0")}`,eventHead:(e)=>`ev:${n(e)}:head`,eventWatermark:(e)=>`ev:${n(e)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(e)=>`fleet-event:${String(e).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventWatermark:()=>"fleet-event-watermark",fleetEventByWorkflowPrefix:(e)=>`fleet-event-by-workflow:${n(e)}:`,fleetEventByWorkflow:(e,t)=>`fleet-event-by-workflow:${n(e)}:${String(t).padStart(10,"0")}`},X={attribute:(e)=>`attr:${n(e)}`,attributeIndex:(e,t,r)=>`idx:${e}:${t}:${n(r)}`,tagIndex:(e,t)=>`tag:${n(e)}:${n(t)}`,updatePrefix:(e)=>`upd:${n(e)}:`,update:(e,t)=>`upd:${n(e)}:${t}`,updateResponse:(e)=>`upr:${e}`,updateIdempotency:(e,t)=>`upk:${n(e)}:${t}`,startIdempotency:(e)=>`start-idem:${n(e)}`,startIdempotencySignalId:(e)=>`start-idem:${e}`};var v=1e4;class G extends Error{code="StorageBatchOperationLimitExceededError";cap=v;count;target;constructor(e,t){super(`${e} count ${t} exceeds MAX_BATCH_OPERATIONS (${v}).`);this.name="StorageBatchOperationLimitExceededError",this.target=e,this.count=t}}function b(e,t){if(t>v)throw new G(e,t)}function w(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"ÿ"}function Q(e,t={}){if(t.gt!==void 0&&e<=t.gt)return!1;if(t.gte!==void 0&&e<t.gte)return!1;if(t.lt!==void 0&&e>=t.lt)return!1;if(t.lte!==void 0&&e>t.lte)return!1;return!0}function J(e,t){if(e===null||t===null)return e===t;if(e.byteLength!==t.byteLength)return!1;for(let r=0;r<e.byteLength;r++)if(e[r]!==t[r])return!1;return!0}async function Z(e,t){if(e.has)return e.has(t);return I(e,t)}function ee(e,t,r){if(e.keys)return e.keys(t,r);return R(e,t,r)}async function te(e,t){if(e.count)return e.count(t);return K(e,t)}async function ne(e,t){if(e.deletePrefix)return e.deletePrefix(t);return _(e,t)}async function re(e,t,r){if(b("conditionalBatch conditions",t.length),b("conditionalBatch operations",r.length),T(e,"conditionalBatch","storageConditionalBatch"),!e.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return e.conditionalBatch(t,r)}var Je={...H,...q,...V,...X,...Y,...N,...F,...U,...L,...W,...j};function ue(e){if(e===void 0)return;if(typeof e!=="number"||!Number.isInteger(e)||e<0)throw Error("deleteRange limit must be a finite non-negative integer");return e===0?0:e}function D(e){let t={},r=!1;for(let o of["gt","gte","lt","lte"]){let a=e[o];if(a===void 0)continue;if(typeof a!=="string")throw Error("deleteRange bounds must be strings");t[o]=a,r=!0}if(!r)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let i=ue(e.limit);if(i!==void 0)t.limit=i;return t}async function ie(e,t,r){let i=D(r);if(e.deleteRange)return e.deleteRange(t,i);return A(e,t,i)}function de(e,t){let r={key:e,open:!1};if(t.gte!==void 0&&t.gte>r.key)r.key=t.gte,r.open=!1;if(t.gt!==void 0&&t.gt>=r.key)r.key=t.gt,r.open=!0;return r}function pe(e,t){let r={key:w(e),open:!0};if(t.lt!==void 0&&t.lt<=r.key)r.key=t.lt,r.open=!0;if(t.lte!==void 0&&t.lte<r.key)r.key=t.lte,r.open=!1;return r}function oe(e,t){let r=de(e,t),i=pe(e,t);if(r.key>i.key||r.key===i.key&&(r.open||i.open))return null;return{lower:r,upper:i}}function P(e){return e.replaceAll(/:+$/g,"")}function fe(e,t){let r=P(e),i=P(t);if(r.length===0)return i;if(i.length===0)return r;return`${r}:${i}`}class k{#t;#n;constructor(e,t){this.#t=e,this.#n=P(t)}#e(e){if(this.#n.length===0)return e;return e.length===0?`${this.#n}:`:`${this.#n}:${e}`}#r(e){return e.map((t)=>{if(t.type==="put")return{type:"put",key:this.#e(t.key),value:t.value};return{type:"delete",key:this.#e(t.key)}})}#i(e){if(this.#n.length===0)return e;return e.slice(this.#n.length+1)}#o(e){let t={};if(e.limit!==void 0)t.limit=e.limit;if(e.gt!==void 0)t.gt=this.#e(e.gt);if(e.gte!==void 0)t.gte=this.#e(e.gte);if(e.lt!==void 0)t.lt=this.#e(e.lt);if(e.lte!==void 0)t.lte=this.#e(e.lte);return t}#a(e={}){let t=this.#o(e);if(e.reverse!==void 0)t.reverse=e.reverse;return t}#s(e){return this.#o(e)}capabilities(){return this.#t.capabilities()}scoped(e){return new k(this.#t,fe(this.#n,e))}async get(e){return this.#t.get(this.#e(e))}async put(e,t){await this.#t.put(this.#e(e),t)}async delete(e){await this.#t.delete(this.#e(e))}async*scan(e,t){for await(let[r,i]of this.#t.scan(this.#e(e),this.#a(t)))yield[this.#i(r),i]}async batch(e){b("batch operations",e.length),await this.#t.batch(this.#r(e))}async conditionalBatch(e,t){return re(this.#t,e.map((r)=>({key:this.#e(r.key),expectedValue:r.expectedValue})),this.#r(t))}async has(e){return Z(this.#t,this.#e(e))}async deletePrefix(e){return ne(this.#t,this.#e(e))}async deleteRange(e,t){let r=this.#s(D(t));return ie(this.#t,this.#e(e),r)}async*keys(e,t){for await(let r of ee(this.#t,this.#e(e),this.#a(t)))yield this.#i(r)}async count(e){return te(this.#t,this.#e(e))}[Symbol.dispose](){this.#t[Symbol.dispose]()}}function ae(e,t){return new k(e,t)}var l="kv";function me(e=globalThis){let{indexedDB:t,IDBKeyRange:r}=e;if(t===void 0||r===void 0)throw Error("IndexedDBStorage requires both indexedDB and IDBKeyRange runtime globals.");return{indexedDB:t,IDBKeyRange:r}}function C(e){return new Promise((t,r)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>r(e.error)})}function ye(e,t){let r=null,i=null,o=null,a=(s,c)=>{let u=s??Error(c);if(i){let d=i;r=null,i=null,d(u);return}o=u};return e.onsuccess=()=>{if(!r)return;let s=r;r=null,i=null,s(e.result)},e.onerror=()=>{a(e.error,"IndexedDB cursor request failed.")},t.onerror=()=>{a(t.error,"IndexedDB transaction failed.")},t.onabort=()=>{a(t.error,"IndexedDB transaction aborted.")},()=>new Promise((s,c)=>{if(o){let u=o;o=null,c(u);return}if(r=s,i=c,e.readyState==="done"){let u=r;r=null,i=null,u?.(e.result)}})}async function*se(e,t,r,i,o,a){let{limit:s,reverse:c}=i,u=w(r),d=t.bound(r,u,!1,!0),h=c?"prev":"next",p=e.transaction(l,"readonly"),g=p.objectStore(l),m=o(g,d,h),S=ye(m,p),O=0,E=!1;try{let x=await S();while(x){if(s!==void 0&&O>=s)break;let le=x.key;if(Q(le,i))yield a(x),O++;x.continue(),x=await S()}E=!0}finally{if(!E)try{p.abort()}catch{}}}class be{#t;#n=null;#e;#r;constructor(e="weft",t=me()){this.#t=e,this.#r=t,this.#e=this.#i()}capabilities(){return{persistence:"local",readAfterWrite:"linearizable",scanConsistency:"best-effort",atomicBatch:!0,conditionalBatch:!0,boundedRangeDelete:!0}}#i(){let e=this.#r.indexedDB.open(this.#t,1);return e.onupgradeneeded=()=>{let t=e.result;if(!t.objectStoreNames.contains(l))t.createObjectStore(l)},C(e).then((t)=>(this.#n=t,t))}async get(e){let i=(await this.#e).transaction(l,"readonly").objectStore(l),o=await C(i.get(e));return o===void 0?null:new Uint8Array(o)}async put(e,t){let o=(await this.#e).transaction(l,"readwrite").objectStore(l);await C(o.put(t,e))}async delete(e){let i=(await this.#e).transaction(l,"readwrite").objectStore(l);await C(i.delete(e))}async has(e){let i=(await this.#e).transaction(l,"readonly").objectStore(l);return await C(i.count(e))>0}async deletePrefix(e){let t=await this.#e,r=w(e),i=this.#r.IDBKeyRange.bound(e,r,!1,!0);return new Promise((o,a)=>{let s=t.transaction(l,"readwrite"),c=s.objectStore(l),u=0,d=c.count(i);d.onsuccess=()=>{u=d.result,c.delete(i)},s.oncomplete=()=>o(u),s.onerror=()=>a(s.error)})}async deleteRange(e,t){let r=D(t),i=oe(e,r);if(i===null)return 0;let o=this.#r.IDBKeyRange.bound(i.lower.key,i.upper.key,i.lower.open,i.upper.open),a=await this.#e,{limit:s}=r;return new Promise((c,u)=>{let d=a.transaction(l,"readwrite"),h=d.objectStore(l),p=0;if(s===void 0){let g=h.count(o);g.onsuccess=()=>{p=g.result,h.delete(o)}}else{let g=h.openCursor(o,"next");g.onsuccess=()=>{let m=g.result;if(m===null||p>=s)return;if(m.delete(),p++,p<s)m.continue()}}d.oncomplete=()=>c(p),d.onerror=()=>u(d.error)})}async*scan(e,t={}){let r=await this.#e;yield*se(r,this.#r.IDBKeyRange,e,t,(i,o,a)=>i.openCursor(o,a),(i)=>[i.key,new Uint8Array(i.value)])}async batch(e){if(b("batch operations",e.length),e.length===0)return;let t=await this.#e;return new Promise((r,i)=>{let o=t.transaction(l,"readwrite"),a=o.objectStore(l);for(let s of e)if(s.type==="put")a.put(s.value,s.key);else a.delete(s.key);o.oncomplete=()=>r(),o.onerror=()=>i(o.error)})}async conditionalBatch(e,t){b("conditionalBatch conditions",e.length),b("conditionalBatch operations",t.length);let r=await this.#e;return new Promise((i,o)=>{let a=r.transaction(l,"readwrite"),s=a.objectStore(l),c=!1,u=!1,d=(g,m)=>{if(c)return;c=!0,o(g??Error(m))};a.oncomplete=()=>{if(c)return;c=!0,i(!0)},a.onerror=()=>{d(a.error,"IndexedDB conditionalBatch transaction failed.")},a.onabort=()=>{if(c)return;if(c=!0,u){i(!1);return}o(a.error??Error("IndexedDB conditionalBatch transaction aborted."))};let h=()=>{for(let g of t)if(g.type==="put")s.put(g.value,g.key);else s.delete(g.key)},p=(g)=>{if(g>=e.length){h();return}let m=e[g],S=s.get(m.key);S.onsuccess=()=>{let O=S.result,E=O===void 0?null:new Uint8Array(O);if(!J(E,m.expectedValue)){u=!0,a.abort();return}p(g+1)},S.onerror=()=>{d(S.error,"IndexedDB conditionalBatch condition check failed.")}};p(0)})}async*keys(e,t={}){let r=await this.#e;yield*se(r,this.#r.IDBKeyRange,e,t,(i,o,a)=>i.openKeyCursor(o,a),(i)=>i.key)}async count(e){let t=await this.#e,r=w(e),o=t.transaction(l,"readonly").objectStore(l);return C(o.count(this.#r.IDBKeyRange.bound(e,r,!1,!0)))}scoped(e){return ae(this,e)}[Symbol.dispose](){if(this.#n)this.#n.close(),this.#n=null}}export{be as IndexedDBStorage};
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- var y=import.meta.require;class i extends Error{code;constructor(r,e,t){super(e,t);this.code=r,this.name=r}}var u={WorkflowAlreadyExistsError:!0,BulkDeleteRequiresTerminalWorkflowsError:!0,BulkOperationConfirmationError:!0,WorkflowTypeNotRegisteredForRecoveryError:!0,EngineCreateNameMismatchError:!0,EngineDisposedError:!0,EngineDisposalError:!0,WorkflowNotFoundError:!0,WorkflowNotRegisteredError:!0,WorkflowConcurrencyLimitExceededError:!0,WorkflowSuspendNotSupportedError:!0,ActivityResolutionError:!0,BranchTopologyChangedError:!0,PersistedDataIncompatibleError:!0,PersistedDataCorruptError:!0,WorkflowTimeoutError:!0,HttpClientError:!0,WorkerProtocolIncompatibleError:!0,UpdateTimeoutError:!0,UpdateValidationError:!0,WorkflowTerminalError:!0,WorkflowBuilderError:!0,VersionMismatchError:!0,EffectReplayConflictError:!0,ReviewTimeoutError:!0,AtomicStateConflictError:!0,StandardSchemaValidationError:!0,ActivityReconciliationCapabilityError:!0,ActivityReconciliationConflictError:!0,ActivityReconciliationIndeterminateError:!0,DurableActivityScopeError:!0,DurableActivityUnsupportedError:!0,AsyncActivityTokenNotFoundError:!0,ActivityScheduleToCloseTimeoutError:!0,ActivityPerAttemptTimeoutError:!0,PayloadSizeExceededError:!0,StartOrSignalConflictError:!0,WorkflowTeardownPendingError:!0,IdempotencyKeyPurgedError:!0,WorkerManifestBuildError:!0,OwnershipModeMismatchError:!0,ApplicationCommandValidationError:!0,MailboxContentionError:!0,ApplicationDeliveryValidationError:!0,OutboxContentionError:!0,WaitBudgetElapsedError:!0,WorkflowCatalogConflictError:!0,WorkflowRevisionNotInstalledError:!0,WorkflowSourceValidationError:!0},g=new Set(Object.keys(u));class o extends i{fieldName;operation;issues;constructor(r){super("StandardSchemaValidationError",S(r.fieldName,r.operation,r.issues));this.fieldName=r.fieldName,this.operation=r.operation,this.issues=r.issues}}async function s(r,e,t){let n=r["~standard"];if(!l(n))throw TypeError(`Schema for ${t.fieldName} does not provide runtime validation. Attach a Standard Schema validator (Zod, Valibot, or another vendor) or supply a runtime-validating schema at this boundary.`);let a=await n.validate(e);if(a.issues===void 0)return a.value;throw new o({fieldName:t.fieldName,operation:t.operation,issues:a.issues.map(c)})}function d(r){return r.map((e)=>e.path===""?e.message:`${e.path}: ${e.message}`).join(`
3
- `)}function l(r){return typeof r.validate==="function"}function c(r){return{message:r.message,path:E(r.path)}}function E(r){if(r===void 0||r.length===0)return"";let e="";for(let t of r)e+="/",e+=f(t);return e}function f(r){let e=m(r)?r.key:r;return p(String(e))}function m(r){return r!==null&&typeof r==="object"&&"key"in r}function p(r){return r.replace(/~/g,"~0").replace(/\//g,"~1")}function S(r,e,t){return`Validation failed for ${e===void 0?r:`${e} ${r}`}:
4
- ${d(t)}`}var W=d,v=o,A=s;export{v as StandardSchemaValidationError,W as formatStandardSchemaIssues,A as validateStandardSchema};
2
+ var y=import.meta.require;class i extends Error{code;constructor(r,e,t){super(e,t);this.code=r,this.name=r}}var l={WorkflowAlreadyExistsError:!0,BulkDeleteRequiresTerminalWorkflowsError:!0,BulkOperationConfirmationError:!0,WorkflowTypeNotRegisteredForRecoveryError:!0,EngineCreateNameMismatchError:!0,EngineDisposedError:!0,EngineDisposalError:!0,WorkflowNotFoundError:!0,WorkflowNotRegisteredError:!0,WorkflowConcurrencyLimitExceededError:!0,WorkflowSuspendNotSupportedError:!0,ActivityResolutionError:!0,BranchTopologyChangedError:!0,PersistedDataIncompatibleError:!0,PersistedDataCorruptError:!0,WorkflowTimeoutError:!0,HttpClientError:!0,WorkerProtocolIncompatibleError:!0,UpdateTimeoutError:!0,UpdateValidationError:!0,WorkflowTerminalError:!0,WorkflowBuilderError:!0,VersionMismatchError:!0,EffectReplayConflictError:!0,ReviewTimeoutError:!0,AtomicStateConflictError:!0,StandardSchemaValidationError:!0,ActivityReconciliationCapabilityError:!0,ActivityReconciliationConflictError:!0,ActivityReconciliationIndeterminateError:!0,DurableActivityScopeError:!0,DurableActivityUnsupportedError:!0,AsyncActivityTokenNotFoundError:!0,ActivityScheduleToCloseTimeoutError:!0,ActivityPerAttemptTimeoutError:!0,PayloadSizeExceededError:!0,StartOrSignalConflictError:!0,WorkflowTeardownPendingError:!0,IdempotencyKeyPurgedError:!0,WorkerManifestBuildError:!0,OwnershipModeMismatchError:!0,ApplicationCommandValidationError:!0,MailboxContentionError:!0,ApplicationDeliveryValidationError:!0,OutboxContentionError:!0,WaitBudgetElapsedError:!0,WorkflowCatalogConflictError:!0,WorkflowRevisionNotInstalledError:!0,WorkflowSourceValidationError:!0,WorkflowSourceNotRegisteredError:!0,DynamicWorkflowSourceUnavailableError:!0,WorkflowRevisionUnavailableError:!0},g=new Set(Object.keys(l));class o extends i{fieldName;operation;issues;constructor(r){super("StandardSchemaValidationError",p(r.fieldName,r.operation,r.issues));this.fieldName=r.fieldName,this.operation=r.operation,this.issues=r.issues}}async function s(r,e,t){let a=r["~standard"];if(!u(a))throw TypeError(`Schema for ${t.fieldName} does not provide runtime validation. Attach a Standard Schema validator (Zod, Valibot, or another vendor) or supply a runtime-validating schema at this boundary.`);let n=await a.validate(e);if(n.issues===void 0)return n.value;throw new o({fieldName:t.fieldName,operation:t.operation,issues:n.issues.map(c)})}function d(r){return r.map((e)=>e.path===""?e.message:`${e.path}: ${e.message}`).join(`
3
+ `)}function u(r){return typeof r.validate==="function"}function c(r){return{message:r.message,path:E(r.path)}}function E(r){if(r===void 0||r.length===0)return"";let e="";for(let t of r)e+="/",e+=f(t);return e}function f(r){let e=m(r)?r.key:r;return S(String(e))}function m(r){return r!==null&&typeof r==="object"&&"key"in r}function S(r){return r.replace(/~/g,"~0").replace(/\//g,"~1")}function p(r,e,t){return`Validation failed for ${e===void 0?r:`${e} ${r}`}:
4
+ ${d(t)}`}var C=d,v=o,R=s;export{v as StandardSchemaValidationError,C as formatStandardSchemaIssues,R as validateStandardSchema};
@@ -36,7 +36,8 @@ function dataForConflict(data) {
36
36
  missingWorkflowCount: data.missingWorkflowCount,
37
37
  samplesTruncated: data.samplesTruncated,
38
38
  currentGeneration: data.currentGeneration,
39
- compatibilityReasons: data.compatibilityReasons === void 0 ? void 0 : [...data.compatibilityReasons]
39
+ compatibilityReasons: data.compatibilityReasons === void 0 ? void 0 : [...data.compatibilityReasons],
40
+ sourceValidationReasons: data.sourceValidationReasons === void 0 ? void 0 : [...data.sourceValidationReasons]
40
41
  });
41
42
  }
42
43
  function dataForNotFound(data) {
@@ -82,12 +82,12 @@ export function createFleetEventFeed(storage, feedOptions) {
82
82
  throw new PersistedDataCorruptError(KEYS.fleetEventTail());
83
83
  if (isTailRecord(decodedTail))
84
84
  return decodedTail.sequence;
85
- for await (const [key] of storage.scan(KEYS.fleetEventPrefix(), { reverse: !0 })) {
86
- const sequence = parseFleetEventSequenceFromKey(key);
87
- if (sequence !== null)
88
- return sequence;
89
- throw new PersistedDataCorruptError(key);
90
- }
85
+ const highest = await highestFleetEventSequence(storage);
86
+ if (highest !== -1)
87
+ return highest;
88
+ try {
89
+ await storageConditionalBatch(storage, [{ key: KEYS.fleetEventTail(), expectedValue: null }], [{ type: "put", key: KEYS.fleetEventTail(), value: encode({ sequence: -1 }) }]);
90
+ } catch {}
91
91
  return -1;
92
92
  }
93
93
  async function snapshotRetentionFloor() {
@@ -327,6 +327,17 @@ export interface TaskDispatch {
327
327
  workflowId?: string | undefined;
328
328
  /** Durable token for the workflow run that launched this task, when known. */
329
329
  workflowExecutionToken?: string | undefined;
330
+ /**
331
+ * The dispatching workflow run's persisted `WorkflowState.revision`
332
+ * (WFT-20), when known. When BOTH `workflowId` and `workflowRevision` are
333
+ * supplied, `dispatchTask` rejects the dispatch before reserving any
334
+ * worker capacity if the persisted run's revision disagrees — the run was
335
+ * displaced (e.g. by a `start-new` restart) since this revision was
336
+ * captured. The worker echoes this value back on `taskResult`; a
337
+ * completion whose echoed revision disagrees with the in-flight dispatch's
338
+ * is rejected as stale.
339
+ */
340
+ workflowRevision?: string | undefined;
330
341
  /** When true, prefer the worker that last handled a task for this workflow. Requires `workflowId`. */
331
342
  sticky?: boolean;
332
343
  /** Visibility timeout in milliseconds. Defaults to `DEFAULT_VISIBILITY_TIMEOUT` (30 000). */
@@ -36,6 +36,7 @@
36
36
  */
37
37
  import type { WorkflowCompatibilityReason } from '../core/contract/compatibility.ts';
38
38
  import type { FaultCode } from '../core/fault-code.ts';
39
+ import type { WorkflowSourceRejectionReason } from '../core/source/errors.ts';
39
40
  import { type WeftErrorCode } from '../core/weft-error.ts';
40
41
  /** Transport identifiers as seen by `executeOperation`. */
41
42
  export type TransportKind = 'http-rest' | 'jsonRpcHttp' | 'jsonRpcWebSocket' | 'jsonRpcStdio';
@@ -81,6 +82,7 @@ export type OperationFault = {
81
82
  samplesTruncated?: boolean | undefined;
82
83
  currentGeneration?: number | undefined;
83
84
  compatibilityReasons?: readonly WorkflowCompatibilityReason[] | undefined;
85
+ sourceValidationReasons?: readonly WorkflowSourceRejectionReason[] | undefined;
84
86
  };
85
87
  } | {
86
88
  code: 'Unprocessable';
@@ -32,7 +32,8 @@ const NO_REST_FAULT_DATA = Object.freeze({}), REST_FAULT_DATA_EXTRACTORS = {
32
32
  missingWorkflowCount: data.missingWorkflowCount,
33
33
  samplesTruncated: data.samplesTruncated,
34
34
  currentGeneration: data.currentGeneration,
35
- compatibilityReasons: data.compatibilityReasons === void 0 ? void 0 : [...data.compatibilityReasons]
35
+ compatibilityReasons: data.compatibilityReasons === void 0 ? void 0 : [...data.compatibilityReasons],
36
+ sourceValidationReasons: data.sourceValidationReasons === void 0 ? void 0 : [...data.sourceValidationReasons]
36
37
  }),
37
38
  Unprocessable: () => NO_REST_FAULT_DATA,
38
39
  PayloadTooLarge: (data) => ({ maxBytes: data.maxBytes }),
@@ -10,6 +10,7 @@ declare const createScheduleInput: z.ZodObject<{
10
10
  overlap: z.ZodOptional<z.ZodUnknown>;
11
11
  backfill: z.ZodOptional<z.ZodUnknown>;
12
12
  jitter: z.ZodOptional<z.ZodUnknown>;
13
+ revisionPolicy: z.ZodOptional<z.ZodUnknown>;
13
14
  }, z.core.$strip>;
14
15
  declare const createScheduleOutput: z.ZodObject<{
15
16
  id: z.ZodString;
@@ -26,6 +27,7 @@ export declare const createScheduleOperation: import("../operation-catalog.ts").
26
27
  overlap?: unknown;
27
28
  backfill?: unknown;
28
29
  jitter?: unknown;
30
+ revisionPolicy?: unknown;
29
31
  }, {
30
32
  id: string;
31
33
  }, unknown>;
@@ -19,7 +19,8 @@ const createScheduleInput = z.object({
19
19
  description: z.unknown().optional().describe("Operator-facing schedule description. Runtime validation requires a string."),
20
20
  overlap: z.unknown().optional(),
21
21
  backfill: z.unknown().optional(),
22
- jitter: z.unknown().optional()
22
+ jitter: z.unknown().optional(),
23
+ revisionPolicy: z.unknown().optional().describe('Revision policy (WFT-20). Runtime validation requires "active-at-fire" or "pinned"; defaults to "active-at-fire".')
23
24
  }), createScheduleOutput = z.object({
24
25
  id: z.string()
25
26
  });
@@ -42,12 +43,13 @@ function validateOptionalScheduleFields(input) {
42
43
  description: validatedOptions.description,
43
44
  overlap: validatedOptions.overlap,
44
45
  backfill: validatedOptions.backfill,
45
- jitter: validatedOptions.jitter
46
+ jitter: validatedOptions.jitter,
47
+ revisionPolicy: validatedOptions.revisionPolicy
46
48
  };
47
49
  }
48
50
  function validateCreateScheduleInput(input) {
49
- const { type, spec } = validateRequiredScheduleFields(input), { id, description, overlap, backfill, jitter } = validateOptionalScheduleFields(input);
50
- return { type, spec, id, description, overlap, backfill, jitter };
51
+ const { type, spec } = validateRequiredScheduleFields(input), { id, description, overlap, backfill, jitter, revisionPolicy } = validateOptionalScheduleFields(input);
52
+ return { type, spec, id, description, overlap, backfill, jitter, revisionPolicy };
51
53
  }
52
54
  export const createScheduleOperation = defineOperation({
53
55
  name: "weft.schedules.create",
@@ -68,7 +70,8 @@ export const createScheduleOperation = defineOperation({
68
70
  ...validated.description !== void 0 ? { description: validated.description } : {},
69
71
  ...validated.overlap !== void 0 ? { overlap: validated.overlap } : {},
70
72
  ...validated.backfill !== void 0 ? { backfill: validated.backfill } : {},
71
- ...validated.jitter !== void 0 ? { jitter: validated.jitter } : {}
73
+ ...validated.jitter !== void 0 ? { jitter: validated.jitter } : {},
74
+ ...validated.revisionPolicy !== void 0 ? { revisionPolicy: validated.revisionPolicy } : {}
72
75
  };
73
76
  try {
74
77
  return { id: (await typedEngine.schedule(validated.type, input.input, validated.spec, options)).id };
@@ -90,7 +93,8 @@ export const createScheduleOperation = defineOperation({
90
93
  description: { kind: "body-field", bodyField: "description" },
91
94
  overlap: { kind: "body-field", bodyField: "overlap" },
92
95
  backfill: { kind: "body-field", bodyField: "backfill" },
93
- jitter: { kind: "body-field", bodyField: "jitter" }
96
+ jitter: { kind: "body-field", bodyField: "jitter" },
97
+ revisionPolicy: { kind: "body-field", bodyField: "revisionPolicy" }
94
98
  },
95
99
  extractInput: async (request, _pathParams, context) => {
96
100
  const record = await parseScheduleRestBodyRequestRecord(request, context);
@@ -38,6 +38,26 @@ declare const getCatalogDiagnosticsOutput: z.ZodObject<{
38
38
  retainedRecoveryRecords: z.ZodNumber;
39
39
  }, z.core.$strict>;
40
40
  removable: z.ZodBoolean;
41
+ source: z.ZodOptional<z.ZodObject<{
42
+ kind: z.ZodLiteral<"module">;
43
+ requestedRevision: z.ZodString;
44
+ state: z.ZodEnum<{
45
+ failed: "failed";
46
+ cancelled: "cancelled";
47
+ idle: "idle";
48
+ loading: "loading";
49
+ ready: "ready";
50
+ }>;
51
+ loadDurationMs: z.ZodOptional<z.ZodNumber>;
52
+ lastFailureCategory: z.ZodOptional<z.ZodEnum<{
53
+ application: "application";
54
+ timeout: "timeout";
55
+ cancellation: "cancellation";
56
+ resource: "resource";
57
+ system: "system";
58
+ }>>;
59
+ waiterCount: z.ZodNumber;
60
+ }, z.core.$strict>>;
41
61
  }, z.core.$strict>;
42
62
  export type GetCatalogDiagnosticsInput = z.infer<typeof getCatalogDiagnosticsInput>;
43
63
  export type GetCatalogDiagnosticsOutput = z.infer<typeof getCatalogDiagnosticsOutput>;
@@ -79,6 +99,14 @@ export declare const getCatalogDiagnosticsOperation: import("../operation-catalo
79
99
  };
80
100
  removable: boolean;
81
101
  activeRevision?: string | undefined;
102
+ source?: {
103
+ kind: "module";
104
+ requestedRevision: string;
105
+ state: "failed" | "cancelled" | "idle" | "loading" | "ready";
106
+ waiterCount: number;
107
+ loadDurationMs?: number | undefined;
108
+ lastFailureCategory?: "application" | "timeout" | "cancellation" | "resource" | "system" | undefined;
109
+ } | undefined;
82
110
  }, unknown>;
83
111
  /** REST binding for `weft.catalog.diagnostics`: `GET /v1/catalog/:name/revisions/:revision/diagnostics`. */
84
112
  export declare const getCatalogDiagnosticsRestBinding: UnknownRestBinding;
@@ -13,6 +13,13 @@ const workflowRevisionReferenceCountsSchema = z.object({
13
13
  }).strict(), getCatalogDiagnosticsInput = z.object({
14
14
  name: z.string().min(1),
15
15
  revision: z.string().min(1)
16
+ }).strict(), sourceLoadDiagnosticsSchema = z.object({
17
+ kind: z.literal("module"),
18
+ requestedRevision: z.string(),
19
+ state: z.enum(["idle", "loading", "ready", "failed", "cancelled"]),
20
+ loadDurationMs: z.number().nonnegative().optional(),
21
+ lastFailureCategory: z.enum(["application", "timeout", "cancellation", "resource", "system"]).optional(),
22
+ waiterCount: z.number().int().nonnegative()
16
23
  }).strict(), getCatalogDiagnosticsOutput = z.object({
17
24
  name: z.string(),
18
25
  revision: z.string(),
@@ -20,13 +27,14 @@ const workflowRevisionReferenceCountsSchema = z.object({
20
27
  active: z.boolean(),
21
28
  activeRevision: z.string().optional(),
22
29
  references: workflowRevisionReferenceCountsSchema,
23
- removable: z.boolean()
30
+ removable: z.boolean(),
31
+ source: sourceLoadDiagnosticsSchema.optional()
24
32
  }).strict();
25
33
  export const getCatalogDiagnosticsOperation = defineOperation({
26
34
  name: "weft.catalog.diagnostics",
27
35
  mcpExposable: !1,
28
36
  summary: "Get bounded reference-count and removability diagnostics for one workflow revision",
29
- description: "Report whether a `(name, revision)` workflow catalog entry is installed, whether it is currently the active revision, its full reference-count breakdown, and whether it's currently removable. Never returns manifest or contract content.",
37
+ description: "Report whether a `(name, revision)` workflow catalog entry is installed, whether it is currently the active revision, its full reference-count breakdown, and whether it's currently removable. When `name` was ever registered as a dynamic workflow source (`engine.registerSource()`), also reports its bounded load-state diagnostics: source kind, load state, load duration, last failure category, and outstanding waiter count. Never returns manifest or contract content.",
30
38
  destructive: !1,
31
39
  tags: ["Observability"],
32
40
  inputSchema: getCatalogDiagnosticsInput,
@@ -39,6 +39,7 @@ export declare const getTaskDetailOutputSchema: z.ZodDiscriminatedUnion<[z.ZodOb
39
39
  operationId: z.ZodString;
40
40
  workflowId: z.ZodOptional<z.ZodString>;
41
41
  workflowExecutionToken: z.ZodOptional<z.ZodString>;
42
+ workflowRevision: z.ZodOptional<z.ZodString>;
42
43
  workflowType: z.ZodString;
43
44
  activityName: z.ZodString;
44
45
  queue: z.ZodString;
@@ -77,6 +78,7 @@ export declare const getTaskDetailOutputSchema: z.ZodDiscriminatedUnion<[z.ZodOb
77
78
  operationId: z.ZodString;
78
79
  workflowId: z.ZodOptional<z.ZodString>;
79
80
  workflowExecutionToken: z.ZodOptional<z.ZodString>;
81
+ workflowRevision: z.ZodOptional<z.ZodString>;
80
82
  workflowType: z.ZodString;
81
83
  activityName: z.ZodString;
82
84
  queue: z.ZodString;
@@ -120,6 +122,7 @@ export declare const getTaskDetailOutputSchema: z.ZodDiscriminatedUnion<[z.ZodOb
120
122
  operationId: z.ZodString;
121
123
  workflowId: z.ZodOptional<z.ZodString>;
122
124
  workflowExecutionToken: z.ZodOptional<z.ZodString>;
125
+ workflowRevision: z.ZodOptional<z.ZodString>;
123
126
  workflowType: z.ZodString;
124
127
  activityName: z.ZodString;
125
128
  queue: z.ZodString;
@@ -160,6 +163,7 @@ export declare const getTaskDetailOutputSchema: z.ZodDiscriminatedUnion<[z.ZodOb
160
163
  operationId: z.ZodString;
161
164
  workflowId: z.ZodOptional<z.ZodString>;
162
165
  workflowExecutionToken: z.ZodOptional<z.ZodString>;
166
+ workflowRevision: z.ZodOptional<z.ZodString>;
163
167
  workflowType: z.ZodString;
164
168
  activityName: z.ZodString;
165
169
  queue: z.ZodString;
@@ -200,6 +204,7 @@ export declare const getTaskDetailOutputSchema: z.ZodDiscriminatedUnion<[z.ZodOb
200
204
  operationId: z.ZodString;
201
205
  workflowId: z.ZodOptional<z.ZodString>;
202
206
  workflowExecutionToken: z.ZodOptional<z.ZodString>;
207
+ workflowRevision: z.ZodOptional<z.ZodString>;
203
208
  workflowType: z.ZodString;
204
209
  activityName: z.ZodString;
205
210
  queue: z.ZodString;
@@ -235,6 +240,7 @@ export declare const getTaskDetailOutputSchema: z.ZodDiscriminatedUnion<[z.ZodOb
235
240
  operationId: z.ZodString;
236
241
  workflowId: z.ZodOptional<z.ZodString>;
237
242
  workflowExecutionToken: z.ZodOptional<z.ZodString>;
243
+ workflowRevision: z.ZodOptional<z.ZodString>;
238
244
  workflowType: z.ZodString;
239
245
  activityName: z.ZodString;
240
246
  queue: z.ZodString;
@@ -270,6 +276,7 @@ export declare const getTaskDetailOutputSchema: z.ZodDiscriminatedUnion<[z.ZodOb
270
276
  operationId: z.ZodString;
271
277
  workflowId: z.ZodOptional<z.ZodString>;
272
278
  workflowExecutionToken: z.ZodOptional<z.ZodString>;
279
+ workflowRevision: z.ZodOptional<z.ZodString>;
273
280
  workflowType: z.ZodString;
274
281
  activityName: z.ZodString;
275
282
  queue: z.ZodString;
@@ -311,6 +318,7 @@ export declare const getTaskDetailOutputSchema: z.ZodDiscriminatedUnion<[z.ZodOb
311
318
  operationId: z.ZodString;
312
319
  workflowId: z.ZodOptional<z.ZodString>;
313
320
  workflowExecutionToken: z.ZodOptional<z.ZodString>;
321
+ workflowRevision: z.ZodOptional<z.ZodString>;
314
322
  workflowType: z.ZodString;
315
323
  activityName: z.ZodString;
316
324
  queue: z.ZodString;
@@ -23,6 +23,7 @@ const taskDetailBaseFields = {
23
23
  operationId: z.string(),
24
24
  workflowId: z.string().optional(),
25
25
  workflowExecutionToken: z.string().optional(),
26
+ workflowRevision: z.string().optional(),
26
27
  workflowType: z.string(),
27
28
  activityName: z.string(),
28
29
  queue: z.string(),