@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/README.md +2 -4
- package/dist/cli/console.js +5 -5
- package/dist/cli/generated/operation-catalog.snapshot.json +207 -80
- package/dist/cli/generated/operation-client.generated.d.ts +120 -43
- package/dist/cli/help-text.d.ts +1 -1
- package/dist/cli/help-text.js +1 -1
- package/dist/client/http-client-storage.js +1 -1
- package/dist/core/engine/index.d.ts +22 -0
- package/dist/http.js +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/indexeddb.js +1 -1
- package/dist/json-schema.js +3 -3
- package/dist/observability/index.js +2 -2
- package/dist/runtime/portable.js +3 -3
- package/dist/server/operations/get-task-diagnostics.d.ts +115 -25
- package/dist/server/operations/get-task-diagnostics.js +93 -7
- package/dist/storage/auto.js +1 -1
- package/dist/storage/bun-sql.js +2 -2
- package/dist/storage/compressed-storage.js +1 -1
- package/dist/storage/http.js +1 -1
- package/dist/storage/interface.js +1 -1
- package/dist/storage/lmdb.js +1 -1
- package/dist/storage/memory.js +1 -1
- package/dist/storage/neon.js +4 -4
- package/dist/storage/node-sqlite-loader.js +2 -0
- package/dist/storage/node-sqlite.js +5 -2
- package/dist/storage/postgres.js +4 -4
- package/dist/storage/resolve.js +1 -1
- package/dist/storage/scoped-storage.js +1 -1
- package/dist/storage/testing.js +1 -1
- package/dist/storage/turso.js +2 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/web-extension.js +1 -1
- package/dist/worker/protocol.js +1 -1
- package/package.json +7 -8
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};
|
package/dist/json-schema.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var
|
|
3
|
-
`)}function
|
|
4
|
-
${
|
|
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
|
|
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
|
|
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};
|
package/dist/runtime/portable.js
CHANGED
|
@@ -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
|
|
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
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* turning workflow or worker
|
|
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
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
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.
|
|
27
|
-
*
|
|
28
|
-
*
|
|
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>;
|