@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
@@ -18,12 +18,11 @@ function formatSortableStorageTimestamp(timestamp) {
18
18
  var WORKFLOW_CATALOG_KEYS = {
19
19
  catalogEntry: (name, revision) => `catalog-entry:${encodeStorageKeyComponent(name)}:${encodeStorageKeyComponent(revision)}`,
20
20
  catalogEntryPrefix: (name) => `catalog-entry:${encodeStorageKeyComponent(name)}:`,
21
- catalogActive: (name) => `catalog-active:${encodeStorageKeyComponent(name)}`
21
+ catalogActive: (name) => `catalog-active:${encodeStorageKeyComponent(name)}`,
22
+ catalogTombstone: (name, revision) => `catalog-tombstone:${encodeStorageKeyComponent(name)}:${encodeStorageKeyComponent(revision)}`,
23
+ catalogTombstonePrefix: () => `catalog-tombstone:`
22
24
  };
23
25
 
24
- // src/storage/default-scope.ts
25
- var DEFAULT_SCOPE = "default";
26
-
27
26
  // src/storage/derived-operations.ts
28
27
  async function storageHasCore(storage, key) {
29
28
  return await storage.get(key) !== null;
@@ -63,6 +62,20 @@ async function storageDeleteRangeCore(storage, prefix, options) {
63
62
  return operations.length;
64
63
  }
65
64
 
65
+ // src/storage/generation-keys.ts
66
+ var GENERATION_KEYS = {
67
+ workflowGeneration: (workflowId) => `wf-gen:${encodeStorageKeyComponent(workflowId)}`
68
+ };
69
+
70
+ // src/storage/lease-keys.ts
71
+ var LEASE_KEYS = {
72
+ livenessPrefix: () => "liveness:",
73
+ liveness: (instanceId) => `liveness:${encodeStorageKeyComponent(instanceId)}`,
74
+ leasePrefix: () => "lease:",
75
+ leaseEpoch: () => "lease:epoch",
76
+ leaseHolder: () => "lease:holder"
77
+ };
78
+
66
79
  // src/storage/mailbox-keys.ts
67
80
  var MAILBOX_KEYS = {
68
81
  applicationMailbox: (namespace, resourceId) => `appmbx:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(resourceId)}`,
@@ -100,6 +113,117 @@ var OWNERSHIP_CLAIM_KEYS = {
100
113
  ownershipModeMarker: () => "ownership-mode-marker"
101
114
  };
102
115
 
116
+ // src/storage/signal-keys.ts
117
+ var SIGNAL_SORT_CLASS_START = "0";
118
+ var SIGNAL_SORT_CLASS_NORMAL = "1";
119
+ var signalStorageKey = (workflowId, name, id, sortClass) => `sig:${encodeStorageKeyComponent(workflowId)}:${encodeStorageKeyComponent(name)}:${sortClass}:${encodeStorageKeyComponent(id)}`;
120
+ var SIGNAL_KEYS = {
121
+ signal: (workflowId, name, id) => signalStorageKey(workflowId, name, id, SIGNAL_SORT_CLASS_NORMAL),
122
+ startSignal: (workflowId, name, id) => signalStorageKey(workflowId, name, id, SIGNAL_SORT_CLASS_START),
123
+ signalSequence: (workflowId) => `sigseq:v1:${encodeStorageKeyComponent(workflowId)}`,
124
+ signalAcceptedResponsePrefix: (workflowId) => `sigres:v1:${encodeStorageKeyComponent(workflowId)}:`,
125
+ signalAcceptedResponse: (workflowId, name, signalId) => `sigres:v1:${encodeStorageKeyComponent(workflowId)}:${encodeStorageKeyComponent(name)}:${encodeStorageKeyComponent(signalId)}`
126
+ };
127
+
128
+ // src/storage/default-scope.ts
129
+ var DEFAULT_SCOPE = "default";
130
+
131
+ // src/storage/workflow-lifecycle-keys.ts
132
+ var formatSortableTimestamp = formatSortableStorageTimestamp;
133
+ var WORKFLOW_LIFECYCLE_KEYS_CORE = {
134
+ deadline: (deadline, workflowId) => `wf-deadline:${formatSortableTimestamp(deadline)}:${encodeStorageKeyComponent(workflowId)}`,
135
+ terminalCleanup: (fireAt, timerId) => `wf-cleanup:${formatSortableTimestamp(fireAt)}:${encodeStorageKeyComponent(timerId)}`,
136
+ teardownTimer: (fireAt, timerId) => `wf-teardown:${formatSortableTimestamp(fireAt)}:${encodeStorageKeyComponent(timerId)}`,
137
+ delayedStart: (startAt, workflowId) => `wf-delayed:${formatSortableTimestamp(startAt)}:${encodeStorageKeyComponent(workflowId)}`,
138
+ terminalWorkflowPrefix: () => "wf-terminal:",
139
+ terminalWorkflow: (updatedAt, workflowId) => `wf-terminal:${formatSortableTimestamp(updatedAt)}:${encodeStorageKeyComponent(workflowId)}`
140
+ };
141
+ var WORKFLOW_LIFECYCLE_KEYS_EXTENDED = {
142
+ budget: (namespace, period, date) => `budget:${namespace}:${period}:${date}`,
143
+ review: (workflowId, reviewId) => `review:${encodeStorageKeyComponent(workflowId)}:${reviewId}`,
144
+ workflowHeaders: (workflowId) => `wf-headers:${encodeStorageKeyComponent(workflowId)}`,
145
+ childCancellationPrefix: (workflowId) => `child-cancel:${encodeStorageKeyComponent(workflowId)}:`,
146
+ childCancellation: (workflowId, childWorkflowId) => `child-cancel:${encodeStorageKeyComponent(workflowId)}:${encodeStorageKeyComponent(childWorkflowId)}`,
147
+ childWorkflowByParentPrefix: (parentWorkflowId, parentWorkflowExecutionToken) => `child-by-parent:${encodeStorageKeyComponent(parentWorkflowId)}:${parentWorkflowExecutionToken === undefined ? "" : `${encodeStorageKeyComponent(parentWorkflowExecutionToken)}:`}`,
148
+ childWorkflowByParent: (parentWorkflowId, parentWorkflowExecutionToken, childWorkflowId) => `child-by-parent:${encodeStorageKeyComponent(parentWorkflowId)}:${parentWorkflowExecutionToken === undefined ? "" : `${encodeStorageKeyComponent(parentWorkflowExecutionToken)}:`}${encodeStorageKeyComponent(childWorkflowId)}`,
149
+ terminalCleanupNeeded: (workflowId) => `wf-cleanup-needed:${encodeStorageKeyComponent(workflowId)}`,
150
+ workflowConcurrency: (workflowType, partitionKey) => `wf-concurrency:${encodeStorageKeyComponent(workflowType)}:${encodeStorageKeyComponent(partitionKey)}`,
151
+ workflowConcurrencyHolder: (workflowId) => `wf-concurrency-holder:${encodeStorageKeyComponent(workflowId)}`,
152
+ workflowHasServices: (workflowId) => `wf-has-services:${encodeStorageKeyComponent(workflowId)}`,
153
+ finalizerState: (workflowId) => `wf-finalizer-state:${encodeStorageKeyComponent(workflowId)}`,
154
+ teardownOwed: (workflowId) => `wf-teardown-needed:${encodeStorageKeyComponent(workflowId)}`,
155
+ teardownSucceeded: (workflowId) => `wf-teardown-succeeded:${encodeStorageKeyComponent(workflowId)}`,
156
+ teardownDeadLetter: (workflowId) => `wf-teardown-deadletter:${encodeStorageKeyComponent(workflowId)}`,
157
+ offload: (workflowId, key) => `offload:${encodeStorageKeyComponent(workflowId)}:${key}`,
158
+ archive: (workflowId, key) => `archive:${encodeStorageKeyComponent(workflowId)}:${key}`,
159
+ stateExecution: (ownerWorkflowId, key) => `state:execution:${encodeStorageKeyComponent(ownerWorkflowId)}:${encodeStorageKeyComponent(key)}`,
160
+ stateWorkflow: (workflowType, key) => `state:workflow-scope:${DEFAULT_SCOPE}:${encodeStorageKeyComponent(workflowType)}:${encodeStorageKeyComponent(key)}`,
161
+ streamChunkPrefix: (workflowId, key) => `blob:${encodeStorageKeyComponent(workflowId)}:${key}:chunk:`,
162
+ streamChunk: (workflowId, key, chunkIndex) => `blob:${encodeStorageKeyComponent(workflowId)}:${key}:chunk:${String(chunkIndex).padStart(10, "0")}`,
163
+ streamTail: (workflowId, key) => `blob:${encodeStorageKeyComponent(workflowId)}:${key}:tail`,
164
+ streamMetadata: (workflowId, key) => `blob:${encodeStorageKeyComponent(workflowId)}:${key}:meta`,
165
+ budgetCharged: (operationId) => `budget-charged:${operationId}`,
166
+ toolEffect: (workflowId, agentId, semanticHash) => `tool-effect:${encodeStorageKeyComponent(workflowId)}:${agentId}:${semanticHash}`,
167
+ workflowVisibilityStatus: (status, workflowId) => `wf-idx-status:${encodeStorageKeyComponent(status)}:${encodeStorageKeyComponent(workflowId)}`,
168
+ workflowVisibilityType: (type, workflowId) => `wf-idx-type:${encodeStorageKeyComponent(type)}:${encodeStorageKeyComponent(workflowId)}`,
169
+ workflowVisibilityCreated: (createdAt, workflowId) => `wf-idx-created:${formatSortableTimestamp(createdAt)}:${encodeStorageKeyComponent(workflowId)}`,
170
+ workflowVisibilityUpdated: (updatedAt, workflowId) => `wf-idx-updated:${formatSortableTimestamp(updatedAt)}:${encodeStorageKeyComponent(workflowId)}`,
171
+ workflowVisibilityDeadline: (deadline, workflowId) => `wf-idx-deadline:${formatSortableTimestamp(deadline)}:${encodeStorageKeyComponent(workflowId)}`,
172
+ workflowVisibilityManifest: (workflowId) => `wf-idx-manifest:${encodeStorageKeyComponent(workflowId)}`,
173
+ workflowVisibilityMetaVersion: () => "wf-idx-meta:version",
174
+ workflowVisibilityMetaBuiltAt: () => "wf-idx-meta:built-at",
175
+ workflowVisibilityMetaCursor: () => "wf-idx-meta:cursor"
176
+ };
177
+
178
+ // src/storage/workflow-record-keys.ts
179
+ var formatSortableTimestamp2 = formatSortableStorageTimestamp;
180
+ var WORKFLOW_RECORD_KEYS_CORE = {
181
+ workflow: (id) => `wf:${encodeStorageKeyComponent(id)}`,
182
+ checkpoint: (id) => `wf:${encodeStorageKeyComponent(id)}:ckpt`,
183
+ checkpointHistory: (id, step) => `wf:${encodeStorageKeyComponent(id)}:ckpt:${String(step).padStart(10, "0")}`,
184
+ timelinePrefix: (id) => `wf:${encodeStorageKeyComponent(id)}:timeline:`,
185
+ timeline: (id, step) => `wf:${encodeStorageKeyComponent(id)}:timeline:${String(step).padStart(10, "0")}`,
186
+ schedule: (id) => `schedule:${encodeStorageKeyComponent(id)}`,
187
+ scheduleTick: (fireAt, id) => `schedule-due:${String(fireAt).padStart(16, "0")}:${encodeStorageKeyComponent(id)}`,
188
+ scheduleRun: (workflowId) => `schedule-run:${encodeStorageKeyComponent(workflowId)}`,
189
+ scheduleRunLink: (workflowId) => `schedule-run-link:${encodeStorageKeyComponent(workflowId)}`,
190
+ scheduleRunBySchedulePrefix: (scheduleId) => `schedule-run-by-schedule:${encodeStorageKeyComponent(scheduleId)}:`,
191
+ scheduleRunBySchedule: (scheduleId, workflowId) => `schedule-run-by-schedule:${encodeStorageKeyComponent(scheduleId)}:${encodeStorageKeyComponent(workflowId)}`,
192
+ operation: (queue, scheduledAt, id) => `op:${queue}:${formatSortableTimestamp2(scheduledAt)}:${id}`,
193
+ operationInflight: (id) => `op:inflight:${id}`,
194
+ operationQueued: (id) => `op:queued:${id}`,
195
+ operationResolved: (id) => `op:resolved:${id}`,
196
+ bulkOperationAuditPrefix: () => "audit:bulk:",
197
+ bulkOperationAudit: (timestamp, requestId, confirmationToken) => `audit:bulk:${formatSortableTimestamp2(timestamp)}:${encodeStorageKeyComponent(requestId)}:${encodeStorageKeyComponent(confirmationToken)}`,
198
+ operationResolvedByTimePrefix: () => "op:resolved-by-time:",
199
+ operationResolvedByTime: (resolvedAt, id) => `op:resolved-by-time:${formatSortableTimestamp2(resolvedAt)}:${encodeStorageKeyComponent(id)}`,
200
+ asyncActivity: (workflowId, token) => `async-act:v1:${encodeStorageKeyComponent(workflowId)}:${encodeStorageKeyComponent(token)}`,
201
+ asyncActivityResolution: (workflowId, token) => `async-act:v1:${encodeStorageKeyComponent(workflowId)}:${encodeStorageKeyComponent(token)}:resolution`,
202
+ activityReconciliationPrefix: (workflowId) => `actrec:v1:${encodeStorageKeyComponent(workflowId)}:`,
203
+ activityReconciliation: (workflowId, activityName, idempotencyKeyDigest) => `actrec:v1:${encodeStorageKeyComponent(workflowId)}:${encodeStorageKeyComponent(activityName)}:${idempotencyKeyDigest}`,
204
+ eventPrefix: (workflowId) => `ev:${encodeStorageKeyComponent(workflowId)}:`,
205
+ event: (workflowId, sequence) => `ev:${encodeStorageKeyComponent(workflowId)}:${String(sequence).padStart(10, "0")}`,
206
+ eventHead: (workflowId) => `ev:${encodeStorageKeyComponent(workflowId)}:head`,
207
+ eventWatermark: (workflowId) => `ev:${encodeStorageKeyComponent(workflowId)}:watermark`,
208
+ fleetEventPrefix: () => "fleet-event:",
209
+ fleetEvent: (sequence) => `fleet-event:${String(sequence).padStart(10, "0")}`,
210
+ fleetEventTail: () => "fleet-event-tail",
211
+ fleetEventWatermark: () => "fleet-event-watermark",
212
+ fleetEventByWorkflowPrefix: (workflowId) => `fleet-event-by-workflow:${encodeStorageKeyComponent(workflowId)}:`,
213
+ fleetEventByWorkflow: (workflowId, sequence) => `fleet-event-by-workflow:${encodeStorageKeyComponent(workflowId)}:${String(sequence).padStart(10, "0")}`
214
+ };
215
+ var WORKFLOW_RECORD_KEYS_EXTENDED = {
216
+ attribute: (workflowId) => `attr:${encodeStorageKeyComponent(workflowId)}`,
217
+ attributeIndex: (attributeName, encodedValue, workflowId) => `idx:${attributeName}:${encodedValue}:${encodeStorageKeyComponent(workflowId)}`,
218
+ tagIndex: (tag, workflowId) => `tag:${encodeStorageKeyComponent(tag)}:${encodeStorageKeyComponent(workflowId)}`,
219
+ updatePrefix: (workflowId) => `upd:${encodeStorageKeyComponent(workflowId)}:`,
220
+ update: (workflowId, updateId) => `upd:${encodeStorageKeyComponent(workflowId)}:${updateId}`,
221
+ updateResponse: (updateId) => `upr:${updateId}`,
222
+ updateIdempotency: (workflowId, key) => `upk:${encodeStorageKeyComponent(workflowId)}:${key}`,
223
+ startIdempotency: (key) => `start-idem:${encodeStorageKeyComponent(key)}`,
224
+ startIdempotencySignalId: (key) => `start-idem:${key}`
225
+ };
226
+
103
227
  // src/storage/interface.ts
104
228
  var MAX_BATCH_OPERATIONS = 1e4;
105
229
  class StorageBatchOperationLimitExceededError extends Error {
@@ -169,107 +293,18 @@ async function storageConditionalBatch(storage, conditions, operations) {
169
293
  }
170
294
  return storage.conditionalBatch(conditions, operations);
171
295
  }
172
- var formatSortableTimestamp = formatSortableStorageTimestamp;
173
- var SIGNAL_SORT_CLASS_START = "0";
174
- var SIGNAL_SORT_CLASS_NORMAL = "1";
175
- var signalStorageKey = (workflowId, name, id, sortClass) => `sig:${encodeStorageKeyComponent(workflowId)}:${encodeStorageKeyComponent(name)}:${sortClass}:${encodeStorageKeyComponent(id)}`;
176
296
  var KEYS = {
177
- workflow: (id) => `wf:${encodeStorageKeyComponent(id)}`,
178
- checkpoint: (id) => `wf:${encodeStorageKeyComponent(id)}:ckpt`,
179
- checkpointHistory: (id, step) => `wf:${encodeStorageKeyComponent(id)}:ckpt:${String(step).padStart(10, "0")}`,
180
- timelinePrefix: (id) => `wf:${encodeStorageKeyComponent(id)}:timeline:`,
181
- timeline: (id, step) => `wf:${encodeStorageKeyComponent(id)}:timeline:${String(step).padStart(10, "0")}`,
182
- schedule: (id) => `schedule:${encodeStorageKeyComponent(id)}`,
183
- scheduleTick: (fireAt, id) => `schedule-due:${String(fireAt).padStart(16, "0")}:${encodeStorageKeyComponent(id)}`,
184
- scheduleRun: (workflowId) => `schedule-run:${encodeStorageKeyComponent(workflowId)}`,
185
- scheduleRunLink: (workflowId) => `schedule-run-link:${encodeStorageKeyComponent(workflowId)}`,
186
- scheduleRunBySchedulePrefix: (scheduleId) => `schedule-run-by-schedule:${encodeStorageKeyComponent(scheduleId)}:`,
187
- scheduleRunBySchedule: (scheduleId, workflowId) => `schedule-run-by-schedule:${encodeStorageKeyComponent(scheduleId)}:${encodeStorageKeyComponent(workflowId)}`,
188
- operation: (queue, scheduledAt, id) => `op:${queue}:${formatSortableTimestamp(scheduledAt)}:${id}`,
189
- operationInflight: (id) => `op:inflight:${id}`,
190
- operationQueued: (id) => `op:queued:${id}`,
191
- operationResolved: (id) => `op:resolved:${id}`,
192
- bulkOperationAuditPrefix: () => "audit:bulk:",
193
- bulkOperationAudit: (timestamp, requestId, confirmationToken) => `audit:bulk:${formatSortableTimestamp(timestamp)}:${encodeStorageKeyComponent(requestId)}:${encodeStorageKeyComponent(confirmationToken)}`,
194
- operationResolvedByTimePrefix: () => "op:resolved-by-time:",
195
- operationResolvedByTime: (resolvedAt, id) => `op:resolved-by-time:${formatSortableTimestamp(resolvedAt)}:${encodeStorageKeyComponent(id)}`,
196
- asyncActivity: (workflowId, token) => `async-act:v1:${encodeStorageKeyComponent(workflowId)}:${encodeStorageKeyComponent(token)}`,
197
- asyncActivityResolution: (workflowId, token) => `async-act:v1:${encodeStorageKeyComponent(workflowId)}:${encodeStorageKeyComponent(token)}:resolution`,
198
- activityReconciliationPrefix: (workflowId) => `actrec:v1:${encodeStorageKeyComponent(workflowId)}:`,
199
- activityReconciliation: (workflowId, activityName, idempotencyKeyDigest) => `actrec:v1:${encodeStorageKeyComponent(workflowId)}:${encodeStorageKeyComponent(activityName)}:${idempotencyKeyDigest}`,
200
- eventPrefix: (workflowId) => `ev:${encodeStorageKeyComponent(workflowId)}:`,
201
- event: (workflowId, sequence) => `ev:${encodeStorageKeyComponent(workflowId)}:${String(sequence).padStart(10, "0")}`,
202
- eventHead: (workflowId) => `ev:${encodeStorageKeyComponent(workflowId)}:head`,
203
- eventWatermark: (workflowId) => `ev:${encodeStorageKeyComponent(workflowId)}:watermark`,
204
- fleetEventPrefix: () => "fleet-event:",
205
- fleetEvent: (sequence) => `fleet-event:${String(sequence).padStart(10, "0")}`,
206
- fleetEventTail: () => "fleet-event-tail",
207
- fleetEventWatermark: () => "fleet-event-watermark",
208
- fleetEventByWorkflowPrefix: (workflowId) => `fleet-event-by-workflow:${encodeStorageKeyComponent(workflowId)}:`,
209
- fleetEventByWorkflow: (workflowId, sequence) => `fleet-event-by-workflow:${encodeStorageKeyComponent(workflowId)}:${String(sequence).padStart(10, "0")}`,
210
- signal: (workflowId, name, id) => signalStorageKey(workflowId, name, id, SIGNAL_SORT_CLASS_NORMAL),
211
- startSignal: (workflowId, name, id) => signalStorageKey(workflowId, name, id, SIGNAL_SORT_CLASS_START),
212
- signalSequence: (workflowId) => `sigseq:v1:${encodeStorageKeyComponent(workflowId)}`,
213
- signalAcceptedResponsePrefix: (workflowId) => `sigres:v1:${encodeStorageKeyComponent(workflowId)}:`,
214
- signalAcceptedResponse: (workflowId, name, signalId) => `sigres:v1:${encodeStorageKeyComponent(workflowId)}:${encodeStorageKeyComponent(name)}:${encodeStorageKeyComponent(signalId)}`,
215
- deadline: (deadline, workflowId) => `wf-deadline:${formatSortableTimestamp(deadline)}:${encodeStorageKeyComponent(workflowId)}`,
216
- terminalCleanup: (fireAt, timerId) => `wf-cleanup:${formatSortableTimestamp(fireAt)}:${encodeStorageKeyComponent(timerId)}`,
217
- teardownTimer: (fireAt, timerId) => `wf-teardown:${formatSortableTimestamp(fireAt)}:${encodeStorageKeyComponent(timerId)}`,
218
- delayedStart: (startAt, workflowId) => `wf-delayed:${formatSortableTimestamp(startAt)}:${encodeStorageKeyComponent(workflowId)}`,
219
- terminalWorkflowPrefix: () => "wf-terminal:",
220
- terminalWorkflow: (updatedAt, workflowId) => `wf-terminal:${formatSortableTimestamp(updatedAt)}:${encodeStorageKeyComponent(workflowId)}`,
221
- attribute: (workflowId) => `attr:${encodeStorageKeyComponent(workflowId)}`,
222
- attributeIndex: (attributeName, encodedValue, workflowId) => `idx:${attributeName}:${encodedValue}:${encodeStorageKeyComponent(workflowId)}`,
223
- tagIndex: (tag, workflowId) => `tag:${encodeStorageKeyComponent(tag)}:${encodeStorageKeyComponent(workflowId)}`,
224
- updatePrefix: (workflowId) => `upd:${encodeStorageKeyComponent(workflowId)}:`,
225
- update: (workflowId, updateId) => `upd:${encodeStorageKeyComponent(workflowId)}:${updateId}`,
226
- updateResponse: (updateId) => `upr:${updateId}`,
227
- updateIdempotency: (workflowId, key) => `upk:${encodeStorageKeyComponent(workflowId)}:${key}`,
228
- startIdempotency: (key) => `start-idem:${encodeStorageKeyComponent(key)}`,
229
- startIdempotencySignalId: (key) => `start-idem:${key}`,
230
- livenessPrefix: () => "liveness:",
231
- liveness: (instanceId) => `liveness:${encodeStorageKeyComponent(instanceId)}`,
232
- leasePrefix: () => "lease:",
233
- leaseEpoch: () => "lease:epoch",
234
- leaseHolder: () => "lease:holder",
297
+ ...WORKFLOW_RECORD_KEYS_CORE,
298
+ ...SIGNAL_KEYS,
299
+ ...WORKFLOW_LIFECYCLE_KEYS_CORE,
300
+ ...WORKFLOW_RECORD_KEYS_EXTENDED,
301
+ ...LEASE_KEYS,
235
302
  ...MAILBOX_KEYS,
236
303
  ...OUTBOX_KEYS,
237
304
  ...OWNERSHIP_CLAIM_KEYS,
238
305
  ...WORKFLOW_CATALOG_KEYS,
239
- budget: (namespace, period, date) => `budget:${namespace}:${period}:${date}`,
240
- review: (workflowId, reviewId) => `review:${encodeStorageKeyComponent(workflowId)}:${reviewId}`,
241
- workflowHeaders: (workflowId) => `wf-headers:${encodeStorageKeyComponent(workflowId)}`,
242
- childCancellationPrefix: (workflowId) => `child-cancel:${encodeStorageKeyComponent(workflowId)}:`,
243
- childCancellation: (workflowId, childWorkflowId) => `child-cancel:${encodeStorageKeyComponent(workflowId)}:${encodeStorageKeyComponent(childWorkflowId)}`,
244
- childWorkflowByParentPrefix: (parentWorkflowId, parentWorkflowExecutionToken) => `child-by-parent:${encodeStorageKeyComponent(parentWorkflowId)}:${parentWorkflowExecutionToken === undefined ? "" : `${encodeStorageKeyComponent(parentWorkflowExecutionToken)}:`}`,
245
- childWorkflowByParent: (parentWorkflowId, parentWorkflowExecutionToken, childWorkflowId) => `child-by-parent:${encodeStorageKeyComponent(parentWorkflowId)}:${parentWorkflowExecutionToken === undefined ? "" : `${encodeStorageKeyComponent(parentWorkflowExecutionToken)}:`}${encodeStorageKeyComponent(childWorkflowId)}`,
246
- terminalCleanupNeeded: (workflowId) => `wf-cleanup-needed:${encodeStorageKeyComponent(workflowId)}`,
247
- workflowConcurrency: (workflowType, partitionKey) => `wf-concurrency:${encodeStorageKeyComponent(workflowType)}:${encodeStorageKeyComponent(partitionKey)}`,
248
- workflowConcurrencyHolder: (workflowId) => `wf-concurrency-holder:${encodeStorageKeyComponent(workflowId)}`,
249
- workflowHasServices: (workflowId) => `wf-has-services:${encodeStorageKeyComponent(workflowId)}`,
250
- finalizerState: (workflowId) => `wf-finalizer-state:${encodeStorageKeyComponent(workflowId)}`,
251
- teardownOwed: (workflowId) => `wf-teardown-needed:${encodeStorageKeyComponent(workflowId)}`,
252
- teardownSucceeded: (workflowId) => `wf-teardown-succeeded:${encodeStorageKeyComponent(workflowId)}`,
253
- teardownDeadLetter: (workflowId) => `wf-teardown-deadletter:${encodeStorageKeyComponent(workflowId)}`,
254
- offload: (workflowId, key) => `offload:${encodeStorageKeyComponent(workflowId)}:${key}`,
255
- archive: (workflowId, key) => `archive:${encodeStorageKeyComponent(workflowId)}:${key}`,
256
- stateExecution: (ownerWorkflowId, key) => `state:execution:${encodeStorageKeyComponent(ownerWorkflowId)}:${encodeStorageKeyComponent(key)}`,
257
- stateWorkflow: (workflowType, key) => `state:workflow-scope:${DEFAULT_SCOPE}:${encodeStorageKeyComponent(workflowType)}:${encodeStorageKeyComponent(key)}`,
258
- streamChunkPrefix: (workflowId, key) => `blob:${encodeStorageKeyComponent(workflowId)}:${key}:chunk:`,
259
- streamChunk: (workflowId, key, chunkIndex) => `blob:${encodeStorageKeyComponent(workflowId)}:${key}:chunk:${String(chunkIndex).padStart(10, "0")}`,
260
- streamTail: (workflowId, key) => `blob:${encodeStorageKeyComponent(workflowId)}:${key}:tail`,
261
- streamMetadata: (workflowId, key) => `blob:${encodeStorageKeyComponent(workflowId)}:${key}:meta`,
262
- budgetCharged: (operationId) => `budget-charged:${operationId}`,
263
- toolEffect: (workflowId, agentId, semanticHash) => `tool-effect:${encodeStorageKeyComponent(workflowId)}:${agentId}:${semanticHash}`,
264
- workflowVisibilityStatus: (status, workflowId) => `wf-idx-status:${encodeStorageKeyComponent(status)}:${encodeStorageKeyComponent(workflowId)}`,
265
- workflowVisibilityType: (type, workflowId) => `wf-idx-type:${encodeStorageKeyComponent(type)}:${encodeStorageKeyComponent(workflowId)}`,
266
- workflowVisibilityCreated: (createdAt, workflowId) => `wf-idx-created:${formatSortableTimestamp(createdAt)}:${encodeStorageKeyComponent(workflowId)}`,
267
- workflowVisibilityUpdated: (updatedAt, workflowId) => `wf-idx-updated:${formatSortableTimestamp(updatedAt)}:${encodeStorageKeyComponent(workflowId)}`,
268
- workflowVisibilityDeadline: (deadline, workflowId) => `wf-idx-deadline:${formatSortableTimestamp(deadline)}:${encodeStorageKeyComponent(workflowId)}`,
269
- workflowVisibilityManifest: (workflowId) => `wf-idx-manifest:${encodeStorageKeyComponent(workflowId)}`,
270
- workflowVisibilityMetaVersion: () => "wf-idx-meta:version",
271
- workflowVisibilityMetaBuiltAt: () => "wf-idx-meta:built-at",
272
- workflowVisibilityMetaCursor: () => "wf-idx-meta:cursor"
306
+ ...GENERATION_KEYS,
307
+ ...WORKFLOW_LIFECYCLE_KEYS_EXTENDED
273
308
  };
274
309
 
275
310
  // src/storage/conditional-batch-body.ts
@@ -1,8 +1,8 @@
1
1
  // @bun
2
- var ge=import.meta.require;function h(e,t,r){if(!e.capabilities()[t])throw Error(`Feature "${r}" requires storage capability "${t}", but this storage backend does not provide it.`)}function ce(e){let t=e.capabilities(),r=[];if(t.persistence!=="local"&&t.persistence!=="remote")r.push(`persistence must be "local" or "remote" (got "${t.persistence}")`);if(t.readAfterWrite!=="linearizable")r.push(`readAfterWrite must be "linearizable" (got "${t.readAfterWrite}")`);if(t.scanConsistency!=="snapshot")r.push(`scanConsistency must be "snapshot" (got "${t.scanConsistency}")`);if(!t.atomicBatch)r.push("atomicBatch must be true");if(!t.conditionalBatch)r.push("conditionalBatch must be true");if(r.length>0)throw Error(`Storage is not durable enough for recovery: ${r.join("; ")}.`)}function n(e){return encodeURIComponent(e)}function de(e){return decodeURIComponent(e)}function pe(e){try{return decodeURIComponent(e)}catch{return null}}function u(e){return String(e).padStart(16,"0")}var B={catalogEntry:(e,t)=>`catalog-entry:${n(e)}:${n(t)}`,catalogEntryPrefix:(e)=>`catalog-entry:${n(e)}:`,catalogActive:(e)=>`catalog-active:${n(e)}`};var w="default";async function k(e,t){return await e.get(t)!==null}async function*d(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 d(e,t))r++;return r}async function T(e,t){let r=[];for await(let i of d(e,t))r.push({type:"delete",key:i});if(r.length===0)return 0;return await e.batch(r),r.length}async function D(e,t,r){let i=[];for await(let s of d(e,t,r))i.push({type:"delete",key:s});if(i.length===0)return 0;return await e.batch(i),i.length}var L={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)}:${u(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)}:${u(r)}`,applicationCommandTerminalPrefix:(e,t)=>`appterm:v1:${n(e)}:${n(t)}:`,applicationCommandTerminal:(e,t,r,i)=>`appterm:v1:${n(e)}:${n(t)}:${u(r)}:${n(i)}`};var I={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)}:${u(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)}:${u(r)}`,applicationDeliveryTerminalPrefix:(e,t)=>`appdterm:v1:${n(e)}:${n(t)}:`,applicationDeliveryTerminal:(e,t,r,i)=>`appdterm:v1:${n(e)}:${n(t)}:${u(r)}:${n(i)}`};var K={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${n(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${n(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var ye=["actrec:","appcmd:","appdidem:","appdlv:","appdseq:","appdterm:","appdue:","appidem:","appmbx:","appobx:","appprobe:","appready:","appseq:","appterm:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","catalog-active:","catalog-entry:","child-by-parent:","ev:","fleet-event-by-workflow:","fleet-event:","fleet-event-tail","fleet-event-watermark","idx:","lease:","liveness:","offload:","ownership-mode-marker","op:","review:","schedule:","schedule-due:","schedule-run-by-schedule:","schedule-run-link:","schedule-run:","sig:","sigres:","sigseq:","start-idem:","state:","tag:","tool-effect:","upd:","upk:","upr:","wf:","wf-cleanup:","wf-cleanup-needed:","wf-concurrency:","wf-concurrency-holder:","wf-deadline:","wf-delayed:","wf-finalizer-state:","wf-has-services:","wf-headers:","wf-idx-","wf-owner-epoch:","wf-owner-holder:","wf-teardown:","wf-teardown-deadletter:","wf-teardown-needed:","wf-teardown-succeeded:","wf-terminal:"];var P=1e4,Je=1e4;class _ extends Error{code="StorageBatchOperationLimitExceededError";cap=P;count;target;constructor(e,t){super(`${e} count ${t} exceeds MAX_BATCH_OPERATIONS (${P}).`);this.name="StorageBatchOperationLimitExceededError",this.target=e,this.count=t}}function c(e,t){if(t>P)throw new _(e,t)}function q(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"\xFF"}function et(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 V(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 M(e,t){if(e.has)return e.has(t);return k(e,t)}function U(e,t,r){if(e.keys)return e.keys(t,r);return d(e,t,r)}async function z(e,t){if(e.count)return e.count(t);return A(e,t)}async function F(e,t){if(e.deletePrefix)return e.deletePrefix(t);return T(e,t)}async function tt(e,t){c("batch operations",t.length),await e.batch(t)}async function G(e,t,r){if(c("conditionalBatch conditions",t.length),c("conditionalBatch operations",r.length),h(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 g=u,fe="0",me="1",N=(e,t,r,i)=>`sig:${n(e)}:${n(t)}:${i}:${n(r)}`,rt={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}:${g(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:${g(e)}:${n(t)}:${n(r)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(e,t)=>`op:resolved-by-time:${g(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)=>N(e,t,r,me),startSignal:(e,t,r)=>N(e,t,r,fe),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:${g(e)}:${n(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${g(e)}:${n(t)}`,teardownTimer:(e,t)=>`wf-teardown:${g(e)}:${n(t)}`,delayedStart:(e,t)=>`wf-delayed:${g(e)}:${n(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${g(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",...L,...I,...K,...B,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:${w}:${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:${g(e)}:${n(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${g(e)}:${n(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${g(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 he(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 s of["gt","gte","lt","lte"]){let o=e[s];if(o===void 0)continue;if(typeof o!=="string")throw Error("deleteRange bounds must be strings");t[s]=o,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=he(e.limit);if(i!==void 0)t.limit=i;return t}async function W(e,t,r){let i=p(r);if(e.deleteRange)return e.deleteRange(t,i);return D(e,t,i)}function S(e){return e.replaceAll(/:+$/g,"")}function $e(e,t){let r=S(e),i=S(t);if(r.length===0)return i;if(i.length===0)return r;return`${r}:${i}`}class b{#e;#t;constructor(e,t){this.#e=e,this.#t=S(t)}#r(e){if(this.#t.length===0)return e;return e.length===0?`${this.#t}:`:`${this.#t}:${e}`}#i(e){return e.map((t)=>{if(t.type==="put")return{type:"put",key:this.#r(t.key),value:t.value};return{type:"delete",key:this.#r(t.key)}})}#o(e){if(this.#t.length===0)return e;return e.slice(this.#t.length+1)}#s(e){let t={};if(e.limit!==void 0)t.limit=e.limit;if(e.gt!==void 0)t.gt=this.#r(e.gt);if(e.gte!==void 0)t.gte=this.#r(e.gte);if(e.lt!==void 0)t.lt=this.#r(e.lt);if(e.lte!==void 0)t.lte=this.#r(e.lte);return t}#n(e={}){let t=this.#s(e);if(e.reverse!==void 0)t.reverse=e.reverse;return t}#a(e){return this.#s(e)}capabilities(){return this.#e.capabilities()}scoped(e){return new b(this.#e,$e(this.#t,e))}async get(e){return this.#e.get(this.#r(e))}async put(e,t){await this.#e.put(this.#r(e),t)}async delete(e){await this.#e.delete(this.#r(e))}async*scan(e,t){for await(let[r,i]of this.#e.scan(this.#r(e),this.#n(t)))yield[this.#o(r),i]}async batch(e){c("batch operations",e.length),await this.#e.batch(this.#i(e))}async conditionalBatch(e,t){return G(this.#e,e.map((r)=>({key:this.#r(r.key),expectedValue:r.expectedValue})),this.#i(t))}async has(e){return M(this.#e,this.#r(e))}async deletePrefix(e){return F(this.#e,this.#r(e))}async deleteRange(e,t){let r=this.#a(p(t));return W(this.#e,this.#r(e),r)}async*keys(e,t){for await(let r of U(this.#e,this.#r(e),this.#n(t)))yield this.#o(r)}async count(e){return z(this.#e,this.#r(e))}[Symbol.dispose](){this.#e[Symbol.dispose]()}}function H(e,t){return new b(e,t)}function Q(e,t){let r,i,s=!1,o=()=>{if(s)throw Error(`${t.storageName} pool has been disposed and cannot be reused. Construct a new adapter.`);return r??=t.loadPool(e).catch((a)=>{throw r=void 0,Pe(a,t)}),r};return{query:async(a,l)=>(await o()).query(a,l),connect:async()=>(await o()).connect(),end:async()=>(s=!0,i??=(async()=>{if(r===void 0)return;await(await r.catch(()=>{return}))?.end()})(),i)}}var we=/cannot find module|module_not_found|failed to resolve|could not resolve/i;function Pe(e,t){let r=e instanceof Error?e.message:String(e);if(we.test(r))return Error(`${t.storageName} requires the optional peer dependency "${t.driverName}". Install it in your application with: bun add ${t.driverName} (or npm install ${t.driverName}).`,{cause:e});return e instanceof Error?e:Error(r)}function E(e){return e.rowCount??e.affectedRows??e.rows.length}function y(e){if(e instanceof Uint8Array)return new Uint8Array(e);return new Uint8Array(e)}function f(e){return Buffer.from(e)}function O(e){let t=new Map,r=new Set;for(let i of e)if(i.type==="put")r.delete(i.key),t.set(i.key,i.value);else t.delete(i.key),r.add(i.key);return{puts:t,deletes:r}}async function Y(e,t,r){if(r.length===0)return!0;let i=r.map((a)=>a.key),s=await e.query(t.selectValuesByKeys,[i]),o=new Map;for(let a of s.rows){let l=a.value;if(l!==null&&l!==void 0)o.set(a.key,y(l))}for(let a of r){let l=o.get(a.key)??null;if(!V(l,a.expectedValue))return!1}return!0}async function R(e,t,r){if(r.puts.size>0){let i=[],s=[];for(let[o,a]of r.puts)i.push(o),s.push(f(a));await e.query(t.upsertValuesByKeys,[i,s])}if(r.deletes.size>0)await e.query(t.deleteValuesByKeys,[[...r.deletes]])}var X=/^[a-z_][a-z0-9_]*$/i;function Z(e,t,r){if(!X.test(e))throw Error(`${r} storage ${t} name "${e}" is not a valid ${r} identifier. Use only letters, digits, and underscores, starting with a letter or underscore (matching ${X.source}).`)}var j="kv";function v(e,t){Z(e,t,"Postgres")}function ee(e){let{schema:t,table:r}=e;if(t===void 0&&r===void 0)return j;let i=r??j;if(v(i,"table"),t===void 0)return`"${i}"`;return v(t,"schema"),`"${t}"."${i}"`}function m(e){return[e,q(e)]}function te(e,t){let{gt:r,gte:i,lt:s,lte:o}=t,a=m(e),l=["key >= $1 AND key < $2"];if(r!==void 0)a.push(r),l.push(`key > $${a.length}`);if(i!==void 0)a.push(i),l.push(`key >= $${a.length}`);if(s!==void 0)a.push(s),l.push(`key < $${a.length}`);if(o!==void 0)a.push(o),l.push(`key <= $${a.length}`);return{conditions:l,parameters:a}}function J(e,t={}){let{limit:r,reverse:i}=t,{conditions:s,parameters:o}=te(e,t),a=i?"DESC":"ASC",l="";if(r!==void 0)o.push(r),l=` LIMIT $${o.length}`;return{parameters:o,whereOrderLimit:`WHERE ${s.join(" AND ")} ORDER BY key ${a}${l}`}}function re(e){let t=`CREATE TABLE IF NOT EXISTS ${e} (
2
+ var Ee=import.meta.require;function h(e,t,n){if(!e.capabilities()[t])throw Error(`Feature "${n}" requires storage capability "${t}", but this storage backend does not provide it.`)}function Se(e){let t=e.capabilities(),n=[];if(t.persistence!=="local"&&t.persistence!=="remote")n.push(`persistence must be "local" or "remote" (got "${t.persistence}")`);if(t.readAfterWrite!=="linearizable")n.push(`readAfterWrite must be "linearizable" (got "${t.readAfterWrite}")`);if(t.scanConsistency!=="snapshot")n.push(`scanConsistency must be "snapshot" (got "${t.scanConsistency}")`);if(!t.atomicBatch)n.push("atomicBatch must be true");if(!t.conditionalBatch)n.push("conditionalBatch must be true");if(n.length>0)throw Error(`Storage is not durable enough for recovery: ${n.join("; ")}.`)}function r(e){return encodeURIComponent(e)}function $e(e){return decodeURIComponent(e)}function we(e){try{return decodeURIComponent(e)}catch{return null}}function g(e){return String(e).padStart(16,"0")}var k={catalogEntry:(e,t)=>`catalog-entry:${r(e)}:${r(t)}`,catalogEntryPrefix:(e)=>`catalog-entry:${r(e)}:`,catalogActive:(e)=>`catalog-active:${r(e)}`,catalogTombstone:(e,t)=>`catalog-tombstone:${r(e)}:${r(t)}`,catalogTombstonePrefix:()=>"catalog-tombstone:"};async function A(e,t){return await e.get(t)!==null}async function*p(e,t,n){for await(let[i]of e.scan(t,n))yield i}async function L(e,t){let n=0;for await(let i of p(e,t))n++;return n}async function T(e,t){let n=[];for await(let i of p(e,t))n.push({type:"delete",key:i});if(n.length===0)return 0;return await e.batch(n),n.length}async function K(e,t,n){let i=[];for await(let s of p(e,t,n))i.push({type:"delete",key:s});if(i.length===0)return 0;return await e.batch(i),i.length}var _={workflowGeneration:(e)=>`wf-gen:${r(e)}`};var D={livenessPrefix:()=>"liveness:",liveness:(e)=>`liveness:${r(e)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder"};var I={applicationMailbox:(e,t)=>`appmbx:v1:${r(e)}:${r(t)}`,applicationMailboxSinkProbe:(e,t,n)=>`appprobe:v1:${r(e)}:${r(t)}:${r(n)}`,applicationCommandPrefix:(e,t)=>`appcmd:v1:${r(e)}:${r(t)}:`,applicationCommand:(e,t,n)=>`appcmd:v1:${r(e)}:${r(t)}:${r(n)}`,applicationCommandReadyPrefix:(e,t)=>`appready:v1:${r(e)}:${r(t)}:`,applicationCommandReady:(e,t,n)=>`appready:v1:${r(e)}:${r(t)}:${g(n)}`,applicationCommandIdempotency:(e,t,n)=>`appidem:v1:${r(e)}:${r(t)}:${r(n)}`,applicationCommandBySequencePrefix:(e,t)=>`appseq:v1:${r(e)}:${r(t)}:`,applicationCommandBySequence:(e,t,n)=>`appseq:v1:${r(e)}:${r(t)}:${g(n)}`,applicationCommandTerminalPrefix:(e,t)=>`appterm:v1:${r(e)}:${r(t)}:`,applicationCommandTerminal:(e,t,n,i)=>`appterm:v1:${r(e)}:${r(t)}:${g(n)}:${r(i)}`};var N={applicationOutbox:(e,t)=>`appobx:v1:${r(e)}:${r(t)}`,applicationOutboxSinkProbe:(e,t,n)=>`appprobe:v1:outbox:${r(e)}:${r(t)}:${r(n)}`,applicationDeliveryPrefix:(e,t)=>`appdlv:v1:${r(e)}:${r(t)}:`,applicationDelivery:(e,t,n)=>`appdlv:v1:${r(e)}:${r(t)}:${r(n)}`,applicationDeliveryDuePrefix:(e,t)=>`appdue:v1:${r(e)}:${r(t)}:`,applicationDeliveryDue:(e,t,n,i)=>`appdue:v1:${r(e)}:${r(t)}:${g(n)}:${r(i)}`,applicationDeliveryIdempotency:(e,t,n)=>`appdidem:v1:${r(e)}:${r(t)}:${r(n)}`,applicationDeliveryBySequencePrefix:(e,t)=>`appdseq:v1:${r(e)}:${r(t)}:`,applicationDeliveryBySequence:(e,t,n)=>`appdseq:v1:${r(e)}:${r(t)}:${g(n)}`,applicationDeliveryTerminalPrefix:(e,t)=>`appdterm:v1:${r(e)}:${r(t)}:`,applicationDeliveryTerminal:(e,t,n,i)=>`appdterm:v1:${r(e)}:${r(t)}:${g(n)}:${r(i)}`};var q={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${r(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${r(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var Pe="0",be="1",M=(e,t,n,i)=>`sig:${r(e)}:${r(t)}:${i}:${r(n)}`,V={signal:(e,t,n)=>M(e,t,n,be),startSignal:(e,t,n)=>M(e,t,n,Pe),signalSequence:(e)=>`sigseq:v1:${r(e)}`,signalAcceptedResponsePrefix:(e)=>`sigres:v1:${r(e)}:`,signalAcceptedResponse:(e,t,n)=>`sigres:v1:${r(e)}:${r(t)}:${r(n)}`};var E="default";var u=g,W={deadline:(e,t)=>`wf-deadline:${u(e)}:${r(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${u(e)}:${r(t)}`,teardownTimer:(e,t)=>`wf-teardown:${u(e)}:${r(t)}`,delayedStart:(e,t)=>`wf-delayed:${u(e)}:${r(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${u(e)}:${r(t)}`},F={budget:(e,t,n)=>`budget:${e}:${t}:${n}`,review:(e,t)=>`review:${r(e)}:${t}`,workflowHeaders:(e)=>`wf-headers:${r(e)}`,childCancellationPrefix:(e)=>`child-cancel:${r(e)}:`,childCancellation:(e,t)=>`child-cancel:${r(e)}:${r(t)}`,childWorkflowByParentPrefix:(e,t)=>`child-by-parent:${r(e)}:${t===void 0?"":`${r(t)}:`}`,childWorkflowByParent:(e,t,n)=>`child-by-parent:${r(e)}:${t===void 0?"":`${r(t)}:`}${r(n)}`,terminalCleanupNeeded:(e)=>`wf-cleanup-needed:${r(e)}`,workflowConcurrency:(e,t)=>`wf-concurrency:${r(e)}:${r(t)}`,workflowConcurrencyHolder:(e)=>`wf-concurrency-holder:${r(e)}`,workflowHasServices:(e)=>`wf-has-services:${r(e)}`,finalizerState:(e)=>`wf-finalizer-state:${r(e)}`,teardownOwed:(e)=>`wf-teardown-needed:${r(e)}`,teardownSucceeded:(e)=>`wf-teardown-succeeded:${r(e)}`,teardownDeadLetter:(e)=>`wf-teardown-deadletter:${r(e)}`,offload:(e,t)=>`offload:${r(e)}:${t}`,archive:(e,t)=>`archive:${r(e)}:${t}`,stateExecution:(e,t)=>`state:execution:${r(e)}:${r(t)}`,stateWorkflow:(e,t)=>`state:workflow-scope:${E}:${r(e)}:${r(t)}`,streamChunkPrefix:(e,t)=>`blob:${r(e)}:${t}:chunk:`,streamChunk:(e,t,n)=>`blob:${r(e)}:${t}:chunk:${String(n).padStart(10,"0")}`,streamTail:(e,t)=>`blob:${r(e)}:${t}:tail`,streamMetadata:(e,t)=>`blob:${r(e)}:${t}:meta`,budgetCharged:(e)=>`budget-charged:${e}`,toolEffect:(e,t,n)=>`tool-effect:${r(e)}:${t}:${n}`,workflowVisibilityStatus:(e,t)=>`wf-idx-status:${r(e)}:${r(t)}`,workflowVisibilityType:(e,t)=>`wf-idx-type:${r(e)}:${r(t)}`,workflowVisibilityCreated:(e,t)=>`wf-idx-created:${u(e)}:${r(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${u(e)}:${r(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${u(e)}:${r(t)}`,workflowVisibilityManifest:(e)=>`wf-idx-manifest:${r(e)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};var S=g,Y={workflow:(e)=>`wf:${r(e)}`,checkpoint:(e)=>`wf:${r(e)}:ckpt`,checkpointHistory:(e,t)=>`wf:${r(e)}:ckpt:${String(t).padStart(10,"0")}`,timelinePrefix:(e)=>`wf:${r(e)}:timeline:`,timeline:(e,t)=>`wf:${r(e)}:timeline:${String(t).padStart(10,"0")}`,schedule:(e)=>`schedule:${r(e)}`,scheduleTick:(e,t)=>`schedule-due:${String(e).padStart(16,"0")}:${r(t)}`,scheduleRun:(e)=>`schedule-run:${r(e)}`,scheduleRunLink:(e)=>`schedule-run-link:${r(e)}`,scheduleRunBySchedulePrefix:(e)=>`schedule-run-by-schedule:${r(e)}:`,scheduleRunBySchedule:(e,t)=>`schedule-run-by-schedule:${r(e)}:${r(t)}`,operation:(e,t,n)=>`op:${e}:${S(t)}:${n}`,operationInflight:(e)=>`op:inflight:${e}`,operationQueued:(e)=>`op:queued:${e}`,operationResolved:(e)=>`op:resolved:${e}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(e,t,n)=>`audit:bulk:${S(e)}:${r(t)}:${r(n)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(e,t)=>`op:resolved-by-time:${S(e)}:${r(t)}`,asyncActivity:(e,t)=>`async-act:v1:${r(e)}:${r(t)}`,asyncActivityResolution:(e,t)=>`async-act:v1:${r(e)}:${r(t)}:resolution`,activityReconciliationPrefix:(e)=>`actrec:v1:${r(e)}:`,activityReconciliation:(e,t,n)=>`actrec:v1:${r(e)}:${r(t)}:${n}`,eventPrefix:(e)=>`ev:${r(e)}:`,event:(e,t)=>`ev:${r(e)}:${String(t).padStart(10,"0")}`,eventHead:(e)=>`ev:${r(e)}:head`,eventWatermark:(e)=>`ev:${r(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:${r(e)}:`,fleetEventByWorkflow:(e,t)=>`fleet-event-by-workflow:${r(e)}:${String(t).padStart(10,"0")}`},U={attribute:(e)=>`attr:${r(e)}`,attributeIndex:(e,t,n)=>`idx:${e}:${t}:${r(n)}`,tagIndex:(e,t)=>`tag:${r(e)}:${r(t)}`,updatePrefix:(e)=>`upd:${r(e)}:`,update:(e,t)=>`upd:${r(e)}:${t}`,updateResponse:(e)=>`upr:${e}`,updateIdempotency:(e,t)=>`upk:${r(e)}:${t}`,startIdempotency:(e)=>`start-idem:${r(e)}`,startIdempotencySignalId:(e)=>`start-idem:${e}`};var Oe=["actrec:","appcmd:","appdidem:","appdlv:","appdseq:","appdterm:","appdue:","appidem:","appmbx:","appobx:","appprobe:","appready:","appseq:","appterm:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","catalog-active:","catalog-entry:","catalog-tombstone:","child-by-parent:","ev:","fleet-event-by-workflow:","fleet-event:","fleet-event-tail","fleet-event-watermark","idx:","lease:","liveness:","offload:","ownership-mode-marker","op:","review:","schedule:","schedule-due:","schedule-run-by-schedule:","schedule-run-link:","schedule-run:","sig:","sigres:","sigseq:","start-idem:","state:","tag:","tool-effect:","upd:","upk:","upr:","wf:","wf-cleanup:","wf-cleanup-needed:","wf-concurrency:","wf-concurrency-holder:","wf-deadline:","wf-delayed:","wf-finalizer-state:","wf-gen:","wf-has-services:","wf-headers:","wf-idx-","wf-owner-epoch:","wf-owner-holder:","wf-teardown:","wf-teardown-deadletter:","wf-teardown-needed:","wf-teardown-succeeded:","wf-terminal:"];var w=1e4,wt=1e4;class G 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 c(e,t){if(t>w)throw new G(e,t)}function z(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"\xFF"}function Pt(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 H(e,t){if(e===null||t===null)return e===t;if(e.byteLength!==t.byteLength)return!1;for(let n=0;n<e.byteLength;n++)if(e[n]!==t[n])return!1;return!0}async function Q(e,t){if(e.has)return e.has(t);return A(e,t)}function X(e,t,n){if(e.keys)return e.keys(t,n);return p(e,t,n)}async function Z(e,t){if(e.count)return e.count(t);return L(e,t)}async function j(e,t){if(e.deletePrefix)return e.deletePrefix(t);return T(e,t)}async function bt(e,t){c("batch operations",t.length),await e.batch(t)}async function J(e,t,n){if(c("conditionalBatch conditions",t.length),c("conditionalBatch operations",n.length),h(e,"conditionalBatch","storageConditionalBatch"),!e.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return e.conditionalBatch(t,n)}var Ot={...Y,...V,...W,...U,...D,...I,...N,...q,...k,..._,...F};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={},n=!1;for(let s of["gt","gte","lt","lte"]){let o=e[s];if(o===void 0)continue;if(typeof o!=="string")throw Error("deleteRange bounds must be strings");t[s]=o,n=!0}if(!n)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 ee(e,t,n){let i=d(n);if(e.deleteRange)return e.deleteRange(t,i);return K(e,t,i)}function P(e){return e.replaceAll(/:+$/g,"")}function Ce(e,t){let n=P(e),i=P(t);if(n.length===0)return i;if(i.length===0)return n;return`${n}:${i}`}class b{#e;#t;constructor(e,t){this.#e=e,this.#t=P(t)}#r(e){if(this.#t.length===0)return e;return e.length===0?`${this.#t}:`:`${this.#t}:${e}`}#i(e){return e.map((t)=>{if(t.type==="put")return{type:"put",key:this.#r(t.key),value:t.value};return{type:"delete",key:this.#r(t.key)}})}#o(e){if(this.#t.length===0)return e;return e.slice(this.#t.length+1)}#s(e){let t={};if(e.limit!==void 0)t.limit=e.limit;if(e.gt!==void 0)t.gt=this.#r(e.gt);if(e.gte!==void 0)t.gte=this.#r(e.gte);if(e.lt!==void 0)t.lt=this.#r(e.lt);if(e.lte!==void 0)t.lte=this.#r(e.lte);return t}#n(e={}){let t=this.#s(e);if(e.reverse!==void 0)t.reverse=e.reverse;return t}#a(e){return this.#s(e)}capabilities(){return this.#e.capabilities()}scoped(e){return new b(this.#e,Ce(this.#t,e))}async get(e){return this.#e.get(this.#r(e))}async put(e,t){await this.#e.put(this.#r(e),t)}async delete(e){await this.#e.delete(this.#r(e))}async*scan(e,t){for await(let[n,i]of this.#e.scan(this.#r(e),this.#n(t)))yield[this.#o(n),i]}async batch(e){c("batch operations",e.length),await this.#e.batch(this.#i(e))}async conditionalBatch(e,t){return J(this.#e,e.map((n)=>({key:this.#r(n.key),expectedValue:n.expectedValue})),this.#i(t))}async has(e){return Q(this.#e,this.#r(e))}async deletePrefix(e){return j(this.#e,this.#r(e))}async deleteRange(e,t){let n=this.#a(d(t));return ee(this.#e,this.#r(e),n)}async*keys(e,t){for await(let n of X(this.#e,this.#r(e),this.#n(t)))yield this.#o(n)}async count(e){return Z(this.#e,this.#r(e))}[Symbol.dispose](){this.#e[Symbol.dispose]()}}function te(e,t){return new b(e,t)}function re(e,t){let n,i,s=!1,o=()=>{if(s)throw Error(`${t.storageName} pool has been disposed and cannot be reused. Construct a new adapter.`);return n??=t.loadPool(e).catch((a)=>{throw n=void 0,ve(a,t)}),n};return{query:async(a,l)=>(await o()).query(a,l),connect:async()=>(await o()).connect(),end:async()=>(s=!0,i??=(async()=>{if(n===void 0)return;await(await n.catch(()=>{return}))?.end()})(),i)}}var xe=/cannot find module|module_not_found|failed to resolve|could not resolve/i;function ve(e,t){let n=e instanceof Error?e.message:String(e);if(xe.test(n))return Error(`${t.storageName} requires the optional peer dependency "${t.driverName}". Install it in your application with: bun add ${t.driverName} (or npm install ${t.driverName}).`,{cause:e});return e instanceof Error?e:Error(n)}function O(e){return e.rowCount??e.affectedRows??e.rows.length}function y(e){if(e instanceof Uint8Array)return new Uint8Array(e);return new Uint8Array(e)}function f(e){return Buffer.from(e)}function R(e){let t=new Map,n=new Set;for(let i of e)if(i.type==="put")n.delete(i.key),t.set(i.key,i.value);else t.delete(i.key),n.add(i.key);return{puts:t,deletes:n}}async function ne(e,t,n){if(n.length===0)return!0;let i=n.map((a)=>a.key),s=await e.query(t.selectValuesByKeys,[i]),o=new Map;for(let a of s.rows){let l=a.value;if(l!==null&&l!==void 0)o.set(a.key,y(l))}for(let a of n){let l=o.get(a.key)??null;if(!H(l,a.expectedValue))return!1}return!0}async function C(e,t,n){if(n.puts.size>0){let i=[],s=[];for(let[o,a]of n.puts)i.push(o),s.push(f(a));await e.query(t.upsertValuesByKeys,[i,s])}if(n.deletes.size>0)await e.query(t.deleteValuesByKeys,[[...n.deletes]])}var ie=/^[a-z_][a-z0-9_]*$/i;function oe(e,t,n){if(!ie.test(e))throw Error(`${n} storage ${t} name "${e}" is not a valid ${n} identifier. Use only letters, digits, and underscores, starting with a letter or underscore (matching ${ie.source}).`)}var se="kv";function x(e,t){oe(e,t,"Postgres")}function le(e){let{schema:t,table:n}=e;if(t===void 0&&n===void 0)return se;let i=n??se;if(x(i,"table"),t===void 0)return`"${i}"`;return x(t,"schema"),`"${t}"."${i}"`}function m(e){return[e,z(e)]}function ge(e,t){let{gt:n,gte:i,lt:s,lte:o}=t,a=m(e),l=["key >= $1 AND key < $2"];if(n!==void 0)a.push(n),l.push(`key > $${a.length}`);if(i!==void 0)a.push(i),l.push(`key >= $${a.length}`);if(s!==void 0)a.push(s),l.push(`key < $${a.length}`);if(o!==void 0)a.push(o),l.push(`key <= $${a.length}`);return{conditions:l,parameters:a}}function ae(e,t={}){let{limit:n,reverse:i}=t,{conditions:s,parameters:o}=ge(e,t),a=i?"DESC":"ASC",l="";if(n!==void 0)o.push(n),l=` LIMIT $${o.length}`;return{parameters:o,whereOrderLimit:`WHERE ${s.join(" AND ")} ORDER BY key ${a}${l}`}}function ce(e){let t=`CREATE TABLE IF NOT EXISTS ${e} (
3
3
  key TEXT COLLATE "C" PRIMARY KEY,
4
4
  value BYTEA NOT NULL
5
- )`,r=`
5
+ )`,n=`
6
6
  SELECT COALESCE(co.collname, 'default') AS collation
7
7
  FROM pg_attribute a
8
8
  LEFT JOIN pg_collation co ON co.oid = a.attcollation
@@ -12,4 +12,4 @@ var ge=import.meta.require;function h(e,t,r){if(!e.capabilities()[t])throw Error
12
12
  FROM pg_attribute a
13
13
  LEFT JOIN pg_collation co ON co.oid = a.attcollation
14
14
  WHERE a.attrelid = to_regclass($1) AND a.attname = 'key' AND a.attnum > 0
15
- `,selectValueByKey:`SELECT value FROM ${e} WHERE key = $1`,upsertValueByKey:`INSERT INTO ${e} (key, value) VALUES ($1, $2) ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value`,deleteValueByKey:`DELETE FROM ${e} WHERE key = $1`,selectKeyPresence:`SELECT 1 AS present FROM ${e} WHERE key = $1 LIMIT 1`,countKeysByPrefix:`SELECT COUNT(*) AS count FROM ${e} WHERE key >= $1 AND key < $2`,deleteKeysByPrefix:`DELETE FROM ${e} WHERE key >= $1 AND key < $2`,selectValuesByKeys:`SELECT key, value FROM ${e} WHERE key = ANY($1)`,upsertValuesByKeys:`INSERT INTO ${e} (key, value) SELECT * FROM unnest($1::text[], $2::bytea[]) ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value`,deleteValuesByKeys:`DELETE FROM ${e} WHERE key = ANY($1)`,keyValueRangeSelect(i,s={}){let{parameters:o,whereOrderLimit:a}=J(i,s);return{parameters:o,sql:`SELECT key, value FROM ${e} ${a}`}},keyRangeSelect(i,s={}){let{parameters:o,whereOrderLimit:a}=J(i,s);return{parameters:o,sql:`SELECT key FROM ${e} ${a}`}},keyRangeDelete(i,s){let{conditions:o,parameters:a}=te(i,s),l=o.join(" AND ");if(s.limit===void 0)return{parameters:a,sql:`DELETE FROM ${e} WHERE ${l}`};return a.push(s.limit),{parameters:a,sql:`DELETE FROM ${e} WHERE key IN (SELECT key FROM ${e} WHERE ${l} ORDER BY key ASC LIMIT $${a.length})`}}}}var ne="BEGIN ISOLATION LEVEL SERIALIZABLE",ie="BEGIN ISOLATION LEVEL READ COMMITTED",oe="BEGIN READ ONLY",se="COMMIT",x="ROLLBACK";function ae(e){return v(e,"schema"),`CREATE SCHEMA IF NOT EXISTS "${e}"`}var Se=/^PRAGMA\b/iu,be=/^PRAGMA\s+(?:[A-Z_][A-Z0-9_]*\.)?[A-Z_][A-Z0-9_]*\s*$/iu,Ee=/^SELECT\b/iu;function Oe(e){return e.trim().replace(/;+\s*$/u,"").trim()}function Re(e){return be.test(e)}function le(e){let t=Oe(e);if(t.length===0)throw Error("Storage query must not be empty.");if(t.includes(";"))throw Error("Storage query must contain exactly one read-only statement.");if(Ee.test(t))return;if(Se.test(t)&&Re(t))return;throw Error("Storage query only supports read-only SELECT and PRAGMA statements.")}var ve=new Set(["40001","40P01"]),ue=5;function xe(e){if(typeof e!=="object"||e===null||!("code"in e))return!1;let t=e.code;return typeof t==="string"&&ve.has(t)}class C{#e;#t;#r;#i;#o;#s;constructor(e,t){if(this.#o=e.pool===void 0,e.pool===void 0){if(e.url===void 0)throw Error("PostgresKeyValueStorage requires either a `url` to build a pool from, or a pre-built `pool`; neither was provided.");this.#e=t(e.url)}else this.#e=e.pool;this.#r=e.schema;let r=ee({schema:e.schema,table:e.table});this.#t=re(r)}capabilities(){return{persistence:"remote",readAfterWrite:"linearizable",scanConsistency:"snapshot",atomicBatch:!0,conditionalBatch:!0,boundedRangeDelete:!0}}#n(){return this.#i??=this.#a().catch((e)=>{throw this.#i=void 0,e}),this.#i}async#a(){if(this.#r!==void 0)await this.#e.query(ae(this.#r));await this.#e.query(this.#t.createTable),await this.#g()}async#g(){let t=(await this.#e.query(this.#t.selectKeyCollation,[this.#t.tableReference])).rows[0]?.collation;if(t==="C")return;let r=t===void 0?"no such table":typeof t==="string"?`"${t}"`:"an unexpected collation value";throw Error(`Postgres storage requires the ${this.#t.tableReference} table's "key" column to use COLLATE "C" (found ${r}). A table created without COLLATE "C" sorts keys by the database locale, which breaks Weft's lexicographic prefix scans. Use a fresh table, or recreate it as: CREATE TABLE ${this.#t.tableReference} (key TEXT COLLATE "C" PRIMARY KEY, value BYTEA NOT NULL).`)}async get(e){await this.#n();let r=(await this.#e.query(this.#t.selectValueByKey,[e])).rows[0];if(r===void 0)return null;let i=r.value;if(i===null||i===void 0)return null;return y(i)}async put(e,t){await this.#n(),await this.#e.query(this.#t.upsertValueByKey,[e,f(t)])}async delete(e){await this.#n(),await this.#e.query(this.#t.deleteValueByKey,[e])}async has(e){return await this.#n(),(await this.#e.query(this.#t.selectKeyPresence,[e])).rows.length>0}async deletePrefix(e){await this.#n();let[t,r]=m(e),i=await this.#e.query(this.#t.deleteKeysByPrefix,[t,r]);return E(i)}async deleteRange(e,t){await this.#n();let r=p(t),{parameters:i,sql:s}=this.#t.keyRangeDelete(e,r),o=await this.#e.query(s,i);return E(o)}async*scan(e,t={}){await this.#n();let{parameters:r,sql:i}=this.#t.keyValueRangeSelect(e,t),s=await this.#e.query(i,r);for(let o of s.rows)yield[o.key,y(o.value)]}async*keys(e,t={}){await this.#n();let{parameters:r,sql:i}=this.#t.keyRangeSelect(e,t),s=await this.#e.query(i,r);for(let o of s.rows)yield o.key}async count(e){await this.#n();let[t,r]=m(e),i=await this.#e.query(this.#t.countKeysByPrefix,[t,r]);return Number(i.rows[0]?.count??0)}scoped(e){return H(this,e)}async#l(e,t,r=()=>!0){let i=await this.#e.connect();try{await i.query(e);try{let s=await t(i);return await i.query(r(s)?se:x),s}catch(s){throw await i.query(x).catch(()=>{}),s}}finally{i.release()}}async batch(e){if(c("batch operations",e.length),e.length===0)return;await this.#n(),await this.#l(ie,async(t)=>{await R(t,this.#t,O(e))})}async conditionalBatch(e,t){c("conditionalBatch conditions",e.length),c("conditionalBatch operations",t.length),await this.#n();let r=O(t),i;for(let s=0;s<ue;s+=1)try{return await this.#l(ne,async(o)=>{if(!await Y(o,this.#t,e))return!1;return await R(o,this.#t,r),!0},(o)=>o)}catch(o){if(!xe(o))throw o;i=o}throw Error(`conditionalBatch exhausted ${ue} attempts after retryable transaction failures`,{cause:i})}async query(e,t){return await this.#n(),le(e),this.#l(oe,async(r)=>(await r.query(e,t??[])).rows)}#u(){if(!this.#o)return Promise.resolve();return this.#s??=this.#e.end(),this.#s}[Symbol.dispose](){this.#u().catch(()=>{})}async[Symbol.asyncDispose](){await this.#u()}}function Ce(e){return Q(e,{driverName:"pg",storageName:"PostgresStorage",loadPool:(t)=>import("pg").then(({default:r})=>new r.Pool({connectionString:t}))})}class Be extends C{constructor(e,t=Ce){super(e,t)}}export{Be as PostgresStorage};
15
+ `,selectValueByKey:`SELECT value FROM ${e} WHERE key = $1`,upsertValueByKey:`INSERT INTO ${e} (key, value) VALUES ($1, $2) ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value`,deleteValueByKey:`DELETE FROM ${e} WHERE key = $1`,selectKeyPresence:`SELECT 1 AS present FROM ${e} WHERE key = $1 LIMIT 1`,countKeysByPrefix:`SELECT COUNT(*) AS count FROM ${e} WHERE key >= $1 AND key < $2`,deleteKeysByPrefix:`DELETE FROM ${e} WHERE key >= $1 AND key < $2`,selectValuesByKeys:`SELECT key, value FROM ${e} WHERE key = ANY($1)`,upsertValuesByKeys:`INSERT INTO ${e} (key, value) SELECT * FROM unnest($1::text[], $2::bytea[]) ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value`,deleteValuesByKeys:`DELETE FROM ${e} WHERE key = ANY($1)`,keyValueRangeSelect(i,s={}){let{parameters:o,whereOrderLimit:a}=ae(i,s);return{parameters:o,sql:`SELECT key, value FROM ${e} ${a}`}},keyRangeSelect(i,s={}){let{parameters:o,whereOrderLimit:a}=ae(i,s);return{parameters:o,sql:`SELECT key FROM ${e} ${a}`}},keyRangeDelete(i,s){let{conditions:o,parameters:a}=ge(i,s),l=o.join(" AND ");if(s.limit===void 0)return{parameters:a,sql:`DELETE FROM ${e} WHERE ${l}`};return a.push(s.limit),{parameters:a,sql:`DELETE FROM ${e} WHERE key IN (SELECT key FROM ${e} WHERE ${l} ORDER BY key ASC LIMIT $${a.length})`}}}}var ue="BEGIN ISOLATION LEVEL SERIALIZABLE",pe="BEGIN ISOLATION LEVEL READ COMMITTED",de="BEGIN READ ONLY",ye="COMMIT",v="ROLLBACK";function fe(e){return x(e,"schema"),`CREATE SCHEMA IF NOT EXISTS "${e}"`}var Be=/^PRAGMA\b/iu,ke=/^PRAGMA\s+(?:[A-Z_][A-Z0-9_]*\.)?[A-Z_][A-Z0-9_]*\s*$/iu,Ae=/^SELECT\b/iu;function Le(e){return e.trim().replace(/;+\s*$/u,"").trim()}function Te(e){return ke.test(e)}function me(e){let t=Le(e);if(t.length===0)throw Error("Storage query must not be empty.");if(t.includes(";"))throw Error("Storage query must contain exactly one read-only statement.");if(Ae.test(t))return;if(Be.test(t)&&Te(t))return;throw Error("Storage query only supports read-only SELECT and PRAGMA statements.")}var Ke=new Set(["40001","40P01"]),he=5;function _e(e){if(typeof e!=="object"||e===null||!("code"in e))return!1;let t=e.code;return typeof t==="string"&&Ke.has(t)}class B{#e;#t;#r;#i;#o;#s;constructor(e,t){if(this.#o=e.pool===void 0,e.pool===void 0){if(e.url===void 0)throw Error("PostgresKeyValueStorage requires either a `url` to build a pool from, or a pre-built `pool`; neither was provided.");this.#e=t(e.url)}else this.#e=e.pool;this.#r=e.schema;let n=le({schema:e.schema,table:e.table});this.#t=ce(n)}capabilities(){return{persistence:"remote",readAfterWrite:"linearizable",scanConsistency:"snapshot",atomicBatch:!0,conditionalBatch:!0,boundedRangeDelete:!0}}#n(){return this.#i??=this.#a().catch((e)=>{throw this.#i=void 0,e}),this.#i}async#a(){if(this.#r!==void 0)await this.#e.query(fe(this.#r));await this.#e.query(this.#t.createTable),await this.#c()}async#c(){let t=(await this.#e.query(this.#t.selectKeyCollation,[this.#t.tableReference])).rows[0]?.collation;if(t==="C")return;let n=t===void 0?"no such table":typeof t==="string"?`"${t}"`:"an unexpected collation value";throw Error(`Postgres storage requires the ${this.#t.tableReference} table's "key" column to use COLLATE "C" (found ${n}). A table created without COLLATE "C" sorts keys by the database locale, which breaks Weft's lexicographic prefix scans. Use a fresh table, or recreate it as: CREATE TABLE ${this.#t.tableReference} (key TEXT COLLATE "C" PRIMARY KEY, value BYTEA NOT NULL).`)}async get(e){await this.#n();let n=(await this.#e.query(this.#t.selectValueByKey,[e])).rows[0];if(n===void 0)return null;let i=n.value;if(i===null||i===void 0)return null;return y(i)}async put(e,t){await this.#n(),await this.#e.query(this.#t.upsertValueByKey,[e,f(t)])}async delete(e){await this.#n(),await this.#e.query(this.#t.deleteValueByKey,[e])}async has(e){return await this.#n(),(await this.#e.query(this.#t.selectKeyPresence,[e])).rows.length>0}async deletePrefix(e){await this.#n();let[t,n]=m(e),i=await this.#e.query(this.#t.deleteKeysByPrefix,[t,n]);return O(i)}async deleteRange(e,t){await this.#n();let n=d(t),{parameters:i,sql:s}=this.#t.keyRangeDelete(e,n),o=await this.#e.query(s,i);return O(o)}async*scan(e,t={}){await this.#n();let{parameters:n,sql:i}=this.#t.keyValueRangeSelect(e,t),s=await this.#e.query(i,n);for(let o of s.rows)yield[o.key,y(o.value)]}async*keys(e,t={}){await this.#n();let{parameters:n,sql:i}=this.#t.keyRangeSelect(e,t),s=await this.#e.query(i,n);for(let o of s.rows)yield o.key}async count(e){await this.#n();let[t,n]=m(e),i=await this.#e.query(this.#t.countKeysByPrefix,[t,n]);return Number(i.rows[0]?.count??0)}scoped(e){return te(this,e)}async#l(e,t,n=()=>!0){let i=await this.#e.connect();try{await i.query(e);try{let s=await t(i);return await i.query(n(s)?ye:v),s}catch(s){throw await i.query(v).catch(()=>{}),s}}finally{i.release()}}async batch(e){if(c("batch operations",e.length),e.length===0)return;await this.#n(),await this.#l(pe,async(t)=>{await C(t,this.#t,R(e))})}async conditionalBatch(e,t){c("conditionalBatch conditions",e.length),c("conditionalBatch operations",t.length),await this.#n();let n=R(t),i;for(let s=0;s<he;s+=1)try{return await this.#l(ue,async(o)=>{if(!await ne(o,this.#t,e))return!1;return await C(o,this.#t,n),!0},(o)=>o)}catch(o){if(!_e(o))throw o;i=o}throw Error(`conditionalBatch exhausted ${he} attempts after retryable transaction failures`,{cause:i})}async query(e,t){return await this.#n(),me(e),this.#l(de,async(n)=>(await n.query(e,t??[])).rows)}#g(){if(!this.#o)return Promise.resolve();return this.#s??=this.#e.end(),this.#s}[Symbol.dispose](){this.#g().catch(()=>{})}async[Symbol.asyncDispose](){await this.#g()}}function De(e){return re(e,{driverName:"pg",storageName:"PostgresStorage",loadPool:(t)=>import("pg").then(({default:n})=>new n.Pool({connectionString:t}))})}class Ie extends B{constructor(e,t=De){super(e,t)}}export{Ie as PostgresStorage};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- var Oe=import.meta.require;function S(e,t,r){if(!e.capabilities()[t])throw Error(`Feature "${r}" requires storage capability "${t}", but this storage backend does not provide it.`)}function Y(e){let t=e.capabilities(),r=[];if(t.persistence!=="local"&&t.persistence!=="remote")r.push(`persistence must be "local" or "remote" (got "${t.persistence}")`);if(t.readAfterWrite!=="linearizable")r.push(`readAfterWrite must be "linearizable" (got "${t.readAfterWrite}")`);if(t.scanConsistency!=="snapshot")r.push(`scanConsistency must be "snapshot" (got "${t.scanConsistency}")`);if(!t.atomicBatch)r.push("atomicBatch must be true");if(!t.conditionalBatch)r.push("conditionalBatch must be true");if(r.length>0)throw Error(`Storage is not durable enough for recovery: ${r.join("; ")}.`)}function n(e){return encodeURIComponent(e)}function J(e){return decodeURIComponent(e)}function Z(e){try{return decodeURIComponent(e)}catch{return null}}function s(e){return String(e).padStart(16,"0")}var B={catalogEntry:(e,t)=>`catalog-entry:${n(e)}:${n(t)}`,catalogEntryPrefix:(e)=>`catalog-entry:${n(e)}:`,catalogActive:(e)=>`catalog-active:${n(e)}`};var w="default";async function E(e,t){return await e.get(t)!==null}async function*m(e,t,r){for await(let[i]of e.scan(t,r))yield i}async function P(e,t){let r=0;for await(let i of m(e,t))r++;return r}async function D(e,t){let r=[];for await(let i of m(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 a of m(e,t,r))i.push({type:"delete",key:a});if(i.length===0)return 0;return await e.batch(i),i.length}var A={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 L={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 _={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${n(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${n(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var ee=["actrec:","appcmd:","appdidem:","appdlv:","appdseq:","appdterm:","appdue:","appidem:","appmbx:","appobx:","appprobe:","appready:","appseq:","appterm:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","catalog-active:","catalog-entry:","child-by-parent:","ev:","fleet-event-by-workflow:","fleet-event:","fleet-event-tail","fleet-event-watermark","idx:","lease:","liveness:","offload:","ownership-mode-marker","op:","review:","schedule:","schedule-due:","schedule-run-by-schedule:","schedule-run-link:","schedule-run:","sig:","sigres:","sigseq:","start-idem:","state:","tag:","tool-effect:","upd:","upk:","upr:","wf:","wf-cleanup:","wf-cleanup-needed:","wf-concurrency:","wf-concurrency-holder:","wf-deadline:","wf-delayed:","wf-finalizer-state:","wf-has-services:","wf-headers:","wf-idx-","wf-owner-epoch:","wf-owner-holder:","wf-teardown:","wf-teardown-deadletter:","wf-teardown-needed:","wf-teardown-succeeded:","wf-terminal:"];var x=1e4,Fe=1e4;class I extends Error{code="StorageBatchOperationLimitExceededError";cap=x;count;target;constructor(e,t){super(`${e} count ${t} exceeds MAX_BATCH_OPERATIONS (${x}).`);this.name="StorageBatchOperationLimitExceededError",this.target=e,this.count=t}}function c(e,t){if(t>x)throw new I(e,t)}function f(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"\xFF"}function h(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 U(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 E(e,t)}function N(e,t,r){if(e.keys)return e.keys(t,r);return m(e,t,r)}async function K(e,t){if(e.count)return e.count(t);return P(e,t)}async function W(e,t){if(e.deletePrefix)return e.deletePrefix(t);return D(e,t)}async function Qe(e,t){c("batch operations",t.length),await e.batch(t)}async function z(e,t,r){if(c("conditionalBatch conditions",t.length),c("conditionalBatch operations",r.length),S(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 g=s,te="0",ne="1",M=(e,t,r,i)=>`sig:${n(e)}:${n(t)}:${i}:${n(r)}`,Xe={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}:${g(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:${g(e)}:${n(t)}:${n(r)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(e,t)=>`op:resolved-by-time:${g(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)=>M(e,t,r,ne),startSignal:(e,t,r)=>M(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:${g(e)}:${n(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${g(e)}:${n(t)}`,teardownTimer:(e,t)=>`wf-teardown:${g(e)}:${n(t)}`,delayedStart:(e,t)=>`wf-delayed:${g(e)}:${n(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${g(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",...A,...L,..._,...B,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:${w}:${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:${g(e)}:${n(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${g(e)}:${n(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${g(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 y(e){let t={},r=!1;for(let a of["gt","gte","lt","lte"]){let o=e[a];if(o===void 0)continue;if(typeof o!=="string")throw Error("deleteRange bounds must be strings");t[a]=o,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 H(e,t,r){let i=y(r);if(e.deleteRange)return e.deleteRange(t,i);return T(e,t,i)}function v(e){return e.replaceAll(/:+$/g,"")}function ie(e,t){let r=v(e),i=v(t);if(r.length===0)return i;if(i.length===0)return r;return`${r}:${i}`}class C{#e;#n;constructor(e,t){this.#e=e,this.#n=v(t)}#t(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.#t(t.key),value:t.value};return{type:"delete",key:this.#t(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.#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}#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.#e.capabilities()}scoped(e){return new C(this.#e,ie(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.#a(t)))yield[this.#i(r),i]}async batch(e){c("batch operations",e.length),await this.#e.batch(this.#r(e))}async conditionalBatch(e,t){return z(this.#e,e.map((r)=>({key:this.#t(r.key),expectedValue:r.expectedValue})),this.#r(t))}async has(e){return q(this.#e,this.#t(e))}async deletePrefix(e){return W(this.#e,this.#t(e))}async deleteRange(e,t){let r=this.#s(y(t));return H(this.#e,this.#t(e),r)}async*keys(e,t){for await(let r of N(this.#e,this.#t(e),this.#a(t)))yield this.#i(r)}async count(e){return K(this.#e,this.#t(e))}[Symbol.dispose](){this.#e[Symbol.dispose]()}}function V(e,t){return new C(e,t)}class b{#e;constructor(){this.#e=new Map}capabilities(){return{persistence:"ephemeral",readAfterWrite:"linearizable",scanConsistency:"snapshot",atomicBatch:!0,conditionalBatch:!0,boundedRangeDelete:!0}}#n(e,t,r){return e>=t&&e<r}#t(e,t){let r=[];for(let i of this.#e.keys())if(this.#n(i,e,t))r.push(i);return r.toSorted()}async get(e){return this.#e.get(e)??null}async put(e,t){this.#e.set(e,t)}async delete(e){this.#e.delete(e)}async*scan(e,t={}){let{limit:r,reverse:i}=t,a=f(e),o=this.#t(e,a);if(o=o.filter((p)=>h(p,t)),i)o.reverse();let u=0;for(let p of o){if(r!==void 0&&u>=r)break;let k=this.#e.get(p);if(k!==void 0)yield[p,k],u++}}async batch(e){c("batch operations",e.length),this.#r(e)}#r(e){for(let t of e)if(t.type==="put")this.#e.set(t.key,t.value);else this.#e.delete(t.key)}async conditionalBatch(e,t){c("conditionalBatch conditions",e.length),c("conditionalBatch operations",t.length);for(let r of e){let i=this.#e.get(r.key)??null;if(!U(i,r.expectedValue))return!1}return this.#r(t),!0}async has(e){return this.#e.has(e)}async deletePrefix(e){let t=f(e),r=this.#t(e,t);for(let i of r)this.#e.delete(i);return r.length}async deleteRange(e,t){let r=y(t),i=f(e),a=this.#t(e,i).filter((u)=>h(u,r)),o=r.limit===void 0?a:a.slice(0,r.limit);for(let u of o)this.#e.delete(u);return o.length}async*keys(e,t={}){let{limit:r,reverse:i}=t,a=f(e),o=this.#t(e,a);if(o=o.filter((p)=>h(p,t)),i)o.reverse();let u=0;for(let p of o){if(r!==void 0&&u>=r)break;yield p,u++}}async count(e){let t=f(e);return this.#t(e,t).length}scoped(e){return V(this,e)}get size(){return this.#e.size}clear(){this.#e.clear()}snapshot(){let e=new Map;for(let[t,r]of this.#e)e.set(t,new Uint8Array(r));return e}[Symbol.dispose](){this.#e.clear()}}function d(e,t){return import.meta.url.endsWith(".ts")?e:t}async function l(e){return await import(e)}var oe=d("./bun-sql.ts","./bun-sql.js"),ae=d("./node-sqlite.ts","./node-sqlite.js"),se=d("./lmdb.ts","./lmdb.js"),ge=d("./turso.ts","./turso.js"),le=d("./neon.ts","./neon.js"),j=d("./indexeddb.ts","./indexeddb.js"),G=d("./web-extension.ts","./web-extension.js"),ue=d("./http.ts","./http.js"),ce=d("./auto.ts","./auto.js");function F(){return typeof Bun<"u"}function Q(){return typeof globalThis.process==="object"&&globalThis.process!==null&&typeof globalThis.process.versions==="object"&&typeof globalThis.process.versions.node==="string"}function de(){let e=globalThis;return e.browser?.storage!==void 0||e.chrome?.storage!==void 0}function pe(){return typeof globalThis.indexedDB<"u"}async function fe(e){if(F()){let{BunSQLiteStorage:t}=await l(oe);return new t(e)}if(Q()){let{NodeSQLiteStorage:t}=await l(ae);return new t(e)}throw Error("SQLite storage is only available in Bun or Node runtimes.")}async function me(){if(F()||Q()){let{resolveDefaultStorage:e}=await l(ce);return e()}if(de()){let{WebExtensionStorage:e}=await l(G);return new e}if(pe()){let{IndexedDBStorage:e}=await l(j);return new e}return new b}var X={memory:async(e)=>new b,sqlite:async(e)=>fe(e.path),lmdb:async(e)=>{let{LMDBStorage:t}=await l(se);return new t(e.path,e.durability===void 0?{}:{durability:e.durability})},turso:async(e)=>{let{TursoStorage:t}=await l(ge);return new t({url:e.url,...e.authToken===void 0?{}:{authToken:e.authToken}})},neon:async(e)=>{let{NeonStorage:t}=await l(le);return new t({url:e.url})},indexeddb:async(e)=>{let{IndexedDBStorage:t}=await l(j);return new t(e.databaseName)},"web-extension":async(e)=>{let{WebExtensionStorage:t}=await l(G);return new t(e.area===void 0?{}:{area:e.area})},http:async(e)=>{let{HTTPStorage:t}=await l(ue);return new t({baseUrl:e.baseUrl,...e.headers===void 0?{}:{headers:e.headers}})},auto:async(e)=>me()};function ye(e){if(typeof e!=="object"||e===null)return"unknown";if(!("type"in e))return"unknown";return typeof e.type==="string"?e.type:"unknown"}function he(e){if(typeof e!=="object"||e===null||Array.isArray(e))throw Error("Storage configuration must be an object.");return e}function O(e,t,r){let i=e[t];if(typeof i!=="string"||i.length===0)throw Error(`${r} storage configuration requires "${t}" as a string.`);return i}function R(e,t,r){let i=e[t];if(i===void 0)return;if(typeof i!=="string")throw Error(`${r} storage configuration field "${t}" must be a string.`);return i}function be(e,t,r){let i=e[t];if(typeof i==="string"||i instanceof URL)return i;throw Error(`${r} storage configuration requires "${t}" as a string or URL.`)}function Se(e){let t=e.headers;if(t===void 0)return;if(typeof t!=="object"||t===null||Array.isArray(t))throw Error('HTTP storage configuration field "headers" must be a string record.');let r={};for(let[i,a]of Object.entries(t)){if(typeof a!=="string")throw Error('HTTP storage configuration field "headers" must be a string record.');r[i]=a}return r}function we(e){let t=e.durability;if(t===void 0)return;if(t==="full"||t==="relaxed")return t;throw Error('LMDB storage configuration field "durability" must be one of full or relaxed.')}function $e(e){let t=e.area;if(t===void 0)return;if(t==="local"||t==="sync"||t==="session"||t==="managed")return t;throw Error('WebExtension storage configuration field "area" must be one of local, sync, session, or managed.')}var xe={memory:(e)=>({type:"memory"}),sqlite:(e)=>{let t=R(e,"path","SQLite");return t===void 0?{type:"sqlite"}:{type:"sqlite",path:t}},lmdb:(e)=>{let t=we(e);return{type:"lmdb",path:O(e,"path","LMDB"),...t===void 0?{}:{durability:t}}},turso:(e)=>{let t=R(e,"authToken","Turso");return{type:"turso",url:O(e,"url","Turso"),...t===void 0?{}:{authToken:t}}},neon:(e)=>({type:"neon",url:O(e,"url","Neon")}),indexeddb:(e)=>{let t=R(e,"databaseName","IndexedDB");return t===void 0?{type:"indexeddb"}:{type:"indexeddb",databaseName:t}},"web-extension":(e)=>{let t=$e(e);return t===void 0?{type:"web-extension"}:{type:"web-extension",area:t}},http:(e)=>{let t=Se(e);return{type:"http",baseUrl:be(e,"baseUrl","HTTP"),...t===void 0?{}:{headers:t}}},auto:(e)=>({type:"auto"})};function ve(e,t){return xe[t](he(e))}function Ce(e){return Object.hasOwn(X,e)}async function dt(e){let t=ye(e);if(!Ce(t))throw Error(`Unsupported storage configuration type: ${t}`);let r=ve(e,t),i=X[t];return i(r)}export{dt as resolveStorage};
2
+ var _e=import.meta.require;function b(e,t,r){if(!e.capabilities()[t])throw Error(`Feature "${r}" requires storage capability "${t}", but this storage backend does not provide it.`)}function oe(e){let t=e.capabilities(),r=[];if(t.persistence!=="local"&&t.persistence!=="remote")r.push(`persistence must be "local" or "remote" (got "${t.persistence}")`);if(t.readAfterWrite!=="linearizable")r.push(`readAfterWrite must be "linearizable" (got "${t.readAfterWrite}")`);if(t.scanConsistency!=="snapshot")r.push(`scanConsistency must be "snapshot" (got "${t.scanConsistency}")`);if(!t.atomicBatch)r.push("atomicBatch must be true");if(!t.conditionalBatch)r.push("conditionalBatch must be true");if(r.length>0)throw Error(`Storage is not durable enough for recovery: ${r.join("; ")}.`)}function n(e){return encodeURIComponent(e)}function ae(e){return decodeURIComponent(e)}function se(e){try{return decodeURIComponent(e)}catch{return null}}function s(e){return String(e).padStart(16,"0")}var B={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:"};async function D(e,t){return await e.get(t)!==null}async function*m(e,t,r){for await(let[i]of e.scan(t,r))yield i}async function T(e,t){let r=0;for await(let i of m(e,t))r++;return r}async function P(e,t){let r=[];for await(let i of m(e,t))r.push({type:"delete",key:i});if(r.length===0)return 0;return await e.batch(r),r.length}async function _(e,t,r){let i=[];for await(let a of m(e,t,r))i.push({type:"delete",key:a});if(i.length===0)return 0;return await e.batch(i),i.length}var A={workflowGeneration:(e)=>`wf-gen:${n(e)}`};var L={livenessPrefix:()=>"liveness:",liveness:(e)=>`liveness:${n(e)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder"};var K={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 I={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 W={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${n(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${n(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var ge="0",le="1",M=(e,t,r,i)=>`sig:${n(e)}:${n(t)}:${i}:${n(r)}`,N={signal:(e,t,r)=>M(e,t,r,le),startSignal:(e,t,r)=>M(e,t,r,ge),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 w="default";var p=s,U={deadline:(e,t)=>`wf-deadline:${p(e)}:${n(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${p(e)}:${n(t)}`,teardownTimer:(e,t)=>`wf-teardown:${p(e)}:${n(t)}`,delayedStart:(e,t)=>`wf-delayed:${p(e)}:${n(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${p(e)}:${n(t)}`},Y={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:${w}:${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:${p(e)}:${n(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${p(e)}:${n(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${p(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 E=s,q={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}:${E(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:${E(e)}:${n(t)}:${n(r)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(e,t)=>`op:resolved-by-time:${E(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")}`},F={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 ce=["actrec:","appcmd:","appdidem:","appdlv:","appdseq:","appdterm:","appdue:","appidem:","appmbx:","appobx:","appprobe:","appready:","appseq:","appterm:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","catalog-active:","catalog-entry:","catalog-tombstone:","child-by-parent:","ev:","fleet-event-by-workflow:","fleet-event:","fleet-event-tail","fleet-event-watermark","idx:","lease:","liveness:","offload:","ownership-mode-marker","op:","review:","schedule:","schedule-due:","schedule-run-by-schedule:","schedule-run-link:","schedule-run:","sig:","sigres:","sigseq:","start-idem:","state:","tag:","tool-effect:","upd:","upk:","upr:","wf:","wf-cleanup:","wf-cleanup-needed:","wf-concurrency:","wf-concurrency-holder:","wf-deadline:","wf-delayed:","wf-finalizer-state:","wf-gen:","wf-has-services:","wf-headers:","wf-idx-","wf-owner-epoch:","wf-owner-holder:","wf-teardown:","wf-teardown-deadletter:","wf-teardown-needed:","wf-teardown-succeeded:","wf-terminal:"];var O=1e4,yt=1e4;class z 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 c(e,t){if(t>O)throw new z(e,t)}function f(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"\xFF"}function h(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 H(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 G(e,t){if(e.has)return e.has(t);return D(e,t)}function V(e,t,r){if(e.keys)return e.keys(t,r);return m(e,t,r)}async function j(e,t){if(e.count)return e.count(t);return T(e,t)}async function X(e,t){if(e.deletePrefix)return e.deletePrefix(t);return P(e,t)}async function ht(e,t){c("batch operations",t.length),await e.batch(t)}async function Q(e,t,r){if(c("conditionalBatch conditions",t.length),c("conditionalBatch operations",r.length),b(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 St={...q,...N,...U,...F,...L,...K,...I,...W,...B,...A,...Y};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 y(e){let t={},r=!1;for(let a of["gt","gte","lt","lte"]){let o=e[a];if(o===void 0)continue;if(typeof o!=="string")throw Error("deleteRange bounds must be strings");t[a]=o,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 J(e,t,r){let i=y(r);if(e.deleteRange)return e.deleteRange(t,i);return _(e,t,i)}function C(e){return e.replaceAll(/:+$/g,"")}function de(e,t){let r=C(e),i=C(t);if(r.length===0)return i;if(i.length===0)return r;return`${r}:${i}`}class x{#e;#n;constructor(e,t){this.#e=e,this.#n=C(t)}#t(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.#t(t.key),value:t.value};return{type:"delete",key:this.#t(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.#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}#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.#e.capabilities()}scoped(e){return new x(this.#e,de(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.#a(t)))yield[this.#i(r),i]}async batch(e){c("batch operations",e.length),await this.#e.batch(this.#r(e))}async conditionalBatch(e,t){return Q(this.#e,e.map((r)=>({key:this.#t(r.key),expectedValue:r.expectedValue})),this.#r(t))}async has(e){return G(this.#e,this.#t(e))}async deletePrefix(e){return X(this.#e,this.#t(e))}async deleteRange(e,t){let r=this.#s(y(t));return J(this.#e,this.#t(e),r)}async*keys(e,t){for await(let r of V(this.#e,this.#t(e),this.#a(t)))yield this.#i(r)}async count(e){return j(this.#e,this.#t(e))}[Symbol.dispose](){this.#e[Symbol.dispose]()}}function Z(e,t){return new x(e,t)}class S{#e;constructor(){this.#e=new Map}capabilities(){return{persistence:"ephemeral",readAfterWrite:"linearizable",scanConsistency:"snapshot",atomicBatch:!0,conditionalBatch:!0,boundedRangeDelete:!0}}#n(e,t,r){return e>=t&&e<r}#t(e,t){let r=[];for(let i of this.#e.keys())if(this.#n(i,e,t))r.push(i);return r.toSorted()}async get(e){return this.#e.get(e)??null}async put(e,t){this.#e.set(e,t)}async delete(e){this.#e.delete(e)}async*scan(e,t={}){let{limit:r,reverse:i}=t,a=f(e),o=this.#t(e,a);if(o=o.filter((d)=>h(d,t)),i)o.reverse();let l=0;for(let d of o){if(r!==void 0&&l>=r)break;let k=this.#e.get(d);if(k!==void 0)yield[d,k],l++}}async batch(e){c("batch operations",e.length),this.#r(e)}#r(e){for(let t of e)if(t.type==="put")this.#e.set(t.key,t.value);else this.#e.delete(t.key)}async conditionalBatch(e,t){c("conditionalBatch conditions",e.length),c("conditionalBatch operations",t.length);for(let r of e){let i=this.#e.get(r.key)??null;if(!H(i,r.expectedValue))return!1}return this.#r(t),!0}async has(e){return this.#e.has(e)}async deletePrefix(e){let t=f(e),r=this.#t(e,t);for(let i of r)this.#e.delete(i);return r.length}async deleteRange(e,t){let r=y(t),i=f(e),a=this.#t(e,i).filter((l)=>h(l,r)),o=r.limit===void 0?a:a.slice(0,r.limit);for(let l of o)this.#e.delete(l);return o.length}async*keys(e,t={}){let{limit:r,reverse:i}=t,a=f(e),o=this.#t(e,a);if(o=o.filter((d)=>h(d,t)),i)o.reverse();let l=0;for(let d of o){if(r!==void 0&&l>=r)break;yield d,l++}}async count(e){let t=f(e);return this.#t(e,t).length}scoped(e){return Z(this,e)}get size(){return this.#e.size}clear(){this.#e.clear()}snapshot(){let e=new Map;for(let[t,r]of this.#e)e.set(t,new Uint8Array(r));return e}[Symbol.dispose](){this.#e.clear()}}function u(e,t){return import.meta.url.endsWith(".ts")?e:t}async function g(e){return await import(e)}var pe=u("./bun-sql.ts","./bun-sql.js"),fe=u("./node-sqlite.ts","./node-sqlite.js"),me=u("./lmdb.ts","./lmdb.js"),ye=u("./turso.ts","./turso.js"),he=u("./neon.ts","./neon.js"),ee=u("./indexeddb.ts","./indexeddb.js"),te=u("./web-extension.ts","./web-extension.js"),Se=u("./http.ts","./http.js"),be=u("./auto.ts","./auto.js");function ne(){return typeof Bun<"u"}function re(){return typeof globalThis.process==="object"&&globalThis.process!==null&&typeof globalThis.process.versions==="object"&&typeof globalThis.process.versions.node==="string"}function we(){let e=globalThis;return e.browser?.storage!==void 0||e.chrome?.storage!==void 0}function $e(){return typeof globalThis.indexedDB<"u"}async function Ee(e){if(ne()){let{BunSQLiteStorage:t}=await g(pe);return new t(e)}if(re()){let{NodeSQLiteStorage:t}=await g(fe);return new t(e)}throw Error("SQLite storage is only available in Bun or Node runtimes.")}async function Oe(){if(ne()||re()){let{resolveDefaultStorage:e}=await g(be);return e()}if(we()){let{WebExtensionStorage:e}=await g(te);return new e}if($e()){let{IndexedDBStorage:e}=await g(ee);return new e}return new S}var ie={memory:async(e)=>new S,sqlite:async(e)=>Ee(e.path),lmdb:async(e)=>{let{LMDBStorage:t}=await g(me);return new t(e.path,e.durability===void 0?{}:{durability:e.durability})},turso:async(e)=>{let{TursoStorage:t}=await g(ye);return new t({url:e.url,...e.authToken===void 0?{}:{authToken:e.authToken}})},neon:async(e)=>{let{NeonStorage:t}=await g(he);return new t({url:e.url})},indexeddb:async(e)=>{let{IndexedDBStorage:t}=await g(ee);return new t(e.databaseName)},"web-extension":async(e)=>{let{WebExtensionStorage:t}=await g(te);return new t(e.area===void 0?{}:{area:e.area})},http:async(e)=>{let{HTTPStorage:t}=await g(Se);return new t({baseUrl:e.baseUrl,...e.headers===void 0?{}:{headers:e.headers}})},auto:async(e)=>Oe()};function Ce(e){if(typeof e!=="object"||e===null)return"unknown";if(!("type"in e))return"unknown";return typeof e.type==="string"?e.type:"unknown"}function xe(e){if(typeof e!=="object"||e===null||Array.isArray(e))throw Error("Storage configuration must be an object.");return e}function v(e,t,r){let i=e[t];if(typeof i!=="string"||i.length===0)throw Error(`${r} storage configuration requires "${t}" as a string.`);return i}function R(e,t,r){let i=e[t];if(i===void 0)return;if(typeof i!=="string")throw Error(`${r} storage configuration field "${t}" must be a string.`);return i}function ve(e,t,r){let i=e[t];if(typeof i==="string"||i instanceof URL)return i;throw Error(`${r} storage configuration requires "${t}" as a string or URL.`)}function Re(e){let t=e.headers;if(t===void 0)return;if(typeof t!=="object"||t===null||Array.isArray(t))throw Error('HTTP storage configuration field "headers" must be a string record.');let r={};for(let[i,a]of Object.entries(t)){if(typeof a!=="string")throw Error('HTTP storage configuration field "headers" must be a string record.');r[i]=a}return r}function ke(e){let t=e.durability;if(t===void 0)return;if(t==="full"||t==="relaxed")return t;throw Error('LMDB storage configuration field "durability" must be one of full or relaxed.')}function Be(e){let t=e.area;if(t===void 0)return;if(t==="local"||t==="sync"||t==="session"||t==="managed")return t;throw Error('WebExtension storage configuration field "area" must be one of local, sync, session, or managed.')}var De={memory:(e)=>({type:"memory"}),sqlite:(e)=>{let t=R(e,"path","SQLite");return t===void 0?{type:"sqlite"}:{type:"sqlite",path:t}},lmdb:(e)=>{let t=ke(e);return{type:"lmdb",path:v(e,"path","LMDB"),...t===void 0?{}:{durability:t}}},turso:(e)=>{let t=R(e,"authToken","Turso");return{type:"turso",url:v(e,"url","Turso"),...t===void 0?{}:{authToken:t}}},neon:(e)=>({type:"neon",url:v(e,"url","Neon")}),indexeddb:(e)=>{let t=R(e,"databaseName","IndexedDB");return t===void 0?{type:"indexeddb"}:{type:"indexeddb",databaseName:t}},"web-extension":(e)=>{let t=Be(e);return t===void 0?{type:"web-extension"}:{type:"web-extension",area:t}},http:(e)=>{let t=Re(e);return{type:"http",baseUrl:ve(e,"baseUrl","HTTP"),...t===void 0?{}:{headers:t}}},auto:(e)=>({type:"auto"})};function Te(e,t){return De[t](xe(e))}function Pe(e){return Object.hasOwn(ie,e)}async function At(e){let t=Ce(e);if(!Pe(t))throw Error(`Unsupported storage configuration type: ${t}`);let r=Te(e,t),i=ie[t];return i(r)}export{At as resolveStorage};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- var M=import.meta.require;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 I(e){let t=e.capabilities(),r=[];if(t.persistence!=="local"&&t.persistence!=="remote")r.push(`persistence must be "local" or "remote" (got "${t.persistence}")`);if(t.readAfterWrite!=="linearizable")r.push(`readAfterWrite must be "linearizable" (got "${t.readAfterWrite}")`);if(t.scanConsistency!=="snapshot")r.push(`scanConsistency must be "snapshot" (got "${t.scanConsistency}")`);if(!t.atomicBatch)r.push("atomicBatch must be true");if(!t.conditionalBatch)r.push("conditionalBatch must be true");if(r.length>0)throw Error(`Storage is not durable enough for recovery: ${r.join("; ")}.`)}function n(e){return encodeURIComponent(e)}function _(e){return decodeURIComponent(e)}function K(e){try{return decodeURIComponent(e)}catch{return null}}function o(e){return String(e).padStart(16,"0")}var h={catalogEntry:(e,t)=>`catalog-entry:${n(e)}:${n(t)}`,catalogEntryPrefix:(e)=>`catalog-entry:${n(e)}:`,catalogActive:(e)=>`catalog-active:${n(e)}`};var d="default";async function b(e,t){return await e.get(t)!==null}async function*s(e,t,r){for await(let[i]of e.scan(t,r))yield i}async function w(e,t){let r=0;for await(let i of s(e,t))r++;return r}async function S(e,t){let r=[];for await(let i of s(e,t))r.push({type:"delete",key:i});if(r.length===0)return 0;return await e.batch(r),r.length}async function v(e,t,r){let i=[];for await(let g of s(e,t,r))i.push({type:"delete",key:g});if(i.length===0)return 0;return await e.batch(i),i.length}var x={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)}:${o(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)}:${o(r)}`,applicationCommandTerminalPrefix:(e,t)=>`appterm:v1:${n(e)}:${n(t)}:`,applicationCommandTerminal:(e,t,r,i)=>`appterm:v1:${n(e)}:${n(t)}:${o(r)}:${n(i)}`};var O={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)}:${o(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)}:${o(r)}`,applicationDeliveryTerminalPrefix:(e,t)=>`appdterm:v1:${n(e)}:${n(t)}:`,applicationDeliveryTerminal:(e,t,r,i)=>`appdterm:v1:${n(e)}:${n(t)}:${o(r)}:${n(i)}`};var C={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${n(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${n(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var L=["actrec:","appcmd:","appdidem:","appdlv:","appdseq:","appdterm:","appdue:","appidem:","appmbx:","appobx:","appprobe:","appready:","appseq:","appterm:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","catalog-active:","catalog-entry:","child-by-parent:","ev:","fleet-event-by-workflow:","fleet-event:","fleet-event-tail","fleet-event-watermark","idx:","lease:","liveness:","offload:","ownership-mode-marker","op:","review:","schedule:","schedule-due:","schedule-run-by-schedule:","schedule-run-link:","schedule-run:","sig:","sigres:","sigseq:","start-idem:","state:","tag:","tool-effect:","upd:","upk:","upr:","wf:","wf-cleanup:","wf-cleanup-needed:","wf-concurrency:","wf-concurrency-holder:","wf-deadline:","wf-delayed:","wf-finalizer-state:","wf-has-services:","wf-headers:","wf-idx-","wf-owner-epoch:","wf-owner-holder:","wf-teardown:","wf-teardown-deadletter:","wf-teardown-needed:","wf-teardown-succeeded:","wf-terminal:"];var u=1e4,pe=1e4;class k extends Error{code="StorageBatchOperationLimitExceededError";cap=u;count;target;constructor(e,t){super(`${e} count ${t} exceeds MAX_BATCH_OPERATIONS (${u}).`);this.name="StorageBatchOperationLimitExceededError",this.target=e,this.count=t}}function l(e,t){if(t>u)throw new k(e,t)}function de(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"\xFF"}function ue(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 fe(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 P(e,t){if(e.has)return e.has(t);return b(e,t)}function B(e,t,r){if(e.keys)return e.keys(t,r);return s(e,t,r)}async function D(e,t){if(e.count)return e.count(t);return w(e,t)}async function E(e,t){if(e.deletePrefix)return e.deletePrefix(t);return S(e,t)}async function me(e,t){l("batch operations",t.length),await e.batch(t)}async function A(e,t,r){if(l("conditionalBatch conditions",t.length),l("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=o,z="0",q="1",R=(e,t,r,i)=>`sig:${n(e)}:${n(t)}:${i}:${n(r)}`,ye={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)=>R(e,t,r,q),startSignal:(e,t,r)=>R(e,t,r,z),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",...x,...O,...C,...h,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:${d}:${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 U(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 f(e){let t={},r=!1;for(let g of["gt","gte","lt","lte"]){let c=e[g];if(c===void 0)continue;if(typeof c!=="string")throw Error("deleteRange bounds must be strings");t[g]=c,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=U(e.limit);if(i!==void 0)t.limit=i;return t}async function T(e,t,r){let i=f(r);if(e.deleteRange)return e.deleteRange(t,i);return v(e,t,i)}function m(e){return e.replaceAll(/:+$/g,"")}function W(e,t){let r=m(e),i=m(t);if(r.length===0)return i;if(i.length===0)return r;return`${r}:${i}`}class y{#t;#n;constructor(e,t){this.#t=e,this.#n=m(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 y(this.#t,W(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){l("batch operations",e.length),await this.#t.batch(this.#r(e))}async conditionalBatch(e,t){return A(this.#t,e.map((r)=>({key:this.#e(r.key),expectedValue:r.expectedValue})),this.#r(t))}async has(e){return P(this.#t,this.#e(e))}async deletePrefix(e){return E(this.#t,this.#e(e))}async deleteRange(e,t){let r=this.#s(f(t));return T(this.#t,this.#e(e),r)}async*keys(e,t){for await(let r of B(this.#t,this.#e(e),this.#a(t)))yield this.#i(r)}async count(e){return D(this.#t,this.#e(e))}[Symbol.dispose](){this.#t[Symbol.dispose]()}}function Re(e,t){return new y(e,t)}export{y as ScopedStorage,Re as scopedStorage};
2
+ var j=import.meta.require;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 z(e){let t=e.capabilities(),r=[];if(t.persistence!=="local"&&t.persistence!=="remote")r.push(`persistence must be "local" or "remote" (got "${t.persistence}")`);if(t.readAfterWrite!=="linearizable")r.push(`readAfterWrite must be "linearizable" (got "${t.readAfterWrite}")`);if(t.scanConsistency!=="snapshot")r.push(`scanConsistency must be "snapshot" (got "${t.scanConsistency}")`);if(!t.atomicBatch)r.push("atomicBatch must be true");if(!t.conditionalBatch)r.push("conditionalBatch must be true");if(r.length>0)throw Error(`Storage is not durable enough for recovery: ${r.join("; ")}.`)}function n(e){return encodeURIComponent(e)}function q(e){return decodeURIComponent(e)}function U(e){try{return decodeURIComponent(e)}catch{return null}}function o(e){return String(e).padStart(16,"0")}var b={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:"};async function S(e,t){return await e.get(t)!==null}async function*s(e,t,r){for await(let[i]of e.scan(t,r))yield i}async function w(e,t){let r=0;for await(let i of s(e,t))r++;return r}async function O(e,t){let r=[];for await(let i of s(e,t))r.push({type:"delete",key:i});if(r.length===0)return 0;return await e.batch(r),r.length}async function E(e,t,r){let i=[];for await(let g of s(e,t,r))i.push({type:"delete",key:g});if(i.length===0)return 0;return await e.batch(i),i.length}var x={workflowGeneration:(e)=>`wf-gen:${n(e)}`};var v={livenessPrefix:()=>"liveness:",liveness:(e)=>`liveness:${n(e)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder"};var C={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)}:${o(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)}:${o(r)}`,applicationCommandTerminalPrefix:(e,t)=>`appterm:v1:${n(e)}:${n(t)}:`,applicationCommandTerminal:(e,t,r,i)=>`appterm:v1:${n(e)}:${n(t)}:${o(r)}:${n(i)}`};var R={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)}:${o(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)}:${o(r)}`,applicationDeliveryTerminalPrefix:(e,t)=>`appdterm:v1:${n(e)}:${n(t)}:`,applicationDeliveryTerminal:(e,t,r,i)=>`appdterm:v1:${n(e)}:${n(t)}:${o(r)}:${n(i)}`};var k={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${n(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${n(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var M="0",X="1",P=(e,t,r,i)=>`sig:${n(e)}:${n(t)}:${i}:${n(r)}`,_={signal:(e,t,r)=>P(e,t,r,X),startSignal:(e,t,r)=>P(e,t,r,M),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 d="default";var a=o,D={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)}`},B={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:${d}:${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"};var u=o,K={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}:${u(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:${u(e)}:${n(t)}:${n(r)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(e,t)=>`op:resolved-by-time:${u(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")}`},A={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 H=["actrec:","appcmd:","appdidem:","appdlv:","appdseq:","appdterm:","appdue:","appidem:","appmbx:","appobx:","appprobe:","appready:","appseq:","appterm:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","catalog-active:","catalog-entry:","catalog-tombstone:","child-by-parent:","ev:","fleet-event-by-workflow:","fleet-event:","fleet-event-tail","fleet-event-watermark","idx:","lease:","liveness:","offload:","ownership-mode-marker","op:","review:","schedule:","schedule-due:","schedule-run-by-schedule:","schedule-run-link:","schedule-run:","sig:","sigres:","sigseq:","start-idem:","state:","tag:","tool-effect:","upd:","upk:","upr:","wf:","wf-cleanup:","wf-cleanup-needed:","wf-concurrency:","wf-concurrency-holder:","wf-deadline:","wf-delayed:","wf-finalizer-state:","wf-gen:","wf-has-services:","wf-headers:","wf-idx-","wf-owner-epoch:","wf-owner-holder:","wf-teardown:","wf-teardown-deadletter:","wf-teardown-needed:","wf-teardown-succeeded:","wf-terminal:"];var f=1e4,Ke=1e4;class L extends Error{code="StorageBatchOperationLimitExceededError";cap=f;count;target;constructor(e,t){super(`${e} count ${t} exceeds MAX_BATCH_OPERATIONS (${f}).`);this.name="StorageBatchOperationLimitExceededError",this.target=e,this.count=t}}function l(e,t){if(t>f)throw new L(e,t)}function Ae(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"\xFF"}function Le(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 Te(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 T(e,t){if(e.has)return e.has(t);return S(e,t)}function I(e,t,r){if(e.keys)return e.keys(t,r);return s(e,t,r)}async function W(e,t){if(e.count)return e.count(t);return w(e,t)}async function Y(e,t){if(e.deletePrefix)return e.deletePrefix(t);return O(e,t)}async function Ie(e,t){l("batch operations",t.length),await e.batch(t)}async function N(e,t,r){if(l("conditionalBatch conditions",t.length),l("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 We={...K,..._,...D,...A,...v,...C,...R,...k,...b,...x,...B};function V(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 m(e){let t={},r=!1;for(let g of["gt","gte","lt","lte"]){let c=e[g];if(c===void 0)continue;if(typeof c!=="string")throw Error("deleteRange bounds must be strings");t[g]=c,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=V(e.limit);if(i!==void 0)t.limit=i;return t}async function F(e,t,r){let i=m(r);if(e.deleteRange)return e.deleteRange(t,i);return E(e,t,i)}function y(e){return e.replaceAll(/:+$/g,"")}function G(e,t){let r=y(e),i=y(t);if(r.length===0)return i;if(i.length===0)return r;return`${r}:${i}`}class h{#t;#n;constructor(e,t){this.#t=e,this.#n=y(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 h(this.#t,G(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){l("batch operations",e.length),await this.#t.batch(this.#r(e))}async conditionalBatch(e,t){return N(this.#t,e.map((r)=>({key:this.#e(r.key),expectedValue:r.expectedValue})),this.#r(t))}async has(e){return T(this.#t,this.#e(e))}async deletePrefix(e){return Y(this.#t,this.#e(e))}async deleteRange(e,t){let r=this.#s(m(t));return F(this.#t,this.#e(e),r)}async*keys(e,t){for await(let r of I(this.#t,this.#e(e),this.#a(t)))yield this.#i(r)}async count(e){return W(this.#t,this.#e(e))}[Symbol.dispose](){this.#t[Symbol.dispose]()}}function Ve(e,t){return new h(e,t)}export{h as ScopedStorage,Ve as scopedStorage};
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Storage key builders for buffered workflow signals and their accepted-response
3
+ * records.
4
+ *
5
+ * These are spread into `KEYS` in `interface.ts` rather than declared there, so
6
+ * the signal keyspace can carry its full rationale without pushing that file's
7
+ * documented line ceiling. Callers still reach them through `KEYS`, which keeps
8
+ * one import contract for storage keys.
9
+ *
10
+ * @module storage/signal-keys
11
+ */
12
+ /**
13
+ * Buffered workflow signal keys plus their accepted-response records.
14
+ *
15
+ * Spread into `KEYS`; not intended to be imported directly by engine code.
16
+ */
17
+ export declare const SIGNAL_KEYS: {
18
+ readonly signal: (workflowId: string, name: string, id: string) => string;
19
+ readonly startSignal: (workflowId: string, name: string, id: string) => string;
20
+ readonly signalSequence: (workflowId: string) => string;
21
+ readonly signalAcceptedResponsePrefix: (workflowId: string) => string;
22
+ readonly signalAcceptedResponse: (workflowId: string, name: string, signalId: string) => string;
23
+ };