@lostgradient/weft 0.21.0 → 0.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/indexeddb.js CHANGED
@@ -1 +1 @@
1
- async function E(U,Y){return await U.get(Y)!==null}async function*P(U,Y,Q){for await(let[Z]of U.scan(Y,Q))yield Z}async function h(U,Y){let Q=0;for await(let Z of P(U,Y))Q++;return Q}async function v(U,Y){let Q=[];for await(let Z of P(U,Y))Q.push({type:"delete",key:Z});if(Q.length===0)return 0;return await U.batch(Q),Q.length}async function b(U,Y,Q){let Z=[];for await(let $ of P(U,Y,Q))Z.push({type:"delete",key:$});if(Z.length===0)return 0;return await U.batch(Z),Z.length}function m(U,Y,Q){if(!U.capabilities()[Y])throw Error(`Feature "${Q}" requires storage capability "${Y}", but this storage backend does not provide it.`)}var x="default";function X(U){return encodeURIComponent(U)}var y={workflowOwnerEpoch:(U)=>`wf-owner-epoch:${X(U)}`,workflowOwnerHolder:(U)=>`wf-owner-holder:${X(U)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var O=1e4;class g extends Error{code="StorageBatchOperationLimitExceededError";cap=O;count;target;constructor(U,Y){super(`${U} count ${Y} exceeds MAX_BATCH_OPERATIONS (${O}).`);this.name="StorageBatchOperationLimitExceededError",this.target=U,this.count=Y}}function z(U,Y){if(Y>O)throw new g(U,Y)}function j(U){return U.length>0?U.slice(0,-1)+String.fromCharCode(U.charCodeAt(U.length-1)+1):"ÿ"}function k(U,Y={}){if(Y.gt!==void 0&&U<=Y.gt)return!1;if(Y.gte!==void 0&&U<Y.gte)return!1;if(Y.lt!==void 0&&U>=Y.lt)return!1;if(Y.lte!==void 0&&U>Y.lte)return!1;return!0}function c(U,Y){if(U===null||Y===null)return U===Y;if(U.byteLength!==Y.byteLength)return!1;for(let Q=0;Q<U.byteLength;Q++)if(U[Q]!==Y[Q])return!1;return!0}async function u(U,Y){if(U.has)return U.has(Y);return E(U,Y)}function w(U,Y,Q){if(U.keys)return U.keys(Y,Q);return P(U,Y,Q)}async function f(U,Y){if(U.count)return U.count(Y);return h(U,Y)}async function l(U,Y){if(U.deletePrefix)return U.deletePrefix(Y);return v(U,Y)}async function p(U,Y,Q){if(z("conditionalBatch conditions",Y.length),z("conditionalBatch operations",Q.length),m(U,"conditionalBatch","storageConditionalBatch"),!U.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return U.conditionalBatch(Y,Q)}var D=(U)=>String(U).padStart(16,"0"),t="0",r="1",I=(U,Y,Q,Z)=>`sig:${X(U)}:${X(Y)}:${Z}:${X(Q)}`,zU={workflow:(U)=>`wf:${X(U)}`,checkpoint:(U)=>`wf:${X(U)}:ckpt`,checkpointHistory:(U,Y)=>`wf:${X(U)}:ckpt:${String(Y).padStart(10,"0")}`,timelinePrefix:(U)=>`wf:${X(U)}:timeline:`,timeline:(U,Y)=>`wf:${X(U)}:timeline:${String(Y).padStart(10,"0")}`,schedule:(U)=>`schedule:${X(U)}`,scheduleTick:(U,Y)=>`schedule-due:${String(U).padStart(16,"0")}:${X(Y)}`,scheduleRun:(U)=>`schedule-run:${X(U)}`,scheduleRunLink:(U)=>`schedule-run-link:${X(U)}`,scheduleRunBySchedulePrefix:(U)=>`schedule-run-by-schedule:${X(U)}:`,scheduleRunBySchedule:(U,Y)=>`schedule-run-by-schedule:${X(U)}:${X(Y)}`,operation:(U,Y,Q)=>`op:${U}:${D(Y)}:${Q}`,operationInflight:(U)=>`op:inflight:${U}`,operationQueued:(U)=>`op:queued:${U}`,operationResolved:(U)=>`op:resolved:${U}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(U,Y,Q)=>`audit:bulk:${D(U)}:${X(Y)}:${X(Q)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(U,Y)=>`op:resolved-by-time:${D(U)}:${X(Y)}`,asyncActivity:(U,Y)=>`async-act:v1:${X(U)}:${X(Y)}`,asyncActivityResolution:(U,Y)=>`async-act:v1:${X(U)}:${X(Y)}:resolution`,activityReconciliationPrefix:(U)=>`actrec:v1:${X(U)}:`,activityReconciliation:(U,Y,Q)=>`actrec:v1:${X(U)}:${X(Y)}:${Q}`,eventPrefix:(U)=>`ev:${X(U)}:`,event:(U,Y)=>`ev:${X(U)}:${String(Y).padStart(10,"0")}`,eventHead:(U)=>`ev:${X(U)}:head`,eventWatermark:(U)=>`ev:${X(U)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(U)=>`fleet-event:${String(U).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(U)=>`fleet-event-by-workflow:${X(U)}:`,fleetEventByWorkflow:(U,Y)=>`fleet-event-by-workflow:${X(U)}:${String(Y).padStart(10,"0")}`,signal:(U,Y,Q)=>I(U,Y,Q,r),startSignal:(U,Y,Q)=>I(U,Y,Q,t),signalSequence:(U)=>`sigseq:v1:${X(U)}`,signalAcceptedResponsePrefix:(U)=>`sigres:v1:${X(U)}:`,signalAcceptedResponse:(U,Y,Q)=>`sigres:v1:${X(U)}:${X(Y)}:${X(Q)}`,deadline:(U,Y)=>`wf-deadline:${D(U)}:${X(Y)}`,terminalCleanup:(U,Y)=>`wf-cleanup:${D(U)}:${X(Y)}`,teardownTimer:(U,Y)=>`wf-teardown:${D(U)}:${X(Y)}`,delayedStart:(U,Y)=>`wf-delayed:${D(U)}:${X(Y)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(U,Y)=>`wf-terminal:${D(U)}:${X(Y)}`,attribute:(U)=>`attr:${X(U)}`,attributeIndex:(U,Y,Q)=>`idx:${U}:${Y}:${X(Q)}`,tagIndex:(U,Y)=>`tag:${X(U)}:${X(Y)}`,updatePrefix:(U)=>`upd:${X(U)}:`,update:(U,Y)=>`upd:${X(U)}:${Y}`,updateResponse:(U)=>`upr:${U}`,updateIdempotency:(U,Y)=>`upk:${X(U)}:${Y}`,startIdempotency:(U)=>`start-idem:${X(U)}`,startIdempotencySignalId:(U)=>`start-idem:${U}`,livenessPrefix:()=>"liveness:",liveness:(U)=>`liveness:${X(U)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",...y,budget:(U,Y,Q)=>`budget:${U}:${Y}:${Q}`,review:(U,Y)=>`review:${X(U)}:${Y}`,workflowHeaders:(U)=>`wf-headers:${X(U)}`,childCancellationPrefix:(U)=>`child-cancel:${X(U)}:`,childCancellation:(U,Y)=>`child-cancel:${X(U)}:${X(Y)}`,childWorkflowByParentPrefix:(U,Y)=>`child-by-parent:${X(U)}:${Y===void 0?"":`${X(Y)}:`}`,childWorkflowByParent:(U,Y,Q)=>`child-by-parent:${X(U)}:${Y===void 0?"":`${X(Y)}:`}${X(Q)}`,terminalCleanupNeeded:(U)=>`wf-cleanup-needed:${X(U)}`,workflowConcurrency:(U,Y)=>`wf-concurrency:${X(U)}:${X(Y)}`,workflowConcurrencyHolder:(U)=>`wf-concurrency-holder:${X(U)}`,workflowHasServices:(U)=>`wf-has-services:${X(U)}`,finalizerState:(U)=>`wf-finalizer-state:${X(U)}`,teardownOwed:(U)=>`wf-teardown-needed:${X(U)}`,teardownSucceeded:(U)=>`wf-teardown-succeeded:${X(U)}`,teardownDeadLetter:(U)=>`wf-teardown-deadletter:${X(U)}`,offload:(U,Y)=>`offload:${X(U)}:${Y}`,archive:(U,Y)=>`archive:${X(U)}:${Y}`,stateExecution:(U,Y)=>`state:execution:${X(U)}:${X(Y)}`,stateWorkflow:(U,Y)=>`state:workflow-scope:${x}:${X(U)}:${X(Y)}`,streamChunkPrefix:(U,Y)=>`blob:${X(U)}:${Y}:chunk:`,streamChunk:(U,Y,Q)=>`blob:${X(U)}:${Y}:chunk:${String(Q).padStart(10,"0")}`,streamTail:(U,Y)=>`blob:${X(U)}:${Y}:tail`,streamMetadata:(U,Y)=>`blob:${X(U)}:${Y}:meta`,budgetCharged:(U)=>`budget-charged:${U}`,toolEffect:(U,Y,Q)=>`tool-effect:${X(U)}:${Y}:${Q}`,workflowVisibilityStatus:(U,Y)=>`wf-idx-status:${X(U)}:${X(Y)}`,workflowVisibilityType:(U,Y)=>`wf-idx-type:${X(U)}:${X(Y)}`,workflowVisibilityCreated:(U,Y)=>`wf-idx-created:${D(U)}:${X(Y)}`,workflowVisibilityUpdated:(U,Y)=>`wf-idx-updated:${D(U)}:${X(Y)}`,workflowVisibilityDeadline:(U,Y)=>`wf-idx-deadline:${D(U)}:${X(Y)}`,workflowVisibilityManifest:(U)=>`wf-idx-manifest:${X(U)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function o(U){if(U===void 0)return;if(typeof U!=="number"||!Number.isInteger(U)||U<0)throw Error("deleteRange limit must be a finite non-negative integer");return U===0?0:U}function S(U){let Y={},Q=!1;for(let $ of["gt","gte","lt","lte"]){let J=U[$];if(J===void 0)continue;if(typeof J!=="string")throw Error("deleteRange bounds must be strings");Y[$]=J,Q=!0}if(!Q)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let Z=o(U.limit);if(Z!==void 0)Y.limit=Z;return Y}async function d(U,Y,Q){let Z=S(Q);if(U.deleteRange)return U.deleteRange(Y,Z);return b(U,Y,Z)}function e(U,Y){let Q={key:U,open:!1};if(Y.gte!==void 0&&Y.gte>Q.key)Q.key=Y.gte,Q.open=!1;if(Y.gt!==void 0&&Y.gt>=Q.key)Q.key=Y.gt,Q.open=!0;return Q}function UU(U,Y){let Q={key:j(U),open:!0};if(Y.lt!==void 0&&Y.lt<=Q.key)Q.key=Y.lt,Q.open=!0;if(Y.lte!==void 0&&Y.lte<Q.key)Q.key=Y.lte,Q.open=!1;return Q}function a(U,Y){let Q=e(U,Y),Z=UU(U,Y);if(Q.key>Z.key||Q.key===Z.key&&(Q.open||Z.open))return null;return{lower:Q,upper:Z}}function C(U){return U.replaceAll(/:+$/g,"")}function YU(U,Y){let Q=C(U),Z=C(Y);if(Q.length===0)return Z;if(Z.length===0)return Q;return`${Q}:${Z}`}class R{#Y;#Q;constructor(U,Y){this.#Y=U,this.#Q=C(Y)}#U(U){if(this.#Q.length===0)return U;return U.length===0?`${this.#Q}:`:`${this.#Q}:${U}`}#X(U){return U.map((Y)=>{if(Y.type==="put")return{type:"put",key:this.#U(Y.key),value:Y.value};return{type:"delete",key:this.#U(Y.key)}})}#Z(U){if(this.#Q.length===0)return U;return U.slice(this.#Q.length+1)}#$(U){let Y={};if(U.limit!==void 0)Y.limit=U.limit;if(U.gt!==void 0)Y.gt=this.#U(U.gt);if(U.gte!==void 0)Y.gte=this.#U(U.gte);if(U.lt!==void 0)Y.lt=this.#U(U.lt);if(U.lte!==void 0)Y.lte=this.#U(U.lte);return Y}#J(U={}){let Y=this.#$(U);if(U.reverse!==void 0)Y.reverse=U.reverse;return Y}#G(U){return this.#$(U)}capabilities(){return this.#Y.capabilities()}scoped(U){return new R(this.#Y,YU(this.#Q,U))}async get(U){return this.#Y.get(this.#U(U))}async put(U,Y){await this.#Y.put(this.#U(U),Y)}async delete(U){await this.#Y.delete(this.#U(U))}async*scan(U,Y){for await(let[Q,Z]of this.#Y.scan(this.#U(U),this.#J(Y)))yield[this.#Z(Q),Z]}async batch(U){z("batch operations",U.length),await this.#Y.batch(this.#X(U))}async conditionalBatch(U,Y){return p(this.#Y,U.map((Q)=>({key:this.#U(Q.key),expectedValue:Q.expectedValue})),this.#X(Y))}async has(U){return u(this.#Y,this.#U(U))}async deletePrefix(U){return l(this.#Y,this.#U(U))}async deleteRange(U,Y){let Q=this.#G(S(Y));return d(this.#Y,this.#U(U),Q)}async*keys(U,Y){for await(let Q of w(this.#Y,this.#U(U),this.#J(Y)))yield this.#Z(Q)}async count(U){return f(this.#Y,this.#U(U))}[Symbol.dispose](){this.#Y[Symbol.dispose]()}}function s(U,Y){return new R(U,Y)}var F="kv";function QU(U=globalThis){let{indexedDB:Y,IDBKeyRange:Q}=U;if(Y===void 0||Q===void 0)throw Error("IndexedDBStorage requires both indexedDB and IDBKeyRange runtime globals.");return{indexedDB:Y,IDBKeyRange:Q}}function N(U){return new Promise((Y,Q)=>{U.onsuccess=()=>Y(U.result),U.onerror=()=>Q(U.error)})}function XU(U,Y){let Q=null,Z=null,$=null,J=(G,H)=>{let V=G??Error(H);if(Z){let B=Z;Q=null,Z=null,B(V);return}$=V};return U.onsuccess=()=>{if(!Q)return;let G=Q;Q=null,Z=null,G(U.result)},U.onerror=()=>{J(U.error,"IndexedDB cursor request failed.")},Y.onerror=()=>{J(Y.error,"IndexedDB transaction failed.")},Y.onabort=()=>{J(Y.error,"IndexedDB transaction aborted.")},()=>{return new Promise((G,H)=>{if($){let V=$;$=null,H(V);return}if(Q=G,Z=H,U.readyState==="done"){let V=Q;Q=null,Z=null,V?.(U.result)}})}}async function*n(U,Y,Q,Z,$,J){let{limit:G,reverse:H}=Z,V=j(Q),B=Y.bound(Q,V,!1,!0),M=H?"prev":"next",W=U.transaction(F,"readonly"),L=W.objectStore(F),_=$(L,B,M),K=XU(_,W),T=0,q=!1;try{let A=await K();while(A){if(G!==void 0&&T>=G)break;let i=A.key;if(k(i,Z))yield J(A),T++;A.continue(),A=await K()}q=!0}finally{if(!q)try{W.abort()}catch{}}}class ZU{#Y;#Q=null;#U;#X;constructor(U="weft",Y=QU()){this.#Y=U,this.#X=Y,this.#U=this.#Z()}capabilities(){return{persistence:"local",readAfterWrite:"linearizable",scanConsistency:"best-effort",atomicBatch:!0,conditionalBatch:!0,boundedRangeDelete:!0}}#Z(){let U=this.#X.indexedDB.open(this.#Y,1);return U.onupgradeneeded=()=>{let Y=U.result;if(!Y.objectStoreNames.contains(F))Y.createObjectStore(F)},N(U).then((Y)=>{return this.#Q=Y,Y})}async get(U){let Z=(await this.#U).transaction(F,"readonly").objectStore(F),$=await N(Z.get(U));return $===void 0?null:new Uint8Array($)}async put(U,Y){let $=(await this.#U).transaction(F,"readwrite").objectStore(F);await N($.put(Y,U))}async delete(U){let Z=(await this.#U).transaction(F,"readwrite").objectStore(F);await N(Z.delete(U))}async has(U){let Z=(await this.#U).transaction(F,"readonly").objectStore(F);return await N(Z.count(U))>0}async deletePrefix(U){let Y=await this.#U,Q=j(U),Z=this.#X.IDBKeyRange.bound(U,Q,!1,!0);return new Promise(($,J)=>{let G=Y.transaction(F,"readwrite"),H=G.objectStore(F),V=0,B=H.count(Z);B.onsuccess=()=>{V=B.result,H.delete(Z)},G.oncomplete=()=>$(V),G.onerror=()=>J(G.error)})}async deleteRange(U,Y){let Q=S(Y),Z=a(U,Q);if(Z===null)return 0;let $=this.#X.IDBKeyRange.bound(Z.lower.key,Z.upper.key,Z.lower.open,Z.upper.open),J=await this.#U,{limit:G}=Q;return new Promise((H,V)=>{let B=J.transaction(F,"readwrite"),M=B.objectStore(F),W=0;if(G===void 0){let L=M.count($);L.onsuccess=()=>{W=L.result,M.delete($)}}else{let L=M.openCursor($,"next");L.onsuccess=()=>{let _=L.result;if(_===null||W>=G)return;if(_.delete(),W++,W<G)_.continue()}}B.oncomplete=()=>H(W),B.onerror=()=>V(B.error)})}async*scan(U,Y={}){let Q=await this.#U;yield*n(Q,this.#X.IDBKeyRange,U,Y,(Z,$,J)=>Z.openCursor($,J),(Z)=>[Z.key,new Uint8Array(Z.value)])}async batch(U){if(z("batch operations",U.length),U.length===0)return;let Y=await this.#U;return new Promise((Q,Z)=>{let $=Y.transaction(F,"readwrite"),J=$.objectStore(F);for(let G of U)if(G.type==="put")J.put(G.value,G.key);else J.delete(G.key);$.oncomplete=()=>Q(),$.onerror=()=>Z($.error)})}async conditionalBatch(U,Y){z("conditionalBatch conditions",U.length),z("conditionalBatch operations",Y.length);let Q=await this.#U;return new Promise((Z,$)=>{let J=Q.transaction(F,"readwrite"),G=J.objectStore(F),H=!1,V=!1,B=(L,_)=>{if(H)return;H=!0,$(L??Error(_))};J.oncomplete=()=>{if(H)return;H=!0,Z(!0)},J.onerror=()=>{B(J.error,"IndexedDB conditionalBatch transaction failed.")},J.onabort=()=>{if(H)return;if(H=!0,V){Z(!1);return}$(J.error??Error("IndexedDB conditionalBatch transaction aborted."))};let M=()=>{for(let L of Y)if(L.type==="put")G.put(L.value,L.key);else G.delete(L.key)},W=(L)=>{if(L>=U.length){M();return}let _=U[L],K=G.get(_.key);K.onsuccess=()=>{let T=K.result,q=T===void 0?null:new Uint8Array(T);if(!c(q,_.expectedValue)){V=!0,J.abort();return}W(L+1)},K.onerror=()=>{B(K.error,"IndexedDB conditionalBatch condition check failed.")}};W(0)})}async*keys(U,Y={}){let Q=await this.#U;yield*n(Q,this.#X.IDBKeyRange,U,Y,(Z,$,J)=>Z.openKeyCursor($,J),(Z)=>Z.key)}async count(U){let Y=await this.#U,Q=j(U),$=Y.transaction(F,"readonly").objectStore(F);return N($.count(this.#X.IDBKeyRange.bound(U,Q,!1,!0)))}scoped(U){return s(this,U)}[Symbol.dispose](){if(this.#Q)this.#Q.close(),this.#Q=null}}export{ZU as IndexedDBStorage};
1
+ async function k(e,t){return await e.get(t)!==null}async function*C(e,t,n){for await(let[i]of e.scan(t,n))yield i}async function I(e,t){let n=0;for await(let i of C(e,t))n++;return n}async function A(e,t){let n=[];for await(let i of C(e,t))n.push({type:"delete",key:i});if(n.length===0)return 0;return await e.batch(n),n.length}async function E(e,t,n){let i=[];for await(let o of C(e,t,n))i.push({type:"delete",key:o});if(i.length===0)return 0;return await e.batch(i),i.length}function T(e,t,n){if(!e.capabilities()[t])throw Error(`Feature "${n}" requires storage capability "${t}", but this storage backend does not provide it.`)}var K="default";function r(e){return encodeURIComponent(e)}var z={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${r(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${r(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var O=1e4;class L extends Error{code="StorageBatchOperationLimitExceededError";cap=O;count;target;constructor(e,t){super(`${e} count ${t} exceeds MAX_BATCH_OPERATIONS (${O}).`);this.name="StorageBatchOperationLimitExceededError",this.target=e,this.count=t}}function h(e,t){if(t>O)throw new L(e,t)}function w(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"ÿ"}function U(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 n=0;n<e.byteLength;n++)if(e[n]!==t[n])return!1;return!0}async function N(e,t){if(e.has)return e.has(t);return k(e,t)}function M(e,t,n){if(e.keys)return e.keys(t,n);return C(e,t,n)}async function j(e,t){if(e.count)return e.count(t);return I(e,t)}async function q(e,t){if(e.deletePrefix)return e.deletePrefix(t);return A(e,t)}async function W(e,t,n){if(h("conditionalBatch conditions",t.length),h("conditionalBatch operations",n.length),T(e,"conditionalBatch","storageConditionalBatch"),!e.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return e.conditionalBatch(t,n)}var f=(e)=>String(e).padStart(16,"0"),Q="0",J="1",_=(e,t,n,i)=>`sig:${r(e)}:${r(t)}:${i}:${r(n)}`,me={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}:${f(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:${f(e)}:${r(t)}:${r(n)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(e,t)=>`op:resolved-by-time:${f(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",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)=>_(e,t,n,J),startSignal:(e,t,n)=>_(e,t,n,Q),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:${f(e)}:${r(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${f(e)}:${r(t)}`,teardownTimer:(e,t)=>`wf-teardown:${f(e)}:${r(t)}`,delayedStart:(e,t)=>`wf-delayed:${f(e)}:${r(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${f(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",...z,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:${K}:${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:${f(e)}:${r(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${f(e)}:${r(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${f(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 R(e){let t={},n=!1;for(let o of["gt","gte","lt","lte"]){let s=e[o];if(s===void 0)continue;if(typeof s!=="string")throw Error("deleteRange bounds must be strings");t[o]=s,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 H(e,t,n){let i=R(n);if(e.deleteRange)return e.deleteRange(t,i);return E(e,t,i)}function ee(e,t){let n={key:e,open:!1};if(t.gte!==void 0&&t.gte>n.key)n.key=t.gte,n.open=!1;if(t.gt!==void 0&&t.gt>=n.key)n.key=t.gt,n.open=!0;return n}function te(e,t){let n={key:w(e),open:!0};if(t.lt!==void 0&&t.lt<=n.key)n.key=t.lt,n.open=!0;if(t.lte!==void 0&&t.lte<n.key)n.key=t.lte,n.open=!1;return n}function F(e,t){let n=ee(e,t),i=te(e,t);if(n.key>i.key||n.key===i.key&&(n.open||i.open))return null;return{lower:n,upper:i}}function v(e){return e.replaceAll(/:+$/g,"")}function ne(e,t){let n=v(e),i=v(t);if(n.length===0)return i;if(i.length===0)return n;return`${n}:${i}`}class P{#t;#n;constructor(e,t){this.#t=e,this.#n=v(t)}#e(e){if(this.#n.length===0)return e;return e.length===0?`${this.#n}:`:`${this.#n}:${e}`}#r(e){return e.map((t)=>{if(t.type==="put")return{type:"put",key:this.#e(t.key),value:t.value};return{type:"delete",key:this.#e(t.key)}})}#i(e){if(this.#n.length===0)return e;return e.slice(this.#n.length+1)}#o(e){let t={};if(e.limit!==void 0)t.limit=e.limit;if(e.gt!==void 0)t.gt=this.#e(e.gt);if(e.gte!==void 0)t.gte=this.#e(e.gte);if(e.lt!==void 0)t.lt=this.#e(e.lt);if(e.lte!==void 0)t.lte=this.#e(e.lte);return t}#s(e={}){let t=this.#o(e);if(e.reverse!==void 0)t.reverse=e.reverse;return t}#a(e){return this.#o(e)}capabilities(){return this.#t.capabilities()}scoped(e){return new P(this.#t,ne(this.#n,e))}async get(e){return this.#t.get(this.#e(e))}async put(e,t){await this.#t.put(this.#e(e),t)}async delete(e){await this.#t.delete(this.#e(e))}async*scan(e,t){for await(let[n,i]of this.#t.scan(this.#e(e),this.#s(t)))yield[this.#i(n),i]}async batch(e){h("batch operations",e.length),await this.#t.batch(this.#r(e))}async conditionalBatch(e,t){return W(this.#t,e.map((n)=>({key:this.#e(n.key),expectedValue:n.expectedValue})),this.#r(t))}async has(e){return N(this.#t,this.#e(e))}async deletePrefix(e){return q(this.#t,this.#e(e))}async deleteRange(e,t){let n=this.#a(R(t));return H(this.#t,this.#e(e),n)}async*keys(e,t){for await(let n of M(this.#t,this.#e(e),this.#s(t)))yield this.#i(n)}async count(e){return j(this.#t,this.#e(e))}[Symbol.dispose](){this.#t[Symbol.dispose]()}}function G(e,t){return new P(e,t)}var l="kv";function re(e=globalThis){let{indexedDB:t,IDBKeyRange:n}=e;if(t===void 0||n===void 0)throw Error("IndexedDBStorage requires both indexedDB and IDBKeyRange runtime globals.");return{indexedDB:t,IDBKeyRange:n}}function S(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)})}function ie(e,t){let n=null,i=null,o=null,s=(a,c)=>{let d=a??Error(c);if(i){let g=i;n=null,i=null,g(d);return}o=d};return e.onsuccess=()=>{if(!n)return;let a=n;n=null,i=null,a(e.result)},e.onerror=()=>{s(e.error,"IndexedDB cursor request failed.")},t.onerror=()=>{s(t.error,"IndexedDB transaction failed.")},t.onabort=()=>{s(t.error,"IndexedDB transaction aborted.")},()=>new Promise((a,c)=>{if(o){let d=o;o=null,c(d);return}if(n=a,i=c,e.readyState==="done"){let d=n;n=null,i=null,d?.(e.result)}})}async function*X(e,t,n,i,o,s){let{limit:a,reverse:c}=i,d=w(n),g=t.bound(n,d,!1,!0),m=c?"prev":"next",p=e.transaction(l,"readonly"),u=p.objectStore(l),y=o(u,g,m),b=ie(y,p),x=0,D=!1;try{let B=await b();while(B){if(a!==void 0&&x>=a)break;let Y=B.key;if(U(Y,i))yield s(B),x++;B.continue(),B=await b()}D=!0}finally{if(!D)try{p.abort()}catch{}}}class oe{#t;#n=null;#e;#r;constructor(e="weft",t=re()){this.#t=e,this.#r=t,this.#e=this.#i()}capabilities(){return{persistence:"local",readAfterWrite:"linearizable",scanConsistency:"best-effort",atomicBatch:!0,conditionalBatch:!0,boundedRangeDelete:!0}}#i(){let e=this.#r.indexedDB.open(this.#t,1);return e.onupgradeneeded=()=>{let t=e.result;if(!t.objectStoreNames.contains(l))t.createObjectStore(l)},S(e).then((t)=>(this.#n=t,t))}async get(e){let i=(await this.#e).transaction(l,"readonly").objectStore(l),o=await S(i.get(e));return o===void 0?null:new Uint8Array(o)}async put(e,t){let o=(await this.#e).transaction(l,"readwrite").objectStore(l);await S(o.put(t,e))}async delete(e){let i=(await this.#e).transaction(l,"readwrite").objectStore(l);await S(i.delete(e))}async has(e){let i=(await this.#e).transaction(l,"readonly").objectStore(l);return await S(i.count(e))>0}async deletePrefix(e){let t=await this.#e,n=w(e),i=this.#r.IDBKeyRange.bound(e,n,!1,!0);return new Promise((o,s)=>{let a=t.transaction(l,"readwrite"),c=a.objectStore(l),d=0,g=c.count(i);g.onsuccess=()=>{d=g.result,c.delete(i)},a.oncomplete=()=>o(d),a.onerror=()=>s(a.error)})}async deleteRange(e,t){let n=R(t),i=F(e,n);if(i===null)return 0;let o=this.#r.IDBKeyRange.bound(i.lower.key,i.upper.key,i.lower.open,i.upper.open),s=await this.#e,{limit:a}=n;return new Promise((c,d)=>{let g=s.transaction(l,"readwrite"),m=g.objectStore(l),p=0;if(a===void 0){let u=m.count(o);u.onsuccess=()=>{p=u.result,m.delete(o)}}else{let u=m.openCursor(o,"next");u.onsuccess=()=>{let y=u.result;if(y===null||p>=a)return;if(y.delete(),p++,p<a)y.continue()}}g.oncomplete=()=>c(p),g.onerror=()=>d(g.error)})}async*scan(e,t={}){let n=await this.#e;yield*X(n,this.#r.IDBKeyRange,e,t,(i,o,s)=>i.openCursor(o,s),(i)=>[i.key,new Uint8Array(i.value)])}async batch(e){if(h("batch operations",e.length),e.length===0)return;let t=await this.#e;return new Promise((n,i)=>{let o=t.transaction(l,"readwrite"),s=o.objectStore(l);for(let a of e)if(a.type==="put")s.put(a.value,a.key);else s.delete(a.key);o.oncomplete=()=>n(),o.onerror=()=>i(o.error)})}async conditionalBatch(e,t){h("conditionalBatch conditions",e.length),h("conditionalBatch operations",t.length);let n=await this.#e;return new Promise((i,o)=>{let s=n.transaction(l,"readwrite"),a=s.objectStore(l),c=!1,d=!1,g=(u,y)=>{if(c)return;c=!0,o(u??Error(y))};s.oncomplete=()=>{if(c)return;c=!0,i(!0)},s.onerror=()=>{g(s.error,"IndexedDB conditionalBatch transaction failed.")},s.onabort=()=>{if(c)return;if(c=!0,d){i(!1);return}o(s.error??Error("IndexedDB conditionalBatch transaction aborted."))};let m=()=>{for(let u of t)if(u.type==="put")a.put(u.value,u.key);else a.delete(u.key)},p=(u)=>{if(u>=e.length){m();return}let y=e[u],b=a.get(y.key);b.onsuccess=()=>{let x=b.result,D=x===void 0?null:new Uint8Array(x);if(!V(D,y.expectedValue)){d=!0,s.abort();return}p(u+1)},b.onerror=()=>{g(b.error,"IndexedDB conditionalBatch condition check failed.")}};p(0)})}async*keys(e,t={}){let n=await this.#e;yield*X(n,this.#r.IDBKeyRange,e,t,(i,o,s)=>i.openKeyCursor(o,s),(i)=>i.key)}async count(e){let t=await this.#e,n=w(e),o=t.transaction(l,"readonly").objectStore(l);return S(o.count(this.#r.IDBKeyRange.bound(e,n,!1,!0)))}scoped(e){return G(this,e)}[Symbol.dispose](){if(this.#n)this.#n.close(),this.#n=null}}export{oe as IndexedDBStorage};
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- var F=import.meta.require;class K extends Error{code;constructor(j,q,z){super(q,z);this.code=j,this.name=j}}var Y={WorkflowAlreadyExistsError:!0,BulkDeleteRequiresTerminalWorkflowsError:!0,BulkOperationConfirmationError:!0,WorkflowTypeNotRegisteredForRecoveryError:!0,EngineCreateNameMismatchError:!0,EngineDisposedError:!0,EngineDisposalError:!0,WorkflowNotFoundError:!0,WorkflowNotRegisteredError:!0,WorkflowConcurrencyLimitExceededError:!0,WorkflowSuspendNotSupportedError:!0,ActivityResolutionError:!0,BranchTopologyChangedError:!0,PersistedDataIncompatibleError:!0,WorkflowTimeoutError:!0,HttpClientError:!0,WorkerProtocolIncompatibleError:!0,UpdateTimeoutError:!0,UpdateValidationError:!0,WorkflowTerminalError:!0,WorkflowBuilderError:!0,VersionMismatchError:!0,EffectReplayConflictError:!0,ReviewTimeoutError:!0,AtomicStateConflictError:!0,StandardSchemaValidationError:!0,ActivityReconciliationCapabilityError:!0,ActivityReconciliationConflictError:!0,ActivityReconciliationIndeterminateError:!0,DurableActivityScopeError:!0,DurableActivityUnsupportedError:!0,AsyncActivityTokenNotFoundError:!0,ActivityScheduleToCloseTimeoutError:!0,ActivityPerAttemptTimeoutError:!0,PayloadSizeExceededError:!0,StartOrSignalConflictError:!0,WorkflowTeardownPendingError:!0,IdempotencyKeyPurgedError:!0,WorkerManifestBuildError:!0,OwnershipModeMismatchError:!0},M=new Set(Object.keys(Y));class A extends K{fieldName;operation;issues;constructor(j){super("StandardSchemaValidationError",w(j.fieldName,j.operation,j.issues));this.fieldName=j.fieldName,this.operation=j.operation,this.issues=j.issues}}async function X(j,q,z){let G=j["~standard"];if(!Z(G))throw TypeError(`Schema for ${z.fieldName} does not provide runtime validation. Attach a Standard Schema validator (Zod, Valibot, or another vendor) or supply a runtime-validating schema at this boundary.`);let H=await G.validate(q);if(H.issues===void 0)return H.value;throw new A({fieldName:z.fieldName,operation:z.operation,issues:H.issues.map($)})}function Q(j){return j.map((q)=>q.path===""?q.message:`${q.path}: ${q.message}`).join(`
3
- `)}function Z(j){return typeof j.validate==="function"}function $(j){return{message:j.message,path:B(j.path)}}function B(j){if(j===void 0||j.length===0)return"";let q="";for(let z of j)q+="/",q+=D(z);return q}function D(j){let q=U(j)?j.key:j;return b(String(q))}function U(j){return j!==null&&typeof j==="object"&&"key"in j}function b(j){return j.replace(/~/g,"~0").replace(/\//g,"~1")}function w(j,q,z){return`Validation failed for ${q===void 0?j:`${q} ${j}`}:
4
- ${Q(z)}`}var R=Q,_=A,C=X;export{C as validateStandardSchema,R as formatStandardSchemaIssues,_ as StandardSchemaValidationError};
2
+ var h=import.meta.require;class i extends Error{code;constructor(r,e,t){super(e,t);this.code=r,this.name=r}}var c={WorkflowAlreadyExistsError:!0,BulkDeleteRequiresTerminalWorkflowsError:!0,BulkOperationConfirmationError:!0,WorkflowTypeNotRegisteredForRecoveryError:!0,EngineCreateNameMismatchError:!0,EngineDisposedError:!0,EngineDisposalError:!0,WorkflowNotFoundError:!0,WorkflowNotRegisteredError:!0,WorkflowConcurrencyLimitExceededError:!0,WorkflowSuspendNotSupportedError:!0,ActivityResolutionError:!0,BranchTopologyChangedError:!0,PersistedDataIncompatibleError:!0,WorkflowTimeoutError:!0,HttpClientError:!0,WorkerProtocolIncompatibleError:!0,UpdateTimeoutError:!0,UpdateValidationError:!0,WorkflowTerminalError:!0,WorkflowBuilderError:!0,VersionMismatchError:!0,EffectReplayConflictError:!0,ReviewTimeoutError:!0,AtomicStateConflictError:!0,StandardSchemaValidationError:!0,ActivityReconciliationCapabilityError:!0,ActivityReconciliationConflictError:!0,ActivityReconciliationIndeterminateError:!0,DurableActivityScopeError:!0,DurableActivityUnsupportedError:!0,AsyncActivityTokenNotFoundError:!0,ActivityScheduleToCloseTimeoutError:!0,ActivityPerAttemptTimeoutError:!0,PayloadSizeExceededError:!0,StartOrSignalConflictError:!0,WorkflowTeardownPendingError:!0,IdempotencyKeyPurgedError:!0,WorkerManifestBuildError:!0,OwnershipModeMismatchError:!0},g=new Set(Object.keys(c));class o extends i{fieldName;operation;issues;constructor(r){super("StandardSchemaValidationError",p(r.fieldName,r.operation,r.issues));this.fieldName=r.fieldName,this.operation=r.operation,this.issues=r.issues}}async function s(r,e,t){let n=r["~standard"];if(!u(n))throw TypeError(`Schema for ${t.fieldName} does not provide runtime validation. Attach a Standard Schema validator (Zod, Valibot, or another vendor) or supply a runtime-validating schema at this boundary.`);let a=await n.validate(e);if(a.issues===void 0)return a.value;throw new o({fieldName:t.fieldName,operation:t.operation,issues:a.issues.map(l)})}function d(r){return r.map((e)=>e.path===""?e.message:`${e.path}: ${e.message}`).join(`
3
+ `)}function u(r){return typeof r.validate==="function"}function l(r){return{message:r.message,path:f(r.path)}}function f(r){if(r===void 0||r.length===0)return"";let e="";for(let t of r)e+="/",e+=m(t);return e}function m(r){let e=S(r)?r.key:r;return E(String(e))}function S(r){return r!==null&&typeof r==="object"&&"key"in r}function E(r){return r.replace(/~/g,"~0").replace(/\//g,"~1")}function p(r,e,t){return`Validation failed for ${e===void 0?r:`${e} ${r}`}:
4
+ ${d(t)}`}var W=d,T=o,R=s;export{T as StandardSchemaValidationError,W as formatStandardSchemaIssues,R as validateStandardSchema};
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- var Jn=import.meta.require;var h={traceId:"0".repeat(32),spanId:"0".repeat(16),traceFlags:0},R={setAttribute(){},setStatus(){},recordException(){},end(){},spanContext(){return h}},q={setAttribute:(...n)=>R.setAttribute(...n),setStatus:(...n)=>R.setStatus(...n),recordException:(...n)=>R.recordException(...n),end:(...n)=>R.end(...n)},l={startSpan(){return R}},P={record(){},add(){}},t={createHistogram(){return P},createCounter(){return P},createUpDownCounter(){return P}},r=Symbol("ROOT_CONTEXT"),a={trace:{getTracer(){return l},setSpan(n){return n}},metrics:{getMeter(){return t}},context:{ROOT_CONTEXT:r,with(n,w){return w()}},SpanStatusCode:{OK:1,ERROR:2,UNSET:0}},G;function s(){let n=globalThis.require;if(typeof n==="function")return(w)=>n(w);return()=>{return}}function e(n){return n?.trace?.getTracer!=null&&n.SpanStatusCode!=null}function nn(n=s()){try{let w=n("@opentelemetry/api");if(e(w))return w}catch{}return}function o(n){if(G)return G;let w=nn(n);if(w)return G=w,G;return G=a,G}function H(n){let w=new Uint8Array(n);return crypto.getRandomValues(w),Array.from(w,(i)=>i.toString(16).padStart(2,"0")).join("")}var Y="traceparent",wn=/^([0-9a-f]{2})-([0-9a-f]{32})-([0-9a-f]{16})-([0-9a-f]{2})$/,Sn="00000000000000000000000000000000",kn="0000000000000000";function Z(n){let w=wn.exec(n);if(!w)return null;let[,i,S,k,v]=w;if(S===Sn)return null;if(k===kn)return null;return{version:i,traceId:S,spanId:k,traceFlags:parseInt(v,16)}}function M(n){let w=n.traceFlags.toString(16).padStart(2,"0");return`${n.version}-${n.traceId}-${n.spanId}-${w}`}function T(n){let w=n.get(Y);if(!w)return null;return Z(w)}function U(n,w){n.set(Y,M(w))}function fn(){return H(16)}function vn(){return H(8)}var O=1024;function K(n,w){let i;try{i=JSON.stringify(n)}catch{i=String(n)}if(i.length>w)return i.slice(0,w)+"...";return i}function yn(n){return n instanceof Error?n.message:String(n)}function Wn(n){return n instanceof Error?n:Error(String(n))}function J(n,w){let i=n.spanContext();U(w,{version:"00",traceId:i.traceId,spanId:i.spanId,traceFlags:i.traceFlags})}function C(n,w,i){let S=n.attributeExtractor;if(!S)return;let k=S(i);for(let[v,y]of Object.entries(k))w.setAttribute(v,y)}function Q(n,w){let i=n.workflowSpans.get(w);return i?n.trace.setSpan(n.api.context.ROOT_CONTEXT,i.span):n.api.context.ROOT_CONTEXT}function V(n,w,i){w.setStatus({code:n.SpanStatusCode.ERROR,message:yn(i)}),w.recordException(Wn(i))}function _(n,w,i,S){try{let k=i();return w.setStatus({code:n.SpanStatusCode.OK}),S?.(k),k}catch(k){throw V(n,w,k),k}finally{w.end()}}async function j(n,w,i,S){try{let k=await i();return w.setStatus({code:n.SpanStatusCode.OK}),S?.(k),k}catch(k){throw V(n,w,k),k}finally{w.end()}}function*x(n,w,i,S){try{let k=yield*i();return w.setStatus({code:n.SpanStatusCode.OK}),S?.(k),k}catch(k){throw V(n,w,k),k}finally{w.end()}}function g(n){return{async execute(w,i){let S=T(w.headers),k=n.api.context.ROOT_CONTEXT;if(S){let y={...q,spanContext(){return{traceId:S.traceId,spanId:S.spanId,traceFlags:S.traceFlags}}};k=n.trace.setSpan(n.api.context.ROOT_CONTEXT,y)}let v=n.tracer.startSpan(`activity:execute:${w.activityName}`,{attributes:{"weft.activity.name":w.activityName,"weft.activity.attempt":w.attempt,...S?{"weft.parent.trace_id":S.traceId}:{}}},k);if(n.recordPayloads&&w.input!==void 0)v.setAttribute("weft.payload.input",K(w.input,n.maxPayloadSize));return j(n,v,()=>i(w))}}}var A={workflowDuration:{name:"weft.workflow.duration",description:"Duration of workflow execution in milliseconds",unit:"ms",type:"histogram"},activityDuration:{name:"weft.activity.duration",description:"Duration of activity execution in milliseconds",unit:"ms",type:"histogram"},activityAttempts:{name:"weft.activity.attempts",description:"Total activity execution attempts",unit:"attempts",type:"counter"},workflowActive:{name:"weft.workflow.active",description:"Number of currently active workflows",unit:"workflows",type:"gauge"},workflowStarted:{name:"weft.workflow.started",description:"Total workflows started",unit:"workflows",type:"counter"},workflowCompleted:{name:"weft.workflow.completed",description:"Total workflows completed",unit:"workflows",type:"counter"},workflowFailed:{name:"weft.workflow.failed",description:"Total workflows failed",unit:"workflows",type:"counter"},promptCacheHits:{name:"weft.prompt_cache.hits",description:"Total prompt prefix cache hits",unit:"hits",type:"counter"},promptCacheMisses:{name:"weft.prompt_cache.misses",description:"Total prompt prefix cache misses",unit:"misses",type:"counter"},dpmoDefects:{name:"weft.dpmo.defects",description:"Total failed workflows (DPMO numerator)",unit:"workflows",type:"counter"},dpmoOperations:{name:"weft.dpmo.operations",description:"Total started workflows (DPMO denominator)",unit:"workflows",type:"counter"},taskBacklog:{name:"weft.task.backlog",description:"Number of queued tasks waiting for workers",unit:"tasks",type:"gauge"},taskQueueLatency:{name:"weft.task.queue_latency",description:"Time tasks spend queued before dispatch in milliseconds",unit:"ms",type:"histogram"},taskExecutionLatency:{name:"weft.task.execution_latency",description:"Time tasks spend executing after worker start in milliseconds",unit:"ms",type:"histogram"},taskRetries:{name:"weft.task.retries",description:"Total task retry attempts after the first dispatch attempt",unit:"retries",type:"counter"},taskRequeues:{name:"weft.task.requeues",description:"Total visibility-timeout or disconnect task requeues",unit:"requeues",type:"counter"},taskStaleHeartbeats:{name:"weft.task.stale_heartbeats",description:"Number of in-flight tasks whose heartbeat age exceeds the diagnostic threshold",unit:"tasks",type:"gauge"},workerCapacitySaturation:{name:"weft.worker.capacity_saturation",description:"Ratio of in-flight worker slots to total worker concurrency",unit:"ratio",type:"gauge"}};var dn=1e4;class z{#n;#i=0;#w=0;constructor(n){this.#n=new Float64Array(n)}push(n){if(this.#n[this.#i]=n,this.#i=(this.#i+1)%this.#n.length,this.#w<this.#n.length)this.#w++}toArray(){if(this.#w<this.#n.length)return Array.from(this.#n.subarray(0,this.#w));let n=Array.from({length:this.#w});for(let w=0;w<this.#w;w++)n[w]=this.#n[(this.#i+w)%this.#n.length];return n}}class B{#n;#i;#w;constructor(){this.#n=new Map,this.#i=new Map,this.#w=new Map}increment(n,w=1){this.#n.set(n,(this.#n.get(n)??0)+w)}record(n,w){let i=this.#i.get(n);if(!i)i=new z(dn),this.#i.set(n,i);i.push(w)}gauge(n,w){this.#w.set(n,w)}snapshot(){let n={};for(let[w,i]of this.#n)n[w]={type:"counter",value:i};for(let[w,i]of this.#i){let S=i.toArray(),k=In(S);n[w]={type:"histogram",count:S.length,sum:Fn(S),p50:k[Math.floor(k.length*0.5)]??0,p99:k[Math.floor(k.length*0.99)]??0,min:k[0]??0,max:k[k.length-1]??0}}for(let[w,i]of this.#w)n[w]={type:"gauge",value:i};return n}reset(){this.#n.clear(),this.#i.clear(),this.#w.clear()}}function pn(n){let w;if(typeof n==="string")w=o().metrics.getMeter(n);else if(n)w=n;else w=o().metrics.getMeter("weft");return{workflowDuration:w.createHistogram("weft.workflow.duration",{unit:"ms"}),activityDuration:w.createHistogram("weft.activity.duration",{unit:"ms"}),activityAttempts:w.createCounter("weft.activity.attempts"),activeWorkflows:w.createUpDownCounter("weft.workflow.active")}}function In(n){let w=[...n];return w.sort((i,S)=>i-S),w}function Fn(n){let w=0;for(let i of n)w+=i;return w}function Ln(n,w){let i=w?.type==="histogram"?w.count:0,S=w?.type==="histogram"?w.sum:0;return[`# TYPE ${n} histogram`,`${n}_count ${i}`,`${n}_sum ${S}`]}function $n(n,w){let i=w?.type==="counter"?w.value:0;return[`# TYPE ${n} counter`,`${n}_total ${i}`]}function Gn(n,w){let i=w?.type==="gauge"?w.value:0;return[`# TYPE ${n} gauge`,`${n} ${i}`]}var on={histogram:Ln,counter:$n,gauge:Gn};function Kn(n,w){let i=n.name.replace(/\./g,"_"),S=w[n.name];return[`# HELP ${i} ${n.description}`,...on[n.type](i,S)]}function Cn(n){let w=n[A.dpmoDefects.name],i=n[A.dpmoOperations.name],S=w?.type==="counter"?w.value:0,k=i?.type==="counter"?i.value:0,v=k===0?0:S*1e6/k,y="weft_dpmo";return["# HELP weft_dpmo Defects per million operations (failed workflows / started workflows * 1e6)","# TYPE weft_dpmo gauge",`weft_dpmo ${v}`]}function b(n){let w=[];for(let i of Object.values(A))w.push(...Kn(i,n));return w.push(...Cn(n)),w.join(`
2
+ var be=import.meta.require;var q={traceId:"0".repeat(32),spanId:"0".repeat(16),traceFlags:0},v={setAttribute(){},setStatus(){},recordException(){},end(){},spanContext(){return q}},_={setAttribute:(...e)=>v.setAttribute(...e),setStatus:(...e)=>v.setStatus(...e),recordException:(...e)=>v.recordException(...e),end:(...e)=>v.end(...e)},Z={startSpan(){return v}},M={record(){},add(){}},V={createHistogram(){return M},createCounter(){return M},createUpDownCounter(){return M}},B=Symbol("ROOT_CONTEXT"),J={trace:{getTracer(){return Z},setSpan(e){return e}},metrics:{getMeter(){return V}},context:{ROOT_CONTEXT:B,with(e,t){return t()}},SpanStatusCode:{OK:1,ERROR:2,UNSET:0}},w;function Q(){let e=globalThis.require;if(typeof e==="function")return(t)=>e(t);return()=>{return}}function ee(e){return e?.trace?.getTracer!=null&&e.SpanStatusCode!=null}function te(e=Q()){try{let t=e("@opentelemetry/api");if(ee(t))return t}catch{}return}function y(e){if(w)return w;let t=te(e);if(t)return w=t,w;return w=J,w}function P(e){let t=new Uint8Array(e);return crypto.getRandomValues(t),Array.from(t,(r)=>r.toString(16).padStart(2,"0")).join("")}var W="traceparent",re=/^([0-9a-f]{2})-([0-9a-f]{32})-([0-9a-f]{16})-([0-9a-f]{2})$/,ne="00000000000000000000000000000000",oe="0000000000000000";function L(e){let t=re.exec(e);if(!t)return null;let[,r,n,o,s]=t;if(n===ne)return null;if(o===oe)return null;return{version:r,traceId:n,spanId:o,traceFlags:parseInt(s,16)}}function D(e){let t=e.traceFlags.toString(16).padStart(2,"0");return`${e.version}-${e.traceId}-${e.spanId}-${t}`}function h(e){let t=e.get(W);if(!t)return null;return L(t)}function C(e,t){e.set(W,D(t))}function ie(){return P(16)}function se(){return P(8)}var N=1024;function g(e,t){let r;try{r=JSON.stringify(e)}catch{r=String(e)}if(r.length>t)return r.slice(0,t)+"...";return r}function ae(e){return e instanceof Error?e.message:String(e)}function pe(e){return e instanceof Error?e:Error(String(e))}function b(e,t){let r=e.spanContext();C(t,{version:"00",traceId:r.traceId,spanId:r.spanId,traceFlags:r.traceFlags})}function S(e,t,r){let n=e.attributeExtractor;if(!n)return;let o=n(r);for(let[s,a]of Object.entries(o))t.setAttribute(s,a)}function O(e,t){let r=e.workflowSpans.get(t);return r?e.trace.setSpan(e.api.context.ROOT_CONTEXT,r.span):e.api.context.ROOT_CONTEXT}function R(e,t,r){t.setStatus({code:e.SpanStatusCode.ERROR,message:ae(r)}),t.recordException(pe(r))}function F(e,t,r,n){try{let o=r();return t.setStatus({code:e.SpanStatusCode.OK}),n?.(o),o}catch(o){throw R(e,t,o),o}finally{t.end()}}async function x(e,t,r,n){try{let o=await r();return t.setStatus({code:e.SpanStatusCode.OK}),n?.(o),o}catch(o){throw R(e,t,o),o}finally{t.end()}}function*I(e,t,r,n){try{let o=yield*r();return t.setStatus({code:e.SpanStatusCode.OK}),n?.(o),o}catch(o){throw R(e,t,o),o}finally{t.end()}}function H(e){return{async execute(t,r){let n=h(t.headers),o=e.api.context.ROOT_CONTEXT;if(n){let a={..._,spanContext(){return{traceId:n.traceId,spanId:n.spanId,traceFlags:n.traceFlags}}};o=e.trace.setSpan(e.api.context.ROOT_CONTEXT,a)}let s=e.tracer.startSpan(`activity:execute:${t.activityName}`,{attributes:{"weft.activity.name":t.activityName,"weft.activity.attempt":t.attempt,...n?{"weft.parent.trace_id":n.traceId}:{}}},o);if(e.recordPayloads&&t.input!==void 0)s.setAttribute("weft.payload.input",g(t.input,e.maxPayloadSize));return x(e,s,()=>r(t))}}}var k={workflowDuration:{name:"weft.workflow.duration",description:"Duration of workflow execution in milliseconds",unit:"ms",type:"histogram"},activityDuration:{name:"weft.activity.duration",description:"Duration of activity execution in milliseconds",unit:"ms",type:"histogram"},activityAttempts:{name:"weft.activity.attempts",description:"Total activity execution attempts",unit:"attempts",type:"counter"},workflowActive:{name:"weft.workflow.active",description:"Number of currently active workflows",unit:"workflows",type:"gauge"},workflowStarted:{name:"weft.workflow.started",description:"Total workflows started",unit:"workflows",type:"counter"},workflowCompleted:{name:"weft.workflow.completed",description:"Total workflows completed",unit:"workflows",type:"counter"},workflowFailed:{name:"weft.workflow.failed",description:"Total workflows failed",unit:"workflows",type:"counter"},promptCacheHits:{name:"weft.prompt_cache.hits",description:"Total prompt prefix cache hits",unit:"hits",type:"counter"},promptCacheMisses:{name:"weft.prompt_cache.misses",description:"Total prompt prefix cache misses",unit:"misses",type:"counter"},dpmoDefects:{name:"weft.dpmo.defects",description:"Total failed workflows (DPMO numerator)",unit:"workflows",type:"counter"},dpmoOperations:{name:"weft.dpmo.operations",description:"Total started workflows (DPMO denominator)",unit:"workflows",type:"counter"},taskBacklog:{name:"weft.task.backlog",description:"Number of queued tasks waiting for workers",unit:"tasks",type:"gauge"},taskQueueLatency:{name:"weft.task.queue_latency",description:"Time tasks spend queued before dispatch in milliseconds",unit:"ms",type:"histogram"},taskExecutionLatency:{name:"weft.task.execution_latency",description:"Time tasks spend executing after worker start in milliseconds",unit:"ms",type:"histogram"},taskRetries:{name:"weft.task.retries",description:"Total task retry attempts after the first dispatch attempt",unit:"retries",type:"counter"},taskRequeues:{name:"weft.task.requeues",description:"Total visibility-timeout or disconnect task requeues",unit:"requeues",type:"counter"},taskStaleHeartbeats:{name:"weft.task.stale_heartbeats",description:"Number of in-flight tasks whose heartbeat age exceeds the diagnostic threshold",unit:"tasks",type:"gauge"},workerCapacitySaturation:{name:"weft.worker.capacity_saturation",description:"Ratio of in-flight worker slots to total worker concurrency",unit:"ratio",type:"gauge"}};var ce=1e4;class G{#e;#r=0;#t=0;constructor(e){this.#e=new Float64Array(e)}push(e){if(this.#e[this.#r]=e,this.#r=(this.#r+1)%this.#e.length,this.#t<this.#e.length)this.#t++}toArray(){if(this.#t<this.#e.length)return Array.from(this.#e.subarray(0,this.#t));let e=Array.from({length:this.#t});for(let t=0;t<this.#t;t++)e[t]=this.#e[(this.#r+t)%this.#e.length];return e}}class E{#e;#r;#t;constructor(){this.#e=new Map,this.#r=new Map,this.#t=new Map}increment(e,t=1){this.#e.set(e,(this.#e.get(e)??0)+t)}record(e,t){let r=this.#r.get(e);if(!r)r=new G(ce),this.#r.set(e,r);r.push(t)}gauge(e,t){this.#t.set(e,t)}snapshot(){let e={};for(let[t,r]of this.#e)e[t]={type:"counter",value:r};for(let[t,r]of this.#r){let n=r.toArray(),o=ue(n);e[t]={type:"histogram",count:n.length,sum:de(n),p50:o[Math.floor(o.length*0.5)]??0,p99:o[Math.floor(o.length*0.99)]??0,min:o[0]??0,max:o[o.length-1]??0}}for(let[t,r]of this.#t)e[t]={type:"gauge",value:r};return e}reset(){this.#e.clear(),this.#r.clear(),this.#t.clear()}}function le(e){let t;if(typeof e==="string")t=y().metrics.getMeter(e);else if(e)t=e;else t=y().metrics.getMeter("weft");return{workflowDuration:t.createHistogram("weft.workflow.duration",{unit:"ms"}),activityDuration:t.createHistogram("weft.activity.duration",{unit:"ms"}),activityAttempts:t.createCounter("weft.activity.attempts"),activeWorkflows:t.createUpDownCounter("weft.workflow.active")}}function ue(e){let t=[...e];return t.sort((r,n)=>r-n),t}function de(e){let t=0;for(let r of e)t+=r;return t}function fe(e,t){let r=t?.type==="histogram"?t.count:0,n=t?.type==="histogram"?t.sum:0;return[`# TYPE ${e} histogram`,`${e}_count ${r}`,`${e}_sum ${n}`]}function me(e,t){let r=t?.type==="counter"?t.value:0;return[`# TYPE ${e} counter`,`${e}_total ${r}`]}function we(e,t){let r=t?.type==="gauge"?t.value:0;return[`# TYPE ${e} gauge`,`${e} ${r}`]}var ye={histogram:fe,counter:me,gauge:we};function ge(e,t){let r=e.name.replace(/\./g,"_"),n=t[e.name];return[`# HELP ${r} ${e.description}`,...ye[e.type](r,n)]}function Se(e){let t=e[k.dpmoDefects.name],r=e[k.dpmoOperations.name],n=t?.type==="counter"?t.value:0,o=r?.type==="counter"?r.value:0,s=o===0?0:n*1e6/o,a="weft_dpmo";return["# HELP weft_dpmo Defects per million operations (failed workflows / started workflows * 1e6)","# TYPE weft_dpmo gauge",`weft_dpmo ${s}`]}function z(e){let t=[];for(let r of Object.values(k))t.push(...ge(r,e));return t.push(...Se(e)),t.join(`
3
3
  `)+`
4
- `}function An(n){return{serialize(){let w=n?.snapshot()??{};return b(w)}}}class p extends Event{static type="workflow:completed";workflowId;result;duration;constructor(n,w,i){super(p.type);this.workflowId=n,this.result=w,this.duration=i}}class I extends Event{static type="workflow:failed";workflowId;error;constructor(n,w){super(I.type);this.workflowId=n,this.error=w}}class F extends Event{static type="workflow:cancelled";workflowId;constructor(n){super(F.type);this.workflowId=n}}class L extends Event{static type="workflow:timed-out";workflowId;timeoutType;elapsed;reason;constructor(n,w,i,S){super(L.type);if(this.workflowId=n,this.timeoutType=w,this.elapsed=i,S!==void 0)this.reason=S}}var _n=new Set([p.type,I.type,F.type,L.type]);var Xn=3600000,E=1e4,Rn=3600000;function c(n){let w=Date.now();for(let[i,S]of n.workflowSpans)if(w-S.createdAt>Xn)S.span.end(),n.workflowSpans.delete(i);if(n.workflowSpans.size>E){let i=n.workflowSpans.size-E,S=0;for(let[k,v]of n.workflowSpans){if(S>=i)break;v.span.end(),n.workflowSpans.delete(k),S++}}}function N(n,w){let i=n.workflowSpans.get(w);if(i)i.span.end(),n.workflowSpans.delete(w)}function u(n){function w(f,$,W){let d=n.workflowSpans.get(f);if(!d)return;if($==="error")d.span.setStatus({code:n.SpanStatusCode.ERROR,...W?{message:W}:{}});else d.span.setStatus({code:n.SpanStatusCode.OK});d.span.end(),n.workflowSpans.delete(f)}let i=(f)=>{if(!(f instanceof p))return;w(f.workflowId,"ok")},S=(f)=>{if(!(f instanceof I))return;w(f.workflowId,"error",f.error.message),n.metrics.increment("weft.dpmo.defects")},k=(f)=>{if(!(f instanceof F))return;w(f.workflowId,"error","Workflow cancelled")},v=(f)=>{if(!(f instanceof L))return;w(f.workflowId,"error",`Workflow timed out (${f.timeoutType}) after ${f.elapsed}ms`),n.metrics.increment("weft.dpmo.defects")};if(n.eventTarget)n.eventTarget.addEventListener(p.type,i),n.eventTarget.addEventListener(I.type,S),n.eventTarget.addEventListener(F.type,k),n.eventTarget.addEventListener(L.type,v);function y(f=Rn){let $=Date.now()-f,W=0;for(let[d,X]of n.workflowSpans)if(X.createdAt<=$)X.span.setStatus({code:n.SpanStatusCode.ERROR,message:"span evicted (stale)"}),X.span.end(),n.workflowSpans.delete(d),W++;return W}function D(){if(n.eventTarget)n.eventTarget.removeEventListener(p.type,i),n.eventTarget.removeEventListener(I.type,S),n.eventTarget.removeEventListener(F.type,k),n.eventTarget.removeEventListener(L.type,v);for(let f of n.workflowSpans.values())f.span.setStatus({code:n.SpanStatusCode.ERROR,message:"Observability disposed"}),f.span.end();n.workflowSpans.clear()}return{endWorkflowSpan:w,evictStaleSpans:y,dispose:D}}function m(n){return{workflowStart(w,i){c(n);let S=n.workflowSpans.get(w.workflowId);if(S)S.span.setStatus({code:n.SpanStatusCode.OK}),N(n,w.workflowId);let k=n.tracer.startSpan(`workflow:${w.workflowType}`,{attributes:{"weft.workflow.id":w.workflowId,"weft.workflow.type":w.workflowType}});if(n.workflowSpans.set(w.workflowId,{span:k,createdAt:Date.now()}),J(k,w.headers),n.recordPayloads&&w.input!==void 0)k.setAttribute("weft.payload.input",K(w.input,n.maxPayloadSize));C(n,k,w),n.metrics.increment("weft.workflow.started"),n.metrics.increment("weft.dpmo.operations"),i(w)},*activity(w,i){let S=n.tracer.startSpan(`activity:${w.activityName}`,{attributes:{"weft.activity.name":w.activityName,"weft.activity.attempt":w.attempt}},Q(n,w.workflowId));if(J(S,w.headers),n.recordPayloads&&w.input!==void 0)S.setAttribute("weft.payload.input",K(w.input,n.maxPayloadSize));C(n,S,w);let k=Date.now();return yield*x(n,S,()=>i(w),()=>{n.metrics.record("weft.activity.duration",Date.now()-k),n.metrics.increment("weft.activity.attempts")})},*sleep(w,i){let S=n.tracer.startSpan("sleep",{attributes:{"weft.sleep.duration":w.duration}},Q(n,w.workflowId));C(n,S,w),yield*x(n,S,()=>i(w))},*waitForSignal(w,i){let S=n.tracer.startSpan("waitForSignal",{attributes:{"weft.signal.name":w.signalName}},Q(n,w.workflowId));return C(n,S,w),yield*x(n,S,()=>i(w))},async childWorkflow(w,i){let S=[],k=T(w.parentHeaders);if(k)S.push({context:{traceId:k.traceId,spanId:k.spanId,traceFlags:k.traceFlags}});let v=n.tracer.startSpan(`childWorkflow:${w.workflowType}`,{attributes:{"weft.child_workflow.type":w.workflowType,"weft.child_workflow.id":w.childWorkflowId,"weft.child_workflow.parent_id":w.workflowId},links:S},n.api.context.ROOT_CONTEXT);if(J(v,w.headers),n.recordPayloads&&w.input!==void 0)v.setAttribute("weft.payload.input",K(w.input,n.maxPayloadSize));return n.metrics.increment("weft.child_workflow.started"),j(n,v,()=>i(w))},signalReceived(w,i){let S=n.tracer.startSpan(`signal:received:${w.signalName}`,{attributes:{"weft.signal.name":w.signalName,"weft.signal.workflow_id":w.workflowId}});C(n,S,w),_(n,S,()=>i(w))}}}function Tn(n){let{attributeExtractor:w,eventTarget:i,maxPayloadSize:S=O,metrics:k=new B,openTelemetryApi:v=o(),recordPayloads:y=!1,tracerName:D="weft",tracerVersion:f}=n??{},$=v,{trace:W,SpanStatusCode:d}=$,X=W.getTracer(D,f);return{api:$,trace:W,SpanStatusCode:d,tracer:X,recordPayloads:y,maxPayloadSize:S,attributeExtractor:w,eventTarget:i,metrics:k,workflowSpans:new Map}}function sn(n){let w=Tn(n),i=m(w),S=g(w),k={...i,...S},v=u(w);return{interceptor:k,metrics:w.metrics,...v}}export{b as serializeMetricsSnapshotForPrometheus,Z as parseTraceParent,U as injectTraceParent,o as getOpenTelemetryApi,fn as generateTraceId,vn as generateSpanId,M as formatTraceParent,T as extractTraceParent,pn as createOpenTelemetryMetrics,sn as createObservabilityInterceptors,An as createMetricsCollectorExporter,B as MetricsCollector,A as METRICS};
4
+ `}function ke(e){return{serialize(){let t=e?.snapshot()??{};return z(t)}}}class l extends Event{static type="workflow:completed";workflowId;result;duration;constructor(e,t,r){super(l.type);this.workflowId=e,this.result=t,this.duration=r}}class u extends Event{static type="workflow:failed";workflowId;error;constructor(e,t){super(u.type);this.workflowId=e,this.error=t}}class d extends Event{static type="workflow:cancelled";workflowId;constructor(e){super(d.type);this.workflowId=e}}class f extends Event{static type="workflow:timed-out";workflowId;timeoutType;elapsed;reason;constructor(e,t,r,n){super(f.type);if(this.workflowId=e,this.timeoutType=t,this.elapsed=r,n!==void 0)this.reason=n}}var Fe=new Set([l.type,u.type,d.type,f.type]);var Te=3600000,X=1e4,ve=3600000;function U(e){let t=Date.now();for(let[r,n]of e.workflowSpans)if(t-n.createdAt>Te)n.span.end(),e.workflowSpans.delete(r);if(e.workflowSpans.size>X){let r=e.workflowSpans.size-X,n=0;for(let[o,s]of e.workflowSpans){if(n>=r)break;s.span.end(),e.workflowSpans.delete(o),n++}}}function K(e,t){let r=e.workflowSpans.get(t);if(r)r.span.end(),e.workflowSpans.delete(t)}function Y(e){function t(i,m,p){let c=e.workflowSpans.get(i);if(!c)return;if(m==="error")c.span.setStatus({code:e.SpanStatusCode.ERROR,...p?{message:p}:{}});else c.span.setStatus({code:e.SpanStatusCode.OK});c.span.end(),e.workflowSpans.delete(i)}let r=(i)=>{if(!(i instanceof l))return;t(i.workflowId,"ok")},n=(i)=>{if(!(i instanceof u))return;t(i.workflowId,"error",i.error.message),e.metrics.increment("weft.dpmo.defects")},o=(i)=>{if(!(i instanceof d))return;t(i.workflowId,"error","Workflow cancelled")},s=(i)=>{if(!(i instanceof f))return;t(i.workflowId,"error",`Workflow timed out (${i.timeoutType}) after ${i.elapsed}ms`),e.metrics.increment("weft.dpmo.defects")};if(e.eventTarget)e.eventTarget.addEventListener(l.type,r),e.eventTarget.addEventListener(u.type,n),e.eventTarget.addEventListener(d.type,o),e.eventTarget.addEventListener(f.type,s);function a(i=ve){let m=Date.now()-i,p=0;for(let[c,T]of e.workflowSpans)if(T.createdAt<=m)T.span.setStatus({code:e.SpanStatusCode.ERROR,message:"span evicted (stale)"}),T.span.end(),e.workflowSpans.delete(c),p++;return p}function A(){if(e.eventTarget)e.eventTarget.removeEventListener(l.type,r),e.eventTarget.removeEventListener(u.type,n),e.eventTarget.removeEventListener(d.type,o),e.eventTarget.removeEventListener(f.type,s);for(let i of e.workflowSpans.values())i.span.setStatus({code:e.SpanStatusCode.ERROR,message:"Observability disposed"}),i.span.end();e.workflowSpans.clear()}return{endWorkflowSpan:t,evictStaleSpans:a,dispose:A}}function j(e){return{workflowStart(t,r){U(e);let n=e.workflowSpans.get(t.workflowId);if(n)n.span.setStatus({code:e.SpanStatusCode.OK}),K(e,t.workflowId);let o=e.tracer.startSpan(`workflow:${t.workflowType}`,{attributes:{"weft.workflow.id":t.workflowId,"weft.workflow.type":t.workflowType}});if(e.workflowSpans.set(t.workflowId,{span:o,createdAt:Date.now()}),b(o,t.headers),e.recordPayloads&&t.input!==void 0)o.setAttribute("weft.payload.input",g(t.input,e.maxPayloadSize));S(e,o,t),e.metrics.increment("weft.workflow.started"),e.metrics.increment("weft.dpmo.operations"),r(t)},*activity(t,r){let n=e.tracer.startSpan(`activity:${t.activityName}`,{attributes:{"weft.activity.name":t.activityName,"weft.activity.attempt":t.attempt}},O(e,t.workflowId));if(b(n,t.headers),e.recordPayloads&&t.input!==void 0)n.setAttribute("weft.payload.input",g(t.input,e.maxPayloadSize));S(e,n,t);let o=Date.now();return yield*I(e,n,()=>r(t),()=>{e.metrics.record("weft.activity.duration",Date.now()-o),e.metrics.increment("weft.activity.attempts")})},*sleep(t,r){let n=e.tracer.startSpan("sleep",{attributes:{"weft.sleep.duration":t.duration}},O(e,t.workflowId));S(e,n,t),yield*I(e,n,()=>r(t))},*waitForSignal(t,r){let n=e.tracer.startSpan("waitForSignal",{attributes:{"weft.signal.name":t.signalName}},O(e,t.workflowId));return S(e,n,t),yield*I(e,n,()=>r(t))},async childWorkflow(t,r){let n=[],o=h(t.parentHeaders);if(o)n.push({context:{traceId:o.traceId,spanId:o.spanId,traceFlags:o.traceFlags}});let s=e.tracer.startSpan(`childWorkflow:${t.workflowType}`,{attributes:{"weft.child_workflow.type":t.workflowType,"weft.child_workflow.id":t.childWorkflowId,"weft.child_workflow.parent_id":t.workflowId},links:n},e.api.context.ROOT_CONTEXT);if(b(s,t.headers),e.recordPayloads&&t.input!==void 0)s.setAttribute("weft.payload.input",g(t.input,e.maxPayloadSize));return e.metrics.increment("weft.child_workflow.started"),x(e,s,()=>r(t))},signalReceived(t,r){let n=e.tracer.startSpan(`signal:received:${t.signalName}`,{attributes:{"weft.signal.name":t.signalName,"weft.signal.workflow_id":t.workflowId}});S(e,n,t),F(e,n,()=>r(t))}}}function he(e){let{attributeExtractor:t,eventTarget:r,maxPayloadSize:n=N,metrics:o=new E,openTelemetryApi:s=y(),recordPayloads:a=!1,tracerName:A="weft",tracerVersion:i}=e??{},m=s,{trace:p,SpanStatusCode:c}=m,T=p.getTracer(A,i);return{api:m,trace:p,SpanStatusCode:c,tracer:T,recordPayloads:a,maxPayloadSize:n,attributeExtractor:t,eventTarget:r,metrics:o,workflowSpans:new Map}}function Je(e){let t=he(e),r=j(t),n=H(t),o={...r,...n},s=Y(t);return{interceptor:o,metrics:t.metrics,...s}}export{k as METRICS,E as MetricsCollector,ke as createMetricsCollectorExporter,Je as createObservabilityInterceptors,le as createOpenTelemetryMetrics,h as extractTraceParent,D as formatTraceParent,se as generateSpanId,ie as generateTraceId,y as getOpenTelemetryApi,C as injectTraceParent,L as parseTraceParent,z as serializeMetricsSnapshotForPrometheus};
@@ -71,10 +71,10 @@ export function hashString(data) {
71
71
  return fnv1a64(textEncoder.encode(data));
72
72
  }
73
73
  export function tryLoadNodeBuiltin(id) {
74
- const getBuiltinModule = getProcess()?.getBuiltinModule;
75
- if (typeof getBuiltinModule !== "function")
74
+ const nodeProcess = getProcess();
75
+ if (typeof nodeProcess?.getBuiltinModule !== "function")
76
76
  return;
77
- return getBuiltinModule(id);
77
+ return nodeProcess.getBuiltinModule(id);
78
78
  }
79
79
  export function fileSize(path) {
80
80
  if (isBunRuntime())
@@ -4,29 +4,27 @@
4
4
  * Scans the durable task ledger (WFT-24 — previously the retired
5
5
  * `op:queued:`/`op:inflight:`/`op:resolved:`/`op:dead-letter:` keys, which
6
6
  * nothing has written since the WFT-22 ledger cutover) and live worker state
7
- * to identify queue pressure, stale in-flight work, retry storms, dead
8
- * letters, and worker capacity saturation. Results are intentionally bounded
9
- * and low-cardinality so operators can use them in a dashboard without
10
- * turning workflow or worker identifiers into metrics labels.
7
+ * to identify queue pressure, expected delayed attempts, stale in-flight
8
+ * work, retry storms, elapsed terminal non-adoption, dead letters, and worker
9
+ * capacity saturation. Results are intentionally bounded and low-cardinality
10
+ * so operators can use them in a dashboard without turning workflow or worker
11
+ * identifiers into metrics labels.
11
12
  *
12
- * The output schema's field names and `kind`/`state` vocabulary are
13
- * unchanged from the pre-ledger version — only the internal scan and
14
- * classification logic changed so existing dashboards built against this
15
- * endpoint's shape keep working. `leased`, `completing`, and `cancelling`
16
- * ledger states are all reported as diagnostic `state: 'inflight'`: they
17
- * share the same lease-holder/heartbeat shape and the same operator
18
- * question ("is a worker still making progress on this attempt?"), so
19
- * exposing the ledger's more granular internal states here would add
20
- * distinctions operators cannot act on differently.
13
+ * `leased`, `completing`, and `cancelling` ledger states are all reported as
14
+ * diagnostic `state: 'inflight'`: they share the same lease-holder/heartbeat
15
+ * shape and the same operator question ("is a worker still making progress on
16
+ * this attempt?"), so exposing the ledger's more granular internal states
17
+ * here would add distinctions operators cannot act on differently. Terminal
18
+ * records reported as `unadopted-terminal` use the coarse `resolved` state and
19
+ * expose no attempt-count history.
21
20
  *
22
21
  * Retry-storm detection (`kind: 'retry-storm'`) no longer covers `terminal`
23
22
  * records: `RemoteTaskTerminal` carries no `retryCount`/`requeueCount` (WFT-25
24
23
  * deliberately dropped attempt-count history once a task resolves), so
25
24
  * there is nothing left to detect a storm from once an attempt reaches a
26
- * disposition. The `resolved` value in the `state` enum is kept in the
27
- * output schema for backward compatibility but nothing produces it anymore.
28
- * `dead-lettered` diagnostics are unaffected that is a distinct, separate
29
- * `kind`.
25
+ * disposition. Terminal records are classified only by elapsed non-adoption;
26
+ * that diagnostic does not claim an adoption attempt failed. `dead-lettered`
27
+ * diagnostics remain a distinct kind for result-persistence exhaustion.
30
28
  *
31
29
  * Unlike the pre-ledger scan, the full ledger scan this operation performs
32
30
  * is one combined keyspace across every state (queued through terminal),
@@ -49,8 +47,10 @@ declare const taskDiagnosticKindSchema: z.ZodEnum<{
49
47
  "stale-inflight": "stale-inflight";
50
48
  "retry-storm": "retry-storm";
51
49
  "all-workers-at-capacity": "all-workers-at-capacity";
50
+ delayed: "delayed";
51
+ "unadopted-terminal": "unadopted-terminal";
52
52
  }>;
53
- declare const taskDiagnosticItemSchema: z.ZodObject<{
53
+ declare const taskDiagnosticItemSchema: z.ZodUnion<readonly [z.ZodObject<{
54
54
  kind: z.ZodEnum<{
55
55
  "dead-lettered": "dead-lettered";
56
56
  "stuck-queued": "stuck-queued";
@@ -82,16 +82,37 @@ declare const taskDiagnosticItemSchema: z.ZodObject<{
82
82
  storageError: z.ZodOptional<z.ZodString>;
83
83
  retryAttempts: z.ZodOptional<z.ZodNumber>;
84
84
  evidence: z.ZodArray<z.ZodString>;
85
- }, z.core.$strict>;
85
+ }, z.core.$strict>, z.ZodObject<{
86
+ kind: z.ZodLiteral<"delayed">;
87
+ state: z.ZodLiteral<"queued">;
88
+ operationId: z.ZodString;
89
+ workflowId: z.ZodOptional<z.ZodString>;
90
+ queue: z.ZodString;
91
+ retryCount: z.ZodNumber;
92
+ requeueCount: z.ZodNumber;
93
+ availableAt: z.ZodNumber;
94
+ evidence: z.ZodArray<z.ZodString>;
95
+ }, z.core.$strict>, z.ZodObject<{
96
+ kind: z.ZodLiteral<"unadopted-terminal">;
97
+ state: z.ZodLiteral<"resolved">;
98
+ operationId: z.ZodString;
99
+ workflowId: z.ZodOptional<z.ZodString>;
100
+ queue: z.ZodString;
101
+ terminalAt: z.ZodNumber;
102
+ adopted: z.ZodLiteral<false>;
103
+ evidence: z.ZodArray<z.ZodString>;
104
+ }, z.core.$strict>]>;
86
105
  declare const taskDiagnosticsSummarySchema: z.ZodObject<{
87
106
  stuckQueued: z.ZodNumber;
88
107
  staleInflight: z.ZodNumber;
89
108
  retryStorms: z.ZodNumber;
90
109
  allWorkersAtCapacity: z.ZodNumber;
91
110
  deadLettered: z.ZodNumber;
111
+ delayed: z.ZodNumber;
112
+ unadoptedTerminal: z.ZodNumber;
92
113
  }, z.core.$strict>;
93
114
  declare const getTaskDiagnosticsOutput: z.ZodObject<{
94
- items: z.ZodArray<z.ZodObject<{
115
+ items: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
95
116
  kind: z.ZodEnum<{
96
117
  "dead-lettered": "dead-lettered";
97
118
  "stuck-queued": "stuck-queued";
@@ -123,13 +144,34 @@ declare const getTaskDiagnosticsOutput: z.ZodObject<{
123
144
  storageError: z.ZodOptional<z.ZodString>;
124
145
  retryAttempts: z.ZodOptional<z.ZodNumber>;
125
146
  evidence: z.ZodArray<z.ZodString>;
126
- }, z.core.$strict>>;
147
+ }, z.core.$strict>, z.ZodObject<{
148
+ kind: z.ZodLiteral<"delayed">;
149
+ state: z.ZodLiteral<"queued">;
150
+ operationId: z.ZodString;
151
+ workflowId: z.ZodOptional<z.ZodString>;
152
+ queue: z.ZodString;
153
+ retryCount: z.ZodNumber;
154
+ requeueCount: z.ZodNumber;
155
+ availableAt: z.ZodNumber;
156
+ evidence: z.ZodArray<z.ZodString>;
157
+ }, z.core.$strict>, z.ZodObject<{
158
+ kind: z.ZodLiteral<"unadopted-terminal">;
159
+ state: z.ZodLiteral<"resolved">;
160
+ operationId: z.ZodString;
161
+ workflowId: z.ZodOptional<z.ZodString>;
162
+ queue: z.ZodString;
163
+ terminalAt: z.ZodNumber;
164
+ adopted: z.ZodLiteral<false>;
165
+ evidence: z.ZodArray<z.ZodString>;
166
+ }, z.core.$strict>]>>;
127
167
  summary: z.ZodObject<{
128
168
  stuckQueued: z.ZodNumber;
129
169
  staleInflight: z.ZodNumber;
130
170
  retryStorms: z.ZodNumber;
131
171
  allWorkersAtCapacity: z.ZodNumber;
132
172
  deadLettered: z.ZodNumber;
173
+ delayed: z.ZodNumber;
174
+ unadoptedTerminal: z.ZodNumber;
133
175
  }, z.core.$strict>;
134
176
  limit: z.ZodNumber;
135
177
  }, z.core.$strict>;
@@ -140,6 +182,8 @@ declare const getTaskDiagnosticsInput: z.ZodObject<{
140
182
  staleQueuedAfterMs: z.ZodDefault<z.ZodNumber>;
141
183
  staleHeartbeatAfterMs: z.ZodDefault<z.ZodNumber>;
142
184
  retryStormMinimumAttempts: z.ZodDefault<z.ZodNumber>;
185
+ includeExpectedDelayed: z.ZodDefault<z.ZodBoolean>;
186
+ unadoptedAfterMs: z.ZodDefault<z.ZodNumber>;
143
187
  limit: z.ZodDefault<z.ZodNumber>;
144
188
  }, z.core.$strip>;
145
189
  declare const clearTaskDeadLetterInput: z.ZodObject<{
@@ -164,12 +208,14 @@ export declare function createGetTaskDiagnosticsOperation(options?: GetTaskDiagn
164
208
  staleQueuedAfterMs: number;
165
209
  staleHeartbeatAfterMs: number;
166
210
  retryStormMinimumAttempts: number;
211
+ includeExpectedDelayed: boolean;
212
+ unadoptedAfterMs: number;
167
213
  limit: number;
168
214
  operationId?: string | undefined;
169
215
  workflowId?: string | undefined;
170
216
  queue?: string | undefined;
171
217
  }, {
172
- items: {
218
+ items: ({
173
219
  kind: "dead-lettered" | "stuck-queued" | "stale-inflight" | "retry-storm" | "all-workers-at-capacity";
174
220
  state: "dead-lettered" | "queued" | "resolved" | "inflight" | "capacity";
175
221
  retryCount: number;
@@ -189,13 +235,34 @@ export declare function createGetTaskDiagnosticsOperation(options?: GetTaskDiagn
189
235
  deadLetterReason?: "result-resolution-storage-exhausted" | undefined;
190
236
  storageError?: string | undefined;
191
237
  retryAttempts?: number | undefined;
192
- }[];
238
+ } | {
239
+ kind: "delayed";
240
+ state: "queued";
241
+ operationId: string;
242
+ queue: string;
243
+ retryCount: number;
244
+ requeueCount: number;
245
+ availableAt: number;
246
+ evidence: string[];
247
+ workflowId?: string | undefined;
248
+ } | {
249
+ kind: "unadopted-terminal";
250
+ state: "resolved";
251
+ operationId: string;
252
+ queue: string;
253
+ terminalAt: number;
254
+ adopted: false;
255
+ evidence: string[];
256
+ workflowId?: string | undefined;
257
+ })[];
193
258
  summary: {
194
259
  stuckQueued: number;
195
260
  staleInflight: number;
196
261
  retryStorms: number;
197
262
  allWorkersAtCapacity: number;
198
263
  deadLettered: number;
264
+ delayed: number;
265
+ unadoptedTerminal: number;
199
266
  };
200
267
  limit: number;
201
268
  }, unknown>;
@@ -203,12 +270,14 @@ export declare const getTaskDiagnosticsOperation: import("../operation-catalog.t
203
270
  staleQueuedAfterMs: number;
204
271
  staleHeartbeatAfterMs: number;
205
272
  retryStormMinimumAttempts: number;
273
+ includeExpectedDelayed: boolean;
274
+ unadoptedAfterMs: number;
206
275
  limit: number;
207
276
  operationId?: string | undefined;
208
277
  workflowId?: string | undefined;
209
278
  queue?: string | undefined;
210
279
  }, {
211
- items: {
280
+ items: ({
212
281
  kind: "dead-lettered" | "stuck-queued" | "stale-inflight" | "retry-storm" | "all-workers-at-capacity";
213
282
  state: "dead-lettered" | "queued" | "resolved" | "inflight" | "capacity";
214
283
  retryCount: number;
@@ -228,13 +297,34 @@ export declare const getTaskDiagnosticsOperation: import("../operation-catalog.t
228
297
  deadLetterReason?: "result-resolution-storage-exhausted" | undefined;
229
298
  storageError?: string | undefined;
230
299
  retryAttempts?: number | undefined;
231
- }[];
300
+ } | {
301
+ kind: "delayed";
302
+ state: "queued";
303
+ operationId: string;
304
+ queue: string;
305
+ retryCount: number;
306
+ requeueCount: number;
307
+ availableAt: number;
308
+ evidence: string[];
309
+ workflowId?: string | undefined;
310
+ } | {
311
+ kind: "unadopted-terminal";
312
+ state: "resolved";
313
+ operationId: string;
314
+ queue: string;
315
+ terminalAt: number;
316
+ adopted: false;
317
+ evidence: string[];
318
+ workflowId?: string | undefined;
319
+ })[];
232
320
  summary: {
233
321
  stuckQueued: number;
234
322
  staleInflight: number;
235
323
  retryStorms: number;
236
324
  allWorkersAtCapacity: number;
237
325
  deadLettered: number;
326
+ delayed: number;
327
+ unadoptedTerminal: number;
238
328
  };
239
329
  limit: number;
240
330
  }, unknown>;