@lostgradient/weft 0.23.0 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/README.md +72 -4
  2. package/dist/cli/codegen-emit-dedup.d.ts +81 -0
  3. package/dist/cli/codegen-emit-dedup.js +45 -0
  4. package/dist/cli/codegen-emit-registry.d.ts +90 -0
  5. package/dist/cli/codegen-emit-registry.js +50 -0
  6. package/dist/cli/codegen-emit.d.ts +26 -39
  7. package/dist/cli/codegen-emit.js +4 -27
  8. package/dist/cli/codegen-validate.d.ts +49 -0
  9. package/dist/cli/codegen-validate.js +186 -0
  10. package/dist/cli/codegen.js +6 -87
  11. package/dist/cli/generated/operation-catalog.snapshot.json +287 -3
  12. package/dist/cli/generated/operation-client.generated.d.ts +324 -10
  13. package/dist/cli/generated/operation-client.generated.js +12 -0
  14. package/dist/cli/output.js +1 -1
  15. package/dist/cli/storage-factory.js +2 -0
  16. package/dist/cli/workflow-commands.js +2 -0
  17. package/dist/cli-main.js +1 -1
  18. package/dist/core/application-payload-digest.d.ts +42 -0
  19. package/dist/core/application-payload-digest.js +76 -0
  20. package/dist/core/application-primitive-abort.d.ts +50 -0
  21. package/dist/core/application-primitive-abort.js +40 -0
  22. package/dist/core/application-primitive-attempt-registry.d.ts +74 -0
  23. package/dist/core/application-primitive-attempt-registry.js +73 -0
  24. package/dist/core/application-primitive-codec.d.ts +36 -0
  25. package/dist/core/application-primitive-codec.js +56 -0
  26. package/dist/core/application-primitive-commit.d.ts +67 -0
  27. package/dist/core/application-primitive-commit.js +66 -0
  28. package/dist/core/application-primitive-guards.d.ts +62 -0
  29. package/dist/core/application-primitive-guards.js +89 -0
  30. package/dist/core/application-primitive-payload.d.ts +29 -0
  31. package/dist/core/application-primitive-payload.js +65 -0
  32. package/dist/core/application-primitive-timing.d.ts +18 -0
  33. package/dist/core/application-primitive-timing.js +22 -0
  34. package/dist/core/atomic-state.js +2 -0
  35. package/dist/core/catalog/codec.d.ts +40 -0
  36. package/dist/core/catalog/codec.js +45 -0
  37. package/dist/core/catalog/errors.d.ts +104 -0
  38. package/dist/core/catalog/errors.js +41 -0
  39. package/dist/core/catalog/index.d.ts +25 -0
  40. package/dist/core/catalog/index.js +15 -0
  41. package/dist/core/catalog/reference-counts.d.ts +105 -0
  42. package/dist/core/catalog/reference-counts.js +28 -0
  43. package/dist/core/catalog/removal.d.ts +52 -0
  44. package/dist/core/catalog/removal.js +14 -0
  45. package/dist/core/catalog/storage-io.d.ts +78 -0
  46. package/dist/core/catalog/storage-io.js +106 -0
  47. package/dist/core/catalog/types.d.ts +108 -0
  48. package/dist/core/catalog/types.js +0 -0
  49. package/dist/core/catalog/workflow-catalog.d.ts +165 -0
  50. package/dist/core/catalog/workflow-catalog.js +198 -0
  51. package/dist/core/compare-codepoint.d.ts +13 -0
  52. package/dist/core/compare-codepoint.js +7 -0
  53. package/dist/core/compression.js +2 -0
  54. package/dist/core/context/attributes.d.ts +1 -1
  55. package/dist/core/context/durable-operations.d.ts +2 -2
  56. package/dist/core/context/index.js +5 -3
  57. package/dist/core/context/state-namespace.d.ts +1 -1
  58. package/dist/core/contract/build.d.ts +64 -0
  59. package/dist/core/contract/build.js +99 -0
  60. package/dist/core/contract/compatibility.d.ts +187 -0
  61. package/dist/core/contract/compatibility.js +37 -0
  62. package/dist/core/contract/failure.d.ts +64 -0
  63. package/dist/core/contract/failure.js +4 -0
  64. package/dist/core/contract/hash.d.ts +92 -0
  65. package/dist/core/contract/hash.js +34 -0
  66. package/dist/core/contract/index.d.ts +21 -0
  67. package/dist/core/contract/index.js +22 -0
  68. package/dist/core/contract/limits.d.ts +74 -0
  69. package/dist/core/contract/limits.js +1 -0
  70. package/dist/core/contract/manifest-parse-schema.d.ts +37 -0
  71. package/dist/core/contract/manifest-parse-schema.js +106 -0
  72. package/dist/core/contract/manifest-parse.d.ts +76 -0
  73. package/dist/core/contract/manifest-parse.js +189 -0
  74. package/dist/core/contract/manifest.d.ts +56 -0
  75. package/dist/core/contract/manifest.js +31 -0
  76. package/dist/core/contract/normalize.d.ts +97 -0
  77. package/dist/core/contract/normalize.js +127 -0
  78. package/dist/core/contract/revision.d.ts +29 -0
  79. package/dist/core/contract/revision.js +5 -0
  80. package/dist/core/contract/types.d.ts +274 -0
  81. package/dist/core/contract/types.js +1 -0
  82. package/dist/core/engine/catalog-activation.d.ts +40 -0
  83. package/dist/core/engine/catalog-activation.js +17 -0
  84. package/dist/core/engine/catalog-events.d.ts +36 -0
  85. package/dist/core/engine/catalog-events.js +15 -0
  86. package/dist/core/engine/catalog-readiness.d.ts +49 -0
  87. package/dist/core/engine/catalog-readiness.js +59 -0
  88. package/dist/core/engine/catalog-removal.d.ts +132 -0
  89. package/dist/core/engine/catalog-removal.js +70 -0
  90. package/dist/core/engine/construction.d.ts +1 -1
  91. package/dist/core/engine/construction.js +4 -2
  92. package/dist/core/engine/disposal.js +9 -0
  93. package/dist/core/engine/engine-workflows-namespace.d.ts +130 -0
  94. package/dist/core/engine/engine-workflows-namespace.js +49 -0
  95. package/dist/core/engine/finalizer-metadata.d.ts +22 -0
  96. package/dist/core/engine/finalizer-metadata.js +12 -0
  97. package/dist/core/engine/handle-result.js +2 -0
  98. package/dist/core/engine/index.d.ts +83 -0
  99. package/dist/core/engine/index.js +61 -0
  100. package/dist/core/engine/internals.d.ts +44 -1
  101. package/dist/core/engine/internals.js +6 -0
  102. package/dist/core/engine/lifecycle/start.js +3 -0
  103. package/dist/core/engine/registration.d.ts +76 -0
  104. package/dist/core/engine/registration.js +12 -6
  105. package/dist/core/engine/source-registration.d.ts +42 -0
  106. package/dist/core/engine/source-registration.js +36 -0
  107. package/dist/core/engine/source-resolution.d.ts +85 -0
  108. package/dist/core/engine/source-resolution.js +119 -0
  109. package/dist/core/engine/validation.js +2 -2
  110. package/dist/core/events/catalog-events.d.ts +117 -0
  111. package/dist/core/events/catalog-events.js +62 -0
  112. package/dist/core/events/event-map.d.ts +6 -0
  113. package/dist/core/events/index.d.ts +1 -0
  114. package/dist/core/events/index.js +1 -0
  115. package/dist/core/mailbox-admission.d.ts +26 -0
  116. package/dist/core/mailbox-admission.js +130 -0
  117. package/dist/core/mailbox-claims.d.ts +251 -0
  118. package/dist/core/mailbox-claims.js +0 -0
  119. package/dist/core/mailbox-codec.d.ts +32 -0
  120. package/dist/core/mailbox-codec.js +221 -0
  121. package/dist/core/mailbox-contract.d.ts +290 -0
  122. package/dist/core/mailbox-contract.js +0 -0
  123. package/dist/core/mailbox-delivery.d.ts +37 -0
  124. package/dist/core/mailbox-delivery.js +193 -0
  125. package/dist/core/mailbox-guards.d.ts +78 -0
  126. package/dist/core/mailbox-guards.js +58 -0
  127. package/dist/core/mailbox-index-codec.d.ts +41 -0
  128. package/dist/core/mailbox-index-codec.js +71 -0
  129. package/dist/core/mailbox-internals.d.ts +156 -0
  130. package/dist/core/mailbox-internals.js +154 -0
  131. package/dist/core/mailbox-maintenance.d.ts +29 -0
  132. package/dist/core/mailbox-maintenance.js +196 -0
  133. package/dist/core/mailbox-settlement.d.ts +69 -0
  134. package/dist/core/mailbox-settlement.js +206 -0
  135. package/dist/core/mailbox-storage.d.ts +117 -0
  136. package/dist/core/mailbox-storage.js +115 -0
  137. package/dist/core/mailbox-transition-helpers.d.ts +70 -0
  138. package/dist/core/mailbox-transition-helpers.js +43 -0
  139. package/dist/core/mailbox-transitions-recovery.d.ts +28 -0
  140. package/dist/core/mailbox-transitions-recovery.js +64 -0
  141. package/dist/core/mailbox-transitions.d.ts +138 -0
  142. package/dist/core/mailbox-transitions.js +180 -0
  143. package/dist/core/mailbox-types.d.ts +406 -0
  144. package/dist/core/mailbox-types.js +16 -0
  145. package/dist/core/mailbox-validation.d.ts +65 -0
  146. package/dist/core/mailbox-validation.js +73 -0
  147. package/dist/core/mailbox-waits.d.ts +50 -0
  148. package/dist/core/mailbox-waits.js +97 -0
  149. package/dist/core/mailbox.d.ts +163 -0
  150. package/dist/core/mailbox.js +211 -0
  151. package/dist/core/outbox-claims.d.ts +307 -0
  152. package/dist/core/outbox-claims.js +0 -0
  153. package/dist/core/outbox-codec.d.ts +24 -0
  154. package/dist/core/outbox-codec.js +257 -0
  155. package/dist/core/outbox-contract.d.ts +346 -0
  156. package/dist/core/outbox-contract.js +0 -0
  157. package/dist/core/outbox-delivery.d.ts +34 -0
  158. package/dist/core/outbox-delivery.js +149 -0
  159. package/dist/core/outbox-drain.d.ts +29 -0
  160. package/dist/core/outbox-drain.js +158 -0
  161. package/dist/core/outbox-enqueue.d.ts +24 -0
  162. package/dist/core/outbox-enqueue.js +115 -0
  163. package/dist/core/outbox-guards.d.ts +76 -0
  164. package/dist/core/outbox-guards.js +60 -0
  165. package/dist/core/outbox-index-codec.d.ts +33 -0
  166. package/dist/core/outbox-index-codec.js +71 -0
  167. package/dist/core/outbox-internals.d.ts +99 -0
  168. package/dist/core/outbox-internals.js +159 -0
  169. package/dist/core/outbox-listing.d.ts +12 -0
  170. package/dist/core/outbox-listing.js +38 -0
  171. package/dist/core/outbox-maintenance.d.ts +28 -0
  172. package/dist/core/outbox-maintenance.js +191 -0
  173. package/dist/core/outbox-operations.d.ts +18 -0
  174. package/dist/core/outbox-operations.js +46 -0
  175. package/dist/core/outbox-runner.d.ts +30 -0
  176. package/dist/core/outbox-runner.js +217 -0
  177. package/dist/core/outbox-settlement.d.ts +57 -0
  178. package/dist/core/outbox-settlement.js +183 -0
  179. package/dist/core/outbox-storage.d.ts +107 -0
  180. package/dist/core/outbox-storage.js +127 -0
  181. package/dist/core/outbox-transition-helpers.d.ts +83 -0
  182. package/dist/core/outbox-transition-helpers.js +63 -0
  183. package/dist/core/outbox-transitions-recovery.d.ts +30 -0
  184. package/dist/core/outbox-transitions-recovery.js +42 -0
  185. package/dist/core/outbox-transitions.d.ts +145 -0
  186. package/dist/core/outbox-transitions.js +236 -0
  187. package/dist/core/outbox-types.d.ts +400 -0
  188. package/dist/core/outbox-types.js +20 -0
  189. package/dist/core/outbox-validation.d.ts +101 -0
  190. package/dist/core/outbox-validation.js +127 -0
  191. package/dist/core/outbox-waits.d.ts +39 -0
  192. package/dist/core/outbox-waits.js +88 -0
  193. package/dist/core/outbox.d.ts +156 -0
  194. package/dist/core/outbox.js +234 -0
  195. package/dist/core/registry-limits.d.ts +49 -0
  196. package/dist/core/registry-limits.js +10 -0
  197. package/dist/core/registry-schema-conversion.d.ts +20 -0
  198. package/dist/core/registry-schema-conversion.js +22 -0
  199. package/dist/core/registry-snapshot.d.ts +91 -42
  200. package/dist/core/registry-snapshot.js +39 -77
  201. package/dist/core/registry-workflow-contract-draft.d.ts +32 -0
  202. package/dist/core/registry-workflow-contract-draft.js +28 -0
  203. package/dist/core/registry-workflow-manifest.d.ts +122 -0
  204. package/dist/core/registry-workflow-manifest.js +92 -0
  205. package/dist/core/source/errors.d.ts +55 -0
  206. package/dist/core/source/errors.js +13 -0
  207. package/dist/core/source/index.d.ts +19 -0
  208. package/dist/core/source/index.js +4 -0
  209. package/dist/core/source/resolvers.d.ts +45 -0
  210. package/dist/core/source/resolvers.js +9 -0
  211. package/dist/core/source/types.d.ts +211 -0
  212. package/dist/core/source/types.js +0 -0
  213. package/dist/core/source/validate.d.ts +91 -0
  214. package/dist/core/source/validate.js +62 -0
  215. package/dist/core/source/workflow-source.d.ts +43 -0
  216. package/dist/core/source/workflow-source.js +16 -0
  217. package/dist/core/types/workflow-registries.d.ts +7 -0
  218. package/dist/core/types/workflow-registry.d.ts +12 -0
  219. package/dist/core/versioning.js +2 -0
  220. package/dist/core/weft-error.d.ts +1 -1
  221. package/dist/core/weft-error.js +9 -1
  222. package/dist/http.js +2 -2
  223. package/dist/index.d.ts +23 -2
  224. package/dist/index.js +50 -0
  225. package/dist/indexeddb.js +1 -1
  226. package/dist/json-schema.js +3 -3
  227. package/dist/mcp/resources.js +2 -0
  228. package/dist/runtime/portable.d.ts +9 -1
  229. package/dist/server/fault-to-json-rpc.js +3 -1
  230. package/dist/server/handler/auth-context-principal.js +4 -0
  231. package/dist/server/json-rpc-http.js +2 -0
  232. package/dist/server/json-rpc-websocket.js +6 -4
  233. package/dist/server/operation-catalog/index.d.ts +1 -1
  234. package/dist/server/operation-catalog/pipeline-helpers.js +2 -0
  235. package/dist/server/operation-catalog/types.d.ts +17 -0
  236. package/dist/server/operation-fault.d.ts +3 -0
  237. package/dist/server/operation-fault.js +3 -1
  238. package/dist/server/operations/activate-workflow-revision.d.ts +30 -0
  239. package/dist/server/operations/activate-workflow-revision.js +69 -0
  240. package/dist/server/operations/fleet-events-subscription.js +1 -1
  241. package/dist/server/operations/fork-workflow.js +1 -1
  242. package/dist/server/operations/get-active-workflow-revision.d.ts +32 -0
  243. package/dist/server/operations/get-active-workflow-revision.js +46 -0
  244. package/dist/server/operations/get-catalog-diagnostics.d.ts +85 -0
  245. package/dist/server/operations/get-catalog-diagnostics.js +57 -0
  246. package/dist/server/operations/get-registry.js +17 -4
  247. package/dist/server/operations/get-workflow-revision.d.ts +25 -0
  248. package/dist/server/operations/get-workflow-revision.js +50 -0
  249. package/dist/server/operations/install-workflow-revision.d.ts +27 -0
  250. package/dist/server/operations/install-workflow-revision.js +46 -0
  251. package/dist/server/operations/list-workflow-revisions.d.ts +20 -0
  252. package/dist/server/operations/list-workflow-revisions.js +40 -0
  253. package/dist/server/operations/start-or-signal-workflow.js +1 -1
  254. package/dist/server/operations/start-workflow.js +1 -1
  255. package/dist/server/operations/static-registrations.js +36 -0
  256. package/dist/server/operations/storage.js +2 -2
  257. package/dist/server/operations/submit-review-decision.js +1 -1
  258. package/dist/server/operations/workflow-catalog-operation-helpers.d.ts +59 -0
  259. package/dist/server/operations/workflow-catalog-operation-helpers.js +135 -0
  260. package/dist/server/runtime/websocket-upgrade.js +2 -0
  261. package/dist/storage/bun-sql.js +49 -6
  262. package/dist/storage/catalog-keys.d.ts +45 -0
  263. package/dist/storage/catalog-keys.js +6 -0
  264. package/dist/storage/compressed-storage.js +1 -1
  265. package/dist/storage/derived-operations.js +1 -1
  266. package/dist/storage/index.d.ts +26 -1
  267. package/dist/storage/interface.d.ts +26 -1
  268. package/dist/storage/interface.js +1 -1
  269. package/dist/storage/key-encoding.d.ts +15 -0
  270. package/dist/storage/key-encoding.js +3 -0
  271. package/dist/storage/key-prefixes.d.ts +1 -1
  272. package/dist/storage/key-prefixes.js +15 -0
  273. package/dist/storage/lmdb.d.ts +26 -1
  274. package/dist/storage/lmdb.js +1 -1
  275. package/dist/storage/mailbox-keys.d.ts +80 -0
  276. package/dist/storage/mailbox-keys.js +14 -0
  277. package/dist/storage/memory.js +1 -1
  278. package/dist/storage/neon.js +2 -2
  279. package/dist/storage/node-sqlite-loader.d.ts +1 -1
  280. package/dist/storage/node-sqlite-loader.js +2 -2
  281. package/dist/storage/node-sqlite.js +51 -8
  282. package/dist/storage/outbox-keys.d.ts +77 -0
  283. package/dist/storage/outbox-keys.js +14 -0
  284. package/dist/storage/postgres.js +2 -2
  285. package/dist/storage/resolve.js +1 -1
  286. package/dist/storage/scoped-storage.js +1 -1
  287. package/dist/storage/storage-configuration.d.ts +6 -0
  288. package/dist/storage/testing.js +1 -1
  289. package/dist/storage/turso.js +2 -2
  290. package/dist/version.d.ts +1 -1
  291. package/dist/version.js +1 -1
  292. package/dist/web-extension.js +1 -1
  293. package/dist/worker/manifest/registry-contract-builder.d.ts +21 -3
  294. package/dist/worker/manifest/registry-contract-builder.js +40 -31
  295. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- var se=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 ae(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("; ")}.`)}var m="default";async function k(e,t){return await e.get(t)!==null}async function*g(e,t,r){for await(let[i]of e.scan(t,r))yield i}async function x(e,t){let r=0;for await(let i of g(e,t))r++;return r}async function v(e,t){let r=[];for await(let i of g(e,t))r.push({type:"delete",key:i});if(r.length===0)return 0;return await e.batch(r),r.length}async function A(e,t,r){let i=[];for await(let s of g(e,t,r))i.push({type:"delete",key:s});if(i.length===0)return 0;return await e.batch(i),i.length}function n(e){return encodeURIComponent(e)}function le(e){return decodeURIComponent(e)}function ue(e){try{return decodeURIComponent(e)}catch{return null}}var T={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${n(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${n(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var ce=["actrec:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","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 w=1e4,qe=1e4;class D 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 D(e,t)}function N(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"\xFF"}function Me(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 I(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 K(e,t){if(e.has)return e.has(t);return k(e,t)}function _(e,t,r){if(e.keys)return e.keys(t,r);return g(e,t,r)}async function V(e,t){if(e.count)return e.count(t);return x(e,t)}async function q(e,t){if(e.deletePrefix)return e.deletePrefix(t);return v(e,t)}async function Ue(e,t){c("batch operations",t.length),await e.batch(t)}async function M(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 u=(e)=>String(e).padStart(16,"0"),ge="0",de="1",L=(e,t,r,i)=>`sig:${n(e)}:${n(t)}:${i}:${n(r)}`,ze={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")}`,signal:(e,t,r)=>L(e,t,r,de),startSignal:(e,t,r)=>L(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)}`,deadline:(e,t)=>`wf-deadline:${u(e)}:${n(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${u(e)}:${n(t)}`,teardownTimer:(e,t)=>`wf-teardown:${u(e)}:${n(t)}`,delayedStart:(e,t)=>`wf-delayed:${u(e)}:${n(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${u(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",...T,budget:(e,t,r)=>`budget:${e}:${t}:${r}`,review:(e,t)=>`review:${n(e)}:${t}`,workflowHeaders:(e)=>`wf-headers:${n(e)}`,childCancellationPrefix:(e)=>`child-cancel:${n(e)}:`,childCancellation:(e,t)=>`child-cancel:${n(e)}:${n(t)}`,childWorkflowByParentPrefix:(e,t)=>`child-by-parent:${n(e)}:${t===void 0?"":`${n(t)}:`}`,childWorkflowByParent:(e,t,r)=>`child-by-parent:${n(e)}:${t===void 0?"":`${n(t)}:`}${n(r)}`,terminalCleanupNeeded:(e)=>`wf-cleanup-needed:${n(e)}`,workflowConcurrency:(e,t)=>`wf-concurrency:${n(e)}:${n(t)}`,workflowConcurrencyHolder:(e)=>`wf-concurrency-holder:${n(e)}`,workflowHasServices:(e)=>`wf-has-services:${n(e)}`,finalizerState:(e)=>`wf-finalizer-state:${n(e)}`,teardownOwed:(e)=>`wf-teardown-needed:${n(e)}`,teardownSucceeded:(e)=>`wf-teardown-succeeded:${n(e)}`,teardownDeadLetter:(e)=>`wf-teardown-deadletter:${n(e)}`,offload:(e,t)=>`offload:${n(e)}:${t}`,archive:(e,t)=>`archive:${n(e)}:${t}`,stateExecution:(e,t)=>`state:execution:${n(e)}:${n(t)}`,stateWorkflow:(e,t)=>`state:workflow-scope:${m}:${n(e)}:${n(t)}`,streamChunkPrefix:(e,t)=>`blob:${n(e)}:${t}:chunk:`,streamChunk:(e,t,r)=>`blob:${n(e)}:${t}:chunk:${String(r).padStart(10,"0")}`,streamTail:(e,t)=>`blob:${n(e)}:${t}:tail`,streamMetadata:(e,t)=>`blob:${n(e)}:${t}:meta`,budgetCharged:(e)=>`budget-charged:${e}`,toolEffect:(e,t,r)=>`tool-effect:${n(e)}:${t}:${r}`,workflowVisibilityStatus:(e,t)=>`wf-idx-status:${n(e)}:${n(t)}`,workflowVisibilityType:(e,t)=>`wf-idx-type:${n(e)}:${n(t)}`,workflowVisibilityCreated:(e,t)=>`wf-idx-created:${u(e)}:${n(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${u(e)}:${n(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${u(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 ye(e){if(e===void 0)return;if(typeof e!=="number"||!Number.isInteger(e)||e<0)throw Error("deleteRange limit must be a finite non-negative integer");return e===0?0:e}function d(e){let t={},r=!1;for(let 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=ye(e.limit);if(i!==void 0)t.limit=i;return t}async function U(e,t,r){let i=d(r);if(e.deleteRange)return e.deleteRange(t,i);return A(e,t,i)}function P(e){return e.replaceAll(/:+$/g,"")}function pe(e,t){let r=P(e),i=P(t);if(r.length===0)return i;if(i.length===0)return r;return`${r}:${i}`}class E{#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 E(this.#e,pe(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 M(this.#e,e.map((r)=>({key:this.#r(r.key),expectedValue:r.expectedValue})),this.#i(t))}async has(e){return K(this.#e,this.#r(e))}async deletePrefix(e){return q(this.#e,this.#r(e))}async deleteRange(e,t){let r=this.#a(d(t));return U(this.#e,this.#r(e),r)}async*keys(e,t){for await(let r of _(this.#e,this.#r(e),this.#n(t)))yield this.#o(r)}async count(e){return V(this.#e,this.#r(e))}[Symbol.dispose](){this.#e[Symbol.dispose]()}}function z(e,t){return new E(e,t)}function F(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,he(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 fe=/cannot find module|module_not_found|failed to resolve|could not resolve/i;function he(e,t){let r=e instanceof Error?e.message:String(e);if(fe.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 S(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 p(e){return Buffer.from(e)}function b(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 G(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(!I(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(p(a));await e.query(t.upsertValuesByKeys,[i,s])}if(r.deletes.size>0)await e.query(t.deleteValuesByKeys,[[...r.deletes]])}var H=/^[a-z_][a-z0-9_]*$/i;function Q(e,t,r){if(!H.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 ${H.source}).`)}var W="kv";function O(e,t){Q(e,t,"Postgres")}function X(e){let{schema:t,table:r}=e;if(t===void 0&&r===void 0)return W;let i=r??W;if(O(i,"table"),t===void 0)return`"${i}"`;return O(t,"schema"),`"${t}"."${i}"`}function f(e){return[e,N(e)]}function Z(e,t){let{gt:r,gte:i,lt:s,lte:o}=t,a=f(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 Y(e,t={}){let{limit:r,reverse:i}=t,{conditions:s,parameters:o}=Z(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 j(e){let t=`CREATE TABLE IF NOT EXISTS ${e} (
2
+ var ce=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 ge(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 N={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 g(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){g("batch operations",t.length),await e.batch(t)}async function G(e,t,r){if(g("conditionalBatch conditions",t.length),g("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 c=u,fe="0",me="1",K=(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}:${c(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:${c(e)}:${n(t)}:${n(r)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(e,t)=>`op:resolved-by-time:${c(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)=>K(e,t,r,me),startSignal:(e,t,r)=>K(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:${c(e)}:${n(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${c(e)}:${n(t)}`,teardownTimer:(e,t)=>`wf-teardown:${c(e)}:${n(t)}`,delayedStart:(e,t)=>`wf-delayed:${c(e)}:${n(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${c(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,...N,...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:${c(e)}:${n(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${c(e)}:${n(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${c(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){g("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} (
3
3
  key TEXT COLLATE "C" PRIMARY KEY,
4
4
  value BYTEA NOT NULL
5
5
  )`,r=`
@@ -12,4 +12,4 @@ var se=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}=Y(i,s);return{parameters:o,sql:`SELECT key, value FROM ${e} ${a}`}},keyRangeSelect(i,s={}){let{parameters:o,whereOrderLimit:a}=Y(i,s);return{parameters:o,sql:`SELECT key FROM ${e} ${a}`}},keyRangeDelete(i,s){let{conditions:o,parameters:a}=Z(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 J="BEGIN ISOLATION LEVEL SERIALIZABLE",ee="BEGIN ISOLATION LEVEL READ COMMITTED",te="BEGIN READ ONLY",re="COMMIT",B="ROLLBACK";function ne(e){return O(e,"schema"),`CREATE SCHEMA IF NOT EXISTS "${e}"`}var me=/^PRAGMA\b/iu,we=/^PRAGMA\s+(?:[A-Z_][A-Z0-9_]*\.)?[A-Z_][A-Z0-9_]*\s*$/iu,Pe=/^SELECT\b/iu;function Ee(e){return e.trim().replace(/;+\s*$/u,"").trim()}function Se(e){return we.test(e)}function ie(e){let t=Ee(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(Pe.test(t))return;if(me.test(t)&&Se(t))return;throw Error("Storage query only supports read-only SELECT and PRAGMA statements.")}var be=new Set(["40001","40P01"]),oe=5;function $e(e){if(typeof e!=="object"||e===null||!("code"in e))return!1;let t=e.code;return typeof t==="string"&&be.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=X({schema:e.schema,table:e.table});this.#t=j(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(ne(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 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,p(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]=f(e),i=await this.#e.query(this.#t.deleteKeysByPrefix,[t,r]);return S(i)}async deleteRange(e,t){await this.#n();let r=d(t),{parameters:i,sql:s}=this.#t.keyRangeDelete(e,r),o=await this.#e.query(s,i);return S(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]=f(e),i=await this.#e.query(this.#t.countKeysByPrefix,[t,r]);return Number(i.rows[0]?.count??0)}scoped(e){return z(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)?re:B),s}catch(s){throw await i.query(B).catch(()=>{}),s}}finally{i.release()}}async batch(e){if(c("batch operations",e.length),e.length===0)return;await this.#n(),await this.#l(ee,async(t)=>{await R(t,this.#t,b(e))})}async conditionalBatch(e,t){c("conditionalBatch conditions",e.length),c("conditionalBatch operations",t.length),await this.#n();let r=b(t),i;for(let s=0;s<oe;s+=1)try{return await this.#l(J,async(o)=>{if(!await G(o,this.#t,e))return!1;return await R(o,this.#t,r),!0},(o)=>o)}catch(o){if(!$e(o))throw o;i=o}throw Error(`conditionalBatch exhausted ${oe} attempts after retryable transaction failures`,{cause:i})}async query(e,t){return await this.#n(),ie(e),this.#l(te,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 Re(e){return F(e,{driverName:"@neondatabase/serverless",storageName:"NeonStorage",loadPool:(t)=>import("@neondatabase/serverless").then(({Pool:r})=>new r({connectionString:t}))})}class Oe extends C{constructor(e,t=Re){super(e,t)}}export{Oe as NeonStorage};
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.#c()}async#c(){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(g("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){g("conditionalBatch conditions",e.length),g("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:"@neondatabase/serverless",storageName:"NeonStorage",loadPool:(t)=>import("@neondatabase/serverless").then(({Pool:r})=>new r({connectionString:t}))})}class Be extends C{constructor(e,t=Ce){super(e,t)}}export{Be as NeonStorage};
@@ -17,7 +17,7 @@ export type BetterSqliteStatement = {
17
17
  get(...parameters: unknown[]): Record<string, unknown> | undefined;
18
18
  all(...parameters: unknown[]): Record<string, unknown>[];
19
19
  };
20
- export type BetterSqliteTransaction = <TArguments extends unknown[], TResult>(...args: TArguments) => TResult;
20
+ export type BetterSqliteTransaction = (...args: unknown[]) => unknown;
21
21
  export type BetterSqliteDatabase = {
22
22
  pragma(source: string): unknown;
23
23
  exec(source: string): void;
@@ -11,8 +11,8 @@ export function isBetterSqlite3LoadFailure(error) {
11
11
  return error.message.includes("'better-sqlite3'") || error.message.includes('"better-sqlite3"') || error.message.includes("'bindings'") || error.message.includes('"bindings"');
12
12
  if (errorCode === "ERR_DLOPEN_FAILED")
13
13
  return error.message.includes("better-sqlite3");
14
- if (error.message.includes("Could not locate the bindings file"))
15
- return error.message.includes("better_sqlite3.node");
14
+ if (errorCode === void 0)
15
+ return error.message.startsWith("Could not locate the bindings file.") && error.message.includes("better_sqlite3.node");
16
16
  return !1;
17
17
  }
18
18
  function resolveBetterSqlite3Module() {
@@ -6,6 +6,21 @@ function requireStorageCapability(storage, capability, featureName) {
6
6
  }
7
7
  }
8
8
 
9
+ // src/storage/key-encoding.ts
10
+ function encodeStorageKeyComponent(value) {
11
+ return encodeURIComponent(value);
12
+ }
13
+ function formatSortableStorageTimestamp(timestamp) {
14
+ return String(timestamp).padStart(16, "0");
15
+ }
16
+
17
+ // src/storage/catalog-keys.ts
18
+ var WORKFLOW_CATALOG_KEYS = {
19
+ catalogEntry: (name, revision) => `catalog-entry:${encodeStorageKeyComponent(name)}:${encodeStorageKeyComponent(revision)}`,
20
+ catalogEntryPrefix: (name) => `catalog-entry:${encodeStorageKeyComponent(name)}:`,
21
+ catalogActive: (name) => `catalog-active:${encodeStorageKeyComponent(name)}`
22
+ };
23
+
9
24
  // src/storage/default-scope.ts
10
25
  var DEFAULT_SCOPE = "default";
11
26
 
@@ -20,7 +35,7 @@ async function* storageKeysCore(storage, prefix, options) {
20
35
  }
21
36
  async function storageCountCore(storage, prefix) {
22
37
  let count = 0;
23
- for await (const _key of storageKeysCore(storage, prefix)) {
38
+ for await (const _ of storageKeysCore(storage, prefix)) {
24
39
  count++;
25
40
  }
26
41
  return count;
@@ -48,10 +63,35 @@ async function storageDeleteRangeCore(storage, prefix, options) {
48
63
  return operations.length;
49
64
  }
50
65
 
51
- // src/storage/key-encoding.ts
52
- function encodeStorageKeyComponent(value) {
53
- return encodeURIComponent(value);
54
- }
66
+ // src/storage/mailbox-keys.ts
67
+ var MAILBOX_KEYS = {
68
+ applicationMailbox: (namespace, resourceId) => `appmbx:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(resourceId)}`,
69
+ applicationMailboxSinkProbe: (namespace, resourceId, nonce) => `appprobe:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(resourceId)}:${encodeStorageKeyComponent(nonce)}`,
70
+ applicationCommandPrefix: (namespace, resourceId) => `appcmd:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(resourceId)}:`,
71
+ applicationCommand: (namespace, resourceId, commandId) => `appcmd:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(resourceId)}:${encodeStorageKeyComponent(commandId)}`,
72
+ applicationCommandReadyPrefix: (namespace, resourceId) => `appready:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(resourceId)}:`,
73
+ applicationCommandReady: (namespace, resourceId, sequence) => `appready:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(resourceId)}:${formatSortableStorageTimestamp(sequence)}`,
74
+ applicationCommandIdempotency: (namespace, resourceId, key) => `appidem:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(resourceId)}:${encodeStorageKeyComponent(key)}`,
75
+ applicationCommandBySequencePrefix: (namespace, resourceId) => `appseq:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(resourceId)}:`,
76
+ applicationCommandBySequence: (namespace, resourceId, sequence) => `appseq:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(resourceId)}:${formatSortableStorageTimestamp(sequence)}`,
77
+ applicationCommandTerminalPrefix: (namespace, resourceId) => `appterm:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(resourceId)}:`,
78
+ applicationCommandTerminal: (namespace, resourceId, terminalAt, commandId) => `appterm:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(resourceId)}:${formatSortableStorageTimestamp(terminalAt)}:${encodeStorageKeyComponent(commandId)}`
79
+ };
80
+
81
+ // src/storage/outbox-keys.ts
82
+ var OUTBOX_KEYS = {
83
+ applicationOutbox: (namespace, ownerId) => `appobx:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(ownerId)}`,
84
+ applicationOutboxSinkProbe: (namespace, ownerId, nonce) => `appprobe:v1:outbox:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(ownerId)}:${encodeStorageKeyComponent(nonce)}`,
85
+ applicationDeliveryPrefix: (namespace, ownerId) => `appdlv:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(ownerId)}:`,
86
+ applicationDelivery: (namespace, ownerId, deliveryId) => `appdlv:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(ownerId)}:${encodeStorageKeyComponent(deliveryId)}`,
87
+ applicationDeliveryDuePrefix: (namespace, ownerId) => `appdue:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(ownerId)}:`,
88
+ applicationDeliveryDue: (namespace, ownerId, availableAt, deliveryId) => `appdue:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(ownerId)}:${formatSortableStorageTimestamp(availableAt)}:${encodeStorageKeyComponent(deliveryId)}`,
89
+ applicationDeliveryIdempotency: (namespace, ownerId, key) => `appdidem:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(ownerId)}:${encodeStorageKeyComponent(key)}`,
90
+ applicationDeliveryBySequencePrefix: (namespace, ownerId) => `appdseq:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(ownerId)}:`,
91
+ applicationDeliveryBySequence: (namespace, ownerId, sequence) => `appdseq:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(ownerId)}:${formatSortableStorageTimestamp(sequence)}`,
92
+ applicationDeliveryTerminalPrefix: (namespace, ownerId) => `appdterm:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(ownerId)}:`,
93
+ applicationDeliveryTerminal: (namespace, ownerId, terminalAt, deliveryId) => `appdterm:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(ownerId)}:${formatSortableStorageTimestamp(terminalAt)}:${encodeStorageKeyComponent(deliveryId)}`
94
+ };
55
95
 
56
96
  // src/storage/ownership-keys.ts
57
97
  var OWNERSHIP_CLAIM_KEYS = {
@@ -129,7 +169,7 @@ async function storageConditionalBatch(storage, conditions, operations) {
129
169
  }
130
170
  return storage.conditionalBatch(conditions, operations);
131
171
  }
132
- var formatSortableTimestamp = (timestamp) => String(timestamp).padStart(16, "0");
172
+ var formatSortableTimestamp = formatSortableStorageTimestamp;
133
173
  var SIGNAL_SORT_CLASS_START = "0";
134
174
  var SIGNAL_SORT_CLASS_NORMAL = "1";
135
175
  var signalStorageKey = (workflowId, name, id, sortClass) => `sig:${encodeStorageKeyComponent(workflowId)}:${encodeStorageKeyComponent(name)}:${sortClass}:${encodeStorageKeyComponent(id)}`;
@@ -192,7 +232,10 @@ var KEYS = {
192
232
  leasePrefix: () => "lease:",
193
233
  leaseEpoch: () => "lease:epoch",
194
234
  leaseHolder: () => "lease:holder",
235
+ ...MAILBOX_KEYS,
236
+ ...OUTBOX_KEYS,
195
237
  ...OWNERSHIP_CLAIM_KEYS,
238
+ ...WORKFLOW_CATALOG_KEYS,
196
239
  budget: (namespace, period, date) => `budget:${namespace}:${period}:${date}`,
197
240
  review: (workflowId, reviewId) => `review:${encodeStorageKeyComponent(workflowId)}:${reviewId}`,
198
241
  workflowHeaders: (workflowId) => `wf-headers:${encodeStorageKeyComponent(workflowId)}`,
@@ -262,8 +305,8 @@ function isBetterSqlite3LoadFailure(error) {
262
305
  if (errorCode === "ERR_DLOPEN_FAILED") {
263
306
  return error.message.includes("better-sqlite3");
264
307
  }
265
- if (error.message.includes("Could not locate the bindings file")) {
266
- return error.message.includes("better_sqlite3.node");
308
+ if (errorCode === undefined) {
309
+ return error.message.startsWith("Could not locate the bindings file.") && error.message.includes("better_sqlite3.node");
267
310
  }
268
311
  return false;
269
312
  }
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Storage key builders for the durable application delivery outbox (WFT-85).
3
+ *
4
+ * Spread into `KEYS` in `interface.ts` rather than declared there, so the
5
+ * outbox keyspace can carry its full rationale without pushing that file past
6
+ * its documented line ceiling. Callers still reach these through `KEYS`.
7
+ *
8
+ * Every key is scoped by an opaque `(namespace, ownerId)` pair. Weft never
9
+ * interprets either component, and no key here overlaps the mailbox, workflow,
10
+ * schedule, or worker-protocol keyspaces.
11
+ *
12
+ * @module storage/outbox-keys
13
+ */
14
+ /**
15
+ * Outbox header, delivery record, time-keyed due index, sequence-ordered
16
+ * listing index, idempotency binding, terminal-retention index, and sink-probe
17
+ * keys.
18
+ *
19
+ * Spread into `KEYS`; not intended to be imported directly by outbox code.
20
+ */
21
+ export declare const OUTBOX_KEYS: {
22
+ /**
23
+ * The durable outbox header for one `(namespace, ownerId)` delivery outbox:
24
+ * the listing sequence allocator plus the open-backlog counter that enqueue
25
+ * backpressure reads. One key per outbox, so enqueue and terminal transitions
26
+ * serialize against each other per outbox rather than globally.
27
+ */
28
+ readonly applicationOutbox: (namespace: string, ownerId: string) => string;
29
+ /**
30
+ * A single-use probe an event sink writes in the first commit it makes for an
31
+ * outbox, read back from the outbox's own storage. Its presence proves the
32
+ * sink committed here rather than to some other backend; it is deleted as
33
+ * soon as it has been observed.
34
+ */
35
+ readonly applicationOutboxSinkProbe: (namespace: string, ownerId: string, nonce: string) => string;
36
+ /** Scan prefix for every canonical delivery record in one outbox. */
37
+ readonly applicationDeliveryPrefix: (namespace: string, ownerId: string) => string;
38
+ /**
39
+ * The one authoritative record for a delivery. Every transition proves the
40
+ * expected prior bytes through `storage.conditionalBatch`, so this key is the
41
+ * delivery's compare-and-swap fence.
42
+ */
43
+ readonly applicationDelivery: (namespace: string, ownerId: string, deliveryId: string) => string;
44
+ /** Scan prefix for an outbox's time-keyed due index. */
45
+ readonly applicationDeliveryDuePrefix: (namespace: string, ownerId: string) => string;
46
+ /**
47
+ * The due index, keyed by the instant a delivery becomes claimable and then
48
+ * by its id. Unlike the mailbox's FIFO index this is TIME-keyed: deliveries
49
+ * are independent of one another, so a retry scheduled for later must not
50
+ * hold back one queued for now.
51
+ */
52
+ readonly applicationDeliveryDue: (namespace: string, ownerId: string, availableAt: number, deliveryId: string) => string;
53
+ /**
54
+ * Maps an idempotency key to the delivery id enqueued for it. Written in the
55
+ * same conditional batch as the delivery record, gated on this key being
56
+ * absent, so concurrent same-key enqueues converge on one delivery. Retained
57
+ * past terminal so a post-terminal retry resolves the original receipt.
58
+ */
59
+ readonly applicationDeliveryIdempotency: (namespace: string, ownerId: string, key: string) => string;
60
+ /** Scan prefix for an outbox's full sequence-ordered listing index. */
61
+ readonly applicationDeliveryBySequencePrefix: (namespace: string, ownerId: string) => string;
62
+ /**
63
+ * Every delivery in the outbox, ordered by enqueue sequence. Distinct from
64
+ * the due index, which holds only the claimable subset; a delivery stays here
65
+ * until retention retires it, so bounded listing has an index covering every
66
+ * state.
67
+ */
68
+ readonly applicationDeliveryBySequence: (namespace: string, ownerId: string, sequence: number) => string;
69
+ /** Scan prefix for an outbox's terminal-receipt retention index. */
70
+ readonly applicationDeliveryTerminalPrefix: (namespace: string, ownerId: string) => string;
71
+ /**
72
+ * Terminal-receipt retention index, sorted by the time the delivery reached
73
+ * a terminal disposition so retention sweeps delete the oldest bounded batch
74
+ * first.
75
+ */
76
+ readonly applicationDeliveryTerminal: (namespace: string, ownerId: string, terminalAt: number, deliveryId: string) => string;
77
+ };
@@ -0,0 +1,14 @@
1
+ import { encodeStorageKeyComponent, formatSortableStorageTimestamp } from "./key-encoding.js";
2
+ export const OUTBOX_KEYS = {
3
+ applicationOutbox: (namespace, ownerId) => `appobx:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(ownerId)}`,
4
+ applicationOutboxSinkProbe: (namespace, ownerId, nonce) => `appprobe:v1:outbox:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(ownerId)}:${encodeStorageKeyComponent(nonce)}`,
5
+ applicationDeliveryPrefix: (namespace, ownerId) => `appdlv:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(ownerId)}:`,
6
+ applicationDelivery: (namespace, ownerId, deliveryId) => `appdlv:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(ownerId)}:${encodeStorageKeyComponent(deliveryId)}`,
7
+ applicationDeliveryDuePrefix: (namespace, ownerId) => `appdue:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(ownerId)}:`,
8
+ applicationDeliveryDue: (namespace, ownerId, availableAt, deliveryId) => `appdue:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(ownerId)}:${formatSortableStorageTimestamp(availableAt)}:${encodeStorageKeyComponent(deliveryId)}`,
9
+ applicationDeliveryIdempotency: (namespace, ownerId, key) => `appdidem:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(ownerId)}:${encodeStorageKeyComponent(key)}`,
10
+ applicationDeliveryBySequencePrefix: (namespace, ownerId) => `appdseq:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(ownerId)}:`,
11
+ applicationDeliveryBySequence: (namespace, ownerId, sequence) => `appdseq:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(ownerId)}:${formatSortableStorageTimestamp(sequence)}`,
12
+ applicationDeliveryTerminalPrefix: (namespace, ownerId) => `appdterm:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(ownerId)}:`,
13
+ applicationDeliveryTerminal: (namespace, ownerId, terminalAt, deliveryId) => `appdterm:v1:${encodeStorageKeyComponent(namespace)}:${encodeStorageKeyComponent(ownerId)}:${formatSortableStorageTimestamp(terminalAt)}:${encodeStorageKeyComponent(deliveryId)}`
14
+ };
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- var se=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 ae(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("; ")}.`)}var m="default";async function k(e,t){return await e.get(t)!==null}async function*g(e,t,r){for await(let[i]of e.scan(t,r))yield i}async function x(e,t){let r=0;for await(let i of g(e,t))r++;return r}async function v(e,t){let r=[];for await(let i of g(e,t))r.push({type:"delete",key:i});if(r.length===0)return 0;return await e.batch(r),r.length}async function A(e,t,r){let i=[];for await(let s of g(e,t,r))i.push({type:"delete",key:s});if(i.length===0)return 0;return await e.batch(i),i.length}function n(e){return encodeURIComponent(e)}function le(e){return decodeURIComponent(e)}function ue(e){try{return decodeURIComponent(e)}catch{return null}}var T={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${n(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${n(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var ce=["actrec:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","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 w=1e4,qe=1e4;class D 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 D(e,t)}function I(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"\xFF"}function Me(e,t={}){if(t.gt!==void 0&&e<=t.gt)return!1;if(t.gte!==void 0&&e<t.gte)return!1;if(t.lt!==void 0&&e>=t.lt)return!1;if(t.lte!==void 0&&e>t.lte)return!1;return!0}function N(e,t){if(e===null||t===null)return e===t;if(e.byteLength!==t.byteLength)return!1;for(let r=0;r<e.byteLength;r++)if(e[r]!==t[r])return!1;return!0}async function K(e,t){if(e.has)return e.has(t);return k(e,t)}function _(e,t,r){if(e.keys)return e.keys(t,r);return g(e,t,r)}async function V(e,t){if(e.count)return e.count(t);return x(e,t)}async function q(e,t){if(e.deletePrefix)return e.deletePrefix(t);return v(e,t)}async function Ue(e,t){c("batch operations",t.length),await e.batch(t)}async function M(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 u=(e)=>String(e).padStart(16,"0"),ge="0",de="1",L=(e,t,r,i)=>`sig:${n(e)}:${n(t)}:${i}:${n(r)}`,ze={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")}`,signal:(e,t,r)=>L(e,t,r,de),startSignal:(e,t,r)=>L(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)}`,deadline:(e,t)=>`wf-deadline:${u(e)}:${n(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${u(e)}:${n(t)}`,teardownTimer:(e,t)=>`wf-teardown:${u(e)}:${n(t)}`,delayedStart:(e,t)=>`wf-delayed:${u(e)}:${n(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${u(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",...T,budget:(e,t,r)=>`budget:${e}:${t}:${r}`,review:(e,t)=>`review:${n(e)}:${t}`,workflowHeaders:(e)=>`wf-headers:${n(e)}`,childCancellationPrefix:(e)=>`child-cancel:${n(e)}:`,childCancellation:(e,t)=>`child-cancel:${n(e)}:${n(t)}`,childWorkflowByParentPrefix:(e,t)=>`child-by-parent:${n(e)}:${t===void 0?"":`${n(t)}:`}`,childWorkflowByParent:(e,t,r)=>`child-by-parent:${n(e)}:${t===void 0?"":`${n(t)}:`}${n(r)}`,terminalCleanupNeeded:(e)=>`wf-cleanup-needed:${n(e)}`,workflowConcurrency:(e,t)=>`wf-concurrency:${n(e)}:${n(t)}`,workflowConcurrencyHolder:(e)=>`wf-concurrency-holder:${n(e)}`,workflowHasServices:(e)=>`wf-has-services:${n(e)}`,finalizerState:(e)=>`wf-finalizer-state:${n(e)}`,teardownOwed:(e)=>`wf-teardown-needed:${n(e)}`,teardownSucceeded:(e)=>`wf-teardown-succeeded:${n(e)}`,teardownDeadLetter:(e)=>`wf-teardown-deadletter:${n(e)}`,offload:(e,t)=>`offload:${n(e)}:${t}`,archive:(e,t)=>`archive:${n(e)}:${t}`,stateExecution:(e,t)=>`state:execution:${n(e)}:${n(t)}`,stateWorkflow:(e,t)=>`state:workflow-scope:${m}:${n(e)}:${n(t)}`,streamChunkPrefix:(e,t)=>`blob:${n(e)}:${t}:chunk:`,streamChunk:(e,t,r)=>`blob:${n(e)}:${t}:chunk:${String(r).padStart(10,"0")}`,streamTail:(e,t)=>`blob:${n(e)}:${t}:tail`,streamMetadata:(e,t)=>`blob:${n(e)}:${t}:meta`,budgetCharged:(e)=>`budget-charged:${e}`,toolEffect:(e,t,r)=>`tool-effect:${n(e)}:${t}:${r}`,workflowVisibilityStatus:(e,t)=>`wf-idx-status:${n(e)}:${n(t)}`,workflowVisibilityType:(e,t)=>`wf-idx-type:${n(e)}:${n(t)}`,workflowVisibilityCreated:(e,t)=>`wf-idx-created:${u(e)}:${n(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${u(e)}:${n(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${u(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 ye(e){if(e===void 0)return;if(typeof e!=="number"||!Number.isInteger(e)||e<0)throw Error("deleteRange limit must be a finite non-negative integer");return e===0?0:e}function d(e){let t={},r=!1;for(let 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=ye(e.limit);if(i!==void 0)t.limit=i;return t}async function U(e,t,r){let i=d(r);if(e.deleteRange)return e.deleteRange(t,i);return A(e,t,i)}function P(e){return e.replaceAll(/:+$/g,"")}function pe(e,t){let r=P(e),i=P(t);if(r.length===0)return i;if(i.length===0)return r;return`${r}:${i}`}class E{#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 E(this.#e,pe(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 M(this.#e,e.map((r)=>({key:this.#r(r.key),expectedValue:r.expectedValue})),this.#i(t))}async has(e){return K(this.#e,this.#r(e))}async deletePrefix(e){return q(this.#e,this.#r(e))}async deleteRange(e,t){let r=this.#a(d(t));return U(this.#e,this.#r(e),r)}async*keys(e,t){for await(let r of _(this.#e,this.#r(e),this.#n(t)))yield this.#o(r)}async count(e){return V(this.#e,this.#r(e))}[Symbol.dispose](){this.#e[Symbol.dispose]()}}function z(e,t){return new E(e,t)}function F(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,he(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 fe=/cannot find module|module_not_found|failed to resolve|could not resolve/i;function he(e,t){let r=e instanceof Error?e.message:String(e);if(fe.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 S(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 p(e){return Buffer.from(e)}function b(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 G(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(!N(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(p(a));await e.query(t.upsertValuesByKeys,[i,s])}if(r.deletes.size>0)await e.query(t.deleteValuesByKeys,[[...r.deletes]])}var H=/^[a-z_][a-z0-9_]*$/i;function Q(e,t,r){if(!H.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 ${H.source}).`)}var W="kv";function O(e,t){Q(e,t,"Postgres")}function X(e){let{schema:t,table:r}=e;if(t===void 0&&r===void 0)return W;let i=r??W;if(O(i,"table"),t===void 0)return`"${i}"`;return O(t,"schema"),`"${t}"."${i}"`}function f(e){return[e,I(e)]}function Z(e,t){let{gt:r,gte:i,lt:s,lte:o}=t,a=f(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 Y(e,t={}){let{limit:r,reverse:i}=t,{conditions:s,parameters:o}=Z(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 j(e){let t=`CREATE TABLE IF NOT EXISTS ${e} (
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} (
3
3
  key TEXT COLLATE "C" PRIMARY KEY,
4
4
  value BYTEA NOT NULL
5
5
  )`,r=`
@@ -12,4 +12,4 @@ var se=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}=Y(i,s);return{parameters:o,sql:`SELECT key, value FROM ${e} ${a}`}},keyRangeSelect(i,s={}){let{parameters:o,whereOrderLimit:a}=Y(i,s);return{parameters:o,sql:`SELECT key FROM ${e} ${a}`}},keyRangeDelete(i,s){let{conditions:o,parameters:a}=Z(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 J="BEGIN ISOLATION LEVEL SERIALIZABLE",ee="BEGIN ISOLATION LEVEL READ COMMITTED",te="BEGIN READ ONLY",re="COMMIT",C="ROLLBACK";function ne(e){return O(e,"schema"),`CREATE SCHEMA IF NOT EXISTS "${e}"`}var me=/^PRAGMA\b/iu,we=/^PRAGMA\s+(?:[A-Z_][A-Z0-9_]*\.)?[A-Z_][A-Z0-9_]*\s*$/iu,Pe=/^SELECT\b/iu;function Ee(e){return e.trim().replace(/;+\s*$/u,"").trim()}function Se(e){return we.test(e)}function ie(e){let t=Ee(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(Pe.test(t))return;if(me.test(t)&&Se(t))return;throw Error("Storage query only supports read-only SELECT and PRAGMA statements.")}var $e=new Set(["40001","40P01"]),oe=5;function be(e){if(typeof e!=="object"||e===null||!("code"in e))return!1;let t=e.code;return typeof t==="string"&&$e.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 r=X({schema:e.schema,table:e.table});this.#t=j(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(ne(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 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,p(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]=f(e),i=await this.#e.query(this.#t.deleteKeysByPrefix,[t,r]);return S(i)}async deleteRange(e,t){await this.#n();let r=d(t),{parameters:i,sql:s}=this.#t.keyRangeDelete(e,r),o=await this.#e.query(s,i);return S(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]=f(e),i=await this.#e.query(this.#t.countKeysByPrefix,[t,r]);return Number(i.rows[0]?.count??0)}scoped(e){return z(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)?re:C),s}catch(s){throw await i.query(C).catch(()=>{}),s}}finally{i.release()}}async batch(e){if(c("batch operations",e.length),e.length===0)return;await this.#n(),await this.#l(ee,async(t)=>{await R(t,this.#t,b(e))})}async conditionalBatch(e,t){c("conditionalBatch conditions",e.length),c("conditionalBatch operations",t.length),await this.#n();let r=b(t),i;for(let s=0;s<oe;s+=1)try{return await this.#l(J,async(o)=>{if(!await G(o,this.#t,e))return!1;return await R(o,this.#t,r),!0},(o)=>o)}catch(o){if(!be(o))throw o;i=o}throw Error(`conditionalBatch exhausted ${oe} attempts after retryable transaction failures`,{cause:i})}async query(e,t){return await this.#n(),ie(e),this.#l(te,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 Re(e){return F(e,{driverName:"pg",storageName:"PostgresStorage",loadPool:(t)=>import("pg").then(({default:r})=>new r.Pool({connectionString:t}))})}class Oe extends B{constructor(e,t=Re){super(e,t)}}export{Oe 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}=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};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- var we=import.meta.require;function b(e,t,n){if(!e.capabilities()[t])throw Error(`Feature "${n}" requires storage capability "${t}", but this storage backend does not provide it.`)}function G(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("; ")}.`)}var S="default";async function k(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 B(e,t){let n=0;for await(let i of p(e,t))n++;return n}async function E(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 P(e,t,n){let i=[];for await(let a of p(e,t,n))i.push({type:"delete",key:a});if(i.length===0)return 0;return await e.batch(i),i.length}function r(e){return encodeURIComponent(e)}function Q(e){return decodeURIComponent(e)}function F(e){try{return decodeURIComponent(e)}catch{return null}}var T={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${r(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${r(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var X=["actrec:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","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 w=1e4,Le=1e4;class A 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 u(e,t){if(t>w)throw new A(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 L(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 _(e,t){if(e.has)return e.has(t);return k(e,t)}function I(e,t,n){if(e.keys)return e.keys(t,n);return p(e,t,n)}async function M(e,t){if(e.count)return e.count(t);return B(e,t)}async function U(e,t){if(e.deletePrefix)return e.deletePrefix(t);return E(e,t)}async function _e(e,t){u("batch operations",t.length),await e.batch(t)}async function N(e,t,n){if(u("conditionalBatch conditions",t.length),u("conditionalBatch operations",n.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,n)}var s=(e)=>String(e).padStart(16,"0"),Y="0",J="1",D=(e,t,n,i)=>`sig:${r(e)}:${r(t)}:${i}:${r(n)}`,Ie={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")}`,signal:(e,t,n)=>D(e,t,n,J),startSignal:(e,t,n)=>D(e,t,n,Y),signalSequence:(e)=>`sigseq:v1:${r(e)}`,signalAcceptedResponsePrefix:(e)=>`sigres:v1:${r(e)}:`,signalAcceptedResponse:(e,t,n)=>`sigres:v1:${r(e)}:${r(t)}:${r(n)}`,deadline:(e,t)=>`wf-deadline:${s(e)}:${r(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${s(e)}:${r(t)}`,teardownTimer:(e,t)=>`wf-teardown:${s(e)}:${r(t)}`,delayedStart:(e,t)=>`wf-delayed:${s(e)}:${r(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${s(e)}:${r(t)}`,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}`,livenessPrefix:()=>"liveness:",liveness:(e)=>`liveness:${r(e)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",...T,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:${S}:${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:${s(e)}:${r(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${s(e)}:${r(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${s(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"};function Z(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={},n=!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,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=Z(e.limit);if(i!==void 0)t.limit=i;return t}async function z(e,t,n){let i=y(n);if(e.deleteRange)return e.deleteRange(t,i);return P(e,t,i)}function x(e){return e.replaceAll(/:+$/g,"")}function ee(e,t){let n=x(e),i=x(t);if(n.length===0)return i;if(i.length===0)return n;return`${n}:${i}`}class C{#e;#n;constructor(e,t){this.#e=e,this.#n=x(t)}#t(e){if(this.#n.length===0)return e;return e.length===0?`${this.#n}:`:`${this.#n}:${e}`}#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,ee(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[n,i]of this.#e.scan(this.#t(e),this.#a(t)))yield[this.#i(n),i]}async batch(e){u("batch operations",e.length),await this.#e.batch(this.#r(e))}async conditionalBatch(e,t){return N(this.#e,e.map((n)=>({key:this.#t(n.key),expectedValue:n.expectedValue})),this.#r(t))}async has(e){return _(this.#e,this.#t(e))}async deletePrefix(e){return U(this.#e,this.#t(e))}async deleteRange(e,t){let n=this.#s(y(t));return z(this.#e,this.#t(e),n)}async*keys(e,t){for await(let n of I(this.#e,this.#t(e),this.#a(t)))yield this.#i(n)}async count(e){return M(this.#e,this.#t(e))}[Symbol.dispose](){this.#e[Symbol.dispose]()}}function q(e,t){return new C(e,t)}class m{#e;constructor(){this.#e=new Map}capabilities(){return{persistence:"ephemeral",readAfterWrite:"linearizable",scanConsistency:"snapshot",atomicBatch:!0,conditionalBatch:!0,boundedRangeDelete:!0}}#n(e,t,n){return e>=t&&e<n}#t(e,t){let n=[];for(let i of this.#e.keys())if(this.#n(i,e,t))n.push(i);return n.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:n,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(n!==void 0&&l>=n)break;let R=this.#e.get(d);if(R!==void 0)yield[d,R],l++}}async batch(e){u("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){u("conditionalBatch conditions",e.length),u("conditionalBatch operations",t.length);for(let n of e){let i=this.#e.get(n.key)??null;if(!L(i,n.expectedValue))return!1}return this.#r(t),!0}async has(e){return this.#e.has(e)}async deletePrefix(e){let t=f(e),n=this.#t(e,t);for(let i of n)this.#e.delete(i);return n.length}async deleteRange(e,t){let n=y(t),i=f(e),a=this.#t(e,i).filter((l)=>h(l,n)),o=n.limit===void 0?a:a.slice(0,n.limit);for(let l of o)this.#e.delete(l);return o.length}async*keys(e,t={}){let{limit:n,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(n!==void 0&&l>=n)break;yield d,l++}}async count(e){let t=f(e);return this.#t(e,t).length}scoped(e){return q(this,e)}get size(){return this.#e.size}clear(){this.#e.clear()}snapshot(){let e=new Map;for(let[t,n]of this.#e)e.set(t,new Uint8Array(n));return e}[Symbol.dispose](){this.#e.clear()}}function c(e,t){return import.meta.url.endsWith(".ts")?e:t}async function g(e){return await import(e)}var te=c("./bun-sql.ts","./bun-sql.js"),ne=c("./node-sqlite.ts","./node-sqlite.js"),re=c("./lmdb.ts","./lmdb.js"),ie=c("./turso.ts","./turso.js"),oe=c("./neon.ts","./neon.js"),W=c("./indexeddb.ts","./indexeddb.js"),H=c("./web-extension.ts","./web-extension.js"),ae=c("./http.ts","./http.js"),se=c("./auto.ts","./auto.js");function K(){return typeof Bun<"u"}function V(){return typeof globalThis.process==="object"&&globalThis.process!==null&&typeof globalThis.process.versions==="object"&&typeof globalThis.process.versions.node==="string"}function ge(){let e=globalThis;return e.browser?.storage!==void 0||e.chrome?.storage!==void 0}function le(){return typeof globalThis.indexedDB<"u"}async function ue(e){if(K()){let{BunSQLiteStorage:t}=await g(te);return new t(e)}if(V()){let{NodeSQLiteStorage:t}=await g(ne);return new t(e)}throw Error("SQLite storage is only available in Bun or Node runtimes.")}async function ce(){if(K()||V()){let{resolveDefaultStorage:e}=await g(se);return e()}if(ge()){let{WebExtensionStorage:e}=await g(H);return new e}if(le()){let{IndexedDBStorage:e}=await g(W);return new e}return new m}var j={memory:async(e)=>new m,sqlite:async(e)=>ue(e.path),lmdb:async(e)=>{let{LMDBStorage:t}=await g(re);return new t(e.path)},turso:async(e)=>{let{TursoStorage:t}=await g(ie);return new t({url:e.url,...e.authToken===void 0?{}:{authToken:e.authToken}})},neon:async(e)=>{let{NeonStorage:t}=await g(oe);return new t({url:e.url})},indexeddb:async(e)=>{let{IndexedDBStorage:t}=await g(W);return new t(e.databaseName)},"web-extension":async(e)=>{let{WebExtensionStorage:t}=await g(H);return new t(e.area===void 0?{}:{area:e.area})},http:async(e)=>{let{HTTPStorage:t}=await g(ae);return new t({baseUrl:e.baseUrl,...e.headers===void 0?{}:{headers:e.headers}})},auto:async(e)=>ce()};function de(e){if(typeof e!=="object"||e===null)return"unknown";if(!("type"in e))return"unknown";return typeof e.type==="string"?e.type:"unknown"}function fe(e){if(typeof e!=="object"||e===null||Array.isArray(e))throw Error("Storage configuration must be an object.");return e}function v(e,t,n){let i=e[t];if(typeof i!=="string"||i.length===0)throw Error(`${n} storage configuration requires "${t}" as a string.`);return i}function O(e,t,n){let i=e[t];if(i===void 0)return;if(typeof i!=="string")throw Error(`${n} storage configuration field "${t}" must be a string.`);return i}function pe(e,t,n){let i=e[t];if(typeof i==="string"||i instanceof URL)return i;throw Error(`${n} storage configuration requires "${t}" as a string or URL.`)}function ye(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 n={};for(let[i,a]of Object.entries(t)){if(typeof a!=="string")throw Error('HTTP storage configuration field "headers" must be a string record.');n[i]=a}return n}function he(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 me={memory:(e)=>({type:"memory"}),sqlite:(e)=>{let t=O(e,"path","SQLite");return t===void 0?{type:"sqlite"}:{type:"sqlite",path:t}},lmdb:(e)=>({type:"lmdb",path:v(e,"path","LMDB")}),turso:(e)=>{let t=O(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=O(e,"databaseName","IndexedDB");return t===void 0?{type:"indexeddb"}:{type:"indexeddb",databaseName:t}},"web-extension":(e)=>{let t=he(e);return t===void 0?{type:"web-extension"}:{type:"web-extension",area:t}},http:(e)=>{let t=ye(e);return{type:"http",baseUrl:pe(e,"baseUrl","HTTP"),...t===void 0?{}:{headers:t}}},auto:(e)=>({type:"auto"})};function be(e,t){return me[t](fe(e))}function Se(e){return Object.hasOwn(j,e)}async function Je(e){let t=de(e);if(!Se(t))throw Error(`Unsupported storage configuration type: ${t}`);let n=be(e,t),i=j[t];return i(n)}export{Je as resolveStorage};
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};