@ablehi/server-execution-contract 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- var Ie="0.4.0";function u(e){return{ok:!0,value:e}}function r(e){return{ok:!1,reason:e}}function s(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var wt="/cleanup-state-scopes";function x(e){if(!s(e)||typeof e.kind!="string")return r("context state scope surface shape is invalid");switch(e.kind){case"webhook-trigger":return ye(e);case"polling-trigger":return Ee(e);case"flow-action":return ke(e);default:return r("context state scope kind is invalid")}}function Tt(e){if(!s(e))return r("cleanup request body must be a JSON object");let t=B(e,["scopes"]);if(t!==void 0)return r(`cleanup request does not accept the "${t}" field`);if(!Array.isArray(e.scopes))return r("cleanup request scopes must be an array");let n=[];for(let o of e.scopes){let i=x(o);if(!i.ok)return i;n.push(i.value)}return u({scopes:n})}function At(e){return!s(e)||typeof e.deleted!="number"||!Number.isSafeInteger(e.deleted)||e.deleted<0?r("cleanup response data surface shape is invalid"):u({deleted:e.deleted})}function ye(e){let t=B(e,["kind","workspaceId","triggerInstanceId"]);return t!==void 0?r(`webhook trigger scope does not accept "${t}"`):e.kind!=="webhook-trigger"||!_(e.workspaceId)||!_(e.triggerInstanceId)?r("webhook trigger state scope is invalid"):u({kind:"webhook-trigger",workspaceId:e.workspaceId,triggerInstanceId:e.triggerInstanceId})}function Ee(e){let t=B(e,["kind","workspaceId","pollingInstanceId"]);return t!==void 0?r(`polling trigger scope does not accept "${t}"`):e.kind!=="polling-trigger"||!_(e.workspaceId)||!_(e.pollingInstanceId)?r("polling trigger state scope is invalid"):u({kind:"polling-trigger",workspaceId:e.workspaceId,pollingInstanceId:e.pollingInstanceId})}function ke(e){let t=B(e,["kind","workspaceId","flowId","nodeId","connectionId"]);if(t!==void 0)return r(`flow action scope does not accept "${t}"`);let n=e.connectionId;return e.kind!=="flow-action"||!_(e.workspaceId)||!_(e.flowId)||!_(e.nodeId)||n!==null&&!_(n)?r("flow action state scope is invalid"):u({kind:"flow-action",workspaceId:e.workspaceId,flowId:e.flowId,nodeId:e.nodeId,connectionId:n})}function _(e){return typeof e=="string"&&e.length>0}function B(e,t){return Object.keys(e).find(n=>!t.includes(n))}import{parseFlowDefinition as Se}from"@ablehi/flow-contract";var Ot="/:flowRunId/execution-leases",Ct="/restart",Dt="WORKFLOW_RESTART_REQUEST_INVALID",vt="WORKFLOW_RESTART_INSTANCE_UNAVAILABLE",Ut="WORKFLOW_RESTART_REJECTED",Bt="RUN_DISPATCH_UNAVAILABLE",Ft="EXECUTION_LEASE_INVALID",Ht="EXECUTION_LEASE_SUPERSEDED",Lt="WAIT_EXECUTION_SUPERSEDED",Mt="HUMAN_INPUT_CANCELLED_BY_RESET";function $t(e){return`${g}/${encodeURIComponent(e)}/execution-leases`}var _e=/^generation:[A-Za-z0-9][A-Za-z0-9._:-]{0,239}$/;function Q(e){return!s(e)||!E(e,e.kind==="standalone"?["kind"]:["kind","productRunId"])?r("execution scope shape is invalid"):e.kind==="standalone"?u({kind:"standalone"}):e.kind==="automation_app"&&y(e.productRunId)?u({kind:"automation_app",productRunId:e.productRunId}):r("execution scope discriminator is invalid")}function Z(e){return s(e)?e.kind==="terminal"&&E(e,["kind"])?u({kind:"terminal"}):e.kind==="node"&&E(e,["kind","nodeId"])&&y(e.nodeId)?u({kind:"node",nodeId:e.nodeId}):r("execution anchor shape is invalid"):r("execution anchor must be an object")}function xe(e){if(!s(e)||!E(e,["productRunId","flowRunId","generationId","generationNumber","anchor","leaseId"])||!y(e.productRunId)||!y(e.flowRunId)||!y(e.generationId)||!he(e.generationNumber)||!y(e.leaseId))return r("execution lease shape is invalid");let t=Z(e.anchor);return t.ok?u({productRunId:e.productRunId,flowRunId:e.flowRunId,generationId:e.generationId,generationNumber:e.generationNumber,anchor:t.value,leaseId:e.leaseId}):r(t.reason)}function k(e){if(!s(e))return r("execution write scope must be an object");if(e.kind==="standalone"&&E(e,["kind"]))return u({kind:"standalone"});if(e.kind==="automation_app"&&E(e,["kind","lease"])){let t=xe(e.lease);return t.ok?u({kind:"automation_app",lease:t.value}):r(t.reason)}return r("execution write scope shape is invalid")}function Wt(e){if(!s(e)||!E(e,["anchor"]))return r("lease request shape is invalid");let t=Z(e.anchor);return t.ok?u({anchor:t.value}):r(t.reason)}function Gt(e){if(!s(e)||!E(e,["executionScope"]))return r("lease response shape is invalid");let t=k(e.executionScope);return t.ok?u({executionScope:t.value}):r(t.reason)}function Kt(e){return!s(e)||!E(e,["instanceId","flowRunId","commandId","generationId","from"])||!y(e.instanceId)||!y(e.flowRunId)||!y(e.commandId)||!y(e.generationId)||!s(e.from)||!E(e.from,["name","count","type"])||typeof e.from.name!="string"||!_e.test(e.from.name)||e.from.name==="generation:terminal"||e.from.count!==1||e.from.type!=="do"?r("restart request shape is invalid"):u(e)}function qt(e){return!s(e)||!E(e,["ok","data"])||e.ok!==!0||!s(e.data)||!E(e.data,["accepted","instanceId","commandId","generationId"])||e.data.accepted!==!0||!y(e.data.instanceId)||!y(e.data.commandId)||!y(e.data.generationId)?r("restart response shape is invalid"):u(e)}function E(e,t){let n=Object.keys(e).sort(),o=[...t].sort();return n.length===o.length&&n.every((i,a)=>i===o[a])}function y(e){return typeof e=="string"&&e.length>0}function he(e){return typeof e=="number"&&Number.isSafeInteger(e)&&e>0}var g="/internal/flow-runs",zt="/:flowRunId/execution-context";function Qt(e){return`${g}/${encodeURIComponent(e)}/execution-context`}function W(e){return!s(e)||!$(e.fileMaxBytes)||!$(e.fileReadMaxBytes)||!$(e.inlineMultipartBytesMax)?r("file runtime limits must carry three positive integer bounds"):u({fileMaxBytes:e.fileMaxBytes,fileReadMaxBytes:e.fileReadMaxBytes,inlineMultipartBytesMax:e.inlineMultipartBytesMax})}function Zt(e){if(!s(e))return r("execution context must be a JSON object");let t=ee(e,["flowRunId","workspaceId","input","executionScope","compiled","executionBindings","fileRuntime"]);if(t!==void 0)return r(`execution context does not accept the "${t}" field`);let n=e.compiled;if(typeof e.flowRunId!="string"||typeof e.workspaceId!="string"||!s(e.input)||!s(n)||ee(n,["irSchemaVersion","interpreterContractVersion","ir","compiledArtifactId"])!==void 0||typeof n.irSchemaVersion!="string"||typeof n.interpreterContractVersion!="string"||typeof n.compiledArtifactId!="string"||!Te(e.executionBindings))return r("execution context surface shape is invalid");let o=Se(n.ir);if(!o.ok)return r(o.reason);let i=Q(e.executionScope);if(!i.ok)return r(i.reason);let a=we(e.fileRuntime);return a.ok?u({...e,compiled:{...n,ir:o.value},executionScope:i.value,fileRuntime:a.value}):r(a.reason)}function we(e){if(e===null)return u(null);if(!s(e))return r("fileRuntime must be null or an object");let t=W(e.limits);return t.ok?u({limits:t.value}):r(t.reason)}function Te(e){return Array.isArray(e)?e.every(t=>{if(!s(t))return!1;let n=t.connection,o=x(t.stateScope);return typeof t.nodeId=="string"&&typeof t.toolRef=="string"&&s(t.toolDescriptor)&&s(t.integrationDescriptor)&&s(n)&&typeof n.installationId=="string"&&typeof n.connectionRef=="string"&&typeof n.connectionId=="string"&&typeof n.authProfileRef=="string"&&typeof n.authType=="string"&&o.ok}):!1}function $(e){return typeof e=="number"&&Number.isSafeInteger(e)&&e>0}function ee(e,t){return Object.keys(e).find(n=>!t.includes(n))}import{parseAblehiErrorDigest as G}from"@ablehi/error-contract";var sn="/:flowRunId/steps/:nodeId/result",un="/:flowRunId/result",an="/:flowRunId/execution-events",cn="/:flowRunId/waits/:nodeId/register",dn="/:flowRunId/waits/:nodeId/complete";function pn(e,t){return`${g}/${encodeURIComponent(e)}/steps/${encodeURIComponent(t)}/result`}function ln(e){return`${g}/${encodeURIComponent(e)}/result`}function fn(e){return`${g}/${encodeURIComponent(e)}/execution-events`}function gn(e,t){return`${g}/${encodeURIComponent(e)}/waits/${encodeURIComponent(t)}/register`}function mn(e,t){return`${g}/${encodeURIComponent(e)}/waits/${encodeURIComponent(t)}/complete`}function Rn(e){if(!s(e))return{ok:!1,kind:"validation",reason:"step record body must be a JSON object"};let t=R(e,["executionScope","attempt","result","durationMs"]);if(t!==void 0)return{ok:!1,kind:"validation",reason:`step record does not accept the "${t}" field`};let n=k(e.executionScope);if(!n.ok)return{ok:!1,kind:"validation",reason:n.reason};let o=e.attempt;if(typeof o!="number"||!Number.isInteger(o)||o<=0)return{ok:!1,kind:"validation",reason:"attempt must be a positive integer"};let i=Ae(e.result);if(!i.ok)return i;let a={executionScope:n.value,attempt:o,result:i.value};if(e.durationMs!==void 0){let c=e.durationMs;if(typeof c!="number"||!Number.isFinite(c)||c<0)return{ok:!1,kind:"validation",reason:"durationMs must be a non-negative number"};a.durationMs=c}return{ok:!0,value:a}}function Ae(e){if(!s(e))return{ok:!1,kind:"step_result_invalid",reason:"result must be a JSON object"};let t=e.status;if(t==="succeeded"){let n=R(e,["status","output"]);return n!==void 0?{ok:!1,kind:"validation",reason:`step record result does not accept the "${n}" field`}:"output"in e?{ok:!0,value:{status:"succeeded",output:e.output}}:{ok:!1,kind:"step_result_invalid",reason:"a succeeded result must carry output"}}if(t==="failed"){let n=R(e,["status","error"]);if(n!==void 0)return{ok:!1,kind:"validation",reason:`step record result does not accept the "${n}" field`};let o=G(e.error);return o.ok?{ok:!0,value:{status:"failed",error:o.value}}:{ok:!1,kind:"step_result_invalid",reason:`a failed result must carry an AblehiErrorDigest: ${o.reason}`}}if(t==="skipped"){let n=R(e,["status","reason"]);return n!==void 0?{ok:!1,kind:"validation",reason:`step record result does not accept the "${n}" field`}:e.reason!=="run_if_false"?{ok:!1,kind:"step_result_invalid",reason:'a skipped result reason must be "run_if_false"'}:{ok:!0,value:{status:"skipped",reason:"run_if_false"}}}if(t==="timed_out"){let n=R(e,["status","error"]);if(n!==void 0)return{ok:!1,kind:"validation",reason:`step record result does not accept the "${n}" field`};let o=G(e.error);return o.ok?{ok:!0,value:{status:"timed_out",error:o.value}}:{ok:!1,kind:"step_result_invalid",reason:`a timed_out result must carry an AblehiErrorDigest: ${o.reason}`}}return{ok:!1,kind:"step_result_invalid",reason:'result status must be "succeeded", "failed", "skipped", or "timed_out"'}}function In(e){return!s(e)||typeof e.flowRunId!="string"||typeof e.nodeId!="string"||!Pe(e.recorded)?r("step record data surface shape is invalid"):u({flowRunId:e.flowRunId,nodeId:e.nodeId,recorded:e.recorded})}function Pe(e){return e==="succeeded"||e==="failed"||e==="skipped"||e==="timed_out"}function yn(e){if(!s(e))return r("result body must be a JSON object");let t=R(e,["executionScope","status","output","error"]);if(t!==void 0)return r(`result does not accept the "${t}" field`);let n=k(e.executionScope);if(!n.ok)return r(n.reason);let o=e.status;if(o!=="succeeded"&&o!=="failed")return r('result status must be "succeeded" or "failed"');let i={executionScope:n.value,status:o};if(e.output!==void 0){if(o!=="succeeded")return r("output is only allowed on a succeeded result");i.output=e.output}if(e.error!==void 0){if(o!=="failed")return r("error is only allowed on a failed result");let a=G(e.error);if(!a.ok)return r(`result error must be an AblehiErrorDigest: ${a.reason}`);i.error=a.value}return o==="failed"&&i.error===void 0?r("a failed result must carry an AblehiErrorDigest"):u(i)}function En(e){return s(e)?u(e):r("flow run result data must be a JSON object")}var be=["flow_run_started","step_started","step_retry_scheduled","wait_registered","wait_event_received","wait_event_timed_out","human_input_created","human_input_submitted","human_input_expired","flow_run_succeeded","flow_run_failed","flow_run_interrupted","flow_run_cancelled"];function kn(e){if(!s(e))return r("execution event data must be a JSON object");let t=R(e,["flowRunId","eventId","accepted"]);return t!==void 0?r(`execution event data does not accept the "${t}" field`):typeof e.flowRunId!="string"||e.flowRunId.length===0?r("flowRunId must be a non-empty string"):typeof e.eventId!="string"||e.eventId.length===0?r("eventId must be a non-empty string"):e.accepted!==!0?r("accepted must be true"):u({flowRunId:e.flowRunId,eventId:e.eventId,accepted:!0})}function _n(e){if(!s(e))return r("execution event body must be a JSON object");let t=R(e,["executionScope","eventId","eventType","nodeId","stepRunId","attempt","durationMs","occurredAt","errorId","payloadRef","inputFact"]);if(t!==void 0)return r(`execution event does not accept the "${t}" field`);let n=k(e.executionScope);if(!n.ok)return r(n.reason);let o=e.eventId;if(typeof o!="string"||o.length===0)return r("eventId must be a non-empty string");let i=e.eventType;if(!Ne(i))return r("eventType is not a known flow execution event type");let a=e.occurredAt;if(typeof a!="string"||a.length===0)return r("occurredAt must be a non-empty string");let c={executionScope:n.value,eventId:o,eventType:i,occurredAt:a};for(let d of["nodeId","stepRunId","errorId","payloadRef"]){let l=e[d];if(l!==void 0){if(typeof l!="string"||l.length===0)return r(`${d} must be a non-empty string`);c[d]=l}}for(let d of["attempt","durationMs"]){let l=e[d];if(l!==void 0){if(typeof l!="number"||!Number.isFinite(l)||!Number.isInteger(l)||l<0)return r(`${d} must be a non-negative integer`);c[d]=l}}if(e.inputFact!==void 0){if(i!=="step_started")return r("inputFact is only allowed on step_started events");if(c.attempt===void 0)return r("inputFact requires attempt");let d=Oe(e.inputFact);if(!d.ok)return d;c.inputFact=d.value}return u(c)}function Ne(e){return typeof e=="string"&&be.includes(e)}function Oe(e){if(!s(e))return r("inputFact must be a JSON object");let t=R(e,["digestAlgorithm","digest","domain"]);if(t!==void 0)return r(`inputFact does not accept the "${t}" field`);if(e.digestAlgorithm!=="sha256")return r('inputFact.digestAlgorithm must be "sha256"');let n=e.digest;if(typeof n!="string"||!/^[0-9a-f]{64}$/.test(n))return r("inputFact.digest must be a sha256 hex string");let o=e.domain;if(!s(o))return r("inputFact.domain must be a JSON object");let i=R(o,["irSchemaVersion","interpreterContractVersion","compiledArtifactId","nodeId","algorithmVersion"]);return i!==void 0?r(`inputFact.domain does not accept the "${i}" field`):typeof o.irSchemaVersion!="string"||o.irSchemaVersion.length===0||typeof o.interpreterContractVersion!="string"||o.interpreterContractVersion.length===0||typeof o.compiledArtifactId!="string"||o.compiledArtifactId.length===0||typeof o.nodeId!="string"||o.nodeId.length===0?r("inputFact.domain string fields must be non-empty strings"):o.algorithmVersion!=="flow_input_digest.v1"?r('inputFact.domain.algorithmVersion must be "flow_input_digest.v1"'):u({digestAlgorithm:"sha256",digest:n,domain:{irSchemaVersion:o.irSchemaVersion,interpreterContractVersion:o.interpreterContractVersion,compiledArtifactId:o.compiledArtifactId,nodeId:o.nodeId,algorithmVersion:"flow_input_digest.v1"}})}var Ce=/^[A-Za-z0-9_-]{1,100}$/;function xn(e){if(!s(e))return r("register body must be a JSON object");let t=R(e,["executionScope","eventType","correlationKey"]);if(t!==void 0)return r(`register wait does not accept the "${t}" field`);let n=k(e.executionScope);if(!n.ok)return r(n.reason);let o=te(e.eventType);if(!o.ok)return r(o.reason);let i=e.correlationKey;return typeof i!="string"||i.length===0?r("correlationKey must be a non-empty string"):u({executionScope:n.value,eventType:o.value,correlationKey:i})}function hn(e){if(!s(e))return r("complete body must be a JSON object");let t=R(e,["executionScope","waitExecutionId","outcome","eventId"]);if(t!==void 0)return r(`complete wait does not accept the "${t}" field`);let n=k(e.executionScope);if(!n.ok)return r(n.reason);let o=e.waitExecutionId;if(typeof o!="string"||o.length===0)return r("waitExecutionId must be a non-empty string");let i=e.outcome;if(i!=="received"&&i!=="timed_out")return r('outcome must be "received" or "timed_out"');let a={executionScope:n.value,waitExecutionId:o,outcome:i};if(e.eventId!==void 0){if(typeof e.eventId!="string"||e.eventId.length===0)return r("eventId must be a non-empty string");a.eventId=e.eventId}return u(a)}function Sn(e){if(!s(e)||R(e,["waitExecutionId","workflowEventType"])!==void 0||typeof e.waitExecutionId!="string"||e.waitExecutionId.length===0)return r("register wait data surface shape is invalid");let t=te(e.workflowEventType);return t.ok?u({waitExecutionId:e.waitExecutionId,workflowEventType:t.value}):r(t.reason)}function wn(e){return!s(e)||R(e,["completed"])!==void 0||e.completed!==!0?r("complete wait data surface shape is invalid"):u({completed:!0})}function Tn(e){return!s(e)||R(e,["waitExecutionId","eventId","payload"])!==void 0||typeof e.waitExecutionId!="string"||e.waitExecutionId.length===0||typeof e.eventId!="string"||e.eventId.length===0||!Object.hasOwn(e,"payload")?r("Wait resolved event surface shape is invalid"):u({waitExecutionId:e.waitExecutionId,eventId:e.eventId,payload:e.payload})}function te(e){return typeof e!="string"||e.length===0?r("eventType must be a non-empty string"):Ce.test(e)?u(e):r("eventType must match ^[A-Za-z0-9_-]{1,100}$")}function R(e,t){return Object.keys(e).find(n=>!t.includes(n))}var De="/internal/flow-versions",Pn="/:flowVersionId/handler-bundles",q="/internal/installations",bn="/:installationId/handler-bundles";function Nn(e,t){return`${De}/${encodeURIComponent(e)}/handler-bundles?compiledArtifactId=${encodeURIComponent(t)}`}function On(e){return`${q}/${encodeURIComponent(e.installationId)}/handler-bundles?workspaceId=${encodeURIComponent(e.workspaceId)}&artifactDigest=${encodeURIComponent(e.artifactDigest)}`}var ve=new Set(["managed_only","managed_plus_unmanaged_sdk"]);function F(e){if(!S(e))return K("runtimeNetwork must be a JSON object");let t=e.networkModel;return typeof t!="string"||!ve.has(t)?K("runtimeNetwork.networkModel is unknown"):!ne(e.apiHosts)||!ne(e.authHosts)||typeof e.httpsOnly!="boolean"?K("runtimeNetwork host/https fields are invalid"):{ok:!0,value:{networkModel:t,apiHosts:e.apiHosts,authHosts:e.authHosts,httpsOnly:e.httpsOnly}}}function Cn(e){if(!S(e)||typeof e.flowVersionId!="string"||typeof e.compiledArtifactId!="string"||!Array.isArray(e.bundles))return b("handler bundles data surface shape is invalid");let t=re(e.bundles);return t.ok?{ok:!0,value:{flowVersionId:e.flowVersionId,compiledArtifactId:e.compiledArtifactId,bundles:t.value}}:t}function Dn(e){if(!S(e)||typeof e.installationId!="string"||typeof e.artifactDigest!="string"||!Array.isArray(e.bundles))return b("tool handler bundles data surface shape is invalid");let t=re(e.bundles);return t.ok?{ok:!0,value:{installationId:e.installationId,artifactDigest:e.artifactDigest,bundles:t.value}}:t}function re(e){let t=[];for(let n of e){let o=Ue(n);if(!o.ok)return o;t.push(o.value)}return{ok:!0,value:t}}function Ue(e){if(!S(e)||typeof e.toolRef!="string"||e.kind!=="handler"&&e.kind!=="request")return b("handler bundle entry shape is invalid");if(e.kind==="request"){if(e.module!==void 0)return b("a request bundle must not carry a module");let o=F(e.runtimeNetwork);return o.ok?{ok:!0,value:{toolRef:e.toolRef,kind:"request",runtimeNetwork:o.value}}:o}let t=e.module;if(!S(t)||typeof t.entry!="string"||t.entry.length===0||!Be(t.files))return b("a handler bundle must carry a { entry, files } module");let n=F(e.runtimeNetwork);return n.ok?{ok:!0,value:{toolRef:e.toolRef,kind:"handler",module:{entry:t.entry,files:t.files},runtimeNetwork:n.value}}:n}function b(e){return{ok:!1,kind:"shape",reason:e}}function K(e){return{ok:!1,kind:"runtime_network",reason:e}}function S(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ne(e){return Array.isArray(e)&&e.every(t=>typeof t=="string")}function Be(e){return S(e)&&Object.values(e).every(t=>typeof t=="string")}var N="/internal/webhook-trigger-instances",Mn="/:triggerInstanceId/context",$n="/:triggerInstanceId/handler-bundles",Wn="/:triggerInstanceId/deliveries/:deliveryId",Gn="/:triggerInstanceId/events",Kn="/:triggerInstanceId/rearm",O=e=>`${N}/${encodeURIComponent(e)}`;function qn(e,t){return`${O(e)}/context?artifactDigest=${encodeURIComponent(t)}`}function Vn(e,t){return`${O(e)}/handler-bundles?artifactDigest=${encodeURIComponent(t)}`}function jn(e,t){return`${O(e)}/deliveries/${encodeURIComponent(t)}`}function Xn(e){return`${O(e)}/events`}function Jn(e){return`${O(e)}/rearm`}var Yn="/:installationId/webhook-protocol-adapter-bundle";function zn(e){return`${q}/${encodeURIComponent(e.installationId)}/webhook-protocol-adapter-bundle?workspaceId=${encodeURIComponent(e.workspaceId)}&artifactDigest=${encodeURIComponent(e.artifactDigest)}`}var Qn="modules/webhook/protocol-adapter.js";function Zn(e){return`modules/webhook/protocol-adapter-${e}.js`}function er(e){let t=s(e)?x(e.stateScope):r("webhook watcher context state scope is invalid");return!s(e)||typeof e.artifactDigest!="string"||typeof e.triggerRef!="string"||typeof e.triggerName!="string"||typeof e.integrationRef!="string"||!s(e.inputs)||e.connection!==null&&!Fe(e.connection)||!He(e.runtime)||!t.ok||t.value.kind!=="webhook-trigger"?r("webhook watcher context surface shape is invalid"):u(e)}function Fe(e){return s(e)&&typeof e.connectionId=="string"&&typeof e.connectionRef=="string"&&typeof e.integrationRef=="string"&&typeof e.authProfileRef=="string"&&typeof e.authType=="string"}function He(e){if(!s(e)||e.type!=="webhook"||typeof e.trigger_ref!="string")return!1;let t=e.webhook;return s(t)&&typeof t.event_handler_module=="string"&&typeof t.enable_handler_module=="string"&&typeof t.disable_handler_module=="string"}function Le(e){if(!s(e)||typeof e.deliveryId!="string"||typeof e.receivedAt!="string"||!s(e.request))return r("webhook delivery surface shape is invalid");let t=e.request;return t.method!=="POST"||!s(t.headers)||typeof t.rawBody!="string"?r("webhook delivery request shape is invalid"):u(e)}function V(e){if(!s(e)||typeof e.token!="string"||typeof e.expiresAt!="string")return r("trigger file runtime dispatch shape is invalid");let t=W(e.limits);return t.ok?u({token:e.token,expiresAt:e.expiresAt,limits:t.value}):r(t.reason)}function tr(e){if(!s(e))return r("webhook delivery dispatch data is invalid");let t=Le(e.delivery);if(!t.ok)return r(t.reason);let n=e.fileRuntime;if(n===null)return u({delivery:t.value,fileRuntime:null});let o=V(n);return o.ok?u({delivery:t.value,fileRuntime:o.value}):r(o.reason)}function nr(e){if(!s(e)||typeof e.triggerRef!="string"||typeof e.artifactDigest!="string"||!Array.isArray(e.modules)||!e.modules.every(Me))return{ok:!1,kind:"shape",reason:"trigger handler bundles data surface shape is invalid"};let t=F(e.runtimeNetwork);return t.ok?{ok:!0,value:{triggerRef:e.triggerRef,artifactDigest:e.artifactDigest,modules:e.modules,runtimeNetwork:t.value}}:t}function Me(e){return s(e)&&typeof e.specifier=="string"&&e.specifier.length>0&&typeof e.source=="string"}function rr(e){if(!s(e))return r("publish events body must be a JSON object");let t=j(e,["deliveryId","events"]);if(t!==void 0)return r(`publish events does not accept the "${t}" field`);let n=e.deliveryId;if(typeof n!="string"||n.length===0)return r("deliveryId must be a non-empty string");let o=e.events;if(!Array.isArray(o))return r("events must be an array");let i=[];for(let a of o){let c=$e(a);if(!c.ok)return c;i.push(c.value)}return u({deliveryId:n,events:i})}function $e(e){if(!s(e))return r("each event must be a JSON object");let t=j(e,["eventId","occurredAt","dedupeKey","payload"]);if(t!==void 0)return r(`event does not accept the "${t}" field`);let n=e.eventId;if(typeof n!="string"||n.length===0)return r("eventId must be a non-empty string");let o=e.occurredAt;if(typeof o!="string"||o.length===0)return r("occurredAt must be a non-empty string");if(!s(e.payload))return r("event payload must be a JSON object");let i={eventId:n,occurredAt:o,payload:e.payload};if(e.dedupeKey!==void 0){if(typeof e.dedupeKey!="string"||e.dedupeKey.length===0)return r("dedupeKey must be a non-empty string");i.dedupeKey=e.dedupeKey}return u(i)}function or(e){if(!s(e))return r("rearm body must be a JSON object");let t=j(e,["expectedWatcherInstanceId"]);if(t!==void 0)return r(`rearm does not accept the "${t}" field`);let n=e.expectedWatcherInstanceId;return typeof n!="string"||n.length===0?r("expectedWatcherInstanceId must be a non-empty string"):u({expectedWatcherInstanceId:n})}function j(e,t){return Object.keys(e).find(n=>!t.includes(n))}var C="/internal/polling-trigger-instances",cr="/:pollingInstanceId/context",dr="/:pollingInstanceId/handler-bundles",pr="/:pollingInstanceId/ticks/:tickId/events",X=e=>`${C}/${encodeURIComponent(e)}`;function lr(e,t,n){return`${X(e)}/context?artifactDigest=${encodeURIComponent(t)}&tickId=${encodeURIComponent(n)}`}function fr(e,t){return`${X(e)}/handler-bundles?artifactDigest=${encodeURIComponent(t)}`}function gr(e,t){return`${X(e)}/ticks/${encodeURIComponent(t)}/events`}function We(e){let t=s(e)?x(e.stateScope):r("polling trigger context state scope is invalid");return!s(e)||typeof e.artifactDigest!="string"||typeof e.triggerRef!="string"||typeof e.triggerName!="string"||typeof e.integrationRef!="string"||!s(e.inputs)||e.connection!==null&&!Ge(e.connection)||!Ke(e.runtime)||!t.ok||t.value.kind!=="polling-trigger"||!Ve(e.tick)||!je(e.limits)?r("polling trigger context surface shape is invalid"):u(e)}function mr(e){if(!s(e))return r("polling trigger dispatch data is invalid");let t=We(e.context);if(!t.ok)return r(t.reason);let n=e.fileRuntime;if(n===null)return u({context:t.value,fileRuntime:null});let o=V(n);return o.ok?u({context:t.value,fileRuntime:o.value}):r(o.reason)}function Ge(e){return s(e)&&typeof e.connectionId=="string"&&typeof e.connectionRef=="string"&&typeof e.integrationRef=="string"&&typeof e.authProfileRef=="string"&&typeof e.authType=="string"}function Ke(e){if(!s(e)||e.type!=="polling"||typeof e.trigger_id!="string"||typeof e.trigger_ref!="string"||!qe(e.file_outputs))return!1;let t=e.polling;if(!s(t)||typeof t.run_handler_module!="string")return!1;let n=t.schedule;if(!s(n)||n.type!=="interval"||typeof n.every_seconds!="number")return!1;let o=t.dedup;return s(o)&&(o.strategy==="cursor"||o.strategy==="hash"||o.strategy==="id_field")}function qe(e){return e===void 0?!0:Array.isArray(e)&&e.length>0&&e.every(t=>s(t)&&typeof t.field=="string"&&t.field.length>0)}function Ve(e){return s(e)&&typeof e.tickId=="string"&&typeof e.scheduledAt=="string"&&typeof e.attempt=="number"}function je(e){return s(e)&&typeof e.maxEventsPerTick=="number"}function Rr(e){if(!s(e))return r("publish body must be a JSON object");let t=oe(e,["events","nextCursor"]);if(t!==void 0)return r(`publish does not accept the "${t}" field`);let n=e.events;if(!Array.isArray(n))return r("events must be an array");let o=[];for(let a of n){let c=Xe(a);if(!c.ok)return c;o.push(c.value)}let i={events:o};if("nextCursor"in e){let a=e.nextCursor;if(a!==null&&typeof a!="string")return r("nextCursor must be a string, null, or omitted");i.nextCursor=a}return u(i)}function Xe(e){if(!s(e))return r("each event must be a JSON object");let t=oe(e,["eventId","occurredAt","dedupeKey","payload"]);if(t!==void 0)return r(`event does not accept the "${t}" field`);if(typeof e.eventId!="string"||e.eventId.length===0)return r("event eventId must be a non-empty string");if(!s(e.payload))return r("event payload must be a JSON object");let n={eventId:e.eventId,payload:e.payload};if(e.occurredAt!==void 0){if(typeof e.occurredAt!="string"||e.occurredAt.length===0)return r("event occurredAt must be a non-empty string");n.occurredAt=e.occurredAt}if(e.dedupeKey!==void 0){if(typeof e.dedupeKey!="string"||e.dedupeKey.length===0)return r("event dedupeKey must be a non-empty string");n.dedupeKey=e.dedupeKey}return u(n)}function Ir(e){return!s(e)||typeof e.tickId!="string"||typeof e.cursorUpdated!="boolean"||!Array.isArray(e.results)||!e.results.every(Je)?r("publish polling tick events data surface shape is invalid"):u(e)}function Je(e){return s(e)&&typeof e.eventId=="string"&&typeof e.dedupeKey=="string"&&typeof e.duplicate=="boolean"&&(e.flowRunId===null||typeof e.flowRunId=="string")}function oe(e,t){return Object.keys(e).find(n=>!t.includes(n))}var ie="/internal/egress-grants",J="/internal/tool-invocations",Y="/internal/discovery-invocations",hr="/:flowRunId/egress-grant",Sr="/:invocationId/egress-grant",wr="/:discoveryInvocationId/egress-grant",Tr="/:pollingInstanceId/egress-grant",Ar="/:triggerInstanceId/egress-grant",Pr="/:grantId/consume",br="/:grantId/audit",Nr=e=>`${g}/${encodeURIComponent(e)}/egress-grant`,Or=e=>`${J}/${encodeURIComponent(e)}/egress-grant`,Cr=e=>`${Y}/${encodeURIComponent(e)}/egress-grant`,Dr=e=>`${C}/${encodeURIComponent(e)}/egress-grant`,vr=e=>`${N}/${encodeURIComponent(e)}/egress-grant`,Ur=e=>`${ie}/${encodeURIComponent(e)}/consume`,Br=e=>`${ie}/${encodeURIComponent(e)}/audit`,Ye=["flow_action","single_tool","discovery","polling_trigger","webhook_trigger"],ze=/^[A-Za-z0-9][A-Za-z0-9:_+/=.-]{15,1023}$/;function w(e){return typeof e=="string"&&ze.test(e)}function Qe(e){if(!s(e)||e.body_type!=="multipart")return!1;let t=e.body;if(!s(t))return!1;let n=t.parts;return Array.isArray(n)?n.some(o=>s(o)?o.kind==="file"&&typeof o.file_id=="string"&&o.file_id.length>0:!1):!1}function p(e){return{ok:!1,kind:"shape",reason:e}}function T(){return{ok:!1,kind:"request_digest",reason:"request digest is missing or malformed"}}function D(e,t){if(!s(e))return{ok:!1,reason:"grant request body must be a JSON object"};for(let n of Object.keys(e))if(!t.includes(n))return{ok:!1,reason:`grant request does not accept the "${n}" field`};return{ok:!0,record:e}}function v(e){if(!s(e))return"request must be a JSON object"}function Fr(e){let t=D(e,["nodeId","request","requestDigest"]);if(!t.ok)return p(t.reason);let n=t.record.nodeId;if(typeof n!="string"||n.length===0)return p("nodeId is required");let o=v(t.record.request);if(o!==void 0)return p(o);let i=t.record.requestDigest;return w(i)?{ok:!0,value:{nodeId:n,requestDigest:i,requestHasMultipartFiles:Qe(t.record.request)}}:T()}function Hr(e){let t=D(e,["request","requestDigest"]);if(!t.ok)return p(t.reason);let n=v(t.record.request);if(n!==void 0)return p(n);let o=t.record.requestDigest;return w(o)?{ok:!0,value:{requestDigest:o}}:T()}function Lr(e){let t=D(e,["request","requestDigest"]);if(!t.ok)return p(t.reason);let n=v(t.record.request);if(n!==void 0)return p(n);let o=t.record.requestDigest;return w(o)?{ok:!0,value:{requestDigest:o}}:T()}function Mr(e){let t=D(e,["tickId","request","requestDigest"]);if(!t.ok)return p(t.reason);let n=t.record.tickId;if(typeof n!="string"||n.length===0)return p("tickId is required");let o=v(t.record.request);if(o!==void 0)return p(o);let i=t.record.requestDigest;return w(i)?{ok:!0,value:{tickId:n,requestDigest:i}}:T()}function $r(e){let t=D(e,["phase","lifecycle","deliveryId","request","requestDigest"]);if(!t.ok)return p(t.reason);let n=t.record.phase;if(n!=="lifecycle"&&n!=="handler")return p('phase must be "lifecycle" or "handler"');let o=t.record.lifecycle,i;if(o!==void 0){if(o!=="enable"&&o!=="disable"&&o!=="renew")return p('lifecycle must be "enable", "disable", or "renew"');i=o}if(n==="lifecycle"&&i===void 0)return p("lifecycle is required for the lifecycle phase");let a=t.record.deliveryId,c;if(a!==void 0){if(typeof a!="string"||a.length===0)return p("deliveryId must be a non-empty string");c=a}if(n==="handler"&&c===void 0)return p("deliveryId is required for the handler phase");let d=v(t.record.request);if(d!==void 0)return p(d);let l=t.record.requestDigest;return w(l)?{ok:!0,value:{phase:n,...i!==void 0?{lifecycle:i}:{},...c!==void 0?{deliveryId:c}:{},requestDigest:l}}:T()}function se(e){return Ye.includes(e)?e:void 0}var Ze=["scopeKind","scopeId","requestDigest"];function Wr(e){if(!s(e))return p("consume body must be a JSON object");for(let i of Object.keys(e))if(!Ze.includes(i))return p(`consume does not accept the "${i}" field`);let t=se(e.scopeKind);if(t===void 0)return p("scopeKind is invalid");let n=e.scopeId;if(typeof n!="string"||n.length===0)return p("scopeId is required");let o=e.requestDigest;return w(o)?{ok:!0,value:{scopeKind:t,scopeId:n,requestDigest:o}}:T()}var et=["scopeKind","scopeId","providerHost","status","durationMs","requestBytes","responseBytes","errorCode"];function H(e,t){return typeof e!="number"||!Number.isInteger(e)||e<0?{ok:!1,reason:`${t} must be a non-negative integer`}:{ok:!0,value:e}}function Gr(e){if(!s(e))return p("audit body must be a JSON object");for(let f of Object.keys(e))if(!et.includes(f))return p(`audit does not accept the "${f}" field`);let t=se(e.scopeKind);if(t===void 0)return p("scopeKind is invalid");let n=e.scopeId;if(typeof n!="string"||n.length===0)return p("scopeId is required");let o=e.providerHost;if(typeof o!="string"||o.length===0)return p("providerHost is required");let i=H(e.durationMs,"durationMs");if(!i.ok)return p(i.reason);let a;if(e.status!==void 0){let f=H(e.status,"status");if(!f.ok)return p(f.reason);a=f.value}let c;if(e.requestBytes!==void 0){let f=H(e.requestBytes,"requestBytes");if(!f.ok)return p(f.reason);c=f.value}let d;if(e.responseBytes!==void 0){let f=H(e.responseBytes,"responseBytes");if(!f.ok)return p(f.reason);d=f.value}let l;if(e.errorCode!==void 0){let f=e.errorCode;if(typeof f!="string"||f.length===0)return p("errorCode must be a non-empty string");l=f}return{ok:!0,value:{scopeKind:t,scopeId:n,providerHost:o,...a!==void 0?{status:a}:{},durationMs:i.value,...c!==void 0?{requestBytes:c}:{},...d!==void 0?{responseBytes:d}:{},...l!==void 0?{errorCode:l}:{}}}}function Kr(e){return!s(e)||!s(e.grant)?r("egress grant envelope must carry a grant object"):u(e.grant)}function qr(e){return!s(e)||e.consumed!==!0?r("egress grant consume data must carry consumed:true"):u({consumed:!0})}var Qr="/:flowRunId/runtime-credential",Zr="/:invocationId/runtime-credential",eo="/:discoveryInvocationId/runtime-credential",to="/:pollingInstanceId/runtime-credential",no="/:triggerInstanceId/runtime-credential",ro=e=>`${g}/${encodeURIComponent(e)}/runtime-credential`,oo=e=>`${J}/${encodeURIComponent(e)}/runtime-credential`,io=e=>`${Y}/${encodeURIComponent(e)}/runtime-credential`,so=e=>`${C}/${encodeURIComponent(e)}/runtime-credential`,uo=e=>`${N}/${encodeURIComponent(e)}/runtime-credential`,ao=["flow_action","tool_invoke","discovery","polling_trigger","webhook_trigger"];function U(e,t){if(!s(e))return{ok:!1,reason:"runtime credential request body must be a JSON object"};for(let n of Object.keys(e))if(!t.includes(n))return{ok:!1,reason:`runtime credential request does not accept the "${n}" field`};return{ok:!0,record:e}}function co(e){let t=U(e,["nodeId"]);if(!t.ok)return r(t.reason);let n=t.record.nodeId;return typeof n!="string"||n.length===0?r("nodeId is required"):u({nodeId:n})}function po(e){let t=U(e??{},[]);return t.ok?u(null):r(t.reason)}function lo(e){let t=U(e??{},[]);return t.ok?u(null):r(t.reason)}function fo(e){let t=U(e,["tickId"]);if(!t.ok)return r(t.reason);let n=t.record.tickId;return typeof n!="string"||n.length===0?r("tickId is required"):u({tickId:n})}function go(e){let t=U(e,["executionKind","deliveryId","lifecycleOperation"]);if(!t.ok)return r(t.reason);let n=t.record.executionKind;if(n!=="event_handler"&&n!=="lifecycle")return r('executionKind must be "event_handler" or "lifecycle"');let o,i=t.record.deliveryId;if(i!==void 0){if(typeof i!="string"||i.length===0)return r("deliveryId must be a non-empty string");o=i}let a,c=t.record.lifecycleOperation;if(c!==void 0){if(c!=="enable"&&c!=="disable"&&c!=="renew")return r('lifecycleOperation must be "enable", "disable", or "renew"');a=c}return n==="lifecycle"&&a===void 0?r("lifecycleOperation is required for the lifecycle execution kind"):u({executionKind:n,...o!==void 0?{deliveryId:o}:{},...a!==void 0?{lifecycleOperation:a}:{}})}function mo(e){return!s(e)||typeof e.sessionId!="string"||typeof e.connectionId!="string"||typeof e.authProfileRef!="string"||typeof e.authType!="string"||!s(e.credential)?r("runtime credential session must carry sessionId, connectionId, auth profile facts and a credential object"):u(e.credential)}function L(e){return!s(e)||typeof e.file_id!="string"||typeof e.name!="string"||typeof e.size_bytes!="number"||typeof e.created_at!="string"||typeof e.expires_at!="string"||e.mime_type!==void 0&&typeof e.mime_type!="string"||e.sha256!==void 0&&typeof e.sha256!="string"||e.source!==void 0&&typeof e.source!="string"?r("file ref data does not match the AIS file-ref shape"):u(e)}function z(e){return!s(e)||e.method!=="GET"&&e.method!=="PUT"||typeof e.url!="string"||typeof e.expires_at!="string"||!rt(e.headers)?r("presigned file URL data is invalid"):u(e)}function tt(e){if(!s(e))return r("file upload session data is invalid");let t=L(e.file);if(!t.ok)return r(t.reason);let n=z(e.upload);return n.ok?u({file:t.value,upload:n.value}):r(n.reason)}function nt(e){if(!s(e))return r("file metadata data is invalid");let t=L(e.file);return t.ok?u({file:t.value}):r(t.reason)}function rt(e){return s(e)?Object.values(e).every(t=>typeof t=="string"):!1}var A="/internal/files",_o="/upload-session",xo="/:fileId/complete",ho="/:fileId/access",So="/:fileId/stat",wo="/:fileId/content",To=()=>A,Ao=()=>`${A}/upload-session`,Po=e=>`${A}/${encodeURIComponent(e)}/complete`,bo=(e,t)=>`${A}/${encodeURIComponent(e)}/access?intent=${encodeURIComponent(t)}`,ue=e=>`?scope_kind=${encodeURIComponent(e.scopeKind)}&scope_id=${encodeURIComponent(e.scopeId)}`,No=(e,t)=>`${A}/${encodeURIComponent(e)}/stat${ue(t)}`,Oo=(e,t)=>`${A}/${encodeURIComponent(e)}/content${ue(t)}`;function Co(e){if(!s(e))return r("internal file access data is invalid");if(e.intent==="runtime_read"||e.intent==="provider_multipart"){let t=L(e.file);if(!t.ok)return r(t.reason);let n=z(e.access);return n.ok?u({file:t.value,access:n.value,intent:e.intent}):r(n.reason)}return r("internal file access intent is invalid")}import{isHumanInputSpec as ot}from"@ablehi/flow-contract";var Ho="/:flowRunId/human-inputs",Lo="/:flowRunId/human-inputs/:requestId",Mo="/:flowRunId/human-inputs/:requestId/expire",$o="/:flowRunId/human-inputs/:requestId/acknowledge",it=e=>`${g}/${encodeURIComponent(e)}/human-inputs`,pe=(e,t)=>`${it(e)}/${encodeURIComponent(t)}`,Wo=(e,t)=>`${pe(e,t)}/expire`,Go=(e,t)=>`${pe(e,t)}/acknowledge`,st="human_input_resolved";function Ko(e){return`${st}_${e}`}function qo(e){return!s(e)||Object.keys(e).length!==4||!Object.hasOwn(e,"requestId")||!Object.hasOwn(e,"flowRunId")||!Object.hasOwn(e,"nodeId")||!Object.hasOwn(e,"status")||typeof e.requestId!="string"||e.requestId.length===0||typeof e.flowRunId!="string"||e.flowRunId.length===0||typeof e.nodeId!="string"||e.nodeId.length===0||e.status!=="submitted"&&e.status!=="expired"?r("Human Input resolved event shape is invalid"):u({requestId:e.requestId,flowRunId:e.flowRunId,nodeId:e.nodeId,status:e.status})}var ae=160,ce=500;function ut(e){return s(e)?e.kind==="choice"?!M(e,["kind","choiceId","comment"])||typeof e.choiceId!="string"||e.choiceId.length===0||e.comment!==void 0&&typeof e.comment!="string"?r("Human Input choice response is invalid"):u({kind:"choice",choiceId:e.choiceId,...e.comment!==void 0?{comment:e.comment}:{}}):e.kind==="text"&&M(e,["kind","text"])&&typeof e.text=="string"?u({kind:"text",text:e.text}):e.kind==="form"&&M(e,["kind","values"])&&s(e.values)?u({kind:"form",values:e.values}):r("Human Input response is invalid"):r("Human Input response must be an object")}function Vo(e,t){let n=ut(e);if(!n.ok||n.value.kind!==t.kind)return r("Human Input response does not match its input spec");switch(t.kind){case"choice":{let o=n.value;return o.kind!=="choice"?r("Human Input choice response does not match its spec"):!t.choices.some(i=>i.id===o.choiceId)||o.comment!==void 0&&t.allowComment!==!0?r("Human Input choice response does not match its spec"):n}case"text":return n.value.kind!=="text"||t.required===!0&&n.value.text.trim().length===0?r("Human Input text response does not match its spec"):n;case"form":{if(n.value.kind!=="form")return r("Human Input form response does not match its spec");let o=new Map(t.fields.map(i=>[i.id,i]));if(Object.keys(n.value.values).some(i=>!o.has(i)))return r("Human Input form response contains an unknown field");for(let i of t.fields){let a=n.value.values[i.id];if(!Object.hasOwn(n.value.values,i.id)){if(i.required===!0)return r(`Human Input form response is missing required field '${i.id}'`);continue}if(a==null||!at(i,a))return r(`Human Input form response field '${i.id}' does not match its spec`)}return n}}}function at(e,t){switch(e.type){case"text":case"textarea":return typeof t=="string";case"number":return typeof t=="number"&&Number.isFinite(t);case"boolean":return typeof t=="boolean";case"select":return typeof t=="string"&&(e.options??[]).some(n=>n.id===t)}}function m(e){return{ok:!1,reason:e}}function h(e,t){return s(e)?{ok:!0,value:e}:m(`${t} must be an object`)}function M(e,t){return Object.keys(e).every(n=>t.includes(n))}function P(e,t){return typeof e!="string"||e.length===0?m(`${t} must be a non-empty string`):{ok:!0,value:e}}var ct=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?(?:Z|[+-]\d{2}:\d{2})$/;function dt(e,t){return typeof e!="string"||!ct.test(e)||Number.isNaN(Date.parse(e))?m(`${t} must be an ISO-8601 timestamp`):{ok:!0,value:e}}function le(e){let t=h(e,"renderedPrompt");if(!t.ok)return t;if(!M(t.value,["title","body","format"]))return m("renderedPrompt contains an unknown field");let n=P(t.value.title,"renderedPrompt.title");if(!n.ok)return n;if(!/[^\p{White_Space}]/u.test(n.value))return m("renderedPrompt.title must contain non-whitespace text");if(!de(n.value,ae))return m(`renderedPrompt.title must contain at most ${ae} code points`);let o={title:n.value};if(t.value.body!==void 0){if(typeof t.value.body!="string")return m("renderedPrompt.body must be a string");if(!de(t.value.body,ce))return m(`renderedPrompt.body must contain at most ${ce} code points`);o.body=t.value.body}if(t.value.format!==void 0){if(t.value.format!=="plain"&&t.value.format!=="markdown")return m("renderedPrompt.format is invalid");o.format=t.value.format}return{ok:!0,value:o}}function de(e,t){let n=0,o=e[Symbol.iterator]();for(;!o.next().done;)if(n+=1,n>t)return!1;return!0}function jo(e){let t=le(e);return t.ok?u(t.value):r(t.reason)}function pt(e){try{return ot(e)?u(e):r("Human Input spec shape is invalid")}catch{return r("Human Input spec shape is invalid")}}function lt(e){let t=pt(e);return t.ok?t:m(t.reason)}function ft(e){if(e==null)return{ok:!0,value:void 0};let t=h(e,"partiallyRenderedDelivery");if(!t.ok)return t;let n=t.value.actions;if(n===void 0)return{ok:!0,value:{}};if(!Array.isArray(n))return m("partiallyRenderedDelivery.actions must be an array");let o=[];for(let i of n){let a=h(i,"delivery action");if(!a.ok)return a;let c=P(a.value.id,"delivery action id");if(!c.ok)return c;let d=fe(a.value.inputs,`delivery action '${c.value}' inputs`);if(!d.ok)return d;o.push({id:c.value,inputs:d.value})}return{ok:!0,value:{actions:o}}}function fe(e,t){let n=h(e,t);if(!n.ok)return n;let o={};for(let[i,a]of Object.entries(n.value)){let c=ge(a,`${t}.${i}`);if(!c.ok)return c;o[i]=c.value}return{ok:!0,value:o}}function ge(e,t){let n=h(e,t);if(!n.ok)return n;switch(n.value.kind){case"literal":return{ok:!0,value:{kind:"literal",value:n.value.value}};case"human_input_ref":{let i=P(n.value.path,`${t}.path`);return i.ok?{ok:!0,value:{kind:"human_input_ref",path:i.value}}:i}case"array":{if(!Array.isArray(n.value.items))return m(`${t}.items must be an array`);let i=[];for(let[a,c]of n.value.items.entries()){let d=ge(c,`${t}[${a}]`);if(!d.ok)return d;i.push(d.value)}return{ok:!0,value:{kind:"array",items:i}}}case"object":{let i=fe(n.value.entries,`${t}.entries`);return i.ok?{ok:!0,value:{kind:"object",entries:i.value}}:i}case"template":{if(!Array.isArray(n.value.parts))return m(`${t}.parts must be an array`);let i=[];for(let[a,c]of n.value.parts.entries()){let d=gt(c,`${t}.parts[${a}]`);if(!d.ok)return d;i.push(d.value)}return{ok:!0,value:{kind:"template",parts:i}}}default:return m(`${t}.kind is invalid`)}}function gt(e,t){let n=h(e,t);if(!n.ok)return n;let o=n.value.kind;if(o==="literal")return typeof n.value.value!="string"?m(`${t}.value must be a string`):{ok:!0,value:{kind:"literal",value:n.value.value}};if(o==="human_input_ref"){let i=P(n.value.path,`${t}.path`);return i.ok?{ok:!0,value:{kind:"human_input_ref",path:i.value}}:i}return m(`${t}.kind is invalid`)}function Xo(e){let t=h(e,"request body");if(!t.ok)return r(t.reason);let n=Object.keys(t.value).find(Re=>!["executionScope","nodeId","renderedPrompt","input","partiallyRenderedDelivery","timeout","expiresAt"].includes(Re));if(n!==void 0)return r(`human input body does not accept the "${n}" field`);let o=k(t.value.executionScope);if(!o.ok)return r(o.reason);let i=P(t.value.nodeId,"nodeId");if(!i.ok)return r(i.reason);let a=le(t.value.renderedPrompt);if(!a.ok)return r(a.reason);let c=lt(t.value.input);if(!c.ok)return r(c.reason);let d=P(t.value.timeout,"timeout");if(!d.ok)return r(d.reason);let l=dt(t.value.expiresAt,"expiresAt");if(!l.ok)return r(l.reason);let f=ft(t.value.partiallyRenderedDelivery);return f.ok?u({executionScope:o.value,nodeId:i.value,renderedPrompt:a.value,input:c.value,timeout:d.value,expiresAt:l.value,...f.value!==void 0?{partiallyRenderedDelivery:f.value}:{}}):r(f.reason)}function mt(e){return!s(e)||typeof e.id!="string"||e.id.length===0||typeof e.nodeId!="string"||typeof e.status!="string"||!(e.output===null||s(e.output))?r("human input request view must carry id, nodeId, status and output"):u(e)}function Jo(e){if(!s(e)||typeof e.created!="boolean")return r("human input create data must carry created:boolean");let t=mt(e.request);return t.ok?u({created:e.created,request:t.value}):t}function Yo(e){return!s(e)||e.acknowledged!==!0?r("human input acknowledge data must carry acknowledged:true"):u({acknowledged:!0})}var Qo="ablehi-wfp-user-runtime-manifest/v1",Zo="unknown";function ei(e){return e.endsWith(".js")?`${e.slice(0,-3)}.manifest.json`:`${e}.manifest.json`}var ni="/internal/deployment-handshake",Rt=["start","terminate","send-event","start-webhook-watcher","run-polling-tick","invoke-tool","invoke-discovery","invoke-trigger-handler","invoke-webhook-protocol-adapter","deployment-handshake"],ri=Rt,oi="HANDSHAKE_REQUEST_INVALID",ii="HANDSHAKE_SECRET_UNCONFIGURED",si="HANDSHAKE_SECRET_MISMATCH",ui="HANDSHAKE_CONTRACT_VERSION_MISMATCH",ai="HANDSHAKE_DISPATCH_NAMESPACE_MISMATCH",ci="HANDSHAKE_CAPABILITY_MISSING";function di(e){return[e.nonce,e.timestamp,e.contractVersion,e.dispatchNamespace].map(n=>`${n.length}:${n}`).join(".")}function pi(e){return["response",e.nonce,e.contractVersion,e.dispatchNamespace,...e.capabilities].map(n=>`${n.length}:${n}`).join(".")}function gi(e){if(!s(e)||e.ok!==!1||!s(e.error))return r("Server execution error envelope is invalid");let t=Object.keys(e).find(i=>i!=="ok"&&i!=="error"&&i!=="guidance"),n=e.error,o=Object.keys(n).find(i=>i!=="code"&&i!=="message"&&i!=="retryable"&&i!=="issues"&&i!=="details");return t!==void 0||o!==void 0||typeof n.code!="string"||n.code.length===0||typeof n.message!="string"||typeof n.retryable!="boolean"||n.issues!==void 0&&!Array.isArray(n.issues)||n.details!==void 0&&!s(n.details)?r("Server execution error must carry code, message, and boolean retryable"):u(e)}import{lookupErrorRegistryEntry as It}from"@ablehi/error-contract";var ki="/:flowRunId/inbox-message-emissions/:nodeId";function _i(e,t){return`${g}/${encodeURIComponent(e)}/inbox-message-emissions/${encodeURIComponent(t)}`}function I(e){let t=It(e);if(t.code!==e)throw new Error(`Inbox message execution error code is not registered: ${e}`);return t.retryable}var xi=_t({INBOX_MESSAGE_IDEMPOTENCY_KEY_INVALID:{httpStatus:422,retryable:I("INBOX_MESSAGE_IDEMPOTENCY_KEY_INVALID")},INBOX_MESSAGE_PAYLOAD_INVALID:{httpStatus:422,retryable:I("INBOX_MESSAGE_PAYLOAD_INVALID")},INBOX_MESSAGE_PAYLOAD_TOO_LARGE:{httpStatus:413,retryable:I("INBOX_MESSAGE_PAYLOAD_TOO_LARGE")},INBOX_MESSAGE_RENDER_INVALID:{httpStatus:422,retryable:I("INBOX_MESSAGE_RENDER_INVALID")},INBOX_MESSAGE_CONTENT_TOO_LARGE:{httpStatus:413,retryable:I("INBOX_MESSAGE_CONTENT_TOO_LARGE")},INBOX_MESSAGE_ATTACHMENT_INVALID:{httpStatus:422,retryable:I("INBOX_MESSAGE_ATTACHMENT_INVALID")},INBOX_MESSAGE_ATTACHMENT_UNAVAILABLE:{httpStatus:409,retryable:I("INBOX_MESSAGE_ATTACHMENT_UNAVAILABLE")},FLOW_INBOX_MESSAGE_INVALID:{httpStatus:422,retryable:I("FLOW_INBOX_MESSAGE_INVALID")},EXECUTION_LEASE_INVALID:{httpStatus:409,retryable:I("EXECUTION_LEASE_INVALID")},EXECUTION_LEASE_SUPERSEDED:{httpStatus:409,retryable:I("EXECUTION_LEASE_SUPERSEDED")},AUTOMATION_APP_INSTALLATION_DISABLED:{httpStatus:409,retryable:I("AUTOMATION_APP_INSTALLATION_DISABLED")},INBOX_MESSAGE_EMISSION_WINDOW_CLOSED:{httpStatus:409,retryable:I("INBOX_MESSAGE_EMISSION_WINDOW_CLOSED")},INBOX_MESSAGE_EMISSION_CONFLICT:{httpStatus:409,retryable:I("INBOX_MESSAGE_EMISSION_CONFLICT")},INBOX_MESSAGE_EMISSION_UNAVAILABLE:{httpStatus:503,retryable:I("INBOX_MESSAGE_EMISSION_UNAVAILABLE")}});function hi(e){if(!s(e)||!me(e,["executionScope","idempotencyKey","payload"])||typeof e.idempotencyKey!="string"||!yt(e.payload))return r("Inbox message Emission request shape is invalid");let t=k(e.executionScope);return t.ok?u({executionScope:t.value,idempotencyKey:e.idempotencyKey,payload:e.payload}):r(t.reason)}function Si(e){return!s(e)||!me(e,["emissionId","outcome","occurredAt"])||typeof e.emissionId!="string"||e.emissionId.length===0||e.outcome!=="created"&&e.outcome!=="replayed"||typeof e.occurredAt!="string"||e.occurredAt.length===0?r("Inbox message Emission response shape is invalid"):u(e)}function me(e,t){let n=Object.keys(e).sort(),o=[...t].sort();return n.length===o.length&&n.every((i,a)=>i===o[a])}function yt(e){return s(e)&&Et(e)}function Et(e){let n=new WeakSet,o=[{value:e}],i=0;for(;o.length>0;){let a=o.pop();if(a.exiting){n.delete(a.value);continue}let c=a.value;if(c===null||typeof c=="string"||typeof c=="boolean"||typeof c=="number"&&Number.isFinite(c))continue;if(typeof c!="object"||n.has(c)||(i+=1,i>1e5))return!1;let d=Array.isArray(c)?c:s(c)&&kt(c)?Object.values(c):void 0;if(d===void 0)return!1;n.add(c),o.push({value:c,exiting:!0});for(let l=d.length-1;l>=0;l-=1)o.push({value:d[l]})}return!0}function kt(e){let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function _t(e){for(let t of Object.values(e))Object.freeze(t);return Object.freeze(e)}export{dn as COMPLETE_EVENT_WAIT_ROUTE_SUBPATH,wt as CONTEXT_STATE_CLEANUP_ROUTE_PATH,Rt as DEPLOYMENT_HANDSHAKE_DISPATCHER_CAPABILITIES,ri as DEPLOYMENT_HANDSHAKE_REQUIRED_CAPABILITIES,ni as DEPLOYMENT_HANDSHAKE_ROUTE,wr as DISCOVERY_INVOCATION_EGRESS_GRANT_ROUTE_SUBPATH,eo as DISCOVERY_INVOCATION_RUNTIME_CREDENTIAL_ROUTE_SUBPATH,br as EGRESS_GRANT_AUDIT_ROUTE_SUBPATH,Pr as EGRESS_GRANT_CONSUME_ROUTE_SUBPATH,Ye as EGRESS_GRANT_SCOPE_KINDS,zt as EXECUTION_CONTEXT_ROUTE_SUBPATH,Ft as EXECUTION_LEASE_INVALID,Ot as EXECUTION_LEASE_ROUTE_SUBPATH,Ht as EXECUTION_LEASE_SUPERSEDED,ho as FILE_ACCESS_ROUTE_SUBPATH,xo as FILE_COMPLETE_ROUTE_SUBPATH,wo as FILE_CONTENT_ROUTE_SUBPATH,So as FILE_STAT_ROUTE_SUBPATH,_o as FILE_UPLOAD_SESSION_ROUTE_SUBPATH,hr as FLOW_RUN_EGRESS_GRANT_ROUTE_SUBPATH,an as FLOW_RUN_EXECUTION_EVENTS_ROUTE_SUBPATH,be as FLOW_RUN_EXECUTION_EVENT_TYPES,un as FLOW_RUN_RESULT_ROUTE_SUBPATH,Qr as FLOW_RUN_RUNTIME_CREDENTIAL_ROUTE_SUBPATH,Pn as HANDLER_BUNDLES_ROUTE_SUBPATH,ci as HANDSHAKE_CAPABILITY_MISSING,ui as HANDSHAKE_CONTRACT_VERSION_MISMATCH,ai as HANDSHAKE_DISPATCH_NAMESPACE_MISMATCH,oi as HANDSHAKE_REQUEST_INVALID,si as HANDSHAKE_SECRET_MISMATCH,ii as HANDSHAKE_SECRET_UNCONFIGURED,Ho as HUMAN_INPUTS_ROUTE_SUBPATH,$o as HUMAN_INPUT_ACKNOWLEDGE_ROUTE_SUBPATH,Mt as HUMAN_INPUT_CANCELLED_BY_RESET,Mo as HUMAN_INPUT_EXPIRE_ROUTE_SUBPATH,ce as HUMAN_INPUT_PROMPT_BODY_MAX_CODE_POINTS,ae as HUMAN_INPUT_PROMPT_TITLE_MAX_CODE_POINTS,Lo as HUMAN_INPUT_REQUEST_ROUTE_SUBPATH,st as HUMAN_INPUT_RESOLVED_EVENT_PREFIX,ki as INBOX_MESSAGE_EMISSION_ROUTE_SUBPATH,xi as INBOX_MESSAGE_EXECUTION_ERROR_REGISTRY,Y as INTERNAL_DISCOVERY_INVOCATIONS_ROUTE_PREFIX,ie as INTERNAL_EGRESS_GRANTS_ROUTE_PREFIX,A as INTERNAL_FILES_ROUTE_PREFIX,g as INTERNAL_FLOW_RUNS_ROUTE_PREFIX,De as INTERNAL_FLOW_VERSIONS_ROUTE_PREFIX,q as INTERNAL_INSTALLATIONS_ROUTE_PREFIX,C as INTERNAL_POLLING_TRIGGER_INSTANCES_ROUTE_PREFIX,J as INTERNAL_TOOL_INVOCATIONS_ROUTE_PREFIX,N as INTERNAL_WEBHOOK_TRIGGER_INSTANCES_ROUTE_PREFIX,cr as POLLING_TRIGGER_CONTEXT_ROUTE_SUBPATH,Tr as POLLING_TRIGGER_EGRESS_GRANT_ROUTE_SUBPATH,dr as POLLING_TRIGGER_HANDLER_BUNDLES_ROUTE_SUBPATH,to as POLLING_TRIGGER_RUNTIME_CREDENTIAL_ROUTE_SUBPATH,pr as POLLING_TRIGGER_TICK_EVENTS_ROUTE_SUBPATH,cn as REGISTER_EVENT_WAIT_ROUTE_SUBPATH,ao as RUNTIME_CREDENTIAL_SESSION_SCOPE_KINDS,Bt as RUN_DISPATCH_UNAVAILABLE,Ie as SERVER_EXECUTION_CONTRACT_VERSION,sn as STEP_RESULT_ROUTE_SUBPATH,bn as TOOL_HANDLER_BUNDLES_ROUTE_SUBPATH,Sr as TOOL_INVOCATION_EGRESS_GRANT_ROUTE_SUBPATH,Zr as TOOL_INVOCATION_RUNTIME_CREDENTIAL_ROUTE_SUBPATH,Lt as WAIT_EXECUTION_SUPERSEDED,Yn as WEBHOOK_PROTOCOL_ADAPTER_BUNDLE_ROUTE_SUBPATH,Qn as WEBHOOK_PROTOCOL_ADAPTER_MODULE,Mn as WEBHOOK_TRIGGER_CONTEXT_ROUTE_SUBPATH,Wn as WEBHOOK_TRIGGER_DELIVERY_ROUTE_SUBPATH,Ar as WEBHOOK_TRIGGER_EGRESS_GRANT_ROUTE_SUBPATH,Gn as WEBHOOK_TRIGGER_EVENTS_ROUTE_SUBPATH,$n as WEBHOOK_TRIGGER_HANDLER_BUNDLES_ROUTE_SUBPATH,Kn as WEBHOOK_TRIGGER_REARM_ROUTE_SUBPATH,no as WEBHOOK_TRIGGER_RUNTIME_CREDENTIAL_ROUTE_SUBPATH,Qo as WFP_USER_RUNTIME_MANIFEST_FORMAT_VERSION,Zo as WFP_USER_RUNTIME_UNKNOWN_SOURCE_REVISION,vt as WORKFLOW_RESTART_INSTANCE_UNAVAILABLE,Ut as WORKFLOW_RESTART_REJECTED,Dt as WORKFLOW_RESTART_REQUEST_INVALID,Ct as WORKFLOW_RESTART_ROUTE,$t as acquireExecutionLeasePath,mn as completeEventWaitPath,di as deploymentHandshakeProbePayload,pi as deploymentHandshakeResponseProofPayload,Cr as discoveryInvocationEgressGrantPath,io as discoveryInvocationRuntimeCredentialPath,Br as egressGrantAuditPath,Ur as egressGrantConsumePath,Qt as executionContextPath,Nr as flowRunEgressGrantPath,fn as flowRunExecutionEventsPath,ln as flowRunResultPath,ro as flowRunRuntimeCredentialPath,Zn as flowScriptProtocolAdapterModuleName,Nn as handlerBundlesPath,Go as humanInputAcknowledgePath,Wo as humanInputExpirePath,pe as humanInputRequestPath,Ko as humanInputResolvedEventType,it as humanInputsPath,_i as inboxMessageEmissionPath,bo as internalFileAccessPath,Po as internalFileCompletePath,Oo as internalFileContentPath,No as internalFileStatPath,Ao as internalFileUploadSessionPath,To as internalFilesPath,w as isValidRequestDigest,Gt as parseAcquireExecutionLeaseData,Wt as parseAcquireExecutionLeaseRequest,hn as parseCompleteFlowRunWaitBody,wn as parseCompleteFlowRunWaitData,Tt as parseContextStateCleanupRequestBody,At as parseContextStateCleanupResponseData,x as parseContextStateScope,Xo as parseCreateHumanInputBody,Lr as parseDiscoveryGrantBody,lo as parseDiscoveryRuntimeCredentialBody,Gr as parseEgressGrantAuditBody,Wr as parseEgressGrantConsumeBody,qr as parseEgressGrantConsumeData,Kr as parseEgressGrantData,Si as parseEmitInboxMessageData,hi as parseEmitInboxMessageRequest,Z as parseExecutionAnchor,Zt as parseExecutionContextData,xe as parseExecutionLease,k as parseExecutionWriteScope,nt as parseFileMetadataData,L as parseFileRefData,W as parseFileRuntimeLimits,tt as parseFileUploadSessionData,Fr as parseFlowActionGrantBody,Q as parseFlowExecutionScope,_n as parseFlowRunExecutionEventBody,kn as parseFlowRunExecutionEventData,yn as parseFlowRunResultBody,En as parseFlowRunResultData,co as parseFlowRuntimeCredentialBody,Tn as parseFlowWaitResolvedEvent,Ue as parseHandlerBundle,Cn as parseHandlerBundlesData,Yo as parseHumanInputAcknowledgeData,Jo as parseHumanInputCreateData,mt as parseHumanInputRequestViewData,qo as parseHumanInputResolvedEvent,ut as parseHumanInputResponse,Vo as parseHumanInputResponseForSpec,pt as parseHumanInputSpec,Co as parseInternalFileAccessData,Rr as parsePollingPublishBody,fo as parsePollingRuntimeCredentialBody,We as parsePollingTriggerContext,mr as parsePollingTriggerDispatchData,Mr as parsePollingTriggerGrantBody,Ir as parsePublishPollingTickEventsData,xn as parseRegisterFlowRunWaitBody,Sn as parseRegisterFlowRunWaitData,jo as parseRenderedHumanInputPrompt,mo as parseRuntimeCredentialSessionCredential,F as parseRuntimeNetwork,gi as parseServerExecutionErrorEnvelope,Hr as parseSingleToolGrantBody,po as parseSingleToolRuntimeCredentialBody,Rn as parseStepRecordBody,In as parseStepRecordData,Dn as parseToolHandlerBundlesData,V as parseTriggerFileRuntimeDispatch,nr as parseTriggerHandlerBundlesData,Le as parseWebhookDelivery,tr as parseWebhookDeliveryDispatchData,rr as parseWebhookPublishEventsBody,or as parseWebhookRearmBody,go as parseWebhookRuntimeCredentialBody,$r as parseWebhookTriggerGrantBody,er as parseWebhookWatcherContext,Kt as parseWorkflowDispatchRestartRequest,qt as parseWorkflowDispatchRestartResponse,lr as pollingTriggerContextPath,Dr as pollingTriggerEgressGrantPath,fr as pollingTriggerHandlerBundlesPath,so as pollingTriggerRuntimeCredentialPath,gr as pollingTriggerTickEventsPath,gn as registerEventWaitPath,Qe as requestHasMultipartFileParts,pn as stepResultPath,On as toolHandlerBundlesPath,Or as toolInvocationEgressGrantPath,oo as toolInvocationRuntimeCredentialPath,zn as webhookProtocolAdapterBundlePath,qn as webhookTriggerContextPath,jn as webhookTriggerDeliveryPath,vr as webhookTriggerEgressGrantPath,Xn as webhookTriggerEventsPath,Vn as webhookTriggerHandlerBundlesPath,Jn as webhookTriggerRearmPath,uo as webhookTriggerRuntimeCredentialPath,ei as wfpUserRuntimeManifestPath};
1
+ var Fe="0.5.0";function u(e){return{ok:!0,value:e}}function r(e){return{ok:!1,reason:e}}function s(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var sn="/cleanup-state-scopes";function b(e){if(!s(e)||typeof e.kind!="string")return r("context state scope surface shape is invalid");switch(e.kind){case"webhook-trigger":return He(e);case"polling-trigger":return Le(e);case"flow-action":return $e(e);default:return r("context state scope kind is invalid")}}function an(e){if(!s(e))return r("cleanup request body must be a JSON object");let t=V(e,["scopes"]);if(t!==void 0)return r(`cleanup request does not accept the "${t}" field`);if(!Array.isArray(e.scopes))return r("cleanup request scopes must be an array");let n=[];for(let o of e.scopes){let i=b(o);if(!i.ok)return i;n.push(i.value)}return u({scopes:n})}function un(e){return!s(e)||typeof e.deleted!="number"||!Number.isSafeInteger(e.deleted)||e.deleted<0?r("cleanup response data surface shape is invalid"):u({deleted:e.deleted})}function He(e){let t=V(e,["kind","workspaceId","triggerInstanceId"]);return t!==void 0?r(`webhook trigger scope does not accept "${t}"`):e.kind!=="webhook-trigger"||!w(e.workspaceId)||!w(e.triggerInstanceId)?r("webhook trigger state scope is invalid"):u({kind:"webhook-trigger",workspaceId:e.workspaceId,triggerInstanceId:e.triggerInstanceId})}function Le(e){let t=V(e,["kind","workspaceId","pollingInstanceId"]);return t!==void 0?r(`polling trigger scope does not accept "${t}"`):e.kind!=="polling-trigger"||!w(e.workspaceId)||!w(e.pollingInstanceId)?r("polling trigger state scope is invalid"):u({kind:"polling-trigger",workspaceId:e.workspaceId,pollingInstanceId:e.pollingInstanceId})}function $e(e){let t=V(e,["kind","workspaceId","flowId","nodeId","connectionId"]);if(t!==void 0)return r(`flow action scope does not accept "${t}"`);let n=e.connectionId;return e.kind!=="flow-action"||!w(e.workspaceId)||!w(e.flowId)||!w(e.nodeId)||n!==null&&!w(n)?r("flow action state scope is invalid"):u({kind:"flow-action",workspaceId:e.workspaceId,flowId:e.flowId,nodeId:e.nodeId,connectionId:n})}function w(e){return typeof e=="string"&&e.length>0}function V(e,t){return Object.keys(e).find(n=>!t.includes(n))}import{FLOW_INTERPRETER_CONTRACT_VERSION as Me,FLOW_IR_SCHEMA_VERSION as We,parseFlowDefinition as Ge}from"@ablehi/flow-contract";var R="/internal/flow-runs",fn="/:flowRunId/execution-context";function gn(e){return`${R}/${encodeURIComponent(e)}/execution-context`}function ne(e){return!s(e)||_(e,["fileMaxBytes","fileReadMaxBytes","inlineMultipartBytesMax"])!==void 0||!j(e.fileMaxBytes)||!j(e.fileReadMaxBytes)||!j(e.inlineMultipartBytesMax)?r("file runtime limits must carry three positive integer bounds"):u({fileMaxBytes:e.fileMaxBytes,fileReadMaxBytes:e.fileReadMaxBytes,inlineMultipartBytesMax:e.inlineMultipartBytesMax})}function mn(e){if(!s(e))return r("execution context must be a JSON object");let t=_(e,["flowRunId","workspaceId","input","executionGeneration","compiled","executionBindings","fileRuntime"]);if(t!==void 0)return r(`execution context does not accept the "${t}" field`);let n=e.compiled;if(typeof e.flowRunId!="string"||typeof e.workspaceId!="string"||!s(e.input)||!s(n)||_(n,["irSchemaVersion","interpreterContractVersion","ir","compiledArtifactId"])!==void 0||n.irSchemaVersion!==We||n.interpreterContractVersion!==Me||typeof n.compiledArtifactId!="string"||!Ve(e.executionBindings))return r("execution context surface shape is invalid");let o=Ge(n.ir);if(!o.ok)return r(o.reason);let i=Ke(e.executionGeneration,e.flowRunId);if(!i.ok)return r(i.reason);let c=qe(e.fileRuntime);return c.ok?u({...e,compiled:{...n,ir:o.value},executionGeneration:i.value,fileRuntime:c.value}):r(c.reason)}function Ke(e,t){return!s(e)||_(e,["id","flowRunId","number"])!==void 0||typeof e.id!="string"||e.id.length===0||typeof e.flowRunId!="string"||e.flowRunId!==t||!j(e.number)?r("executionGeneration surface shape is invalid"):u({id:e.id,flowRunId:e.flowRunId,number:e.number})}function qe(e){if(e===null)return u(null);if(!s(e))return r("fileRuntime must be null or an object");if(_(e,["limits"])!==void 0)return r("fileRuntime surface shape is invalid");let t=ne(e.limits);return t.ok?u({limits:t.value}):r(t.reason)}function Ve(e){return Array.isArray(e)?e.every(t=>{if(!s(t)||!b(t.stateScope).ok||!x(t.nodeId))return!1;if(t.executionKind==="direct")return _(t,["executionKind","nodeId","stateScope","toolRef","toolDescriptor","integrationDescriptor","connection"])===void 0&&x(t.toolRef)&&s(t.toolDescriptor)&&s(t.integrationDescriptor)&&Re(t.toolDescriptor,t.connection);if(t.executionKind!=="server_transformed")return!1;let o=t.realAction;return _(t,["executionKind","nodeId","stateScope","canonicalToolRef","serverTransformRef","serverTransformContractDigest","realAction"])===void 0&&x(t.canonicalToolRef)&&x(t.serverTransformRef)&&Je(t.serverTransformContractDigest)&&s(o)&&_(o,["toolRef","toolDescriptor","integrationDescriptor","connection"])===void 0&&x(o.toolRef)&&s(o.toolDescriptor)&&s(o.integrationDescriptor)&&Re(o.toolDescriptor,o.connection)}):!1}function Re(e,t){return e.auth_required===!1?t===null:e.auth_required===!0&&je(t)}function je(e){return s(e)&&_(e,["installationId","connectionRef","connectionId","authProfileRef","authType","connectionConfig"])===void 0&&x(e.installationId)&&x(e.connectionRef)&&x(e.connectionId)&&x(e.authProfileRef)&&x(e.authType)&&(e.connectionConfig===void 0||s(e.connectionConfig))}function Je(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function x(e){return typeof e=="string"&&e.length>0}function j(e){return typeof e=="number"&&Number.isSafeInteger(e)&&e>0}function _(e,t){return Object.keys(e).find(n=>!t.includes(n))}var kn="/:flowRunId/execution-leases",xn="/restart",En="WORKFLOW_RESTART_REQUEST_INVALID",_n="WORKFLOW_RESTART_INSTANCE_UNAVAILABLE",hn="WORKFLOW_RESTART_REJECTED",wn="RUN_DISPATCH_UNAVAILABLE",Tn="EXECUTION_LEASE_INVALID",bn="EXECUTION_LEASE_SUPERSEDED",Sn="WAIT_EXECUTION_SUPERSEDED",Pn="HUMAN_INPUT_CANCELLED_BY_RESET";function An(e){return`${R}/${encodeURIComponent(e)}/execution-leases`}var Xe=/^generation:[A-Za-z0-9][A-Za-z0-9._:-]{0,239}$/;function Ie(e){return s(e)?e.kind==="terminal"&&h(e,["kind"])?u({kind:"terminal"}):e.kind==="node"&&h(e,["kind","nodeId"])&&y(e.nodeId)?u({kind:"node",nodeId:e.nodeId}):r("execution anchor shape is invalid"):r("execution anchor must be an object")}function k(e){if(!s(e)||!h(e,["flowRunId","generationId","generationNumber","anchor","leaseId"])||!y(e.flowRunId)||!y(e.generationId)||!Ye(e.generationNumber)||!y(e.leaseId))return r("execution lease shape is invalid");let t=Ie(e.anchor);return t.ok?u({flowRunId:e.flowRunId,generationId:e.generationId,generationNumber:e.generationNumber,anchor:t.value,leaseId:e.leaseId}):r(t.reason)}function Cn(e){if(!s(e)||!h(e,["anchor"]))return r("lease request shape is invalid");let t=Ie(e.anchor);return t.ok?u({anchor:t.value}):r(t.reason)}function Nn(e){if(!s(e)||!h(e,["lease"]))return r("lease response shape is invalid");let t=k(e.lease);return t.ok?u({lease:t.value}):r(t.reason)}function On(e){return!s(e)||!h(e,["instanceId","flowRunId","commandId","generationId","from"])||!y(e.instanceId)||!y(e.flowRunId)||!y(e.commandId)||!y(e.generationId)||!s(e.from)||!h(e.from,["name","count","type"])||typeof e.from.name!="string"||!Xe.test(e.from.name)||e.from.name==="generation:terminal"||e.from.count!==1||e.from.type!=="do"?r("restart request shape is invalid"):u(e)}function Dn(e){return!s(e)||!h(e,["ok","data"])||e.ok!==!0||!s(e.data)||!h(e.data,["accepted","instanceId","commandId","generationId"])||e.data.accepted!==!0||!y(e.data.instanceId)||!y(e.data.commandId)||!y(e.data.generationId)?r("restart response shape is invalid"):u(e)}function h(e,t){let n=Object.keys(e).sort(),o=[...t].sort();return n.length===o.length&&n.every((i,c)=>i===o[c])}function y(e){return typeof e=="string"&&e.length>0}function Ye(e){return typeof e=="number"&&Number.isSafeInteger(e)&&e>0}import{parseAblehiErrorDigest as re}from"@ablehi/error-contract";var Ln="/:flowRunId/steps/:nodeId/result",$n="/:flowRunId/result",Mn="/:flowRunId/execution-events",Wn="/:flowRunId/waits/:nodeId/register",Gn="/:flowRunId/waits/:nodeId/complete";function Kn(e,t){return`${R}/${encodeURIComponent(e)}/steps/${encodeURIComponent(t)}/result`}function qn(e){return`${R}/${encodeURIComponent(e)}/result`}function Vn(e){return`${R}/${encodeURIComponent(e)}/execution-events`}function jn(e,t){return`${R}/${encodeURIComponent(e)}/waits/${encodeURIComponent(t)}/register`}function Jn(e,t){return`${R}/${encodeURIComponent(e)}/waits/${encodeURIComponent(t)}/complete`}function Xn(e){if(!s(e))return{ok:!1,kind:"validation",reason:"step record body must be a JSON object"};let t=I(e,["executionLease","attempt","result","durationMs"]);if(t!==void 0)return{ok:!1,kind:"validation",reason:`step record does not accept the "${t}" field`};let n=k(e.executionLease);if(!n.ok)return{ok:!1,kind:"validation",reason:n.reason};let o=e.attempt;if(typeof o!="number"||!Number.isInteger(o)||o<=0)return{ok:!1,kind:"validation",reason:"attempt must be a positive integer"};let i=ze(e.result);if(!i.ok)return i;let c={executionLease:n.value,attempt:o,result:i.value};if(e.durationMs!==void 0){let a=e.durationMs;if(typeof a!="number"||!Number.isFinite(a)||a<0)return{ok:!1,kind:"validation",reason:"durationMs must be a non-negative number"};c.durationMs=a}return{ok:!0,value:c}}function ze(e){if(!s(e))return{ok:!1,kind:"step_result_invalid",reason:"result must be a JSON object"};let t=e.status;if(t==="succeeded"){let n=I(e,["status","output"]);return n!==void 0?{ok:!1,kind:"validation",reason:`step record result does not accept the "${n}" field`}:"output"in e?{ok:!0,value:{status:"succeeded",output:e.output}}:{ok:!1,kind:"step_result_invalid",reason:"a succeeded result must carry output"}}if(t==="failed"){let n=I(e,["status","error"]);if(n!==void 0)return{ok:!1,kind:"validation",reason:`step record result does not accept the "${n}" field`};let o=re(e.error);return o.ok?{ok:!0,value:{status:"failed",error:o.value}}:{ok:!1,kind:"step_result_invalid",reason:`a failed result must carry an AblehiErrorDigest: ${o.reason}`}}if(t==="skipped"){let n=I(e,["status","reason"]);return n!==void 0?{ok:!1,kind:"validation",reason:`step record result does not accept the "${n}" field`}:e.reason!=="run_if_false"?{ok:!1,kind:"step_result_invalid",reason:'a skipped result reason must be "run_if_false"'}:{ok:!0,value:{status:"skipped",reason:"run_if_false"}}}if(t==="timed_out"){let n=I(e,["status","error"]);if(n!==void 0)return{ok:!1,kind:"validation",reason:`step record result does not accept the "${n}" field`};let o=re(e.error);return o.ok?{ok:!0,value:{status:"timed_out",error:o.value}}:{ok:!1,kind:"step_result_invalid",reason:`a timed_out result must carry an AblehiErrorDigest: ${o.reason}`}}return{ok:!1,kind:"step_result_invalid",reason:'result status must be "succeeded", "failed", "skipped", or "timed_out"'}}function Yn(e){return!s(e)||typeof e.flowRunId!="string"||typeof e.nodeId!="string"||!Qe(e.recorded)?r("step record data surface shape is invalid"):u({flowRunId:e.flowRunId,nodeId:e.nodeId,recorded:e.recorded})}function Qe(e){return e==="succeeded"||e==="failed"||e==="skipped"||e==="timed_out"}function zn(e){if(!s(e))return r("result body must be a JSON object");let t=I(e,["executionLease","status","output","error"]);if(t!==void 0)return r(`result does not accept the "${t}" field`);let n=k(e.executionLease);if(!n.ok)return r(n.reason);let o=e.status;if(o!=="succeeded"&&o!=="failed")return r('result status must be "succeeded" or "failed"');let i={executionLease:n.value,status:o};if(e.output!==void 0){if(o!=="succeeded")return r("output is only allowed on a succeeded result");i.output=e.output}if(e.error!==void 0){if(o!=="failed")return r("error is only allowed on a failed result");let c=re(e.error);if(!c.ok)return r(`result error must be an AblehiErrorDigest: ${c.reason}`);i.error=c.value}return o==="failed"&&i.error===void 0?r("a failed result must carry an AblehiErrorDigest"):u(i)}function Qn(e){return s(e)?u(e):r("flow run result data must be a JSON object")}var Ze=["step_started","step_retry_scheduled"];function Zn(e){if(!s(e))return r("execution event data must be a JSON object");let t=I(e,["flowRunId","eventId","accepted"]);return t!==void 0?r(`execution event data does not accept the "${t}" field`):typeof e.flowRunId!="string"||e.flowRunId.length===0?r("flowRunId must be a non-empty string"):typeof e.eventId!="string"||e.eventId.length===0?r("eventId must be a non-empty string"):e.accepted!==!0?r("accepted must be true"):u({flowRunId:e.flowRunId,eventId:e.eventId,accepted:!0})}function er(e){if(!s(e))return r("execution event body must be a JSON object");let t=I(e,["executionLease","eventId","eventType","nodeId","stepRunId","attempt","durationMs","occurredAt","errorId","payloadRef","inputFact"]);if(t!==void 0)return r(`execution event does not accept the "${t}" field`);let n=k(e.executionLease);if(!n.ok)return r(n.reason);let o=e.eventId;if(typeof o!="string"||o.length===0)return r("eventId must be a non-empty string");let i=e.eventType;if(!et(i))return r("eventType is not a known flow execution event type");let c=e.occurredAt;if(typeof c!="string"||c.length===0)return r("occurredAt must be a non-empty string");let a={executionLease:n.value,eventId:o,eventType:i,occurredAt:c};for(let d of["nodeId","stepRunId","errorId","payloadRef"]){let f=e[d];if(f!==void 0){if(typeof f!="string"||f.length===0)return r(`${d} must be a non-empty string`);a[d]=f}}for(let d of["attempt","durationMs"]){let f=e[d];if(f!==void 0){if(typeof f!="number"||!Number.isFinite(f)||!Number.isInteger(f)||f<0)return r(`${d} must be a non-negative integer`);a[d]=f}}if(e.inputFact!==void 0){if(i!=="step_started")return r("inputFact is only allowed on step_started events");if(a.attempt===void 0)return r("inputFact requires attempt");let d=tt(e.inputFact);if(!d.ok)return d;a.inputFact=d.value}return u(a)}function et(e){return typeof e=="string"&&Ze.includes(e)}function tt(e){if(!s(e))return r("inputFact must be a JSON object");let t=I(e,["digestAlgorithm","digest","domain"]);if(t!==void 0)return r(`inputFact does not accept the "${t}" field`);if(e.digestAlgorithm!=="sha256")return r('inputFact.digestAlgorithm must be "sha256"');let n=e.digest;if(typeof n!="string"||!/^[0-9a-f]{64}$/.test(n))return r("inputFact.digest must be a sha256 hex string");let o=e.domain;if(!s(o))return r("inputFact.domain must be a JSON object");let i=I(o,["irSchemaVersion","interpreterContractVersion","compiledArtifactId","nodeId","algorithmVersion"]);return i!==void 0?r(`inputFact.domain does not accept the "${i}" field`):typeof o.irSchemaVersion!="string"||o.irSchemaVersion.length===0||typeof o.interpreterContractVersion!="string"||o.interpreterContractVersion.length===0||typeof o.compiledArtifactId!="string"||o.compiledArtifactId.length===0||typeof o.nodeId!="string"||o.nodeId.length===0?r("inputFact.domain string fields must be non-empty strings"):o.algorithmVersion!=="flow_input_digest.v1"?r('inputFact.domain.algorithmVersion must be "flow_input_digest.v1"'):u({digestAlgorithm:"sha256",digest:n,domain:{irSchemaVersion:o.irSchemaVersion,interpreterContractVersion:o.interpreterContractVersion,compiledArtifactId:o.compiledArtifactId,nodeId:o.nodeId,algorithmVersion:"flow_input_digest.v1"}})}var nt=/^[A-Za-z0-9_-]{1,100}$/;function tr(e){if(!s(e))return r("register body must be a JSON object");let t=I(e,["executionLease","eventType","correlationKey"]);if(t!==void 0)return r(`register wait does not accept the "${t}" field`);let n=k(e.executionLease);if(!n.ok)return r(n.reason);let o=ye(e.eventType);if(!o.ok)return r(o.reason);let i=e.correlationKey;return typeof i!="string"||i.length===0?r("correlationKey must be a non-empty string"):u({executionLease:n.value,eventType:o.value,correlationKey:i})}function nr(e){if(!s(e))return r("complete body must be a JSON object");let t=I(e,["executionLease","waitExecutionId","outcome","eventId"]);if(t!==void 0)return r(`complete wait does not accept the "${t}" field`);let n=k(e.executionLease);if(!n.ok)return r(n.reason);let o=e.waitExecutionId;if(typeof o!="string"||o.length===0)return r("waitExecutionId must be a non-empty string");let i=e.outcome;if(i!=="received"&&i!=="timed_out")return r('outcome must be "received" or "timed_out"');let c={executionLease:n.value,waitExecutionId:o,outcome:i};if(e.eventId!==void 0){if(typeof e.eventId!="string"||e.eventId.length===0)return r("eventId must be a non-empty string");c.eventId=e.eventId}return u(c)}function rr(e){if(!s(e)||I(e,["waitExecutionId","workflowEventType"])!==void 0||typeof e.waitExecutionId!="string"||e.waitExecutionId.length===0)return r("register wait data surface shape is invalid");let t=ye(e.workflowEventType);return t.ok?u({waitExecutionId:e.waitExecutionId,workflowEventType:t.value}):r(t.reason)}function or(e){return!s(e)||I(e,["completed"])!==void 0||e.completed!==!0?r("complete wait data surface shape is invalid"):u({completed:!0})}function ir(e){return!s(e)||I(e,["waitExecutionId","eventId","payload"])!==void 0||typeof e.waitExecutionId!="string"||e.waitExecutionId.length===0||typeof e.eventId!="string"||e.eventId.length===0||!Object.hasOwn(e,"payload")?r("Wait resolved event surface shape is invalid"):u({waitExecutionId:e.waitExecutionId,eventId:e.eventId,payload:e.payload})}function ye(e){return typeof e!="string"||e.length===0?r("eventType must be a non-empty string"):nt.test(e)?u(e):r("eventType must match ^[A-Za-z0-9_-]{1,100}$")}function I(e,t){return Object.keys(e).find(n=>!t.includes(n))}var rt="/internal/flow-versions",ar="/:flowVersionId/handler-bundles",ie="/internal/installations",ur="/:installationId/handler-bundles";function cr(e,t){return`${rt}/${encodeURIComponent(e)}/handler-bundles?compiledArtifactId=${encodeURIComponent(t)}`}function dr(e){return`${ie}/${encodeURIComponent(e.installationId)}/handler-bundles?workspaceId=${encodeURIComponent(e.workspaceId)}&artifactDigest=${encodeURIComponent(e.artifactDigest)}`}var ot=new Set(["managed_only","managed_plus_unmanaged_sdk"]);function J(e){if(!A(e))return oe("runtimeNetwork must be a JSON object");let t=e.networkModel;return typeof t!="string"||!ot.has(t)?oe("runtimeNetwork.networkModel is unknown"):!ke(e.apiHosts)||!ke(e.authHosts)||typeof e.httpsOnly!="boolean"?oe("runtimeNetwork host/https fields are invalid"):{ok:!0,value:{networkModel:t,apiHosts:e.apiHosts,authHosts:e.authHosts,httpsOnly:e.httpsOnly}}}function pr(e){if(!A(e)||typeof e.flowVersionId!="string"||typeof e.compiledArtifactId!="string"||!Array.isArray(e.bundles))return B("handler bundles data surface shape is invalid");let t=xe(e.bundles);return t.ok?{ok:!0,value:{flowVersionId:e.flowVersionId,compiledArtifactId:e.compiledArtifactId,bundles:t.value}}:t}function lr(e){if(!A(e)||typeof e.installationId!="string"||typeof e.artifactDigest!="string"||!Array.isArray(e.bundles))return B("tool handler bundles data surface shape is invalid");let t=xe(e.bundles);return t.ok?{ok:!0,value:{installationId:e.installationId,artifactDigest:e.artifactDigest,bundles:t.value}}:t}function xe(e){let t=[];for(let n of e){let o=it(n);if(!o.ok)return o;t.push(o.value)}return{ok:!0,value:t}}function it(e){if(!A(e)||typeof e.toolRef!="string"||e.kind!=="handler"&&e.kind!=="request")return B("handler bundle entry shape is invalid");if(e.kind==="request"){if(e.module!==void 0)return B("a request bundle must not carry a module");let o=J(e.runtimeNetwork);return o.ok?{ok:!0,value:{toolRef:e.toolRef,kind:"request",runtimeNetwork:o.value}}:o}let t=e.module;if(!A(t)||typeof t.entry!="string"||t.entry.length===0||!st(t.files))return B("a handler bundle must carry a { entry, files } module");let n=J(e.runtimeNetwork);return n.ok?{ok:!0,value:{toolRef:e.toolRef,kind:"handler",module:{entry:t.entry,files:t.files},runtimeNetwork:n.value}}:n}function B(e){return{ok:!1,kind:"shape",reason:e}}function oe(e){return{ok:!1,kind:"runtime_network",reason:e}}function A(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ke(e){return Array.isArray(e)&&e.every(t=>typeof t=="string")}function st(e){return A(e)&&Object.values(e).every(t=>typeof t=="string")}var F="/internal/webhook-trigger-instances",kr="/:triggerInstanceId/context",xr="/:triggerInstanceId/handler-bundles",Er="/:triggerInstanceId/deliveries/:deliveryId",_r="/:triggerInstanceId/events",hr="/:triggerInstanceId/rearm",H=e=>`${F}/${encodeURIComponent(e)}`;function wr(e,t){return`${H(e)}/context?artifactDigest=${encodeURIComponent(t)}`}function Tr(e,t){return`${H(e)}/handler-bundles?artifactDigest=${encodeURIComponent(t)}`}function br(e,t){return`${H(e)}/deliveries/${encodeURIComponent(t)}`}function Sr(e){return`${H(e)}/events`}function Pr(e){return`${H(e)}/rearm`}var Ar="/:installationId/webhook-protocol-adapter-bundle";function Cr(e){return`${ie}/${encodeURIComponent(e.installationId)}/webhook-protocol-adapter-bundle?workspaceId=${encodeURIComponent(e.workspaceId)}&artifactDigest=${encodeURIComponent(e.artifactDigest)}`}var Nr="modules/webhook/protocol-adapter.js";function Or(e){return`modules/webhook/protocol-adapter-${e}.js`}function Dr(e){let t=s(e)?b(e.stateScope):r("webhook watcher context state scope is invalid");return!s(e)||typeof e.artifactDigest!="string"||typeof e.triggerRef!="string"||typeof e.triggerName!="string"||typeof e.integrationRef!="string"||!s(e.inputs)||e.connection!==null&&!at(e.connection)||!ut(e.runtime)||!t.ok||t.value.kind!=="webhook-trigger"?r("webhook watcher context surface shape is invalid"):u(e)}function at(e){return s(e)&&typeof e.connectionId=="string"&&typeof e.connectionRef=="string"&&typeof e.integrationRef=="string"&&typeof e.authProfileRef=="string"&&typeof e.authType=="string"}function ut(e){if(!s(e)||e.type!=="webhook"||typeof e.trigger_ref!="string")return!1;let t=e.webhook;return s(t)&&typeof t.event_handler_module=="string"&&typeof t.enable_handler_module=="string"&&typeof t.disable_handler_module=="string"}function ct(e){if(!s(e)||typeof e.deliveryId!="string"||typeof e.receivedAt!="string"||!s(e.request))return r("webhook delivery surface shape is invalid");let t=e.request;return t.method!=="POST"||!s(t.headers)||typeof t.rawBody!="string"?r("webhook delivery request shape is invalid"):u(e)}function se(e){if(!s(e)||typeof e.token!="string"||typeof e.expiresAt!="string")return r("trigger file runtime dispatch shape is invalid");let t=ne(e.limits);return t.ok?u({token:e.token,expiresAt:e.expiresAt,limits:t.value}):r(t.reason)}function vr(e){if(!s(e))return r("webhook delivery dispatch data is invalid");let t=ct(e.delivery);if(!t.ok)return r(t.reason);let n=e.fileRuntime;if(n===null)return u({delivery:t.value,fileRuntime:null});let o=se(n);return o.ok?u({delivery:t.value,fileRuntime:o.value}):r(o.reason)}function Ur(e){if(!s(e)||typeof e.triggerRef!="string"||typeof e.artifactDigest!="string"||!Array.isArray(e.modules)||!e.modules.every(dt))return{ok:!1,kind:"shape",reason:"trigger handler bundles data surface shape is invalid"};let t=J(e.runtimeNetwork);return t.ok?{ok:!0,value:{triggerRef:e.triggerRef,artifactDigest:e.artifactDigest,modules:e.modules,runtimeNetwork:t.value}}:t}function dt(e){return s(e)&&typeof e.specifier=="string"&&e.specifier.length>0&&typeof e.source=="string"}function Br(e){if(!s(e))return r("publish events body must be a JSON object");let t=ae(e,["deliveryId","events"]);if(t!==void 0)return r(`publish events does not accept the "${t}" field`);let n=e.deliveryId;if(typeof n!="string"||n.length===0)return r("deliveryId must be a non-empty string");let o=e.events;if(!Array.isArray(o))return r("events must be an array");let i=[];for(let c of o){let a=pt(c);if(!a.ok)return a;i.push(a.value)}return u({deliveryId:n,events:i})}function pt(e){if(!s(e))return r("each event must be a JSON object");let t=ae(e,["eventId","occurredAt","dedupeKey","payload"]);if(t!==void 0)return r(`event does not accept the "${t}" field`);let n=e.eventId;if(typeof n!="string"||n.length===0)return r("eventId must be a non-empty string");let o=e.occurredAt;if(typeof o!="string"||o.length===0)return r("occurredAt must be a non-empty string");if(!s(e.payload))return r("event payload must be a JSON object");let i={eventId:n,occurredAt:o,payload:e.payload};if(e.dedupeKey!==void 0){if(typeof e.dedupeKey!="string"||e.dedupeKey.length===0)return r("dedupeKey must be a non-empty string");i.dedupeKey=e.dedupeKey}return u(i)}function Fr(e){if(!s(e))return r("rearm body must be a JSON object");let t=ae(e,["expectedWatcherInstanceId"]);if(t!==void 0)return r(`rearm does not accept the "${t}" field`);let n=e.expectedWatcherInstanceId;return typeof n!="string"||n.length===0?r("expectedWatcherInstanceId must be a non-empty string"):u({expectedWatcherInstanceId:n})}function ae(e,t){return Object.keys(e).find(n=>!t.includes(n))}var L="/internal/polling-trigger-instances",Wr="/:pollingInstanceId/context",Gr="/:pollingInstanceId/handler-bundles",Kr="/:pollingInstanceId/ticks/:tickId/events",ue=e=>`${L}/${encodeURIComponent(e)}`;function qr(e,t,n){return`${ue(e)}/context?artifactDigest=${encodeURIComponent(t)}&tickId=${encodeURIComponent(n)}`}function Vr(e,t){return`${ue(e)}/handler-bundles?artifactDigest=${encodeURIComponent(t)}`}function jr(e,t){return`${ue(e)}/ticks/${encodeURIComponent(t)}/events`}function lt(e){let t=s(e)?b(e.stateScope):r("polling trigger context state scope is invalid");return!s(e)||typeof e.artifactDigest!="string"||typeof e.triggerRef!="string"||typeof e.triggerName!="string"||typeof e.integrationRef!="string"||!s(e.inputs)||e.connection!==null&&!ft(e.connection)||!gt(e.runtime)||!t.ok||t.value.kind!=="polling-trigger"||!Rt(e.tick)||!It(e.limits)?r("polling trigger context surface shape is invalid"):u(e)}function Jr(e){if(!s(e))return r("polling trigger dispatch data is invalid");let t=lt(e.context);if(!t.ok)return r(t.reason);let n=e.fileRuntime;if(n===null)return u({context:t.value,fileRuntime:null});let o=se(n);return o.ok?u({context:t.value,fileRuntime:o.value}):r(o.reason)}function ft(e){return s(e)&&typeof e.connectionId=="string"&&typeof e.connectionRef=="string"&&typeof e.integrationRef=="string"&&typeof e.authProfileRef=="string"&&typeof e.authType=="string"}function gt(e){if(!s(e)||e.type!=="polling"||typeof e.trigger_id!="string"||typeof e.trigger_ref!="string"||!mt(e.file_outputs))return!1;let t=e.polling;if(!s(t)||typeof t.run_handler_module!="string")return!1;let n=t.schedule;if(!s(n)||n.type!=="interval"||typeof n.every_seconds!="number")return!1;let o=t.dedup;return s(o)&&(o.strategy==="cursor"||o.strategy==="hash"||o.strategy==="id_field")}function mt(e){return e===void 0?!0:Array.isArray(e)&&e.length>0&&e.every(t=>s(t)&&typeof t.field=="string"&&t.field.length>0)}function Rt(e){return s(e)&&typeof e.tickId=="string"&&typeof e.scheduledAt=="string"&&typeof e.attempt=="number"}function It(e){return s(e)&&typeof e.maxEventsPerTick=="number"}function Xr(e){if(!s(e))return r("publish body must be a JSON object");let t=Ee(e,["events","nextCursor"]);if(t!==void 0)return r(`publish does not accept the "${t}" field`);let n=e.events;if(!Array.isArray(n))return r("events must be an array");let o=[];for(let c of n){let a=yt(c);if(!a.ok)return a;o.push(a.value)}let i={events:o};if("nextCursor"in e){let c=e.nextCursor;if(c!==null&&typeof c!="string")return r("nextCursor must be a string, null, or omitted");i.nextCursor=c}return u(i)}function yt(e){if(!s(e))return r("each event must be a JSON object");let t=Ee(e,["eventId","occurredAt","dedupeKey","payload"]);if(t!==void 0)return r(`event does not accept the "${t}" field`);if(typeof e.eventId!="string"||e.eventId.length===0)return r("event eventId must be a non-empty string");if(!s(e.payload))return r("event payload must be a JSON object");let n={eventId:e.eventId,payload:e.payload};if(e.occurredAt!==void 0){if(typeof e.occurredAt!="string"||e.occurredAt.length===0)return r("event occurredAt must be a non-empty string");n.occurredAt=e.occurredAt}if(e.dedupeKey!==void 0){if(typeof e.dedupeKey!="string"||e.dedupeKey.length===0)return r("event dedupeKey must be a non-empty string");n.dedupeKey=e.dedupeKey}return u(n)}function Yr(e){return!s(e)||typeof e.tickId!="string"||typeof e.cursorUpdated!="boolean"||!Array.isArray(e.results)||!e.results.every(kt)?r("publish polling tick events data surface shape is invalid"):u(e)}function kt(e){return s(e)&&typeof e.eventId=="string"&&typeof e.dedupeKey=="string"&&typeof e.duplicate=="boolean"&&(e.flowRunId===null||typeof e.flowRunId=="string")}function Ee(e,t){return Object.keys(e).find(n=>!t.includes(n))}var _e="/internal/egress-grants",ce="/internal/tool-invocations",de="/internal/discovery-invocations",no="/:flowRunId/egress-grant",ro="/:invocationId/egress-grant",oo="/:discoveryInvocationId/egress-grant",io="/:pollingInstanceId/egress-grant",so="/:triggerInstanceId/egress-grant",ao="/:grantId/consume",uo="/:grantId/audit",co=e=>`${R}/${encodeURIComponent(e)}/egress-grant`,po=e=>`${ce}/${encodeURIComponent(e)}/egress-grant`,lo=e=>`${de}/${encodeURIComponent(e)}/egress-grant`,fo=e=>`${L}/${encodeURIComponent(e)}/egress-grant`,go=e=>`${F}/${encodeURIComponent(e)}/egress-grant`,mo=e=>`${_e}/${encodeURIComponent(e)}/consume`,Ro=e=>`${_e}/${encodeURIComponent(e)}/audit`,xt=["flow_action","single_tool","discovery","polling_trigger","webhook_trigger"],Et=/^[A-Za-z0-9][A-Za-z0-9:_+/=.-]{15,1023}$/;function C(e){return typeof e=="string"&&Et.test(e)}function _t(e){if(!s(e)||e.body_type!=="multipart")return!1;let t=e.body;if(!s(t))return!1;let n=t.parts;return Array.isArray(n)?n.some(o=>s(o)?o.kind==="file"&&typeof o.file_id=="string"&&o.file_id.length>0:!1):!1}function p(e){return{ok:!1,kind:"shape",reason:e}}function N(){return{ok:!1,kind:"request_digest",reason:"request digest is missing or malformed"}}function $(e,t){if(!s(e))return{ok:!1,reason:"grant request body must be a JSON object"};for(let n of Object.keys(e))if(!t.includes(n))return{ok:!1,reason:`grant request does not accept the "${n}" field`};return{ok:!0,record:e}}function M(e){if(!s(e))return"request must be a JSON object"}function Io(e){let t=$(e,["nodeId","request","requestDigest"]);if(!t.ok)return p(t.reason);let n=t.record.nodeId;if(typeof n!="string"||n.length===0)return p("nodeId is required");let o=M(t.record.request);if(o!==void 0)return p(o);let i=t.record.requestDigest;return C(i)?{ok:!0,value:{nodeId:n,requestDigest:i,requestHasMultipartFiles:_t(t.record.request)}}:N()}function yo(e){let t=$(e,["request","requestDigest"]);if(!t.ok)return p(t.reason);let n=M(t.record.request);if(n!==void 0)return p(n);let o=t.record.requestDigest;return C(o)?{ok:!0,value:{requestDigest:o}}:N()}function ko(e){let t=$(e,["request","requestDigest"]);if(!t.ok)return p(t.reason);let n=M(t.record.request);if(n!==void 0)return p(n);let o=t.record.requestDigest;return C(o)?{ok:!0,value:{requestDigest:o}}:N()}function xo(e){let t=$(e,["tickId","request","requestDigest"]);if(!t.ok)return p(t.reason);let n=t.record.tickId;if(typeof n!="string"||n.length===0)return p("tickId is required");let o=M(t.record.request);if(o!==void 0)return p(o);let i=t.record.requestDigest;return C(i)?{ok:!0,value:{tickId:n,requestDigest:i}}:N()}function Eo(e){let t=$(e,["phase","lifecycle","deliveryId","request","requestDigest"]);if(!t.ok)return p(t.reason);let n=t.record.phase;if(n!=="lifecycle"&&n!=="handler")return p('phase must be "lifecycle" or "handler"');let o=t.record.lifecycle,i;if(o!==void 0){if(o!=="enable"&&o!=="disable"&&o!=="renew")return p('lifecycle must be "enable", "disable", or "renew"');i=o}if(n==="lifecycle"&&i===void 0)return p("lifecycle is required for the lifecycle phase");let c=t.record.deliveryId,a;if(c!==void 0){if(typeof c!="string"||c.length===0)return p("deliveryId must be a non-empty string");a=c}if(n==="handler"&&a===void 0)return p("deliveryId is required for the handler phase");let d=M(t.record.request);if(d!==void 0)return p(d);let f=t.record.requestDigest;return C(f)?{ok:!0,value:{phase:n,...i!==void 0?{lifecycle:i}:{},...a!==void 0?{deliveryId:a}:{},requestDigest:f}}:N()}function he(e){return xt.includes(e)?e:void 0}var ht=["scopeKind","scopeId","requestDigest"];function _o(e){if(!s(e))return p("consume body must be a JSON object");for(let i of Object.keys(e))if(!ht.includes(i))return p(`consume does not accept the "${i}" field`);let t=he(e.scopeKind);if(t===void 0)return p("scopeKind is invalid");let n=e.scopeId;if(typeof n!="string"||n.length===0)return p("scopeId is required");let o=e.requestDigest;return C(o)?{ok:!0,value:{scopeKind:t,scopeId:n,requestDigest:o}}:N()}var wt=["scopeKind","scopeId","providerHost","status","durationMs","requestBytes","responseBytes","errorCode"];function X(e,t){return typeof e!="number"||!Number.isInteger(e)||e<0?{ok:!1,reason:`${t} must be a non-negative integer`}:{ok:!0,value:e}}function ho(e){if(!s(e))return p("audit body must be a JSON object");for(let l of Object.keys(e))if(!wt.includes(l))return p(`audit does not accept the "${l}" field`);let t=he(e.scopeKind);if(t===void 0)return p("scopeKind is invalid");let n=e.scopeId;if(typeof n!="string"||n.length===0)return p("scopeId is required");let o=e.providerHost;if(typeof o!="string"||o.length===0)return p("providerHost is required");let i=X(e.durationMs,"durationMs");if(!i.ok)return p(i.reason);let c;if(e.status!==void 0){let l=X(e.status,"status");if(!l.ok)return p(l.reason);c=l.value}let a;if(e.requestBytes!==void 0){let l=X(e.requestBytes,"requestBytes");if(!l.ok)return p(l.reason);a=l.value}let d;if(e.responseBytes!==void 0){let l=X(e.responseBytes,"responseBytes");if(!l.ok)return p(l.reason);d=l.value}let f;if(e.errorCode!==void 0){let l=e.errorCode;if(typeof l!="string"||l.length===0)return p("errorCode must be a non-empty string");f=l}return{ok:!0,value:{scopeKind:t,scopeId:n,providerHost:o,...c!==void 0?{status:c}:{},durationMs:i.value,...a!==void 0?{requestBytes:a}:{},...d!==void 0?{responseBytes:d}:{},...f!==void 0?{errorCode:f}:{}}}}function wo(e){return!s(e)||!s(e.grant)?r("egress grant envelope must carry a grant object"):u(e.grant)}function To(e){return!s(e)||e.consumed!==!0?r("egress grant consume data must carry consumed:true"):u({consumed:!0})}var Oo="/:flowRunId/runtime-credential",Do="/:invocationId/runtime-credential",vo="/:discoveryInvocationId/runtime-credential",Uo="/:pollingInstanceId/runtime-credential",Bo="/:triggerInstanceId/runtime-credential",Fo=e=>`${R}/${encodeURIComponent(e)}/runtime-credential`,Ho=e=>`${ce}/${encodeURIComponent(e)}/runtime-credential`,Lo=e=>`${de}/${encodeURIComponent(e)}/runtime-credential`,$o=e=>`${L}/${encodeURIComponent(e)}/runtime-credential`,Mo=e=>`${F}/${encodeURIComponent(e)}/runtime-credential`,Wo=["flow_action","tool_invoke","discovery","polling_trigger","webhook_trigger"];function W(e,t){if(!s(e))return{ok:!1,reason:"runtime credential request body must be a JSON object"};for(let n of Object.keys(e))if(!t.includes(n))return{ok:!1,reason:`runtime credential request does not accept the "${n}" field`};return{ok:!0,record:e}}function Go(e){let t=W(e,["nodeId"]);if(!t.ok)return r(t.reason);let n=t.record.nodeId;return typeof n!="string"||n.length===0?r("nodeId is required"):u({nodeId:n})}function Ko(e){let t=W(e??{},[]);return t.ok?u(null):r(t.reason)}function qo(e){let t=W(e??{},[]);return t.ok?u(null):r(t.reason)}function Vo(e){let t=W(e,["tickId"]);if(!t.ok)return r(t.reason);let n=t.record.tickId;return typeof n!="string"||n.length===0?r("tickId is required"):u({tickId:n})}function jo(e){let t=W(e,["executionKind","deliveryId","lifecycleOperation"]);if(!t.ok)return r(t.reason);let n=t.record.executionKind;if(n!=="event_handler"&&n!=="lifecycle")return r('executionKind must be "event_handler" or "lifecycle"');let o,i=t.record.deliveryId;if(i!==void 0){if(typeof i!="string"||i.length===0)return r("deliveryId must be a non-empty string");o=i}let c,a=t.record.lifecycleOperation;if(a!==void 0){if(a!=="enable"&&a!=="disable"&&a!=="renew")return r('lifecycleOperation must be "enable", "disable", or "renew"');c=a}return n==="lifecycle"&&c===void 0?r("lifecycleOperation is required for the lifecycle execution kind"):u({executionKind:n,...o!==void 0?{deliveryId:o}:{},...c!==void 0?{lifecycleOperation:c}:{}})}function Jo(e){return!s(e)||typeof e.sessionId!="string"||typeof e.connectionId!="string"||typeof e.authProfileRef!="string"||typeof e.authType!="string"||!s(e.credential)?r("runtime credential session must carry sessionId, connectionId, auth profile facts and a credential object"):u(e.credential)}function Y(e){return!s(e)||typeof e.file_id!="string"||typeof e.name!="string"||typeof e.size_bytes!="number"||typeof e.created_at!="string"||typeof e.expires_at!="string"||e.mime_type!==void 0&&typeof e.mime_type!="string"||e.sha256!==void 0&&typeof e.sha256!="string"||e.source!==void 0&&typeof e.source!="string"?r("file ref data does not match the AIS file-ref shape"):u(e)}function pe(e){return!s(e)||e.method!=="GET"&&e.method!=="PUT"||typeof e.url!="string"||typeof e.expires_at!="string"||!St(e.headers)?r("presigned file URL data is invalid"):u(e)}function Tt(e){if(!s(e))return r("file upload session data is invalid");let t=Y(e.file);if(!t.ok)return r(t.reason);let n=pe(e.upload);return n.ok?u({file:t.value,upload:n.value}):r(n.reason)}function bt(e){if(!s(e))return r("file metadata data is invalid");let t=Y(e.file);return t.ok?u({file:t.value}):r(t.reason)}function St(e){return s(e)?Object.values(e).every(t=>typeof t=="string"):!1}var O="/internal/files",ei="/upload-session",ti="/:fileId/complete",ni="/:fileId/access",ri="/:fileId/stat",oi="/:fileId/content",ii=()=>O,si=()=>`${O}/upload-session`,ai=e=>`${O}/${encodeURIComponent(e)}/complete`,ui=(e,t)=>`${O}/${encodeURIComponent(e)}/access?intent=${encodeURIComponent(t)}`,we=e=>`?scope_kind=${encodeURIComponent(e.scopeKind)}&scope_id=${encodeURIComponent(e.scopeId)}`,ci=(e,t)=>`${O}/${encodeURIComponent(e)}/stat${we(t)}`,di=(e,t)=>`${O}/${encodeURIComponent(e)}/content${we(t)}`;function pi(e){if(!s(e))return r("internal file access data is invalid");if(e.intent==="runtime_read"||e.intent==="provider_multipart"){let t=Y(e.file);if(!t.ok)return r(t.reason);let n=pe(e.access);return n.ok?u({file:t.value,access:n.value,intent:e.intent}):r(n.reason)}return r("internal file access intent is invalid")}import{isHumanInputSpec as Pt}from"@ablehi/flow-contract";var Ii="/:flowRunId/human-inputs",yi="/:flowRunId/human-inputs/:requestId",ki="/:flowRunId/human-inputs/:requestId/expire",xi="/:flowRunId/human-inputs/:requestId/acknowledge",At=e=>`${R}/${encodeURIComponent(e)}/human-inputs`,Pe=(e,t)=>`${At(e)}/${encodeURIComponent(t)}`,Ei=(e,t)=>`${Pe(e,t)}/expire`,_i=(e,t)=>`${Pe(e,t)}/acknowledge`,Ct="human_input_resolved";function hi(e){return`${Ct}_${e}`}function wi(e){return!s(e)||Object.keys(e).length!==4||!Object.hasOwn(e,"requestId")||!Object.hasOwn(e,"flowRunId")||!Object.hasOwn(e,"nodeId")||!Object.hasOwn(e,"status")||typeof e.requestId!="string"||e.requestId.length===0||typeof e.flowRunId!="string"||e.flowRunId.length===0||typeof e.nodeId!="string"||e.nodeId.length===0||e.status!=="submitted"&&e.status!=="expired"?r("Human Input resolved event shape is invalid"):u({requestId:e.requestId,flowRunId:e.flowRunId,nodeId:e.nodeId,status:e.status})}var Te=160,be=500;function Nt(e){return s(e)?e.kind==="choice"?!z(e,["kind","choiceId","comment"])||typeof e.choiceId!="string"||e.choiceId.length===0||e.comment!==void 0&&typeof e.comment!="string"?r("Human Input choice response is invalid"):u({kind:"choice",choiceId:e.choiceId,...e.comment!==void 0?{comment:e.comment}:{}}):e.kind==="text"&&z(e,["kind","text"])&&typeof e.text=="string"?u({kind:"text",text:e.text}):e.kind==="form"&&z(e,["kind","values"])&&s(e.values)?u({kind:"form",values:e.values}):r("Human Input response is invalid"):r("Human Input response must be an object")}function Ti(e,t){let n=Nt(e);if(!n.ok||n.value.kind!==t.kind)return r("Human Input response does not match its input spec");switch(t.kind){case"choice":{let o=n.value;return o.kind!=="choice"?r("Human Input choice response does not match its spec"):!t.choices.some(i=>i.id===o.choiceId)||o.comment!==void 0&&t.allowComment!==!0?r("Human Input choice response does not match its spec"):n}case"text":return n.value.kind!=="text"||t.required===!0&&n.value.text.trim().length===0?r("Human Input text response does not match its spec"):n;case"form":{if(n.value.kind!=="form")return r("Human Input form response does not match its spec");let o=new Map(t.fields.map(i=>[i.id,i]));if(Object.keys(n.value.values).some(i=>!o.has(i)))return r("Human Input form response contains an unknown field");for(let i of t.fields){let c=n.value.values[i.id];if(!Object.hasOwn(n.value.values,i.id)){if(i.required===!0)return r(`Human Input form response is missing required field '${i.id}'`);continue}if(c==null||!Ot(i,c))return r(`Human Input form response field '${i.id}' does not match its spec`)}return n}}}function Ot(e,t){switch(e.type){case"text":case"textarea":return typeof t=="string";case"number":return typeof t=="number"&&Number.isFinite(t);case"boolean":return typeof t=="boolean";case"select":return typeof t=="string"&&(e.options??[]).some(n=>n.id===t)}}function m(e){return{ok:!1,reason:e}}function S(e,t){return s(e)?{ok:!0,value:e}:m(`${t} must be an object`)}function z(e,t){return Object.keys(e).every(n=>t.includes(n))}function D(e,t){return typeof e!="string"||e.length===0?m(`${t} must be a non-empty string`):{ok:!0,value:e}}var Dt=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?(?:Z|[+-]\d{2}:\d{2})$/;function vt(e,t){return typeof e!="string"||!Dt.test(e)||Number.isNaN(Date.parse(e))?m(`${t} must be an ISO-8601 timestamp`):{ok:!0,value:e}}function Ae(e){let t=S(e,"renderedPrompt");if(!t.ok)return t;if(!z(t.value,["title","body","format"]))return m("renderedPrompt contains an unknown field");let n=D(t.value.title,"renderedPrompt.title");if(!n.ok)return n;if(!/[^\p{White_Space}]/u.test(n.value))return m("renderedPrompt.title must contain non-whitespace text");if(!Se(n.value,Te))return m(`renderedPrompt.title must contain at most ${Te} code points`);let o={title:n.value};if(t.value.body!==void 0){if(typeof t.value.body!="string")return m("renderedPrompt.body must be a string");if(!Se(t.value.body,be))return m(`renderedPrompt.body must contain at most ${be} code points`);o.body=t.value.body}if(t.value.format!==void 0){if(t.value.format!=="plain"&&t.value.format!=="markdown")return m("renderedPrompt.format is invalid");o.format=t.value.format}return{ok:!0,value:o}}function Se(e,t){let n=0,o=e[Symbol.iterator]();for(;!o.next().done;)if(n+=1,n>t)return!1;return!0}function bi(e){let t=Ae(e);return t.ok?u(t.value):r(t.reason)}function Ut(e){try{return Pt(e)?u(e):r("Human Input spec shape is invalid")}catch{return r("Human Input spec shape is invalid")}}function Bt(e){let t=Ut(e);return t.ok?t:m(t.reason)}function Ft(e){if(e==null)return{ok:!0,value:void 0};let t=S(e,"partiallyRenderedDelivery");if(!t.ok)return t;let n=t.value.actions;if(n===void 0)return{ok:!0,value:{}};if(!Array.isArray(n))return m("partiallyRenderedDelivery.actions must be an array");let o=[];for(let i of n){let c=S(i,"delivery action");if(!c.ok)return c;let a=D(c.value.id,"delivery action id");if(!a.ok)return a;let d=Ce(c.value.inputs,`delivery action '${a.value}' inputs`);if(!d.ok)return d;o.push({id:a.value,inputs:d.value})}return{ok:!0,value:{actions:o}}}function Ce(e,t){let n=S(e,t);if(!n.ok)return n;let o={};for(let[i,c]of Object.entries(n.value)){let a=Ne(c,`${t}.${i}`);if(!a.ok)return a;o[i]=a.value}return{ok:!0,value:o}}function Ne(e,t){let n=S(e,t);if(!n.ok)return n;switch(n.value.kind){case"literal":return{ok:!0,value:{kind:"literal",value:n.value.value}};case"human_input_ref":{let i=D(n.value.path,`${t}.path`);return i.ok?{ok:!0,value:{kind:"human_input_ref",path:i.value}}:i}case"array":{if(!Array.isArray(n.value.items))return m(`${t}.items must be an array`);let i=[];for(let[c,a]of n.value.items.entries()){let d=Ne(a,`${t}[${c}]`);if(!d.ok)return d;i.push(d.value)}return{ok:!0,value:{kind:"array",items:i}}}case"object":{let i=Ce(n.value.entries,`${t}.entries`);return i.ok?{ok:!0,value:{kind:"object",entries:i.value}}:i}case"template":{if(!Array.isArray(n.value.parts))return m(`${t}.parts must be an array`);let i=[];for(let[c,a]of n.value.parts.entries()){let d=Ht(a,`${t}.parts[${c}]`);if(!d.ok)return d;i.push(d.value)}return{ok:!0,value:{kind:"template",parts:i}}}default:return m(`${t}.kind is invalid`)}}function Ht(e,t){let n=S(e,t);if(!n.ok)return n;let o=n.value.kind;if(o==="literal")return typeof n.value.value!="string"?m(`${t}.value must be a string`):{ok:!0,value:{kind:"literal",value:n.value.value}};if(o==="human_input_ref"){let i=D(n.value.path,`${t}.path`);return i.ok?{ok:!0,value:{kind:"human_input_ref",path:i.value}}:i}return m(`${t}.kind is invalid`)}function Si(e){let t=S(e,"request body");if(!t.ok)return r(t.reason);let n=Object.keys(t.value).find(T=>!["executionLease","nodeId","renderedPrompt","input","partiallyRenderedDelivery","timeout","expiresAt"].includes(T));if(n!==void 0)return r(`human input body does not accept the "${n}" field`);let o=k(t.value.executionLease);if(!o.ok)return r(o.reason);let i=D(t.value.nodeId,"nodeId");if(!i.ok)return r(i.reason);let c=Ae(t.value.renderedPrompt);if(!c.ok)return r(c.reason);let a=Bt(t.value.input);if(!a.ok)return r(a.reason);let d=D(t.value.timeout,"timeout");if(!d.ok)return r(d.reason);let f=vt(t.value.expiresAt,"expiresAt");if(!f.ok)return r(f.reason);let l=Ft(t.value.partiallyRenderedDelivery);return l.ok?u({executionLease:o.value,nodeId:i.value,renderedPrompt:c.value,input:a.value,timeout:d.value,expiresAt:f.value,...l.value!==void 0?{partiallyRenderedDelivery:l.value}:{}}):r(l.reason)}function Lt(e){return!s(e)||typeof e.id!="string"||e.id.length===0||typeof e.nodeId!="string"||typeof e.status!="string"||!(e.output===null||s(e.output))?r("human input request view must carry id, nodeId, status and output"):u(e)}function Pi(e){if(!s(e)||typeof e.created!="boolean")return r("human input create data must carry created:boolean");let t=Lt(e.request);return t.ok?u({created:e.created,request:t.value}):t}function Ai(e){return!s(e)||e.acknowledged!==!0?r("human input acknowledge data must carry acknowledged:true"):u({acknowledged:!0})}var Ni="ablehi-wfp-user-runtime-manifest/v1",Oi="unknown";function Di(e){return e.endsWith(".js")?`${e.slice(0,-3)}.manifest.json`:`${e}.manifest.json`}var Ui="/internal/deployment-handshake",$t=["start","terminate","send-event","start-webhook-watcher","run-polling-tick","invoke-tool","invoke-discovery","invoke-trigger-handler","invoke-webhook-protocol-adapter","deployment-handshake"],Bi=$t,Fi="HANDSHAKE_REQUEST_INVALID",Hi="HANDSHAKE_SECRET_UNCONFIGURED",Li="HANDSHAKE_SECRET_MISMATCH",$i="HANDSHAKE_CONTRACT_VERSION_MISMATCH",Mi="HANDSHAKE_DISPATCH_NAMESPACE_MISMATCH",Wi="HANDSHAKE_CAPABILITY_MISSING";function Gi(e){return[e.nonce,e.timestamp,e.contractVersion,e.dispatchNamespace].map(n=>`${n.length}:${n}`).join(".")}function Ki(e){return["response",e.nonce,e.contractVersion,e.dispatchNamespace,...e.capabilities].map(n=>`${n.length}:${n}`).join(".")}function ji(e){if(!s(e)||e.ok!==!1||!s(e.error))return r("Server execution error envelope is invalid");let t=Object.keys(e).find(i=>i!=="ok"&&i!=="error"&&i!=="guidance"),n=e.error,o=Object.keys(n).find(i=>i!=="code"&&i!=="message"&&i!=="retryable"&&i!=="issues"&&i!=="details");return t!==void 0||o!==void 0||typeof n.code!="string"||n.code.length===0||typeof n.message!="string"||typeof n.retryable!="boolean"||n.issues!==void 0&&!Array.isArray(n.issues)||n.details!==void 0&&!s(n.details)?r("Server execution error must carry code, message, and boolean retryable"):u(e)}var Oe="workflow.action-transform.v1",zi="/:flowRunId/nodes/:nodeId/action-transform",Mt=1048576;function Qi(e,t){return`/internal/flow-runs/${encodeURIComponent(e)}/nodes/${encodeURIComponent(t)}/action-transform`}function ve(e){return le(e,new WeakSet)}function Zi(e){return ge(new TextEncoder().encode(ve(e)))}function Wt(e){return ge(new TextEncoder().encode([e.flowRunId,e.generationId,e.nodeId,e.operation,String(e.attempt),e.valueDigest].join("\0")))}function es(e){if(!s(e)||!Q(e,["schemaVersion","executionLease","serverTransformRef","operation","attempt","idempotencyIdentity","valueDigest","value"]))return r("action transform request shape is invalid");if(e.schemaVersion!==Oe)return r("action transform schemaVersion is unsupported");let t=k(e.executionLease);if(!t.ok)return r(t.reason);if(!v(e.serverTransformRef))return r("serverTransformRef must be a non-empty string");let n=e.operation;if(!Be(n))return r("action transform operation is invalid");let o=e.attempt;if(!en(n,o))return r(n==="input"?"input transform attempt must be 0":"output and error transform attempt must be a positive integer");if(!fe(e.valueDigest)||!fe(e.idempotencyIdentity))return r("action transform digests must be lowercase SHA-256 hex");let i=Ue(n,e.value);if(!i.ok)return i;if(i.digest!==e.valueDigest)return r("action transform valueDigest does not match value");let c=t.value.anchor.kind==="node"?t.value.anchor.nodeId:void 0;return c===void 0?r("action transform lease anchor must be a node"):Wt({flowRunId:t.value.flowRunId,generationId:t.value.generationId,nodeId:c,operation:n,attempt:o,valueDigest:i.digest})!==e.idempotencyIdentity?r("action transform idempotencyIdentity is invalid"):u({schemaVersion:Oe,executionLease:t.value,serverTransformRef:e.serverTransformRef,operation:n,attempt:o,idempotencyIdentity:e.idempotencyIdentity,valueDigest:i.digest,value:e.value})}function ts(e){if(!s(e)||!Q(e,["operation","valueDigest","value"]))return r("action transform data shape is invalid");let t=e.operation;if(!Be(t)||!fe(e.valueDigest))return r("action transform data operation or digest is invalid");let n=Ue(t,e.value);return n.ok?n.digest!==e.valueDigest?r("action transform response valueDigest does not match value"):u({operation:t,valueDigest:n.digest,value:e.value}):n}function Ue(e,t){let n;try{n=ve(t)}catch(o){return{ok:!1,reason:`action transform value must be JSON: ${o instanceof Error?o.message:String(o)}`}}return new TextEncoder().encode(n).byteLength>Mt?{ok:!1,reason:"action transform value exceeds 1048576 bytes"}:e==="error"&&!Gt(t)?{ok:!1,reason:"error transform value is invalid"}:{ok:!0,digest:ge(new TextEncoder().encode(n))}}function Gt(e){return!(!s(e)||!me(e,["code","error","data"])||!v(e.code)||e.error!==void 0&&(!Kt(e.error)||e.error.code!==e.code))}function le(e,t){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="string"){De(e);let n=JSON.stringify(e);if(n===void 0)throw new TypeError("string is not JSON serializable");return n}if(typeof e=="number"){if(!Number.isFinite(e))throw new TypeError("numbers must be finite");let n=JSON.stringify(e);if(n===void 0)throw new TypeError("number is not JSON serializable");return n}if(typeof e!="object")throw new TypeError("value contains a non-JSON member");if(t.has(e))throw new TypeError("value contains a cycle");t.add(e);try{if(Array.isArray(e)){let c=[];for(let a=0;a<e.length;a+=1){if(!(a in e))throw new TypeError("value contains a sparse array");c.push(le(e[a],t))}return`[${c.join(",")}]`}let n=Object.getPrototypeOf(e);if(n!==Object.prototype&&n!==null)throw new TypeError("value contains a non-plain object");let o=e;return`{${Object.keys(o).sort().map(c=>(De(c),`${JSON.stringify(c)}:${le(o[c],t)}`)).join(",")}}`}finally{t.delete(e)}}function De(e){for(let t=0;t<e.length;t+=1){let n=e.charCodeAt(t);if(n>=55296&&n<=56319){let o=e.charCodeAt(t+1);if(!(o>=56320&&o<=57343))throw new TypeError("strings must not contain lone surrogate code points");t+=1;continue}if(n>=56320&&n<=57343)throw new TypeError("strings must not contain lone surrogate code points")}}function Kt(e){return!s(e)||!tn(e,["source","scope","subject","attempt","code","category","retryable","occurredAt","evidence"],["source","scope","subject","code","occurredAt"])||!qt(e.source)||e.scope!=="flow_step"&&e.scope!=="integration_invocation"||!jt(e.subject)||!v(e.code)||!v(e.occurredAt)||e.attempt!==void 0&&(!s(e.attempt)||!Q(e.attempt,["number"])||!Xt(e.attempt.number))||e.category!==void 0&&!Jt(e.category)||e.retryable!==void 0&&typeof e.retryable!="boolean"?!1:e.evidence===void 0||s(e.evidence)}function qt(e){return s(e)&&Q(e,["project","component"])&&(e.project==="ablehi-server"||e.project==="ablehi-cf-execution-runtime"||e.project==="agentIntegrations")&&v(e.component)}var Vt=["workspaceId","flowId","flowVersionId","flowRunId","stepId","nodeId","integrationId","actionId","toolRef","connectionId","requestId","traceRef"];function jt(e){return s(e)&&me(e,Vt)&&Object.values(e).every(v)}function Jt(e){return["validation","auth","permission","not_found","rate_limit","provider","network","runtime","internal","canceled"].includes(e)}function Xt(e){return typeof e=="number"&&Number.isSafeInteger(e)&&e>0}function ge(e){let t=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),n=e.byteLength*8,o=Math.ceil((e.byteLength+9)/64)*64,i=new Uint8Array(o);i.set(e),i[e.byteLength]=128;let c=new DataView(i.buffer);c.setUint32(o-8,Math.floor(n/4294967296),!1),c.setUint32(o-4,n>>>0,!1);let a=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),d=new Uint32Array(64);for(let f=0;f<o;f+=64){for(let g=0;g<16;g+=1)d[g]=c.getUint32(f+g*4,!1);for(let g=16;g<64;g+=1){let q=d[g-15],te=d[g-2];d[g]=zt(te)+d[g-7]+Yt(q)+d[g-16]>>>0}let l=a[0],T=a[1],U=a[2],Z=a[3],P=a[4],G=a[5],K=a[6],ee=a[7];for(let g=0;g<64;g+=1){let q=ee+Zt(P)+(P&G^~P&K)+t[g]+d[g]>>>0,te=Qt(l)+(l&T^l&U^T&U)>>>0;ee=K,K=G,G=P,P=Z+q>>>0,Z=U,U=T,T=l,l=q+te>>>0}a[0]=a[0]+l>>>0,a[1]=a[1]+T>>>0,a[2]=a[2]+U>>>0,a[3]=a[3]+Z>>>0,a[4]=a[4]+P>>>0,a[5]=a[5]+G>>>0,a[6]=a[6]+K>>>0,a[7]=a[7]+ee>>>0}return[...a].map(f=>f.toString(16).padStart(8,"0")).join("")}function E(e,t){return e>>>t|e<<32-t}function Yt(e){return E(e,7)^E(e,18)^e>>>3}function zt(e){return E(e,17)^E(e,19)^e>>>10}function Qt(e){return E(e,2)^E(e,13)^E(e,22)}function Zt(e){return E(e,6)^E(e,11)^E(e,25)}function Be(e){return e==="input"||e==="output"||e==="error"}function en(e,t){return typeof t=="number"&&Number.isSafeInteger(t)&&(e==="input"?t===0:t>=1)}function fe(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function v(e){return typeof e=="string"&&e.length>0}function Q(e,t){let n=Object.keys(e).sort(),o=[...t].sort();return n.length===o.length&&n.every((i,c)=>i===o[c])}function me(e,t){return Object.keys(e).every(n=>t.includes(n))}function tn(e,t,n){return me(e,t)&&n.every(o=>o in e)}export{zi as ACTION_TRANSFORM_ROUTE_SUBPATH,Oe as ACTION_TRANSFORM_SCHEMA_VERSION,Gn as COMPLETE_EVENT_WAIT_ROUTE_SUBPATH,sn as CONTEXT_STATE_CLEANUP_ROUTE_PATH,$t as DEPLOYMENT_HANDSHAKE_DISPATCHER_CAPABILITIES,Bi as DEPLOYMENT_HANDSHAKE_REQUIRED_CAPABILITIES,Ui as DEPLOYMENT_HANDSHAKE_ROUTE,oo as DISCOVERY_INVOCATION_EGRESS_GRANT_ROUTE_SUBPATH,vo as DISCOVERY_INVOCATION_RUNTIME_CREDENTIAL_ROUTE_SUBPATH,uo as EGRESS_GRANT_AUDIT_ROUTE_SUBPATH,ao as EGRESS_GRANT_CONSUME_ROUTE_SUBPATH,xt as EGRESS_GRANT_SCOPE_KINDS,fn as EXECUTION_CONTEXT_ROUTE_SUBPATH,Tn as EXECUTION_LEASE_INVALID,kn as EXECUTION_LEASE_ROUTE_SUBPATH,bn as EXECUTION_LEASE_SUPERSEDED,ni as FILE_ACCESS_ROUTE_SUBPATH,ti as FILE_COMPLETE_ROUTE_SUBPATH,oi as FILE_CONTENT_ROUTE_SUBPATH,ri as FILE_STAT_ROUTE_SUBPATH,ei as FILE_UPLOAD_SESSION_ROUTE_SUBPATH,no as FLOW_RUN_EGRESS_GRANT_ROUTE_SUBPATH,Mn as FLOW_RUN_EXECUTION_EVENTS_ROUTE_SUBPATH,$n as FLOW_RUN_RESULT_ROUTE_SUBPATH,Oo as FLOW_RUN_RUNTIME_CREDENTIAL_ROUTE_SUBPATH,ar as HANDLER_BUNDLES_ROUTE_SUBPATH,Wi as HANDSHAKE_CAPABILITY_MISSING,$i as HANDSHAKE_CONTRACT_VERSION_MISMATCH,Mi as HANDSHAKE_DISPATCH_NAMESPACE_MISMATCH,Fi as HANDSHAKE_REQUEST_INVALID,Li as HANDSHAKE_SECRET_MISMATCH,Hi as HANDSHAKE_SECRET_UNCONFIGURED,Ii as HUMAN_INPUTS_ROUTE_SUBPATH,xi as HUMAN_INPUT_ACKNOWLEDGE_ROUTE_SUBPATH,Pn as HUMAN_INPUT_CANCELLED_BY_RESET,ki as HUMAN_INPUT_EXPIRE_ROUTE_SUBPATH,be as HUMAN_INPUT_PROMPT_BODY_MAX_CODE_POINTS,Te as HUMAN_INPUT_PROMPT_TITLE_MAX_CODE_POINTS,yi as HUMAN_INPUT_REQUEST_ROUTE_SUBPATH,Ct as HUMAN_INPUT_RESOLVED_EVENT_PREFIX,de as INTERNAL_DISCOVERY_INVOCATIONS_ROUTE_PREFIX,_e as INTERNAL_EGRESS_GRANTS_ROUTE_PREFIX,O as INTERNAL_FILES_ROUTE_PREFIX,R as INTERNAL_FLOW_RUNS_ROUTE_PREFIX,rt as INTERNAL_FLOW_VERSIONS_ROUTE_PREFIX,ie as INTERNAL_INSTALLATIONS_ROUTE_PREFIX,L as INTERNAL_POLLING_TRIGGER_INSTANCES_ROUTE_PREFIX,ce as INTERNAL_TOOL_INVOCATIONS_ROUTE_PREFIX,F as INTERNAL_WEBHOOK_TRIGGER_INSTANCES_ROUTE_PREFIX,Wr as POLLING_TRIGGER_CONTEXT_ROUTE_SUBPATH,io as POLLING_TRIGGER_EGRESS_GRANT_ROUTE_SUBPATH,Gr as POLLING_TRIGGER_HANDLER_BUNDLES_ROUTE_SUBPATH,Uo as POLLING_TRIGGER_RUNTIME_CREDENTIAL_ROUTE_SUBPATH,Kr as POLLING_TRIGGER_TICK_EVENTS_ROUTE_SUBPATH,Wn as REGISTER_EVENT_WAIT_ROUTE_SUBPATH,Wo as RUNTIME_CREDENTIAL_SESSION_SCOPE_KINDS,Ze as RUNTIME_REPORTED_EXECUTION_EVENT_TYPES,wn as RUN_DISPATCH_UNAVAILABLE,Fe as SERVER_EXECUTION_CONTRACT_VERSION,Ln as STEP_RESULT_ROUTE_SUBPATH,ur as TOOL_HANDLER_BUNDLES_ROUTE_SUBPATH,ro as TOOL_INVOCATION_EGRESS_GRANT_ROUTE_SUBPATH,Do as TOOL_INVOCATION_RUNTIME_CREDENTIAL_ROUTE_SUBPATH,Sn as WAIT_EXECUTION_SUPERSEDED,Ar as WEBHOOK_PROTOCOL_ADAPTER_BUNDLE_ROUTE_SUBPATH,Nr as WEBHOOK_PROTOCOL_ADAPTER_MODULE,kr as WEBHOOK_TRIGGER_CONTEXT_ROUTE_SUBPATH,Er as WEBHOOK_TRIGGER_DELIVERY_ROUTE_SUBPATH,so as WEBHOOK_TRIGGER_EGRESS_GRANT_ROUTE_SUBPATH,_r as WEBHOOK_TRIGGER_EVENTS_ROUTE_SUBPATH,xr as WEBHOOK_TRIGGER_HANDLER_BUNDLES_ROUTE_SUBPATH,hr as WEBHOOK_TRIGGER_REARM_ROUTE_SUBPATH,Bo as WEBHOOK_TRIGGER_RUNTIME_CREDENTIAL_ROUTE_SUBPATH,Ni as WFP_USER_RUNTIME_MANIFEST_FORMAT_VERSION,Oi as WFP_USER_RUNTIME_UNKNOWN_SOURCE_REVISION,_n as WORKFLOW_RESTART_INSTANCE_UNAVAILABLE,hn as WORKFLOW_RESTART_REJECTED,En as WORKFLOW_RESTART_REQUEST_INVALID,xn as WORKFLOW_RESTART_ROUTE,An as acquireExecutionLeasePath,Wt as actionTransformIdempotencyIdentity,Qi as actionTransformPath,Zi as actionTransformValueDigest,Jn as completeEventWaitPath,Gi as deploymentHandshakeProbePayload,Ki as deploymentHandshakeResponseProofPayload,lo as discoveryInvocationEgressGrantPath,Lo as discoveryInvocationRuntimeCredentialPath,Ro as egressGrantAuditPath,mo as egressGrantConsumePath,gn as executionContextPath,co as flowRunEgressGrantPath,Vn as flowRunExecutionEventsPath,qn as flowRunResultPath,Fo as flowRunRuntimeCredentialPath,Or as flowScriptProtocolAdapterModuleName,cr as handlerBundlesPath,_i as humanInputAcknowledgePath,Ei as humanInputExpirePath,Pe as humanInputRequestPath,hi as humanInputResolvedEventType,At as humanInputsPath,ui as internalFileAccessPath,ai as internalFileCompletePath,di as internalFileContentPath,ci as internalFileStatPath,si as internalFileUploadSessionPath,ii as internalFilesPath,C as isValidRequestDigest,Nn as parseAcquireExecutionLeaseData,Cn as parseAcquireExecutionLeaseRequest,ts as parseActionTransformData,es as parseActionTransformRequest,nr as parseCompleteFlowRunWaitBody,or as parseCompleteFlowRunWaitData,an as parseContextStateCleanupRequestBody,un as parseContextStateCleanupResponseData,b as parseContextStateScope,Si as parseCreateHumanInputBody,ko as parseDiscoveryGrantBody,qo as parseDiscoveryRuntimeCredentialBody,ho as parseEgressGrantAuditBody,_o as parseEgressGrantConsumeBody,To as parseEgressGrantConsumeData,wo as parseEgressGrantData,Ie as parseExecutionAnchor,mn as parseExecutionContextData,k as parseExecutionLease,bt as parseFileMetadataData,Y as parseFileRefData,ne as parseFileRuntimeLimits,Tt as parseFileUploadSessionData,Io as parseFlowActionGrantBody,er as parseFlowRunExecutionEventBody,Zn as parseFlowRunExecutionEventData,zn as parseFlowRunResultBody,Qn as parseFlowRunResultData,Go as parseFlowRuntimeCredentialBody,ir as parseFlowWaitResolvedEvent,it as parseHandlerBundle,pr as parseHandlerBundlesData,Ai as parseHumanInputAcknowledgeData,Pi as parseHumanInputCreateData,Lt as parseHumanInputRequestViewData,wi as parseHumanInputResolvedEvent,Nt as parseHumanInputResponse,Ti as parseHumanInputResponseForSpec,Ut as parseHumanInputSpec,pi as parseInternalFileAccessData,Xr as parsePollingPublishBody,Vo as parsePollingRuntimeCredentialBody,lt as parsePollingTriggerContext,Jr as parsePollingTriggerDispatchData,xo as parsePollingTriggerGrantBody,Yr as parsePublishPollingTickEventsData,tr as parseRegisterFlowRunWaitBody,rr as parseRegisterFlowRunWaitData,bi as parseRenderedHumanInputPrompt,Jo as parseRuntimeCredentialSessionCredential,J as parseRuntimeNetwork,ji as parseServerExecutionErrorEnvelope,yo as parseSingleToolGrantBody,Ko as parseSingleToolRuntimeCredentialBody,Xn as parseStepRecordBody,Yn as parseStepRecordData,lr as parseToolHandlerBundlesData,se as parseTriggerFileRuntimeDispatch,Ur as parseTriggerHandlerBundlesData,ct as parseWebhookDelivery,vr as parseWebhookDeliveryDispatchData,Br as parseWebhookPublishEventsBody,Fr as parseWebhookRearmBody,jo as parseWebhookRuntimeCredentialBody,Eo as parseWebhookTriggerGrantBody,Dr as parseWebhookWatcherContext,On as parseWorkflowDispatchRestartRequest,Dn as parseWorkflowDispatchRestartResponse,qr as pollingTriggerContextPath,fo as pollingTriggerEgressGrantPath,Vr as pollingTriggerHandlerBundlesPath,$o as pollingTriggerRuntimeCredentialPath,jr as pollingTriggerTickEventsPath,jn as registerEventWaitPath,_t as requestHasMultipartFileParts,Kn as stepResultPath,dr as toolHandlerBundlesPath,po as toolInvocationEgressGrantPath,Ho as toolInvocationRuntimeCredentialPath,Cr as webhookProtocolAdapterBundlePath,wr as webhookTriggerContextPath,br as webhookTriggerDeliveryPath,go as webhookTriggerEgressGrantPath,Sr as webhookTriggerEventsPath,Tr as webhookTriggerHandlerBundlesPath,Pr as webhookTriggerRearmPath,Mo as webhookTriggerRuntimeCredentialPath,Di as wfpUserRuntimeManifestPath};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ablehi/server-execution-contract",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "Ablehi server to Cloudflare execution contract.",
5
5
  "license": "Apache-2.0",
6
6
  "publishConfig": {
@@ -18,14 +18,19 @@
18
18
  "types": "./dist/edge.d.ts",
19
19
  "import": "./dist/edge.js"
20
20
  },
21
+ "./action-transform": {
22
+ "types": "./dist/action-transform.d.ts",
23
+ "import": "./dist/action-transform.js"
24
+ },
21
25
  "./package.json": "./package.json"
22
26
  },
23
27
  "files": [
24
28
  "dist"
25
29
  ],
26
30
  "dependencies": {
27
- "@ablehi/error-contract": "0.0.2",
28
- "@ablehi/flow-contract": "0.3.0"
31
+ "@ablehi/ais-package-contract": "0.0.7",
32
+ "@ablehi/error-contract": "0.0.3",
33
+ "@ablehi/flow-contract": "0.3.2"
29
34
  },
30
35
  "devDependencies": {
31
36
  "@typescript-eslint/eslint-plugin": "^8.62.0",