@ablehi/server-execution-contract 0.1.4 → 0.1.5

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/edge.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export { CONTEXT_STATE_CLEANUP_ROUTE_PATH, CompleteFlowRunWaitBody, CompleteFlowRunWaitData, ContextStateCleanupRequestBody, ContextStateCleanupResponseData, ContextStateScope, CreateHumanInputRequestBody, DEPLOYMENT_HANDSHAKE_DISPATCHER_CAPABILITIES, DEPLOYMENT_HANDSHAKE_REQUIRED_CAPABILITIES, DEPLOYMENT_HANDSHAKE_ROUTE, DeploymentHandshakeData, DeploymentHandshakeRequestBody, DeploymentHandshakeResponse, EGRESS_GRANT_AUDIT_ROUTE_SUBPATH, EGRESS_GRANT_CONSUME_ROUTE_SUBPATH, EGRESS_GRANT_SCOPE_KINDS, EVENT_WAIT_ROUTE_SUBPATH, EXECUTION_CONTEXT_ROUTE_SUBPATH, EgressGrant, EgressGrantAuditBody, EgressGrantBodyParseResult, EgressGrantConsumeBody, EgressGrantCredentialMaterial, EgressGrantFileRuntime, EgressGrantScopeKind, ExecutionBinding, ExecutionBindingConnection, ExecutionContextCompiled, ExecutionContextData, FILE_ACCESS_ROUTE_SUBPATH, FILE_COMPLETE_ROUTE_SUBPATH, FILE_CONTENT_ROUTE_SUBPATH, FILE_STAT_ROUTE_SUBPATH, FILE_UPLOAD_SESSION_ROUTE_SUBPATH, FLOW_RUN_EGRESS_GRANT_ROUTE_SUBPATH, FLOW_RUN_EXECUTION_EVENTS_ROUTE_SUBPATH, FLOW_RUN_EXECUTION_EVENT_TYPES, FLOW_RUN_RESULT_ROUTE_SUBPATH, FLOW_RUN_RUNTIME_CREDENTIAL_ROUTE_SUBPATH, FileMetadataData, FileRefData, FileRuntimeLimits, FileRuntimeScope, FileRuntimeScopeKind, FileUploadSessionData, FlowActionGrantBody, FlowExecutionContextFileRuntime, FlowRunExecutionEventBody, FlowRunExecutionEventData, FlowRunExecutionEventType, FlowRunInputFactBody, FlowRunResultData, FlowRunResultRequestBody, FlowRuntimeCredentialBody, HANDLER_BUNDLES_ROUTE_SUBPATH, HANDSHAKE_CAPABILITY_MISSING, HANDSHAKE_CONTRACT_VERSION_MISMATCH, HANDSHAKE_DISPATCH_NAMESPACE_MISMATCH, HANDSHAKE_REQUEST_INVALID, HANDSHAKE_SECRET_MISMATCH, HANDSHAKE_SECRET_UNCONFIGURED, HUMAN_INPUTS_ROUTE_SUBPATH, HUMAN_INPUT_ACKNOWLEDGE_ROUTE_SUBPATH, HUMAN_INPUT_EXPIRE_ROUTE_SUBPATH, HUMAN_INPUT_REQUEST_ROUTE_SUBPATH, HUMAN_INPUT_RESOLVED_EVENT_PREFIX, HandlerBundle, HandlerBundleModule, HandlerBundlesData, HandlerBundlesParseResult, HumanInputActor, HumanInputOutput, HumanInputRequestView, HumanInputResolvedEvent, HumanInputResponse, INTERNAL_EGRESS_GRANTS_ROUTE_PREFIX, INTERNAL_FILES_ROUTE_PREFIX, INTERNAL_FLOW_RUNS_ROUTE_PREFIX, INTERNAL_FLOW_VERSIONS_ROUTE_PREFIX, INTERNAL_INSTALLATIONS_ROUTE_PREFIX, INTERNAL_POLLING_TRIGGER_INSTANCES_ROUTE_PREFIX, INTERNAL_TOOL_INVOCATIONS_ROUTE_PREFIX, INTERNAL_WEBHOOK_TRIGGER_INSTANCES_ROUTE_PREFIX, InternalFileAccessData, InternalFileAccessIntent, POLLING_TRIGGER_CONTEXT_ROUTE_SUBPATH, POLLING_TRIGGER_EGRESS_GRANT_ROUTE_SUBPATH, POLLING_TRIGGER_HANDLER_BUNDLES_ROUTE_SUBPATH, POLLING_TRIGGER_RUNTIME_CREDENTIAL_ROUTE_SUBPATH, POLLING_TRIGGER_TICK_EVENTS_ROUTE_SUBPATH, PackagePollingTriggerRuntimeDescriptor, PackageWebhookTriggerRuntimeDescriptor, ParsedFlowRunResultBody, PartiallyRenderedHumanInputDelivery, PartiallyRenderedMapping, PartiallyRenderedTemplatePart, PartiallyRenderedValue, PollingPublishBody, PollingPublishEvent, PollingRuntimeCredentialBody, PollingTriggerContext, PollingTriggerGrantBody, PresignedFileUrlData, PublishPollingTickEventResult, PublishPollingTickEventsData, RUNTIME_CREDENTIAL_SESSION_SCOPE_KINDS, RegisterFlowRunWaitBody, RegisterFlowRunWaitData, RenderedFlowComposition, RenderedHumanInputPrompt, RuntimeCredentialSession, RuntimeCredentialSessionNetwork, RuntimeCredentialSessionScopeKind, RuntimeNetwork, RuntimeNetworkModel, SERVER_EXECUTION_CONTRACT_VERSION, STEP_RESULT_ROUTE_SUBPATH, ServerExecutionContractVersion, SingleToolGrantBody, StepRecordBody, StepRecordBodyParseResult, StepRecordData, StepRecordResult, TOOL_HANDLER_BUNDLES_ROUTE_SUBPATH, TOOL_INVOCATION_EGRESS_GRANT_ROUTE_SUBPATH, TOOL_INVOCATION_RUNTIME_CREDENTIAL_ROUTE_SUBPATH, ToolHandlerBundlesData, TriggerConnectionInfo, TriggerHandlerBundlesData, TriggerHandlerModule, WEBHOOK_PROTOCOL_ADAPTER_BUNDLE_ROUTE_SUBPATH, WEBHOOK_PROTOCOL_ADAPTER_MODULE, WEBHOOK_TRIGGER_CONTEXT_ROUTE_SUBPATH, WEBHOOK_TRIGGER_DELIVERY_ROUTE_SUBPATH, WEBHOOK_TRIGGER_EGRESS_GRANT_ROUTE_SUBPATH, WEBHOOK_TRIGGER_EVENTS_ROUTE_SUBPATH, WEBHOOK_TRIGGER_HANDLER_BUNDLES_ROUTE_SUBPATH, WEBHOOK_TRIGGER_REARM_ROUTE_SUBPATH, WEBHOOK_TRIGGER_RUNTIME_CREDENTIAL_ROUTE_SUBPATH, WFP_USER_RUNTIME_MANIFEST_FORMAT_VERSION, WFP_USER_RUNTIME_UNKNOWN_SOURCE_REVISION, WebhookDelivery, WebhookProtocolAdapterBundleData, WebhookProtocolAdapterModule, WebhookPublishEvent, WebhookPublishEventsBody, WebhookPublishEventsData, WebhookRearmBody, WebhookRearmData, WebhookRuntimeCredentialBody, WebhookTriggerGrantBody, WebhookTriggerVerificationMethod, WebhookWatcherContext, WfpUserRuntimeManifest, deploymentHandshakeProbePayload, deploymentHandshakeResponseProofPayload, egressGrantAuditPath, egressGrantConsumePath, eventWaitPath, executionContextPath, flowRunEgressGrantPath, flowRunExecutionEventsPath, flowRunResultPath, flowRunRuntimeCredentialPath, flowScriptProtocolAdapterModuleName, handlerBundlesPath, humanInputAcknowledgePath, humanInputExpirePath, humanInputRequestPath, humanInputResolvedEventType, humanInputsPath, internalFileAccessPath, internalFileCompletePath, internalFileContentPath, internalFileStatPath, internalFileUploadSessionPath, internalFilesPath, isValidRequestDigest, parseCompleteFlowRunWaitBody, parseContextStateCleanupRequestBody, parseContextStateCleanupResponseData, parseContextStateScope, parseCreateHumanInputBody, parseEgressGrantAuditBody, parseEgressGrantConsumeBody, parseEgressGrantConsumeData, parseEgressGrantData, parseExecutionContextData, parseFileMetadataData, parseFileRefData, parseFileRuntimeLimits, parseFileUploadSessionData, parseFlowActionGrantBody, parseFlowRunExecutionEventBody, parseFlowRunExecutionEventData, parseFlowRunResultBody, parseFlowRunResultData, parseFlowRuntimeCredentialBody, parseHandlerBundle, parseHandlerBundlesData, parseHumanInputAcknowledgeData, parseHumanInputCreateData, parseHumanInputRequestViewData, parseInternalFileAccessData, parsePollingPublishBody, parsePollingRuntimeCredentialBody, parsePollingTriggerContext, parsePollingTriggerGrantBody, parsePublishPollingTickEventsData, parseRegisterFlowRunWaitBody, parseRegisterFlowRunWaitData, parseRuntimeCredentialSessionCredential, parseRuntimeNetwork, parseSingleToolGrantBody, parseSingleToolRuntimeCredentialBody, parseStepRecordBody, parseStepRecordData, parseToolHandlerBundlesData, parseTriggerHandlerBundlesData, parseWebhookDelivery, parseWebhookPublishEventsBody, parseWebhookRearmBody, parseWebhookRuntimeCredentialBody, parseWebhookTriggerGrantBody, parseWebhookWatcherContext, pollingTriggerContextPath, pollingTriggerEgressGrantPath, pollingTriggerHandlerBundlesPath, pollingTriggerRuntimeCredentialPath, pollingTriggerTickEventsPath, requestHasMultipartFileParts, stepResultPath, toolHandlerBundlesPath, toolInvocationEgressGrantPath, toolInvocationRuntimeCredentialPath, webhookProtocolAdapterBundlePath, webhookTriggerContextPath, webhookTriggerDeliveryPath, webhookTriggerEgressGrantPath, webhookTriggerEventsPath, webhookTriggerHandlerBundlesPath, webhookTriggerRearmPath, webhookTriggerRuntimeCredentialPath, wfpUserRuntimeManifestPath } from './index.js';
1
+ export { CONTEXT_STATE_CLEANUP_ROUTE_PATH, CompleteFlowRunWaitBody, CompleteFlowRunWaitData, ContextStateCleanupRequestBody, ContextStateCleanupResponseData, ContextStateScope, CreateHumanInputRequestBody, DEPLOYMENT_HANDSHAKE_DISPATCHER_CAPABILITIES, DEPLOYMENT_HANDSHAKE_REQUIRED_CAPABILITIES, DEPLOYMENT_HANDSHAKE_ROUTE, DeploymentHandshakeData, DeploymentHandshakeRequestBody, DeploymentHandshakeResponse, EGRESS_GRANT_AUDIT_ROUTE_SUBPATH, EGRESS_GRANT_CONSUME_ROUTE_SUBPATH, EGRESS_GRANT_SCOPE_KINDS, EVENT_WAIT_ROUTE_SUBPATH, EXECUTION_CONTEXT_ROUTE_SUBPATH, EgressGrant, EgressGrantAuditBody, EgressGrantBodyParseResult, EgressGrantConsumeBody, EgressGrantCredentialMaterial, EgressGrantFileRuntime, EgressGrantScopeKind, ExecutionBinding, ExecutionBindingConnection, ExecutionContextCompiled, ExecutionContextData, FILE_ACCESS_ROUTE_SUBPATH, FILE_COMPLETE_ROUTE_SUBPATH, FILE_CONTENT_ROUTE_SUBPATH, FILE_STAT_ROUTE_SUBPATH, FILE_UPLOAD_SESSION_ROUTE_SUBPATH, FLOW_RUN_EGRESS_GRANT_ROUTE_SUBPATH, FLOW_RUN_EXECUTION_EVENTS_ROUTE_SUBPATH, FLOW_RUN_EXECUTION_EVENT_TYPES, FLOW_RUN_RESULT_ROUTE_SUBPATH, FLOW_RUN_RUNTIME_CREDENTIAL_ROUTE_SUBPATH, FileMetadataData, FileRefData, FileRuntimeLimits, FileRuntimeScope, FileRuntimeScopeKind, FileUploadSessionData, FlowActionGrantBody, FlowExecutionContextFileRuntime, FlowRunExecutionEventBody, FlowRunExecutionEventData, FlowRunExecutionEventType, FlowRunInputFactBody, FlowRunResultData, FlowRunResultRequestBody, FlowRuntimeCredentialBody, HANDLER_BUNDLES_ROUTE_SUBPATH, HANDSHAKE_CAPABILITY_MISSING, HANDSHAKE_CONTRACT_VERSION_MISMATCH, HANDSHAKE_DISPATCH_NAMESPACE_MISMATCH, HANDSHAKE_REQUEST_INVALID, HANDSHAKE_SECRET_MISMATCH, HANDSHAKE_SECRET_UNCONFIGURED, HUMAN_INPUTS_ROUTE_SUBPATH, HUMAN_INPUT_ACKNOWLEDGE_ROUTE_SUBPATH, HUMAN_INPUT_EXPIRE_ROUTE_SUBPATH, HUMAN_INPUT_REQUEST_ROUTE_SUBPATH, HUMAN_INPUT_RESOLVED_EVENT_PREFIX, HandlerBundle, HandlerBundleModule, HandlerBundlesData, HandlerBundlesParseResult, HumanInputActor, HumanInputOutput, HumanInputRequestView, HumanInputResolvedEvent, HumanInputResponse, INTERNAL_EGRESS_GRANTS_ROUTE_PREFIX, INTERNAL_FILES_ROUTE_PREFIX, INTERNAL_FLOW_RUNS_ROUTE_PREFIX, INTERNAL_FLOW_VERSIONS_ROUTE_PREFIX, INTERNAL_INSTALLATIONS_ROUTE_PREFIX, INTERNAL_POLLING_TRIGGER_INSTANCES_ROUTE_PREFIX, INTERNAL_TOOL_INVOCATIONS_ROUTE_PREFIX, INTERNAL_WEBHOOK_TRIGGER_INSTANCES_ROUTE_PREFIX, InternalFileAccessData, InternalFileAccessIntent, POLLING_TRIGGER_CONTEXT_ROUTE_SUBPATH, POLLING_TRIGGER_EGRESS_GRANT_ROUTE_SUBPATH, POLLING_TRIGGER_HANDLER_BUNDLES_ROUTE_SUBPATH, POLLING_TRIGGER_RUNTIME_CREDENTIAL_ROUTE_SUBPATH, POLLING_TRIGGER_TICK_EVENTS_ROUTE_SUBPATH, PackagePollingTriggerRuntimeDescriptor, PackageWebhookTriggerRuntimeDescriptor, ParsedFlowRunResultBody, PartiallyRenderedHumanInputDelivery, PartiallyRenderedMapping, PartiallyRenderedTemplatePart, PartiallyRenderedValue, PollingPublishBody, PollingPublishEvent, PollingRuntimeCredentialBody, PollingTriggerContext, PollingTriggerDispatchData, PollingTriggerGrantBody, PresignedFileUrlData, PublishPollingTickEventResult, PublishPollingTickEventsData, RUNTIME_CREDENTIAL_SESSION_SCOPE_KINDS, RegisterFlowRunWaitBody, RegisterFlowRunWaitData, RenderedFlowComposition, RenderedHumanInputPrompt, RuntimeCredentialSession, RuntimeCredentialSessionNetwork, RuntimeCredentialSessionScopeKind, RuntimeNetwork, RuntimeNetworkModel, SERVER_EXECUTION_CONTRACT_VERSION, STEP_RESULT_ROUTE_SUBPATH, ServerExecutionContractVersion, SingleToolGrantBody, StepRecordBody, StepRecordBodyParseResult, StepRecordData, StepRecordResult, TOOL_HANDLER_BUNDLES_ROUTE_SUBPATH, TOOL_INVOCATION_EGRESS_GRANT_ROUTE_SUBPATH, TOOL_INVOCATION_RUNTIME_CREDENTIAL_ROUTE_SUBPATH, ToolHandlerBundlesData, TriggerConnectionInfo, TriggerFileRuntimeDispatch, TriggerHandlerBundlesData, TriggerHandlerModule, WEBHOOK_PROTOCOL_ADAPTER_BUNDLE_ROUTE_SUBPATH, WEBHOOK_PROTOCOL_ADAPTER_MODULE, WEBHOOK_TRIGGER_CONTEXT_ROUTE_SUBPATH, WEBHOOK_TRIGGER_DELIVERY_ROUTE_SUBPATH, WEBHOOK_TRIGGER_EGRESS_GRANT_ROUTE_SUBPATH, WEBHOOK_TRIGGER_EVENTS_ROUTE_SUBPATH, WEBHOOK_TRIGGER_HANDLER_BUNDLES_ROUTE_SUBPATH, WEBHOOK_TRIGGER_REARM_ROUTE_SUBPATH, WEBHOOK_TRIGGER_RUNTIME_CREDENTIAL_ROUTE_SUBPATH, WFP_USER_RUNTIME_MANIFEST_FORMAT_VERSION, WFP_USER_RUNTIME_UNKNOWN_SOURCE_REVISION, WebhookDelivery, WebhookDeliveryDispatchData, WebhookProtocolAdapterBundleData, WebhookProtocolAdapterModule, WebhookPublishEvent, WebhookPublishEventsBody, WebhookPublishEventsData, WebhookRearmBody, WebhookRearmData, WebhookRuntimeCredentialBody, WebhookTriggerGrantBody, WebhookTriggerVerificationMethod, WebhookWatcherContext, WfpUserRuntimeManifest, deploymentHandshakeProbePayload, deploymentHandshakeResponseProofPayload, egressGrantAuditPath, egressGrantConsumePath, eventWaitPath, executionContextPath, flowRunEgressGrantPath, flowRunExecutionEventsPath, flowRunResultPath, flowRunRuntimeCredentialPath, flowScriptProtocolAdapterModuleName, handlerBundlesPath, humanInputAcknowledgePath, humanInputExpirePath, humanInputRequestPath, humanInputResolvedEventType, humanInputsPath, internalFileAccessPath, internalFileCompletePath, internalFileContentPath, internalFileStatPath, internalFileUploadSessionPath, internalFilesPath, isValidRequestDigest, parseCompleteFlowRunWaitBody, parseContextStateCleanupRequestBody, parseContextStateCleanupResponseData, parseContextStateScope, parseCreateHumanInputBody, parseEgressGrantAuditBody, parseEgressGrantConsumeBody, parseEgressGrantConsumeData, parseEgressGrantData, parseExecutionContextData, parseFileMetadataData, parseFileRefData, parseFileRuntimeLimits, parseFileUploadSessionData, parseFlowActionGrantBody, parseFlowRunExecutionEventBody, parseFlowRunExecutionEventData, parseFlowRunResultBody, parseFlowRunResultData, parseFlowRuntimeCredentialBody, parseHandlerBundle, parseHandlerBundlesData, parseHumanInputAcknowledgeData, parseHumanInputCreateData, parseHumanInputRequestViewData, parseInternalFileAccessData, parsePollingPublishBody, parsePollingRuntimeCredentialBody, parsePollingTriggerContext, parsePollingTriggerDispatchData, parsePollingTriggerGrantBody, parsePublishPollingTickEventsData, parseRegisterFlowRunWaitBody, parseRegisterFlowRunWaitData, parseRuntimeCredentialSessionCredential, parseRuntimeNetwork, parseSingleToolGrantBody, parseSingleToolRuntimeCredentialBody, parseStepRecordBody, parseStepRecordData, parseToolHandlerBundlesData, parseTriggerFileRuntimeDispatch, parseTriggerHandlerBundlesData, parseWebhookDelivery, parseWebhookDeliveryDispatchData, parseWebhookPublishEventsBody, parseWebhookRearmBody, parseWebhookRuntimeCredentialBody, parseWebhookTriggerGrantBody, parseWebhookWatcherContext, pollingTriggerContextPath, pollingTriggerEgressGrantPath, pollingTriggerHandlerBundlesPath, pollingTriggerRuntimeCredentialPath, pollingTriggerTickEventsPath, requestHasMultipartFileParts, stepResultPath, toolHandlerBundlesPath, toolInvocationEgressGrantPath, toolInvocationRuntimeCredentialPath, webhookProtocolAdapterBundlePath, webhookTriggerContextPath, webhookTriggerDeliveryPath, webhookTriggerEgressGrantPath, webhookTriggerEventsPath, webhookTriggerHandlerBundlesPath, webhookTriggerRearmPath, webhookTriggerRuntimeCredentialPath, wfpUserRuntimeManifestPath } from './index.js';
2
2
  import '@ablehi/flow-contract';
3
3
  import '@ablehi/error-contract';
package/dist/edge.js CHANGED
@@ -1 +1 @@
1
- var ee="0.2.9";function u(e){return{ok:!0,value:e}}function r(e){return{ok:!1,reason:e}}function i(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Je="/cleanup-state-scopes";function k(e){if(!i(e)||typeof e.kind!="string")return r("context state scope surface shape is invalid");switch(e.kind){case"webhook-trigger":return te(e);case"polling-trigger":return ne(e);case"flow-action":return re(e);default:return r("context state scope kind is invalid")}}function Xe(e){if(!i(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 s=k(o);if(!s.ok)return s;n.push(s.value)}return u({scopes:n})}function Ye(e){return!i(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 te(e){let t=b(e,["kind","workspaceId","triggerInstanceId"]);return t!==void 0?r(`webhook trigger scope does not accept "${t}"`):e.kind!=="webhook-trigger"||!R(e.workspaceId)||!R(e.triggerInstanceId)?r("webhook trigger state scope is invalid"):u({kind:"webhook-trigger",workspaceId:e.workspaceId,triggerInstanceId:e.triggerInstanceId})}function ne(e){let t=b(e,["kind","workspaceId","pollingInstanceId"]);return t!==void 0?r(`polling trigger scope does not accept "${t}"`):e.kind!=="polling-trigger"||!R(e.workspaceId)||!R(e.pollingInstanceId)?r("polling trigger state scope is invalid"):u({kind:"polling-trigger",workspaceId:e.workspaceId,pollingInstanceId:e.pollingInstanceId})}function re(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"||!R(e.workspaceId)||!R(e.flowId)||!R(e.nodeId)||n!==null&&!R(n)?r("flow action state scope is invalid"):u({kind:"flow-action",workspaceId:e.workspaceId,flowId:e.flowId,nodeId:e.nodeId,connectionId:n})}function R(e){return typeof e=="string"&&e.length>0}function b(e,t){return Object.keys(e).find(n=>!t.includes(n))}var g="/internal/flow-runs",et="/:flowRunId/execution-context";function tt(e){return`${g}/${encodeURIComponent(e)}/execution-context`}function oe(e){return!i(e)||!B(e.fileMaxBytes)||!B(e.fileReadMaxBytes)||!B(e.inlineMultipartBytesMax)?r("file runtime limits must carry three positive integer bounds"):u({fileMaxBytes:e.fileMaxBytes,fileReadMaxBytes:e.fileReadMaxBytes,inlineMultipartBytesMax:e.inlineMultipartBytesMax})}function nt(e){if(!i(e))return r("execution context must be a JSON object");let t=e.compiled;if(typeof e.flowRunId!="string"||typeof e.workspaceId!="string"||!i(e.input)||!i(t)||typeof t.irSchemaVersion!="string"||typeof t.interpreterContractVersion!="string"||typeof t.compiledArtifactId!="string"||!i(t.ir)||!Array.isArray(t.ir.nodes)||!se(e.executionBindings))return r("execution context surface shape is invalid");let n=ie(e.fileRuntime);return n.ok?u({...e,fileRuntime:n.value}):r(n.reason)}function ie(e){if(e===null)return u(null);if(!i(e))return r("fileRuntime must be null or an object");let t=oe(e.limits);return t.ok?u({limits:t.value}):r(t.reason)}function se(e){return Array.isArray(e)?e.every(t=>{if(!i(t))return!1;let n=t.connection,o=k(t.stateScope);return typeof t.nodeId=="string"&&typeof t.toolRef=="string"&&i(t.toolDescriptor)&&i(t.integrationDescriptor)&&i(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 B(e){return typeof e=="number"&&Number.isSafeInteger(e)&&e>0}import{parseAblehiErrorDigest as F}from"@ablehi/error-contract";var ut="/:flowRunId/steps/:nodeId/result",at="/:flowRunId/result",dt="/:flowRunId/execution-events",ct="/:flowRunId/event-waits/:nodeId";function lt(e,t){return`${g}/${encodeURIComponent(e)}/steps/${encodeURIComponent(t)}/result`}function pt(e){return`${g}/${encodeURIComponent(e)}/result`}function ft(e){return`${g}/${encodeURIComponent(e)}/execution-events`}function gt(e,t){return`${g}/${encodeURIComponent(e)}/event-waits/${encodeURIComponent(t)}`}function mt(e){if(!i(e))return{ok:!1,kind:"validation",reason:"step record body must be a JSON object"};let t=m(e,["attempt","result","durationMs"]);if(t!==void 0)return{ok:!1,kind:"validation",reason:`step record does not accept the "${t}" field`};let n=e.attempt;if(typeof n!="number"||!Number.isInteger(n)||n<=0)return{ok:!1,kind:"validation",reason:"attempt must be a positive integer"};let o=ue(e.result);if(!o.ok)return o;let s={attempt:n,result:o.value};if(e.durationMs!==void 0){let d=e.durationMs;if(typeof d!="number"||!Number.isFinite(d)||d<0)return{ok:!1,kind:"validation",reason:"durationMs must be a non-negative number"};s.durationMs=d}return{ok:!0,value:s}}function ue(e){if(!i(e))return{ok:!1,kind:"step_result_invalid",reason:"result must be a JSON object"};let t=e.status;if(t==="succeeded"){let n=m(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=m(e,["status","error"]);if(n!==void 0)return{ok:!1,kind:"validation",reason:`step record result does not accept the "${n}" field`};let o=F(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=m(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=m(e,["status","error"]);if(n!==void 0)return{ok:!1,kind:"validation",reason:`step record result does not accept the "${n}" field`};let o=F(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 Rt(e){return!i(e)||typeof e.flowRunId!="string"||typeof e.nodeId!="string"||!ae(e.recorded)?r("step record data surface shape is invalid"):u({flowRunId:e.flowRunId,nodeId:e.nodeId,recorded:e.recorded})}function ae(e){return e==="succeeded"||e==="failed"||e==="skipped"||e==="timed_out"}function yt(e){if(!i(e))return r("result body must be a JSON object");let t=m(e,["status","output","error","composition"]);if(t!==void 0)return r(`result does not accept the "${t}" field`);let n=e.status;if(n!=="succeeded"&&n!=="failed")return r('result status must be "succeeded" or "failed"');let o={status:n};if(e.output!==void 0){if(n!=="succeeded")return r("output is only allowed on a succeeded result");o.output=e.output}if(e.error!==void 0){if(n!=="failed")return r("error is only allowed on a failed result");let s=F(e.error);if(!s.ok)return r(`result error must be an AblehiErrorDigest: ${s.reason}`);o.error=s.value}if(n==="failed"&&o.error===void 0)return r("a failed result must carry an AblehiErrorDigest");if(e.composition!==void 0){if(n!=="succeeded")return r("composition is only allowed on a succeeded result");o.composition=e.composition}return u(o)}function kt(e){return i(e)?u(e):r("flow run result data must be a JSON object")}var de=["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 It(e){if(!i(e))return r("execution event data must be a JSON object");let t=m(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 _t(e){if(!i(e))return r("execution event body must be a JSON object");let t=m(e,["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=e.eventId;if(typeof n!="string"||n.length===0)return r("eventId must be a non-empty string");let o=e.eventType;if(!ce(o))return r("eventType is not a known flow execution event type");let s=e.occurredAt;if(typeof s!="string"||s.length===0)return r("occurredAt must be a non-empty string");let d={eventId:n,eventType:o,occurredAt:s};for(let a of["nodeId","stepRunId","errorId","payloadRef"]){let c=e[a];if(c!==void 0){if(typeof c!="string"||c.length===0)return r(`${a} must be a non-empty string`);d[a]=c}}for(let a of["attempt","durationMs"]){let c=e[a];if(c!==void 0){if(typeof c!="number"||!Number.isFinite(c)||!Number.isInteger(c)||c<0)return r(`${a} must be a non-negative integer`);d[a]=c}}if(e.inputFact!==void 0){if(o!=="step_started")return r("inputFact is only allowed on step_started events");if(d.attempt===void 0)return r("inputFact requires attempt");let a=le(e.inputFact);if(!a.ok)return a;d.inputFact=a.value}return u(d)}function ce(e){return typeof e=="string"&&de.includes(e)}function le(e){if(!i(e))return r("inputFact must be a JSON object");let t=m(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(!i(o))return r("inputFact.domain must be a JSON object");let s=m(o,["irSchemaVersion","interpreterContractVersion","compiledArtifactId","nodeId","algorithmVersion"]);return s!==void 0?r(`inputFact.domain does not accept the "${s}" 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 pe=/^[A-Za-z0-9_-]{1,100}$/;function ht(e){if(!i(e))return r("register body must be a JSON object");let t=m(e,["eventType","correlationKey"]);if(t!==void 0)return r(`register wait does not accept the "${t}" field`);let n=q(e.eventType);if(!n.ok)return r(n.reason);let o=e.correlationKey;return typeof o!="string"||o.length===0?r("correlationKey must be a non-empty string"):u({eventType:n.value,correlationKey:o})}function Et(e){if(!i(e))return r("complete body must be a JSON object");let t=m(e,["eventType","correlationKey","outcome","eventId"]);if(t!==void 0)return r(`complete wait does not accept the "${t}" field`);let n=e.outcome;if(n!=="received"&&n!=="timed_out")return r('outcome must be "received" or "timed_out"');let o=q(e.eventType);if(!o.ok)return r(o.reason);let s=e.correlationKey;if(typeof s!="string"||s.length===0)return r("correlationKey must be a non-empty string");let d={eventType:o.value,correlationKey:s,outcome:n};if(e.eventId!==void 0){if(typeof e.eventId!="string"||e.eventId.length===0)return r("eventId must be a non-empty string");d.eventId=e.eventId}return u(d)}function wt(e){return!i(e)||e.registered!==!0?r("register wait data surface shape is invalid"):u({registered:!0})}function q(e){return typeof e!="string"||e.length===0?r("eventType must be a non-empty string"):pe.test(e)?u(e):r("eventType must match ^[A-Za-z0-9_-]{1,100}$")}function m(e,t){return Object.keys(e).find(n=>!t.includes(n))}var fe="/internal/flow-versions",Tt="/:flowVersionId/handler-bundles",$="/internal/installations",Pt="/:installationId/handler-bundles";function St(e,t){return`${fe}/${encodeURIComponent(e)}/handler-bundles?compiledArtifactId=${encodeURIComponent(t)}`}function bt(e){return`${$}/${encodeURIComponent(e.installationId)}/handler-bundles?workspaceId=${encodeURIComponent(e.workspaceId)}&artifactDigest=${encodeURIComponent(e.artifactDigest)}`}var ge=new Set(["managed_only","managed_plus_unmanaged_sdk"]);function v(e){if(!I(e))return H("runtimeNetwork must be a JSON object");let t=e.networkModel;return typeof t!="string"||!ge.has(t)?H("runtimeNetwork.networkModel is unknown"):!W(e.apiHosts)||!W(e.authHosts)||typeof e.httpsOnly!="boolean"?H("runtimeNetwork host/https fields are invalid"):{ok:!0,value:{networkModel:t,apiHosts:e.apiHosts,authHosts:e.authHosts,httpsOnly:e.httpsOnly}}}function vt(e){if(!I(e)||typeof e.flowVersionId!="string"||typeof e.compiledArtifactId!="string"||!Array.isArray(e.bundles))return E("handler bundles data surface shape is invalid");let t=V(e.bundles);return t.ok?{ok:!0,value:{flowVersionId:e.flowVersionId,compiledArtifactId:e.compiledArtifactId,bundles:t.value}}:t}function Ct(e){if(!I(e)||typeof e.installationId!="string"||typeof e.artifactDigest!="string"||!Array.isArray(e.bundles))return E("tool handler bundles data surface shape is invalid");let t=V(e.bundles);return t.ok?{ok:!0,value:{installationId:e.installationId,artifactDigest:e.artifactDigest,bundles:t.value}}:t}function V(e){let t=[];for(let n of e){let o=me(n);if(!o.ok)return o;t.push(o.value)}return{ok:!0,value:t}}function me(e){if(!I(e)||typeof e.toolRef!="string"||e.kind!=="handler"&&e.kind!=="request")return E("handler bundle entry shape is invalid");if(e.kind==="request"){if(e.module!==void 0)return E("a request bundle must not carry a module");let o=v(e.runtimeNetwork);return o.ok?{ok:!0,value:{toolRef:e.toolRef,kind:"request",runtimeNetwork:o.value}}:o}let t=e.module;if(!I(t)||typeof t.entry!="string"||t.entry.length===0||!Re(t.files))return E("a handler bundle must carry a { entry, files } module");let n=v(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 E(e){return{ok:!1,kind:"shape",reason:e}}function H(e){return{ok:!1,kind:"runtime_network",reason:e}}function I(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function W(e){return Array.isArray(e)&&e.every(t=>typeof t=="string")}function Re(e){return I(e)&&Object.values(e).every(t=>typeof t=="string")}var w="/internal/webhook-trigger-instances",Bt="/:triggerInstanceId/context",Ft="/:triggerInstanceId/handler-bundles",Ht="/:triggerInstanceId/deliveries/:deliveryId",$t="/:triggerInstanceId/events",Mt="/:triggerInstanceId/rearm",x=e=>`${w}/${encodeURIComponent(e)}`;function Gt(e,t){return`${x(e)}/context?artifactDigest=${encodeURIComponent(t)}`}function Kt(e,t){return`${x(e)}/handler-bundles?artifactDigest=${encodeURIComponent(t)}`}function Lt(e,t){return`${x(e)}/deliveries/${encodeURIComponent(t)}`}function qt(e){return`${x(e)}/events`}function Wt(e){return`${x(e)}/rearm`}var Vt="/:installationId/webhook-protocol-adapter-bundle";function jt(e){return`${$}/${encodeURIComponent(e.installationId)}/webhook-protocol-adapter-bundle?workspaceId=${encodeURIComponent(e.workspaceId)}&artifactDigest=${encodeURIComponent(e.artifactDigest)}`}var Jt="modules/webhook/protocol-adapter.js";function Xt(e){return`modules/webhook/protocol-adapter-${e}.js`}function Yt(e){let t=i(e)?k(e.stateScope):r("webhook watcher context state scope is invalid");return!i(e)||typeof e.artifactDigest!="string"||typeof e.triggerRef!="string"||typeof e.triggerName!="string"||typeof e.integrationRef!="string"||!i(e.inputs)||e.connection!==null&&!ye(e.connection)||!ke(e.runtime)||!t.ok||t.value.kind!=="webhook-trigger"?r("webhook watcher context surface shape is invalid"):u(e)}function ye(e){return i(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(!i(e)||e.type!=="webhook"||typeof e.trigger_ref!="string")return!1;let t=e.webhook;return i(t)&&typeof t.event_handler_module=="string"&&typeof t.enable_handler_module=="string"&&typeof t.disable_handler_module=="string"}function zt(e){if(!i(e)||typeof e.deliveryId!="string"||typeof e.receivedAt!="string"||!i(e.request))return r("webhook delivery surface shape is invalid");let t=e.request;return t.method!=="POST"||!i(t.headers)||typeof t.rawBody!="string"?r("webhook delivery request shape is invalid"):u(e)}function Qt(e){if(!i(e)||typeof e.triggerRef!="string"||typeof e.artifactDigest!="string"||!Array.isArray(e.modules)||!e.modules.every(Ie))return{ok:!1,kind:"shape",reason:"trigger handler bundles data surface shape is invalid"};let t=v(e.runtimeNetwork);return t.ok?{ok:!0,value:{triggerRef:e.triggerRef,artifactDigest:e.artifactDigest,modules:e.modules,runtimeNetwork:t.value}}:t}function Ie(e){return i(e)&&typeof e.specifier=="string"&&e.specifier.length>0&&typeof e.source=="string"}function Zt(e){if(!i(e))return r("publish events body must be a JSON object");let t=M(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 s=[];for(let d of o){let a=_e(d);if(!a.ok)return a;s.push(a.value)}return u({deliveryId:n,events:s})}function _e(e){if(!i(e))return r("each event must be a JSON object");let t=M(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(!i(e.payload))return r("event payload must be a JSON object");let s={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");s.dedupeKey=e.dedupeKey}return u(s)}function en(e){if(!i(e))return r("rearm body must be a JSON object");let t=M(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 M(e,t){return Object.keys(e).find(n=>!t.includes(n))}var T="/internal/polling-trigger-instances",on="/:pollingInstanceId/context",sn="/:pollingInstanceId/handler-bundles",un="/:pollingInstanceId/ticks/:tickId/events",G=e=>`${T}/${encodeURIComponent(e)}`;function an(e,t,n){return`${G(e)}/context?artifactDigest=${encodeURIComponent(t)}&tickId=${encodeURIComponent(n)}`}function dn(e,t){return`${G(e)}/handler-bundles?artifactDigest=${encodeURIComponent(t)}`}function cn(e,t){return`${G(e)}/ticks/${encodeURIComponent(t)}/events`}function ln(e){let t=i(e)?k(e.stateScope):r("polling trigger context state scope is invalid");return!i(e)||typeof e.artifactDigest!="string"||typeof e.triggerRef!="string"||typeof e.triggerName!="string"||typeof e.integrationRef!="string"||!i(e.inputs)||e.connection!==null&&!he(e.connection)||!Ee(e.runtime)||!t.ok||t.value.kind!=="polling-trigger"||!we(e.tick)||!xe(e.limits)?r("polling trigger context surface shape is invalid"):u(e)}function he(e){return i(e)&&typeof e.connectionId=="string"&&typeof e.connectionRef=="string"&&typeof e.integrationRef=="string"&&typeof e.authProfileRef=="string"&&typeof e.authType=="string"}function Ee(e){if(!i(e)||e.type!=="polling"||typeof e.trigger_id!="string"||typeof e.trigger_ref!="string")return!1;let t=e.polling;if(!i(t)||typeof t.run_handler_module!="string")return!1;let n=t.schedule;if(!i(n)||n.type!=="interval"||typeof n.every_seconds!="number")return!1;let o=t.dedup;return i(o)&&(o.strategy==="cursor"||o.strategy==="hash"||o.strategy==="id_field")}function we(e){return i(e)&&typeof e.tickId=="string"&&typeof e.scheduledAt=="string"&&typeof e.attempt=="number"}function xe(e){return i(e)&&typeof e.maxEventsPerTick=="number"}function pn(e){if(!i(e))return r("publish body must be a JSON object");let t=j(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 d of n){let a=Te(d);if(!a.ok)return a;o.push(a.value)}let s={events:o};if("nextCursor"in e){let d=e.nextCursor;if(d!==null&&typeof d!="string")return r("nextCursor must be a string, null, or omitted");s.nextCursor=d}return u(s)}function Te(e){if(!i(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`);if(typeof e.eventId!="string"||e.eventId.length===0)return r("event eventId must be a non-empty string");if(!i(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 fn(e){return!i(e)||typeof e.tickId!="string"||typeof e.cursorUpdated!="boolean"||!Array.isArray(e.results)||!e.results.every(Pe)?r("publish polling tick events data surface shape is invalid"):u(e)}function Pe(e){return i(e)&&typeof e.eventId=="string"&&typeof e.dedupeKey=="string"&&typeof e.duplicate=="boolean"&&(e.flowRunId===null||typeof e.flowRunId=="string")}function j(e,t){return Object.keys(e).find(n=>!t.includes(n))}var J="/internal/egress-grants",K="/internal/tool-invocations",In="/:flowRunId/egress-grant",_n="/:invocationId/egress-grant",hn="/:pollingInstanceId/egress-grant",En="/:triggerInstanceId/egress-grant",wn="/:grantId/consume",xn="/:grantId/audit",Tn=e=>`${g}/${encodeURIComponent(e)}/egress-grant`,Pn=e=>`${K}/${encodeURIComponent(e)}/egress-grant`,Sn=e=>`${T}/${encodeURIComponent(e)}/egress-grant`,bn=e=>`${w}/${encodeURIComponent(e)}/egress-grant`,vn=e=>`${J}/${encodeURIComponent(e)}/consume`,Cn=e=>`${J}/${encodeURIComponent(e)}/audit`,Se=["flow_action","single_tool","polling_trigger","webhook_trigger"],be=/^[A-Za-z0-9][A-Za-z0-9:_+/=.-]{15,1023}$/;function P(e){return typeof e=="string"&&be.test(e)}function ve(e){if(!i(e)||e.body_type!=="multipart")return!1;let t=e.body;if(!i(t))return!1;let n=t.parts;return Array.isArray(n)?n.some(o=>i(o)?o.kind==="file"&&typeof o.file_id=="string"&&o.file_id.length>0:!1):!1}function l(e){return{ok:!1,kind:"shape",reason:e}}function S(){return{ok:!1,kind:"request_digest",reason:"request digest is missing or malformed"}}function A(e,t){if(!i(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 N(e){if(!i(e))return"request must be a JSON object"}function An(e){let t=A(e,["nodeId","request","requestDigest"]);if(!t.ok)return l(t.reason);let n=t.record.nodeId;if(typeof n!="string"||n.length===0)return l("nodeId is required");let o=N(t.record.request);if(o!==void 0)return l(o);let s=t.record.requestDigest;return P(s)?{ok:!0,value:{nodeId:n,requestDigest:s,requestHasMultipartFiles:ve(t.record.request)}}:S()}function Nn(e){let t=A(e,["request","requestDigest"]);if(!t.ok)return l(t.reason);let n=N(t.record.request);if(n!==void 0)return l(n);let o=t.record.requestDigest;return P(o)?{ok:!0,value:{requestDigest:o}}:S()}function On(e){let t=A(e,["tickId","request","requestDigest"]);if(!t.ok)return l(t.reason);let n=t.record.tickId;if(typeof n!="string"||n.length===0)return l("tickId is required");let o=N(t.record.request);if(o!==void 0)return l(o);let s=t.record.requestDigest;return P(s)?{ok:!0,value:{tickId:n,requestDigest:s}}:S()}function Dn(e){let t=A(e,["phase","lifecycle","request","requestDigest"]);if(!t.ok)return l(t.reason);let n=t.record.phase;if(n!=="lifecycle"&&n!=="handler")return l('phase must be "lifecycle" or "handler"');let o=t.record.lifecycle,s;if(o!==void 0){if(o!=="enable"&&o!=="disable"&&o!=="renew")return l('lifecycle must be "enable", "disable", or "renew"');s=o}if(n==="lifecycle"&&s===void 0)return l("lifecycle is required for the lifecycle phase");let d=N(t.record.request);if(d!==void 0)return l(d);let a=t.record.requestDigest;return P(a)?{ok:!0,value:{phase:n,...s!==void 0?{lifecycle:s}:{},requestDigest:a}}:S()}function X(e){return Se.includes(e)?e:void 0}var Ce=["scopeKind","scopeId","requestDigest"];function Un(e){if(!i(e))return l("consume body must be a JSON object");for(let s of Object.keys(e))if(!Ce.includes(s))return l(`consume does not accept the "${s}" field`);let t=X(e.scopeKind);if(t===void 0)return l("scopeKind is invalid");let n=e.scopeId;if(typeof n!="string"||n.length===0)return l("scopeId is required");let o=e.requestDigest;return P(o)?{ok:!0,value:{scopeKind:t,scopeId:n,requestDigest:o}}:S()}var Ae=["scopeKind","scopeId","providerHost","status","durationMs","requestBytes","responseBytes","errorCode"];function C(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 Bn(e){if(!i(e))return l("audit body must be a JSON object");for(let p of Object.keys(e))if(!Ae.includes(p))return l(`audit does not accept the "${p}" field`);let t=X(e.scopeKind);if(t===void 0)return l("scopeKind is invalid");let n=e.scopeId;if(typeof n!="string"||n.length===0)return l("scopeId is required");let o=e.providerHost;if(typeof o!="string"||o.length===0)return l("providerHost is required");let s=C(e.durationMs,"durationMs");if(!s.ok)return l(s.reason);let d;if(e.status!==void 0){let p=C(e.status,"status");if(!p.ok)return l(p.reason);d=p.value}let a;if(e.requestBytes!==void 0){let p=C(e.requestBytes,"requestBytes");if(!p.ok)return l(p.reason);a=p.value}let c;if(e.responseBytes!==void 0){let p=C(e.responseBytes,"responseBytes");if(!p.ok)return l(p.reason);c=p.value}let U;if(e.errorCode!==void 0){let p=e.errorCode;if(typeof p!="string"||p.length===0)return l("errorCode must be a non-empty string");U=p}return{ok:!0,value:{scopeKind:t,scopeId:n,providerHost:o,...d!==void 0?{status:d}:{},durationMs:s.value,...a!==void 0?{requestBytes:a}:{},...c!==void 0?{responseBytes:c}:{},...U!==void 0?{errorCode:U}:{}}}}function Fn(e){return!i(e)||!i(e.grant)?r("egress grant envelope must carry a grant object"):u(e.grant)}function Hn(e){return!i(e)||e.consumed!==!0?r("egress grant consume data must carry consumed:true"):u({consumed:!0})}var Wn="/:flowRunId/runtime-credential",Vn="/:invocationId/runtime-credential",jn="/:pollingInstanceId/runtime-credential",Jn="/:triggerInstanceId/runtime-credential",Xn=e=>`${g}/${encodeURIComponent(e)}/runtime-credential`,Yn=e=>`${K}/${encodeURIComponent(e)}/runtime-credential`,zn=e=>`${T}/${encodeURIComponent(e)}/runtime-credential`,Qn=e=>`${w}/${encodeURIComponent(e)}/runtime-credential`,Zn=["flow_action","tool_invoke","polling_trigger","webhook_trigger"];function O(e,t){if(!i(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 er(e){let t=O(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 tr(e){let t=O(e??{},[]);return t.ok?u(null):r(t.reason)}function nr(e){let t=O(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 rr(e){let t=O(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,s=t.record.deliveryId;if(s!==void 0){if(typeof s!="string"||s.length===0)return r("deliveryId must be a non-empty string");o=s}let d,a=t.record.lifecycleOperation;if(a!==void 0){if(a!=="enable"&&a!=="disable"&&a!=="renew")return r('lifecycleOperation must be "enable", "disable", or "renew"');d=a}return n==="lifecycle"&&d===void 0?r("lifecycleOperation is required for the lifecycle execution kind"):u({executionKind:n,...o!==void 0?{deliveryId:o}:{},...d!==void 0?{lifecycleOperation:d}:{}})}function or(e){return!i(e)||typeof e.sessionId!="string"||typeof e.connectionId!="string"||typeof e.authProfileRef!="string"||typeof e.authType!="string"||!i(e.credential)?r("runtime credential session must carry sessionId, connectionId, auth profile facts and a credential object"):u(e.credential)}function D(e){return!i(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 L(e){return!i(e)||e.method!=="GET"&&e.method!=="PUT"||typeof e.url!="string"||typeof e.expires_at!="string"||!De(e.headers)?r("presigned file URL data is invalid"):u(e)}function Ne(e){if(!i(e))return r("file upload session data is invalid");let t=D(e.file);if(!t.ok)return r(t.reason);let n=L(e.upload);return n.ok?u({file:t.value,upload:n.value}):r(n.reason)}function Oe(e){if(!i(e))return r("file metadata data is invalid");let t=D(e.file);return t.ok?u({file:t.value}):r(t.reason)}function De(e){return i(e)?Object.values(e).every(t=>typeof t=="string"):!1}var _="/internal/files",cr="/upload-session",lr="/:fileId/complete",pr="/:fileId/access",fr="/:fileId/stat",gr="/:fileId/content",mr=()=>_,Rr=()=>`${_}/upload-session`,yr=e=>`${_}/${encodeURIComponent(e)}/complete`,kr=(e,t)=>`${_}/${encodeURIComponent(e)}/access?intent=${encodeURIComponent(t)}`,Y=e=>`?scope_kind=${encodeURIComponent(e.scopeKind)}&scope_id=${encodeURIComponent(e.scopeId)}`,Ir=(e,t)=>`${_}/${encodeURIComponent(e)}/stat${Y(t)}`,_r=(e,t)=>`${_}/${encodeURIComponent(e)}/content${Y(t)}`;function hr(e){if(!i(e))return r("internal file access data is invalid");if(e.intent==="runtime_read"||e.intent==="provider_multipart"){let t=D(e.file);if(!t.ok)return r(t.reason);let n=L(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")}var Tr="/:flowRunId/human-inputs",Pr="/:flowRunId/human-inputs/:requestId",Sr="/:flowRunId/human-inputs/:requestId/expire",br="/:flowRunId/human-inputs/:requestId/acknowledge",Ue=e=>`${g}/${encodeURIComponent(e)}/human-inputs`,z=(e,t)=>`${Ue(e)}/${encodeURIComponent(t)}`,vr=(e,t)=>`${z(e,t)}/expire`,Cr=(e,t)=>`${z(e,t)}/acknowledge`,Be="human_input_resolved";function Ar(e){return`${Be}_${e}`}function f(e){return{ok:!1,reason:e}}function y(e,t){return i(e)?{ok:!0,value:e}:f(`${t} must be an object`)}function h(e,t){return typeof e!="string"||e.length===0?f(`${t} must be a non-empty string`):{ok:!0,value:e}}var Fe=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?(?:Z|[+-]\d{2}:\d{2})$/;function He(e,t){return typeof e!="string"||!Fe.test(e)||Number.isNaN(Date.parse(e))?f(`${t} must be an ISO-8601 timestamp`):{ok:!0,value:e}}function $e(e){let t=y(e,"renderedPrompt");if(!t.ok)return t;let n=h(t.value.title,"renderedPrompt.title");if(!n.ok)return n;let o={title:n.value};if(t.value.body!==void 0){if(typeof t.value.body!="string")return f("renderedPrompt.body must be a string");o.body=t.value.body}if(t.value.format!==void 0){if(t.value.format!=="plain"&&t.value.format!=="markdown")return f("renderedPrompt.format is invalid");o.format=t.value.format}return{ok:!0,value:o}}function Me(e){let t=y(e,"input");if(!t.ok)return t;let n=t.value.kind;if(n==="choice"){if(!Array.isArray(t.value.choices))return f("input.choices must be an array")}else if(n!=="text")if(n==="form"){if(!Array.isArray(t.value.fields))return f("input.fields must be an array")}else return f("input.kind is invalid");return{ok:!0,value:t.value}}function Ge(e){if(e==null)return{ok:!0,value:void 0};let t=y(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 f("partiallyRenderedDelivery.actions must be an array");let o=[];for(let s of n){let d=y(s,"delivery action");if(!d.ok)return d;let a=h(d.value.id,"delivery action id");if(!a.ok)return a;let c=Q(d.value.inputs,`delivery action '${a.value}' inputs`);if(!c.ok)return c;o.push({id:a.value,inputs:c.value})}return{ok:!0,value:{actions:o}}}function Q(e,t){let n=y(e,t);if(!n.ok)return n;let o={};for(let[s,d]of Object.entries(n.value)){let a=Z(d,`${t}.${s}`);if(!a.ok)return a;o[s]=a.value}return{ok:!0,value:o}}function Z(e,t){let n=y(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 s=h(n.value.path,`${t}.path`);return s.ok?{ok:!0,value:{kind:"human_input_ref",path:s.value}}:s}case"array":{if(!Array.isArray(n.value.items))return f(`${t}.items must be an array`);let s=[];for(let[d,a]of n.value.items.entries()){let c=Z(a,`${t}[${d}]`);if(!c.ok)return c;s.push(c.value)}return{ok:!0,value:{kind:"array",items:s}}}case"object":{let s=Q(n.value.entries,`${t}.entries`);return s.ok?{ok:!0,value:{kind:"object",entries:s.value}}:s}case"template":{if(!Array.isArray(n.value.parts))return f(`${t}.parts must be an array`);let s=[];for(let[d,a]of n.value.parts.entries()){let c=Ke(a,`${t}.parts[${d}]`);if(!c.ok)return c;s.push(c.value)}return{ok:!0,value:{kind:"template",parts:s}}}default:return f(`${t}.kind is invalid`)}}function Ke(e,t){let n=y(e,t);if(!n.ok)return n;let o=n.value.kind;if(o==="literal")return typeof n.value.value!="string"?f(`${t}.value must be a string`):{ok:!0,value:{kind:"literal",value:n.value.value}};if(o==="human_input_ref"){let s=h(n.value.path,`${t}.path`);return s.ok?{ok:!0,value:{kind:"human_input_ref",path:s.value}}:s}return f(`${t}.kind is invalid`)}function Nr(e){let t=y(e,"request body");if(!t.ok)return r(t.reason);let n=h(t.value.nodeId,"nodeId");if(!n.ok)return r(n.reason);let o=$e(t.value.renderedPrompt);if(!o.ok)return r(o.reason);let s=Me(t.value.input);if(!s.ok)return r(s.reason);let d=h(t.value.timeout,"timeout");if(!d.ok)return r(d.reason);let a=He(t.value.expiresAt,"expiresAt");if(!a.ok)return r(a.reason);let c=Ge(t.value.partiallyRenderedDelivery);return c.ok?u({nodeId:n.value,renderedPrompt:o.value,input:s.value,timeout:d.value,expiresAt:a.value,...c.value!==void 0?{partiallyRenderedDelivery:c.value}:{}}):r(c.reason)}function Le(e){return!i(e)||typeof e.id!="string"||e.id.length===0||typeof e.nodeId!="string"||typeof e.status!="string"||!(e.output===null||i(e.output))?r("human input request view must carry id, nodeId, status and output"):u(e)}function Or(e){if(!i(e)||typeof e.created!="boolean")return r("human input create data must carry created:boolean");let t=Le(e.request);return t.ok?u({created:e.created,request:t.value}):t}function Dr(e){return!i(e)||e.acknowledged!==!0?r("human input acknowledge data must carry acknowledged:true"):u({acknowledged:!0})}var Br="ablehi-wfp-user-runtime-manifest/v1",Fr="unknown";function Hr(e){return e.endsWith(".js")?`${e.slice(0,-3)}.manifest.json`:`${e}.manifest.json`}var Mr="/internal/deployment-handshake",qe=["start","terminate","send-event","start-webhook-watcher","run-polling-tick","invoke-tool","invoke-trigger-handler","invoke-webhook-protocol-adapter","deployment-handshake"],Gr=qe,Kr="HANDSHAKE_REQUEST_INVALID",Lr="HANDSHAKE_SECRET_UNCONFIGURED",qr="HANDSHAKE_SECRET_MISMATCH",Wr="HANDSHAKE_CONTRACT_VERSION_MISMATCH",Vr="HANDSHAKE_DISPATCH_NAMESPACE_MISMATCH",jr="HANDSHAKE_CAPABILITY_MISSING";function Jr(e){return[e.nonce,e.timestamp,e.contractVersion,e.dispatchNamespace].map(n=>`${n.length}:${n}`).join(".")}function Xr(e){return["response",e.nonce,e.contractVersion,e.dispatchNamespace,...e.capabilities].map(n=>`${n.length}:${n}`).join(".")}export{Je as CONTEXT_STATE_CLEANUP_ROUTE_PATH,qe as DEPLOYMENT_HANDSHAKE_DISPATCHER_CAPABILITIES,Gr as DEPLOYMENT_HANDSHAKE_REQUIRED_CAPABILITIES,Mr as DEPLOYMENT_HANDSHAKE_ROUTE,xn as EGRESS_GRANT_AUDIT_ROUTE_SUBPATH,wn as EGRESS_GRANT_CONSUME_ROUTE_SUBPATH,Se as EGRESS_GRANT_SCOPE_KINDS,ct as EVENT_WAIT_ROUTE_SUBPATH,et as EXECUTION_CONTEXT_ROUTE_SUBPATH,pr as FILE_ACCESS_ROUTE_SUBPATH,lr as FILE_COMPLETE_ROUTE_SUBPATH,gr as FILE_CONTENT_ROUTE_SUBPATH,fr as FILE_STAT_ROUTE_SUBPATH,cr as FILE_UPLOAD_SESSION_ROUTE_SUBPATH,In as FLOW_RUN_EGRESS_GRANT_ROUTE_SUBPATH,dt as FLOW_RUN_EXECUTION_EVENTS_ROUTE_SUBPATH,de as FLOW_RUN_EXECUTION_EVENT_TYPES,at as FLOW_RUN_RESULT_ROUTE_SUBPATH,Wn as FLOW_RUN_RUNTIME_CREDENTIAL_ROUTE_SUBPATH,Tt as HANDLER_BUNDLES_ROUTE_SUBPATH,jr as HANDSHAKE_CAPABILITY_MISSING,Wr as HANDSHAKE_CONTRACT_VERSION_MISMATCH,Vr as HANDSHAKE_DISPATCH_NAMESPACE_MISMATCH,Kr as HANDSHAKE_REQUEST_INVALID,qr as HANDSHAKE_SECRET_MISMATCH,Lr as HANDSHAKE_SECRET_UNCONFIGURED,Tr as HUMAN_INPUTS_ROUTE_SUBPATH,br as HUMAN_INPUT_ACKNOWLEDGE_ROUTE_SUBPATH,Sr as HUMAN_INPUT_EXPIRE_ROUTE_SUBPATH,Pr as HUMAN_INPUT_REQUEST_ROUTE_SUBPATH,Be as HUMAN_INPUT_RESOLVED_EVENT_PREFIX,J as INTERNAL_EGRESS_GRANTS_ROUTE_PREFIX,_ as INTERNAL_FILES_ROUTE_PREFIX,g as INTERNAL_FLOW_RUNS_ROUTE_PREFIX,fe as INTERNAL_FLOW_VERSIONS_ROUTE_PREFIX,$ as INTERNAL_INSTALLATIONS_ROUTE_PREFIX,T as INTERNAL_POLLING_TRIGGER_INSTANCES_ROUTE_PREFIX,K as INTERNAL_TOOL_INVOCATIONS_ROUTE_PREFIX,w as INTERNAL_WEBHOOK_TRIGGER_INSTANCES_ROUTE_PREFIX,on as POLLING_TRIGGER_CONTEXT_ROUTE_SUBPATH,hn as POLLING_TRIGGER_EGRESS_GRANT_ROUTE_SUBPATH,sn as POLLING_TRIGGER_HANDLER_BUNDLES_ROUTE_SUBPATH,jn as POLLING_TRIGGER_RUNTIME_CREDENTIAL_ROUTE_SUBPATH,un as POLLING_TRIGGER_TICK_EVENTS_ROUTE_SUBPATH,Zn as RUNTIME_CREDENTIAL_SESSION_SCOPE_KINDS,ee as SERVER_EXECUTION_CONTRACT_VERSION,ut as STEP_RESULT_ROUTE_SUBPATH,Pt as TOOL_HANDLER_BUNDLES_ROUTE_SUBPATH,_n as TOOL_INVOCATION_EGRESS_GRANT_ROUTE_SUBPATH,Vn as TOOL_INVOCATION_RUNTIME_CREDENTIAL_ROUTE_SUBPATH,Vt as WEBHOOK_PROTOCOL_ADAPTER_BUNDLE_ROUTE_SUBPATH,Jt as WEBHOOK_PROTOCOL_ADAPTER_MODULE,Bt as WEBHOOK_TRIGGER_CONTEXT_ROUTE_SUBPATH,Ht as WEBHOOK_TRIGGER_DELIVERY_ROUTE_SUBPATH,En as WEBHOOK_TRIGGER_EGRESS_GRANT_ROUTE_SUBPATH,$t as WEBHOOK_TRIGGER_EVENTS_ROUTE_SUBPATH,Ft as WEBHOOK_TRIGGER_HANDLER_BUNDLES_ROUTE_SUBPATH,Mt as WEBHOOK_TRIGGER_REARM_ROUTE_SUBPATH,Jn as WEBHOOK_TRIGGER_RUNTIME_CREDENTIAL_ROUTE_SUBPATH,Br as WFP_USER_RUNTIME_MANIFEST_FORMAT_VERSION,Fr as WFP_USER_RUNTIME_UNKNOWN_SOURCE_REVISION,Jr as deploymentHandshakeProbePayload,Xr as deploymentHandshakeResponseProofPayload,Cn as egressGrantAuditPath,vn as egressGrantConsumePath,gt as eventWaitPath,tt as executionContextPath,Tn as flowRunEgressGrantPath,ft as flowRunExecutionEventsPath,pt as flowRunResultPath,Xn as flowRunRuntimeCredentialPath,Xt as flowScriptProtocolAdapterModuleName,St as handlerBundlesPath,Cr as humanInputAcknowledgePath,vr as humanInputExpirePath,z as humanInputRequestPath,Ar as humanInputResolvedEventType,Ue as humanInputsPath,kr as internalFileAccessPath,yr as internalFileCompletePath,_r as internalFileContentPath,Ir as internalFileStatPath,Rr as internalFileUploadSessionPath,mr as internalFilesPath,P as isValidRequestDigest,Et as parseCompleteFlowRunWaitBody,Xe as parseContextStateCleanupRequestBody,Ye as parseContextStateCleanupResponseData,k as parseContextStateScope,Nr as parseCreateHumanInputBody,Bn as parseEgressGrantAuditBody,Un as parseEgressGrantConsumeBody,Hn as parseEgressGrantConsumeData,Fn as parseEgressGrantData,nt as parseExecutionContextData,Oe as parseFileMetadataData,D as parseFileRefData,oe as parseFileRuntimeLimits,Ne as parseFileUploadSessionData,An as parseFlowActionGrantBody,_t as parseFlowRunExecutionEventBody,It as parseFlowRunExecutionEventData,yt as parseFlowRunResultBody,kt as parseFlowRunResultData,er as parseFlowRuntimeCredentialBody,me as parseHandlerBundle,vt as parseHandlerBundlesData,Dr as parseHumanInputAcknowledgeData,Or as parseHumanInputCreateData,Le as parseHumanInputRequestViewData,hr as parseInternalFileAccessData,pn as parsePollingPublishBody,nr as parsePollingRuntimeCredentialBody,ln as parsePollingTriggerContext,On as parsePollingTriggerGrantBody,fn as parsePublishPollingTickEventsData,ht as parseRegisterFlowRunWaitBody,wt as parseRegisterFlowRunWaitData,or as parseRuntimeCredentialSessionCredential,v as parseRuntimeNetwork,Nn as parseSingleToolGrantBody,tr as parseSingleToolRuntimeCredentialBody,mt as parseStepRecordBody,Rt as parseStepRecordData,Ct as parseToolHandlerBundlesData,Qt as parseTriggerHandlerBundlesData,zt as parseWebhookDelivery,Zt as parseWebhookPublishEventsBody,en as parseWebhookRearmBody,rr as parseWebhookRuntimeCredentialBody,Dn as parseWebhookTriggerGrantBody,Yt as parseWebhookWatcherContext,an as pollingTriggerContextPath,Sn as pollingTriggerEgressGrantPath,dn as pollingTriggerHandlerBundlesPath,zn as pollingTriggerRuntimeCredentialPath,cn as pollingTriggerTickEventsPath,ve as requestHasMultipartFileParts,lt as stepResultPath,bt as toolHandlerBundlesPath,Pn as toolInvocationEgressGrantPath,Yn as toolInvocationRuntimeCredentialPath,jt as webhookProtocolAdapterBundlePath,Gt as webhookTriggerContextPath,Lt as webhookTriggerDeliveryPath,bn as webhookTriggerEgressGrantPath,qt as webhookTriggerEventsPath,Kt as webhookTriggerHandlerBundlesPath,Wt as webhookTriggerRearmPath,Qn as webhookTriggerRuntimeCredentialPath,Hr as wfpUserRuntimeManifestPath};
1
+ var ne="0.2.10";function u(e){return{ok:!0,value:e}}function r(e){return{ok:!1,reason:e}}function i(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var ze="/cleanup-state-scopes";function k(e){if(!i(e)||typeof e.kind!="string")return r("context state scope surface shape is invalid");switch(e.kind){case"webhook-trigger":return re(e);case"polling-trigger":return oe(e);case"flow-action":return ie(e);default:return r("context state scope kind is invalid")}}function Qe(e){if(!i(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 s=k(o);if(!s.ok)return s;n.push(s.value)}return u({scopes:n})}function Ze(e){return!i(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 re(e){let t=b(e,["kind","workspaceId","triggerInstanceId"]);return t!==void 0?r(`webhook trigger scope does not accept "${t}"`):e.kind!=="webhook-trigger"||!R(e.workspaceId)||!R(e.triggerInstanceId)?r("webhook trigger state scope is invalid"):u({kind:"webhook-trigger",workspaceId:e.workspaceId,triggerInstanceId:e.triggerInstanceId})}function oe(e){let t=b(e,["kind","workspaceId","pollingInstanceId"]);return t!==void 0?r(`polling trigger scope does not accept "${t}"`):e.kind!=="polling-trigger"||!R(e.workspaceId)||!R(e.pollingInstanceId)?r("polling trigger state scope is invalid"):u({kind:"polling-trigger",workspaceId:e.workspaceId,pollingInstanceId:e.pollingInstanceId})}function ie(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"||!R(e.workspaceId)||!R(e.flowId)||!R(e.nodeId)||n!==null&&!R(n)?r("flow action state scope is invalid"):u({kind:"flow-action",workspaceId:e.workspaceId,flowId:e.flowId,nodeId:e.nodeId,connectionId:n})}function R(e){return typeof e=="string"&&e.length>0}function b(e,t){return Object.keys(e).find(n=>!t.includes(n))}var g="/internal/flow-runs",rt="/:flowRunId/execution-context";function ot(e){return`${g}/${encodeURIComponent(e)}/execution-context`}function F(e){return!i(e)||!B(e.fileMaxBytes)||!B(e.fileReadMaxBytes)||!B(e.inlineMultipartBytesMax)?r("file runtime limits must carry three positive integer bounds"):u({fileMaxBytes:e.fileMaxBytes,fileReadMaxBytes:e.fileReadMaxBytes,inlineMultipartBytesMax:e.inlineMultipartBytesMax})}function it(e){if(!i(e))return r("execution context must be a JSON object");let t=e.compiled;if(typeof e.flowRunId!="string"||typeof e.workspaceId!="string"||!i(e.input)||!i(t)||typeof t.irSchemaVersion!="string"||typeof t.interpreterContractVersion!="string"||typeof t.compiledArtifactId!="string"||!i(t.ir)||!Array.isArray(t.ir.nodes)||!ue(e.executionBindings))return r("execution context surface shape is invalid");let n=se(e.fileRuntime);return n.ok?u({...e,fileRuntime:n.value}):r(n.reason)}function se(e){if(e===null)return u(null);if(!i(e))return r("fileRuntime must be null or an object");let t=F(e.limits);return t.ok?u({limits:t.value}):r(t.reason)}function ue(e){return Array.isArray(e)?e.every(t=>{if(!i(t))return!1;let n=t.connection,o=k(t.stateScope);return typeof t.nodeId=="string"&&typeof t.toolRef=="string"&&i(t.toolDescriptor)&&i(t.integrationDescriptor)&&i(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 B(e){return typeof e=="number"&&Number.isSafeInteger(e)&&e>0}import{parseAblehiErrorDigest as H}from"@ablehi/error-contract";var ct="/:flowRunId/steps/:nodeId/result",lt="/:flowRunId/result",pt="/:flowRunId/execution-events",ft="/:flowRunId/event-waits/:nodeId";function gt(e,t){return`${g}/${encodeURIComponent(e)}/steps/${encodeURIComponent(t)}/result`}function mt(e){return`${g}/${encodeURIComponent(e)}/result`}function Rt(e){return`${g}/${encodeURIComponent(e)}/execution-events`}function yt(e,t){return`${g}/${encodeURIComponent(e)}/event-waits/${encodeURIComponent(t)}`}function kt(e){if(!i(e))return{ok:!1,kind:"validation",reason:"step record body must be a JSON object"};let t=m(e,["attempt","result","durationMs"]);if(t!==void 0)return{ok:!1,kind:"validation",reason:`step record does not accept the "${t}" field`};let n=e.attempt;if(typeof n!="number"||!Number.isInteger(n)||n<=0)return{ok:!1,kind:"validation",reason:"attempt must be a positive integer"};let o=ae(e.result);if(!o.ok)return o;let s={attempt:n,result:o.value};if(e.durationMs!==void 0){let d=e.durationMs;if(typeof d!="number"||!Number.isFinite(d)||d<0)return{ok:!1,kind:"validation",reason:"durationMs must be a non-negative number"};s.durationMs=d}return{ok:!0,value:s}}function ae(e){if(!i(e))return{ok:!1,kind:"step_result_invalid",reason:"result must be a JSON object"};let t=e.status;if(t==="succeeded"){let n=m(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=m(e,["status","error"]);if(n!==void 0)return{ok:!1,kind:"validation",reason:`step record result does not accept the "${n}" field`};let o=H(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=m(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=m(e,["status","error"]);if(n!==void 0)return{ok:!1,kind:"validation",reason:`step record result does not accept the "${n}" field`};let o=H(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 It(e){return!i(e)||typeof e.flowRunId!="string"||typeof e.nodeId!="string"||!de(e.recorded)?r("step record data surface shape is invalid"):u({flowRunId:e.flowRunId,nodeId:e.nodeId,recorded:e.recorded})}function de(e){return e==="succeeded"||e==="failed"||e==="skipped"||e==="timed_out"}function _t(e){if(!i(e))return r("result body must be a JSON object");let t=m(e,["status","output","error","composition"]);if(t!==void 0)return r(`result does not accept the "${t}" field`);let n=e.status;if(n!=="succeeded"&&n!=="failed")return r('result status must be "succeeded" or "failed"');let o={status:n};if(e.output!==void 0){if(n!=="succeeded")return r("output is only allowed on a succeeded result");o.output=e.output}if(e.error!==void 0){if(n!=="failed")return r("error is only allowed on a failed result");let s=H(e.error);if(!s.ok)return r(`result error must be an AblehiErrorDigest: ${s.reason}`);o.error=s.value}if(n==="failed"&&o.error===void 0)return r("a failed result must carry an AblehiErrorDigest");if(e.composition!==void 0){if(n!=="succeeded")return r("composition is only allowed on a succeeded result");o.composition=e.composition}return u(o)}function ht(e){return i(e)?u(e):r("flow run result data must be a JSON object")}var ce=["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 wt(e){if(!i(e))return r("execution event data must be a JSON object");let t=m(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 Et(e){if(!i(e))return r("execution event body must be a JSON object");let t=m(e,["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=e.eventId;if(typeof n!="string"||n.length===0)return r("eventId must be a non-empty string");let o=e.eventType;if(!le(o))return r("eventType is not a known flow execution event type");let s=e.occurredAt;if(typeof s!="string"||s.length===0)return r("occurredAt must be a non-empty string");let d={eventId:n,eventType:o,occurredAt:s};for(let a of["nodeId","stepRunId","errorId","payloadRef"]){let c=e[a];if(c!==void 0){if(typeof c!="string"||c.length===0)return r(`${a} must be a non-empty string`);d[a]=c}}for(let a of["attempt","durationMs"]){let c=e[a];if(c!==void 0){if(typeof c!="number"||!Number.isFinite(c)||!Number.isInteger(c)||c<0)return r(`${a} must be a non-negative integer`);d[a]=c}}if(e.inputFact!==void 0){if(o!=="step_started")return r("inputFact is only allowed on step_started events");if(d.attempt===void 0)return r("inputFact requires attempt");let a=pe(e.inputFact);if(!a.ok)return a;d.inputFact=a.value}return u(d)}function le(e){return typeof e=="string"&&ce.includes(e)}function pe(e){if(!i(e))return r("inputFact must be a JSON object");let t=m(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(!i(o))return r("inputFact.domain must be a JSON object");let s=m(o,["irSchemaVersion","interpreterContractVersion","compiledArtifactId","nodeId","algorithmVersion"]);return s!==void 0?r(`inputFact.domain does not accept the "${s}" 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 fe=/^[A-Za-z0-9_-]{1,100}$/;function xt(e){if(!i(e))return r("register body must be a JSON object");let t=m(e,["eventType","correlationKey"]);if(t!==void 0)return r(`register wait does not accept the "${t}" field`);let n=V(e.eventType);if(!n.ok)return r(n.reason);let o=e.correlationKey;return typeof o!="string"||o.length===0?r("correlationKey must be a non-empty string"):u({eventType:n.value,correlationKey:o})}function Tt(e){if(!i(e))return r("complete body must be a JSON object");let t=m(e,["eventType","correlationKey","outcome","eventId"]);if(t!==void 0)return r(`complete wait does not accept the "${t}" field`);let n=e.outcome;if(n!=="received"&&n!=="timed_out")return r('outcome must be "received" or "timed_out"');let o=V(e.eventType);if(!o.ok)return r(o.reason);let s=e.correlationKey;if(typeof s!="string"||s.length===0)return r("correlationKey must be a non-empty string");let d={eventType:o.value,correlationKey:s,outcome:n};if(e.eventId!==void 0){if(typeof e.eventId!="string"||e.eventId.length===0)return r("eventId must be a non-empty string");d.eventId=e.eventId}return u(d)}function Pt(e){return!i(e)||e.registered!==!0?r("register wait data surface shape is invalid"):u({registered:!0})}function V(e){return typeof e!="string"||e.length===0?r("eventType must be a non-empty string"):fe.test(e)?u(e):r("eventType must match ^[A-Za-z0-9_-]{1,100}$")}function m(e,t){return Object.keys(e).find(n=>!t.includes(n))}var ge="/internal/flow-versions",vt="/:flowVersionId/handler-bundles",M="/internal/installations",bt="/:installationId/handler-bundles";function Ct(e,t){return`${ge}/${encodeURIComponent(e)}/handler-bundles?compiledArtifactId=${encodeURIComponent(t)}`}function At(e){return`${M}/${encodeURIComponent(e.installationId)}/handler-bundles?workspaceId=${encodeURIComponent(e.workspaceId)}&artifactDigest=${encodeURIComponent(e.artifactDigest)}`}var me=new Set(["managed_only","managed_plus_unmanaged_sdk"]);function C(e){if(!_(e))return $("runtimeNetwork must be a JSON object");let t=e.networkModel;return typeof t!="string"||!me.has(t)?$("runtimeNetwork.networkModel is unknown"):!j(e.apiHosts)||!j(e.authHosts)||typeof e.httpsOnly!="boolean"?$("runtimeNetwork host/https fields are invalid"):{ok:!0,value:{networkModel:t,apiHosts:e.apiHosts,authHosts:e.authHosts,httpsOnly:e.httpsOnly}}}function Nt(e){if(!_(e)||typeof e.flowVersionId!="string"||typeof e.compiledArtifactId!="string"||!Array.isArray(e.bundles))return E("handler bundles data surface shape is invalid");let t=J(e.bundles);return t.ok?{ok:!0,value:{flowVersionId:e.flowVersionId,compiledArtifactId:e.compiledArtifactId,bundles:t.value}}:t}function Dt(e){if(!_(e)||typeof e.installationId!="string"||typeof e.artifactDigest!="string"||!Array.isArray(e.bundles))return E("tool handler bundles data surface shape is invalid");let t=J(e.bundles);return t.ok?{ok:!0,value:{installationId:e.installationId,artifactDigest:e.artifactDigest,bundles:t.value}}:t}function J(e){let t=[];for(let n of e){let o=Re(n);if(!o.ok)return o;t.push(o.value)}return{ok:!0,value:t}}function Re(e){if(!_(e)||typeof e.toolRef!="string"||e.kind!=="handler"&&e.kind!=="request")return E("handler bundle entry shape is invalid");if(e.kind==="request"){if(e.module!==void 0)return E("a request bundle must not carry a module");let o=C(e.runtimeNetwork);return o.ok?{ok:!0,value:{toolRef:e.toolRef,kind:"request",runtimeNetwork:o.value}}:o}let t=e.module;if(!_(t)||typeof t.entry!="string"||t.entry.length===0||!ye(t.files))return E("a handler bundle must carry a { entry, files } module");let n=C(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 E(e){return{ok:!1,kind:"shape",reason:e}}function $(e){return{ok:!1,kind:"runtime_network",reason:e}}function _(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function j(e){return Array.isArray(e)&&e.every(t=>typeof t=="string")}function ye(e){return _(e)&&Object.values(e).every(t=>typeof t=="string")}var x="/internal/webhook-trigger-instances",Mt="/:triggerInstanceId/context",Gt="/:triggerInstanceId/handler-bundles",Kt="/:triggerInstanceId/deliveries/:deliveryId",Lt="/:triggerInstanceId/events",qt="/:triggerInstanceId/rearm",T=e=>`${x}/${encodeURIComponent(e)}`;function Wt(e,t){return`${T(e)}/context?artifactDigest=${encodeURIComponent(t)}`}function Vt(e,t){return`${T(e)}/handler-bundles?artifactDigest=${encodeURIComponent(t)}`}function jt(e,t){return`${T(e)}/deliveries/${encodeURIComponent(t)}`}function Jt(e){return`${T(e)}/events`}function Xt(e){return`${T(e)}/rearm`}var Yt="/:installationId/webhook-protocol-adapter-bundle";function zt(e){return`${M}/${encodeURIComponent(e.installationId)}/webhook-protocol-adapter-bundle?workspaceId=${encodeURIComponent(e.workspaceId)}&artifactDigest=${encodeURIComponent(e.artifactDigest)}`}var Qt="modules/webhook/protocol-adapter.js";function Zt(e){return`modules/webhook/protocol-adapter-${e}.js`}function en(e){let t=i(e)?k(e.stateScope):r("webhook watcher context state scope is invalid");return!i(e)||typeof e.artifactDigest!="string"||typeof e.triggerRef!="string"||typeof e.triggerName!="string"||typeof e.integrationRef!="string"||!i(e.inputs)||e.connection!==null&&!ke(e.connection)||!Ie(e.runtime)||!t.ok||t.value.kind!=="webhook-trigger"?r("webhook watcher context surface shape is invalid"):u(e)}function ke(e){return i(e)&&typeof e.connectionId=="string"&&typeof e.connectionRef=="string"&&typeof e.integrationRef=="string"&&typeof e.authProfileRef=="string"&&typeof e.authType=="string"}function Ie(e){if(!i(e)||e.type!=="webhook"||typeof e.trigger_ref!="string")return!1;let t=e.webhook;return i(t)&&typeof t.event_handler_module=="string"&&typeof t.enable_handler_module=="string"&&typeof t.disable_handler_module=="string"}function _e(e){if(!i(e)||typeof e.deliveryId!="string"||typeof e.receivedAt!="string"||!i(e.request))return r("webhook delivery surface shape is invalid");let t=e.request;return t.method!=="POST"||!i(t.headers)||typeof t.rawBody!="string"?r("webhook delivery request shape is invalid"):u(e)}function G(e){if(!i(e)||typeof e.token!="string"||typeof e.expiresAt!="string")return r("trigger file runtime dispatch shape is invalid");let t=F(e.limits);return t.ok?u({token:e.token,expiresAt:e.expiresAt,limits:t.value}):r(t.reason)}function tn(e){if(!i(e))return r("webhook delivery dispatch data is invalid");let t=_e(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=G(n);return o.ok?u({delivery:t.value,fileRuntime:o.value}):r(o.reason)}function nn(e){if(!i(e)||typeof e.triggerRef!="string"||typeof e.artifactDigest!="string"||!Array.isArray(e.modules)||!e.modules.every(he))return{ok:!1,kind:"shape",reason:"trigger handler bundles data surface shape is invalid"};let t=C(e.runtimeNetwork);return t.ok?{ok:!0,value:{triggerRef:e.triggerRef,artifactDigest:e.artifactDigest,modules:e.modules,runtimeNetwork:t.value}}:t}function he(e){return i(e)&&typeof e.specifier=="string"&&e.specifier.length>0&&typeof e.source=="string"}function rn(e){if(!i(e))return r("publish events body must be a JSON object");let t=K(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 s=[];for(let d of o){let a=we(d);if(!a.ok)return a;s.push(a.value)}return u({deliveryId:n,events:s})}function we(e){if(!i(e))return r("each event must be a JSON object");let t=K(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(!i(e.payload))return r("event payload must be a JSON object");let s={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");s.dedupeKey=e.dedupeKey}return u(s)}function on(e){if(!i(e))return r("rearm body must be a JSON object");let t=K(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 K(e,t){return Object.keys(e).find(n=>!t.includes(n))}var P="/internal/polling-trigger-instances",cn="/:pollingInstanceId/context",ln="/:pollingInstanceId/handler-bundles",pn="/:pollingInstanceId/ticks/:tickId/events",L=e=>`${P}/${encodeURIComponent(e)}`;function fn(e,t,n){return`${L(e)}/context?artifactDigest=${encodeURIComponent(t)}&tickId=${encodeURIComponent(n)}`}function gn(e,t){return`${L(e)}/handler-bundles?artifactDigest=${encodeURIComponent(t)}`}function mn(e,t){return`${L(e)}/ticks/${encodeURIComponent(t)}/events`}function Ee(e){let t=i(e)?k(e.stateScope):r("polling trigger context state scope is invalid");return!i(e)||typeof e.artifactDigest!="string"||typeof e.triggerRef!="string"||typeof e.triggerName!="string"||typeof e.integrationRef!="string"||!i(e.inputs)||e.connection!==null&&!xe(e.connection)||!Te(e.runtime)||!t.ok||t.value.kind!=="polling-trigger"||!Pe(e.tick)||!Se(e.limits)?r("polling trigger context surface shape is invalid"):u(e)}function Rn(e){if(!i(e))return r("polling trigger dispatch data is invalid");let t=Ee(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=G(n);return o.ok?u({context:t.value,fileRuntime:o.value}):r(o.reason)}function xe(e){return i(e)&&typeof e.connectionId=="string"&&typeof e.connectionRef=="string"&&typeof e.integrationRef=="string"&&typeof e.authProfileRef=="string"&&typeof e.authType=="string"}function Te(e){if(!i(e)||e.type!=="polling"||typeof e.trigger_id!="string"||typeof e.trigger_ref!="string")return!1;let t=e.polling;if(!i(t)||typeof t.run_handler_module!="string")return!1;let n=t.schedule;if(!i(n)||n.type!=="interval"||typeof n.every_seconds!="number")return!1;let o=t.dedup;return i(o)&&(o.strategy==="cursor"||o.strategy==="hash"||o.strategy==="id_field")}function Pe(e){return i(e)&&typeof e.tickId=="string"&&typeof e.scheduledAt=="string"&&typeof e.attempt=="number"}function Se(e){return i(e)&&typeof e.maxEventsPerTick=="number"}function yn(e){if(!i(e))return r("publish body must be a JSON object");let t=X(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 d of n){let a=ve(d);if(!a.ok)return a;o.push(a.value)}let s={events:o};if("nextCursor"in e){let d=e.nextCursor;if(d!==null&&typeof d!="string")return r("nextCursor must be a string, null, or omitted");s.nextCursor=d}return u(s)}function ve(e){if(!i(e))return r("each event must be a JSON object");let t=X(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(!i(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 kn(e){return!i(e)||typeof e.tickId!="string"||typeof e.cursorUpdated!="boolean"||!Array.isArray(e.results)||!e.results.every(be)?r("publish polling tick events data surface shape is invalid"):u(e)}function be(e){return i(e)&&typeof e.eventId=="string"&&typeof e.dedupeKey=="string"&&typeof e.duplicate=="boolean"&&(e.flowRunId===null||typeof e.flowRunId=="string")}function X(e,t){return Object.keys(e).find(n=>!t.includes(n))}var Y="/internal/egress-grants",q="/internal/tool-invocations",xn="/:flowRunId/egress-grant",Tn="/:invocationId/egress-grant",Pn="/:pollingInstanceId/egress-grant",Sn="/:triggerInstanceId/egress-grant",vn="/:grantId/consume",bn="/:grantId/audit",Cn=e=>`${g}/${encodeURIComponent(e)}/egress-grant`,An=e=>`${q}/${encodeURIComponent(e)}/egress-grant`,Nn=e=>`${P}/${encodeURIComponent(e)}/egress-grant`,Dn=e=>`${x}/${encodeURIComponent(e)}/egress-grant`,On=e=>`${Y}/${encodeURIComponent(e)}/consume`,Un=e=>`${Y}/${encodeURIComponent(e)}/audit`,Ce=["flow_action","single_tool","polling_trigger","webhook_trigger"],Ae=/^[A-Za-z0-9][A-Za-z0-9:_+/=.-]{15,1023}$/;function S(e){return typeof e=="string"&&Ae.test(e)}function Ne(e){if(!i(e)||e.body_type!=="multipart")return!1;let t=e.body;if(!i(t))return!1;let n=t.parts;return Array.isArray(n)?n.some(o=>i(o)?o.kind==="file"&&typeof o.file_id=="string"&&o.file_id.length>0:!1):!1}function l(e){return{ok:!1,kind:"shape",reason:e}}function v(){return{ok:!1,kind:"request_digest",reason:"request digest is missing or malformed"}}function N(e,t){if(!i(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 D(e){if(!i(e))return"request must be a JSON object"}function Bn(e){let t=N(e,["nodeId","request","requestDigest"]);if(!t.ok)return l(t.reason);let n=t.record.nodeId;if(typeof n!="string"||n.length===0)return l("nodeId is required");let o=D(t.record.request);if(o!==void 0)return l(o);let s=t.record.requestDigest;return S(s)?{ok:!0,value:{nodeId:n,requestDigest:s,requestHasMultipartFiles:Ne(t.record.request)}}:v()}function Fn(e){let t=N(e,["request","requestDigest"]);if(!t.ok)return l(t.reason);let n=D(t.record.request);if(n!==void 0)return l(n);let o=t.record.requestDigest;return S(o)?{ok:!0,value:{requestDigest:o}}:v()}function Hn(e){let t=N(e,["tickId","request","requestDigest"]);if(!t.ok)return l(t.reason);let n=t.record.tickId;if(typeof n!="string"||n.length===0)return l("tickId is required");let o=D(t.record.request);if(o!==void 0)return l(o);let s=t.record.requestDigest;return S(s)?{ok:!0,value:{tickId:n,requestDigest:s}}:v()}function $n(e){let t=N(e,["phase","lifecycle","deliveryId","request","requestDigest"]);if(!t.ok)return l(t.reason);let n=t.record.phase;if(n!=="lifecycle"&&n!=="handler")return l('phase must be "lifecycle" or "handler"');let o=t.record.lifecycle,s;if(o!==void 0){if(o!=="enable"&&o!=="disable"&&o!=="renew")return l('lifecycle must be "enable", "disable", or "renew"');s=o}if(n==="lifecycle"&&s===void 0)return l("lifecycle is required for the lifecycle phase");let d=t.record.deliveryId,a;if(d!==void 0){if(typeof d!="string"||d.length===0)return l("deliveryId must be a non-empty string");a=d}if(n==="handler"&&a===void 0)return l("deliveryId is required for the handler phase");let c=D(t.record.request);if(c!==void 0)return l(c);let I=t.record.requestDigest;return S(I)?{ok:!0,value:{phase:n,...s!==void 0?{lifecycle:s}:{},...a!==void 0?{deliveryId:a}:{},requestDigest:I}}:v()}function z(e){return Ce.includes(e)?e:void 0}var De=["scopeKind","scopeId","requestDigest"];function Mn(e){if(!i(e))return l("consume body must be a JSON object");for(let s of Object.keys(e))if(!De.includes(s))return l(`consume does not accept the "${s}" field`);let t=z(e.scopeKind);if(t===void 0)return l("scopeKind is invalid");let n=e.scopeId;if(typeof n!="string"||n.length===0)return l("scopeId is required");let o=e.requestDigest;return S(o)?{ok:!0,value:{scopeKind:t,scopeId:n,requestDigest:o}}:v()}var Oe=["scopeKind","scopeId","providerHost","status","durationMs","requestBytes","responseBytes","errorCode"];function A(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 Gn(e){if(!i(e))return l("audit body must be a JSON object");for(let p of Object.keys(e))if(!Oe.includes(p))return l(`audit does not accept the "${p}" field`);let t=z(e.scopeKind);if(t===void 0)return l("scopeKind is invalid");let n=e.scopeId;if(typeof n!="string"||n.length===0)return l("scopeId is required");let o=e.providerHost;if(typeof o!="string"||o.length===0)return l("providerHost is required");let s=A(e.durationMs,"durationMs");if(!s.ok)return l(s.reason);let d;if(e.status!==void 0){let p=A(e.status,"status");if(!p.ok)return l(p.reason);d=p.value}let a;if(e.requestBytes!==void 0){let p=A(e.requestBytes,"requestBytes");if(!p.ok)return l(p.reason);a=p.value}let c;if(e.responseBytes!==void 0){let p=A(e.responseBytes,"responseBytes");if(!p.ok)return l(p.reason);c=p.value}let I;if(e.errorCode!==void 0){let p=e.errorCode;if(typeof p!="string"||p.length===0)return l("errorCode must be a non-empty string");I=p}return{ok:!0,value:{scopeKind:t,scopeId:n,providerHost:o,...d!==void 0?{status:d}:{},durationMs:s.value,...a!==void 0?{requestBytes:a}:{},...c!==void 0?{responseBytes:c}:{},...I!==void 0?{errorCode:I}:{}}}}function Kn(e){return!i(e)||!i(e.grant)?r("egress grant envelope must carry a grant object"):u(e.grant)}function Ln(e){return!i(e)||e.consumed!==!0?r("egress grant consume data must carry consumed:true"):u({consumed:!0})}var Yn="/:flowRunId/runtime-credential",zn="/:invocationId/runtime-credential",Qn="/:pollingInstanceId/runtime-credential",Zn="/:triggerInstanceId/runtime-credential",er=e=>`${g}/${encodeURIComponent(e)}/runtime-credential`,tr=e=>`${q}/${encodeURIComponent(e)}/runtime-credential`,nr=e=>`${P}/${encodeURIComponent(e)}/runtime-credential`,rr=e=>`${x}/${encodeURIComponent(e)}/runtime-credential`,or=["flow_action","tool_invoke","polling_trigger","webhook_trigger"];function O(e,t){if(!i(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 ir(e){let t=O(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 sr(e){let t=O(e??{},[]);return t.ok?u(null):r(t.reason)}function ur(e){let t=O(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 ar(e){let t=O(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,s=t.record.deliveryId;if(s!==void 0){if(typeof s!="string"||s.length===0)return r("deliveryId must be a non-empty string");o=s}let d,a=t.record.lifecycleOperation;if(a!==void 0){if(a!=="enable"&&a!=="disable"&&a!=="renew")return r('lifecycleOperation must be "enable", "disable", or "renew"');d=a}return n==="lifecycle"&&d===void 0?r("lifecycleOperation is required for the lifecycle execution kind"):u({executionKind:n,...o!==void 0?{deliveryId:o}:{},...d!==void 0?{lifecycleOperation:d}:{}})}function dr(e){return!i(e)||typeof e.sessionId!="string"||typeof e.connectionId!="string"||typeof e.authProfileRef!="string"||typeof e.authType!="string"||!i(e.credential)?r("runtime credential session must carry sessionId, connectionId, auth profile facts and a credential object"):u(e.credential)}function U(e){return!i(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 W(e){return!i(e)||e.method!=="GET"&&e.method!=="PUT"||typeof e.url!="string"||typeof e.expires_at!="string"||!Fe(e.headers)?r("presigned file URL data is invalid"):u(e)}function Ue(e){if(!i(e))return r("file upload session data is invalid");let t=U(e.file);if(!t.ok)return r(t.reason);let n=W(e.upload);return n.ok?u({file:t.value,upload:n.value}):r(n.reason)}function Be(e){if(!i(e))return r("file metadata data is invalid");let t=U(e.file);return t.ok?u({file:t.value}):r(t.reason)}function Fe(e){return i(e)?Object.values(e).every(t=>typeof t=="string"):!1}var h="/internal/files",mr="/upload-session",Rr="/:fileId/complete",yr="/:fileId/access",kr="/:fileId/stat",Ir="/:fileId/content",_r=()=>h,hr=()=>`${h}/upload-session`,wr=e=>`${h}/${encodeURIComponent(e)}/complete`,Er=(e,t)=>`${h}/${encodeURIComponent(e)}/access?intent=${encodeURIComponent(t)}`,Q=e=>`?scope_kind=${encodeURIComponent(e.scopeKind)}&scope_id=${encodeURIComponent(e.scopeId)}`,xr=(e,t)=>`${h}/${encodeURIComponent(e)}/stat${Q(t)}`,Tr=(e,t)=>`${h}/${encodeURIComponent(e)}/content${Q(t)}`;function Pr(e){if(!i(e))return r("internal file access data is invalid");if(e.intent==="runtime_read"||e.intent==="provider_multipart"){let t=U(e.file);if(!t.ok)return r(t.reason);let n=W(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")}var Cr="/:flowRunId/human-inputs",Ar="/:flowRunId/human-inputs/:requestId",Nr="/:flowRunId/human-inputs/:requestId/expire",Dr="/:flowRunId/human-inputs/:requestId/acknowledge",He=e=>`${g}/${encodeURIComponent(e)}/human-inputs`,Z=(e,t)=>`${He(e)}/${encodeURIComponent(t)}`,Or=(e,t)=>`${Z(e,t)}/expire`,Ur=(e,t)=>`${Z(e,t)}/acknowledge`,$e="human_input_resolved";function Br(e){return`${$e}_${e}`}function f(e){return{ok:!1,reason:e}}function y(e,t){return i(e)?{ok:!0,value:e}:f(`${t} must be an object`)}function w(e,t){return typeof e!="string"||e.length===0?f(`${t} must be a non-empty string`):{ok:!0,value:e}}var Me=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?(?:Z|[+-]\d{2}:\d{2})$/;function Ge(e,t){return typeof e!="string"||!Me.test(e)||Number.isNaN(Date.parse(e))?f(`${t} must be an ISO-8601 timestamp`):{ok:!0,value:e}}function Ke(e){let t=y(e,"renderedPrompt");if(!t.ok)return t;let n=w(t.value.title,"renderedPrompt.title");if(!n.ok)return n;let o={title:n.value};if(t.value.body!==void 0){if(typeof t.value.body!="string")return f("renderedPrompt.body must be a string");o.body=t.value.body}if(t.value.format!==void 0){if(t.value.format!=="plain"&&t.value.format!=="markdown")return f("renderedPrompt.format is invalid");o.format=t.value.format}return{ok:!0,value:o}}function Le(e){let t=y(e,"input");if(!t.ok)return t;let n=t.value.kind;if(n==="choice"){if(!Array.isArray(t.value.choices))return f("input.choices must be an array")}else if(n!=="text")if(n==="form"){if(!Array.isArray(t.value.fields))return f("input.fields must be an array")}else return f("input.kind is invalid");return{ok:!0,value:t.value}}function qe(e){if(e==null)return{ok:!0,value:void 0};let t=y(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 f("partiallyRenderedDelivery.actions must be an array");let o=[];for(let s of n){let d=y(s,"delivery action");if(!d.ok)return d;let a=w(d.value.id,"delivery action id");if(!a.ok)return a;let c=ee(d.value.inputs,`delivery action '${a.value}' inputs`);if(!c.ok)return c;o.push({id:a.value,inputs:c.value})}return{ok:!0,value:{actions:o}}}function ee(e,t){let n=y(e,t);if(!n.ok)return n;let o={};for(let[s,d]of Object.entries(n.value)){let a=te(d,`${t}.${s}`);if(!a.ok)return a;o[s]=a.value}return{ok:!0,value:o}}function te(e,t){let n=y(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 s=w(n.value.path,`${t}.path`);return s.ok?{ok:!0,value:{kind:"human_input_ref",path:s.value}}:s}case"array":{if(!Array.isArray(n.value.items))return f(`${t}.items must be an array`);let s=[];for(let[d,a]of n.value.items.entries()){let c=te(a,`${t}[${d}]`);if(!c.ok)return c;s.push(c.value)}return{ok:!0,value:{kind:"array",items:s}}}case"object":{let s=ee(n.value.entries,`${t}.entries`);return s.ok?{ok:!0,value:{kind:"object",entries:s.value}}:s}case"template":{if(!Array.isArray(n.value.parts))return f(`${t}.parts must be an array`);let s=[];for(let[d,a]of n.value.parts.entries()){let c=We(a,`${t}.parts[${d}]`);if(!c.ok)return c;s.push(c.value)}return{ok:!0,value:{kind:"template",parts:s}}}default:return f(`${t}.kind is invalid`)}}function We(e,t){let n=y(e,t);if(!n.ok)return n;let o=n.value.kind;if(o==="literal")return typeof n.value.value!="string"?f(`${t}.value must be a string`):{ok:!0,value:{kind:"literal",value:n.value.value}};if(o==="human_input_ref"){let s=w(n.value.path,`${t}.path`);return s.ok?{ok:!0,value:{kind:"human_input_ref",path:s.value}}:s}return f(`${t}.kind is invalid`)}function Fr(e){let t=y(e,"request body");if(!t.ok)return r(t.reason);let n=w(t.value.nodeId,"nodeId");if(!n.ok)return r(n.reason);let o=Ke(t.value.renderedPrompt);if(!o.ok)return r(o.reason);let s=Le(t.value.input);if(!s.ok)return r(s.reason);let d=w(t.value.timeout,"timeout");if(!d.ok)return r(d.reason);let a=Ge(t.value.expiresAt,"expiresAt");if(!a.ok)return r(a.reason);let c=qe(t.value.partiallyRenderedDelivery);return c.ok?u({nodeId:n.value,renderedPrompt:o.value,input:s.value,timeout:d.value,expiresAt:a.value,...c.value!==void 0?{partiallyRenderedDelivery:c.value}:{}}):r(c.reason)}function Ve(e){return!i(e)||typeof e.id!="string"||e.id.length===0||typeof e.nodeId!="string"||typeof e.status!="string"||!(e.output===null||i(e.output))?r("human input request view must carry id, nodeId, status and output"):u(e)}function Hr(e){if(!i(e)||typeof e.created!="boolean")return r("human input create data must carry created:boolean");let t=Ve(e.request);return t.ok?u({created:e.created,request:t.value}):t}function $r(e){return!i(e)||e.acknowledged!==!0?r("human input acknowledge data must carry acknowledged:true"):u({acknowledged:!0})}var Gr="ablehi-wfp-user-runtime-manifest/v1",Kr="unknown";function Lr(e){return e.endsWith(".js")?`${e.slice(0,-3)}.manifest.json`:`${e}.manifest.json`}var Wr="/internal/deployment-handshake",je=["start","terminate","send-event","start-webhook-watcher","run-polling-tick","invoke-tool","invoke-trigger-handler","invoke-webhook-protocol-adapter","deployment-handshake"],Vr=je,jr="HANDSHAKE_REQUEST_INVALID",Jr="HANDSHAKE_SECRET_UNCONFIGURED",Xr="HANDSHAKE_SECRET_MISMATCH",Yr="HANDSHAKE_CONTRACT_VERSION_MISMATCH",zr="HANDSHAKE_DISPATCH_NAMESPACE_MISMATCH",Qr="HANDSHAKE_CAPABILITY_MISSING";function Zr(e){return[e.nonce,e.timestamp,e.contractVersion,e.dispatchNamespace].map(n=>`${n.length}:${n}`).join(".")}function eo(e){return["response",e.nonce,e.contractVersion,e.dispatchNamespace,...e.capabilities].map(n=>`${n.length}:${n}`).join(".")}export{ze as CONTEXT_STATE_CLEANUP_ROUTE_PATH,je as DEPLOYMENT_HANDSHAKE_DISPATCHER_CAPABILITIES,Vr as DEPLOYMENT_HANDSHAKE_REQUIRED_CAPABILITIES,Wr as DEPLOYMENT_HANDSHAKE_ROUTE,bn as EGRESS_GRANT_AUDIT_ROUTE_SUBPATH,vn as EGRESS_GRANT_CONSUME_ROUTE_SUBPATH,Ce as EGRESS_GRANT_SCOPE_KINDS,ft as EVENT_WAIT_ROUTE_SUBPATH,rt as EXECUTION_CONTEXT_ROUTE_SUBPATH,yr as FILE_ACCESS_ROUTE_SUBPATH,Rr as FILE_COMPLETE_ROUTE_SUBPATH,Ir as FILE_CONTENT_ROUTE_SUBPATH,kr as FILE_STAT_ROUTE_SUBPATH,mr as FILE_UPLOAD_SESSION_ROUTE_SUBPATH,xn as FLOW_RUN_EGRESS_GRANT_ROUTE_SUBPATH,pt as FLOW_RUN_EXECUTION_EVENTS_ROUTE_SUBPATH,ce as FLOW_RUN_EXECUTION_EVENT_TYPES,lt as FLOW_RUN_RESULT_ROUTE_SUBPATH,Yn as FLOW_RUN_RUNTIME_CREDENTIAL_ROUTE_SUBPATH,vt as HANDLER_BUNDLES_ROUTE_SUBPATH,Qr as HANDSHAKE_CAPABILITY_MISSING,Yr as HANDSHAKE_CONTRACT_VERSION_MISMATCH,zr as HANDSHAKE_DISPATCH_NAMESPACE_MISMATCH,jr as HANDSHAKE_REQUEST_INVALID,Xr as HANDSHAKE_SECRET_MISMATCH,Jr as HANDSHAKE_SECRET_UNCONFIGURED,Cr as HUMAN_INPUTS_ROUTE_SUBPATH,Dr as HUMAN_INPUT_ACKNOWLEDGE_ROUTE_SUBPATH,Nr as HUMAN_INPUT_EXPIRE_ROUTE_SUBPATH,Ar as HUMAN_INPUT_REQUEST_ROUTE_SUBPATH,$e as HUMAN_INPUT_RESOLVED_EVENT_PREFIX,Y as INTERNAL_EGRESS_GRANTS_ROUTE_PREFIX,h as INTERNAL_FILES_ROUTE_PREFIX,g as INTERNAL_FLOW_RUNS_ROUTE_PREFIX,ge as INTERNAL_FLOW_VERSIONS_ROUTE_PREFIX,M as INTERNAL_INSTALLATIONS_ROUTE_PREFIX,P as INTERNAL_POLLING_TRIGGER_INSTANCES_ROUTE_PREFIX,q as INTERNAL_TOOL_INVOCATIONS_ROUTE_PREFIX,x as INTERNAL_WEBHOOK_TRIGGER_INSTANCES_ROUTE_PREFIX,cn as POLLING_TRIGGER_CONTEXT_ROUTE_SUBPATH,Pn as POLLING_TRIGGER_EGRESS_GRANT_ROUTE_SUBPATH,ln as POLLING_TRIGGER_HANDLER_BUNDLES_ROUTE_SUBPATH,Qn as POLLING_TRIGGER_RUNTIME_CREDENTIAL_ROUTE_SUBPATH,pn as POLLING_TRIGGER_TICK_EVENTS_ROUTE_SUBPATH,or as RUNTIME_CREDENTIAL_SESSION_SCOPE_KINDS,ne as SERVER_EXECUTION_CONTRACT_VERSION,ct as STEP_RESULT_ROUTE_SUBPATH,bt as TOOL_HANDLER_BUNDLES_ROUTE_SUBPATH,Tn as TOOL_INVOCATION_EGRESS_GRANT_ROUTE_SUBPATH,zn as TOOL_INVOCATION_RUNTIME_CREDENTIAL_ROUTE_SUBPATH,Yt as WEBHOOK_PROTOCOL_ADAPTER_BUNDLE_ROUTE_SUBPATH,Qt as WEBHOOK_PROTOCOL_ADAPTER_MODULE,Mt as WEBHOOK_TRIGGER_CONTEXT_ROUTE_SUBPATH,Kt as WEBHOOK_TRIGGER_DELIVERY_ROUTE_SUBPATH,Sn as WEBHOOK_TRIGGER_EGRESS_GRANT_ROUTE_SUBPATH,Lt as WEBHOOK_TRIGGER_EVENTS_ROUTE_SUBPATH,Gt as WEBHOOK_TRIGGER_HANDLER_BUNDLES_ROUTE_SUBPATH,qt as WEBHOOK_TRIGGER_REARM_ROUTE_SUBPATH,Zn as WEBHOOK_TRIGGER_RUNTIME_CREDENTIAL_ROUTE_SUBPATH,Gr as WFP_USER_RUNTIME_MANIFEST_FORMAT_VERSION,Kr as WFP_USER_RUNTIME_UNKNOWN_SOURCE_REVISION,Zr as deploymentHandshakeProbePayload,eo as deploymentHandshakeResponseProofPayload,Un as egressGrantAuditPath,On as egressGrantConsumePath,yt as eventWaitPath,ot as executionContextPath,Cn as flowRunEgressGrantPath,Rt as flowRunExecutionEventsPath,mt as flowRunResultPath,er as flowRunRuntimeCredentialPath,Zt as flowScriptProtocolAdapterModuleName,Ct as handlerBundlesPath,Ur as humanInputAcknowledgePath,Or as humanInputExpirePath,Z as humanInputRequestPath,Br as humanInputResolvedEventType,He as humanInputsPath,Er as internalFileAccessPath,wr as internalFileCompletePath,Tr as internalFileContentPath,xr as internalFileStatPath,hr as internalFileUploadSessionPath,_r as internalFilesPath,S as isValidRequestDigest,Tt as parseCompleteFlowRunWaitBody,Qe as parseContextStateCleanupRequestBody,Ze as parseContextStateCleanupResponseData,k as parseContextStateScope,Fr as parseCreateHumanInputBody,Gn as parseEgressGrantAuditBody,Mn as parseEgressGrantConsumeBody,Ln as parseEgressGrantConsumeData,Kn as parseEgressGrantData,it as parseExecutionContextData,Be as parseFileMetadataData,U as parseFileRefData,F as parseFileRuntimeLimits,Ue as parseFileUploadSessionData,Bn as parseFlowActionGrantBody,Et as parseFlowRunExecutionEventBody,wt as parseFlowRunExecutionEventData,_t as parseFlowRunResultBody,ht as parseFlowRunResultData,ir as parseFlowRuntimeCredentialBody,Re as parseHandlerBundle,Nt as parseHandlerBundlesData,$r as parseHumanInputAcknowledgeData,Hr as parseHumanInputCreateData,Ve as parseHumanInputRequestViewData,Pr as parseInternalFileAccessData,yn as parsePollingPublishBody,ur as parsePollingRuntimeCredentialBody,Ee as parsePollingTriggerContext,Rn as parsePollingTriggerDispatchData,Hn as parsePollingTriggerGrantBody,kn as parsePublishPollingTickEventsData,xt as parseRegisterFlowRunWaitBody,Pt as parseRegisterFlowRunWaitData,dr as parseRuntimeCredentialSessionCredential,C as parseRuntimeNetwork,Fn as parseSingleToolGrantBody,sr as parseSingleToolRuntimeCredentialBody,kt as parseStepRecordBody,It as parseStepRecordData,Dt as parseToolHandlerBundlesData,G as parseTriggerFileRuntimeDispatch,nn as parseTriggerHandlerBundlesData,_e as parseWebhookDelivery,tn as parseWebhookDeliveryDispatchData,rn as parseWebhookPublishEventsBody,on as parseWebhookRearmBody,ar as parseWebhookRuntimeCredentialBody,$n as parseWebhookTriggerGrantBody,en as parseWebhookWatcherContext,fn as pollingTriggerContextPath,Nn as pollingTriggerEgressGrantPath,gn as pollingTriggerHandlerBundlesPath,nr as pollingTriggerRuntimeCredentialPath,mn as pollingTriggerTickEventsPath,Ne as requestHasMultipartFileParts,gt as stepResultPath,At as toolHandlerBundlesPath,An as toolInvocationEgressGrantPath,tr as toolInvocationRuntimeCredentialPath,zt as webhookProtocolAdapterBundlePath,Wt as webhookTriggerContextPath,jt as webhookTriggerDeliveryPath,Dn as webhookTriggerEgressGrantPath,Jt as webhookTriggerEventsPath,Vt as webhookTriggerHandlerBundlesPath,Xt as webhookTriggerRearmPath,rr as webhookTriggerRuntimeCredentialPath,Lr as wfpUserRuntimeManifestPath};
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { PublishedFlowDefinition, RuntimeHumanInputSpec } from '@ablehi/flow-contract';
2
2
  import { AblehiErrorDigest } from '@ablehi/error-contract';
3
3
 
4
- declare const SERVER_EXECUTION_CONTRACT_VERSION = "0.2.9";
4
+ declare const SERVER_EXECUTION_CONTRACT_VERSION = "0.2.10";
5
5
  type ServerExecutionContractVersion = typeof SERVER_EXECUTION_CONTRACT_VERSION;
6
6
 
7
7
  type ContractParseResult<T> = {
@@ -330,6 +330,15 @@ type WebhookDelivery = {
330
330
  rawBody: string;
331
331
  };
332
332
  };
333
+ type TriggerFileRuntimeDispatch = {
334
+ token: string;
335
+ expiresAt: string;
336
+ limits: FileRuntimeLimits;
337
+ };
338
+ type WebhookDeliveryDispatchData = {
339
+ delivery: WebhookDelivery;
340
+ fileRuntime: TriggerFileRuntimeDispatch | null;
341
+ };
333
342
  type TriggerHandlerModule = {
334
343
  specifier: string;
335
344
  source: string;
@@ -378,6 +387,8 @@ type WebhookProtocolAdapterBundleData = {
378
387
  declare function flowScriptProtocolAdapterModuleName(artifactDigest: string): string;
379
388
  declare function parseWebhookWatcherContext(data: unknown): ContractParseResult<WebhookWatcherContext>;
380
389
  declare function parseWebhookDelivery(data: unknown): ContractParseResult<WebhookDelivery>;
390
+ declare function parseTriggerFileRuntimeDispatch(data: unknown): ContractParseResult<TriggerFileRuntimeDispatch>;
391
+ declare function parseWebhookDeliveryDispatchData(data: unknown): ContractParseResult<WebhookDeliveryDispatchData>;
381
392
  declare function parseTriggerHandlerBundlesData(data: unknown): HandlerBundlesParseResult<TriggerHandlerBundlesData>;
382
393
  declare function parseWebhookPublishEventsBody(body: unknown): ContractParseResult<WebhookPublishEventsBody>;
383
394
  declare function parseWebhookRearmBody(body: unknown): ContractParseResult<WebhookRearmBody>;
@@ -424,6 +435,10 @@ type PollingTriggerContext = {
424
435
  maxEventsPerTick: number;
425
436
  };
426
437
  };
438
+ type PollingTriggerDispatchData = {
439
+ context: PollingTriggerContext;
440
+ fileRuntime: TriggerFileRuntimeDispatch | null;
441
+ };
427
442
  type PollingPublishEvent = {
428
443
  eventId: string;
429
444
  occurredAt?: string;
@@ -446,6 +461,7 @@ type PublishPollingTickEventsData = {
446
461
  results: PublishPollingTickEventResult[];
447
462
  };
448
463
  declare function parsePollingTriggerContext(data: unknown): ContractParseResult<PollingTriggerContext>;
464
+ declare function parsePollingTriggerDispatchData(data: unknown): ContractParseResult<PollingTriggerDispatchData>;
449
465
  declare function parsePollingPublishBody(body: unknown): ContractParseResult<PollingPublishBody>;
450
466
  declare function parsePublishPollingTickEventsData(data: unknown): ContractParseResult<PublishPollingTickEventsData>;
451
467
 
@@ -529,6 +545,7 @@ type PollingTriggerGrantBody = {
529
545
  type WebhookTriggerGrantBody = {
530
546
  phase: "lifecycle" | "handler";
531
547
  lifecycle?: "enable" | "disable" | "renew";
548
+ deliveryId?: string;
532
549
  requestDigest: string;
533
550
  };
534
551
  declare function isValidRequestDigest(value: unknown): value is string;
@@ -634,7 +651,7 @@ declare const FILE_COMPLETE_ROUTE_SUBPATH = "/:fileId/complete";
634
651
  declare const FILE_ACCESS_ROUTE_SUBPATH = "/:fileId/access";
635
652
  declare const FILE_STAT_ROUTE_SUBPATH = "/:fileId/stat";
636
653
  declare const FILE_CONTENT_ROUTE_SUBPATH = "/:fileId/content";
637
- type FileRuntimeScopeKind = "flow_run" | "tool_invocation";
654
+ type FileRuntimeScopeKind = "flow_run" | "tool_invocation" | "trigger_event";
638
655
  type FileRuntimeScope = {
639
656
  scopeKind: FileRuntimeScopeKind;
640
657
  scopeId: string;
@@ -833,4 +850,4 @@ declare function deploymentHandshakeResponseProofPayload(input: {
833
850
  capabilities: string[];
834
851
  }): string;
835
852
 
836
- export { CONTEXT_STATE_CLEANUP_ROUTE_PATH, type CompleteFlowRunWaitBody, type CompleteFlowRunWaitData, type ContextStateCleanupRequestBody, type ContextStateCleanupResponseData, type ContextStateScope, type CreateHumanInputRequestBody, DEPLOYMENT_HANDSHAKE_DISPATCHER_CAPABILITIES, DEPLOYMENT_HANDSHAKE_REQUIRED_CAPABILITIES, DEPLOYMENT_HANDSHAKE_ROUTE, type DeploymentHandshakeData, type DeploymentHandshakeRequestBody, type DeploymentHandshakeResponse, EGRESS_GRANT_AUDIT_ROUTE_SUBPATH, EGRESS_GRANT_CONSUME_ROUTE_SUBPATH, EGRESS_GRANT_SCOPE_KINDS, EVENT_WAIT_ROUTE_SUBPATH, EXECUTION_CONTEXT_ROUTE_SUBPATH, type EgressGrant, type EgressGrantAuditBody, type EgressGrantBodyParseResult, type EgressGrantConsumeBody, type EgressGrantCredentialMaterial, type EgressGrantFileRuntime, type EgressGrantScopeKind, type ExecutionBinding, type ExecutionBindingConnection, type ExecutionContextCompiled, type ExecutionContextData, FILE_ACCESS_ROUTE_SUBPATH, FILE_COMPLETE_ROUTE_SUBPATH, FILE_CONTENT_ROUTE_SUBPATH, FILE_STAT_ROUTE_SUBPATH, FILE_UPLOAD_SESSION_ROUTE_SUBPATH, FLOW_RUN_EGRESS_GRANT_ROUTE_SUBPATH, FLOW_RUN_EXECUTION_EVENTS_ROUTE_SUBPATH, FLOW_RUN_EXECUTION_EVENT_TYPES, FLOW_RUN_RESULT_ROUTE_SUBPATH, FLOW_RUN_RUNTIME_CREDENTIAL_ROUTE_SUBPATH, type FileMetadataData, type FileRefData, type FileRuntimeLimits, type FileRuntimeScope, type FileRuntimeScopeKind, type FileUploadSessionData, type FlowActionGrantBody, type FlowExecutionContextFileRuntime, type FlowRunExecutionEventBody, type FlowRunExecutionEventData, type FlowRunExecutionEventType, type FlowRunInputFactBody, type FlowRunResultData, type FlowRunResultRequestBody, type FlowRuntimeCredentialBody, HANDLER_BUNDLES_ROUTE_SUBPATH, HANDSHAKE_CAPABILITY_MISSING, HANDSHAKE_CONTRACT_VERSION_MISMATCH, HANDSHAKE_DISPATCH_NAMESPACE_MISMATCH, HANDSHAKE_REQUEST_INVALID, HANDSHAKE_SECRET_MISMATCH, HANDSHAKE_SECRET_UNCONFIGURED, HUMAN_INPUTS_ROUTE_SUBPATH, HUMAN_INPUT_ACKNOWLEDGE_ROUTE_SUBPATH, HUMAN_INPUT_EXPIRE_ROUTE_SUBPATH, HUMAN_INPUT_REQUEST_ROUTE_SUBPATH, HUMAN_INPUT_RESOLVED_EVENT_PREFIX, type HandlerBundle, type HandlerBundleModule, type HandlerBundlesData, type HandlerBundlesParseResult, type HumanInputActor, type HumanInputOutput, type HumanInputRequestView, type HumanInputResolvedEvent, type HumanInputResponse, INTERNAL_EGRESS_GRANTS_ROUTE_PREFIX, INTERNAL_FILES_ROUTE_PREFIX, INTERNAL_FLOW_RUNS_ROUTE_PREFIX, INTERNAL_FLOW_VERSIONS_ROUTE_PREFIX, INTERNAL_INSTALLATIONS_ROUTE_PREFIX, INTERNAL_POLLING_TRIGGER_INSTANCES_ROUTE_PREFIX, INTERNAL_TOOL_INVOCATIONS_ROUTE_PREFIX, INTERNAL_WEBHOOK_TRIGGER_INSTANCES_ROUTE_PREFIX, type InternalFileAccessData, type InternalFileAccessIntent, POLLING_TRIGGER_CONTEXT_ROUTE_SUBPATH, POLLING_TRIGGER_EGRESS_GRANT_ROUTE_SUBPATH, POLLING_TRIGGER_HANDLER_BUNDLES_ROUTE_SUBPATH, POLLING_TRIGGER_RUNTIME_CREDENTIAL_ROUTE_SUBPATH, POLLING_TRIGGER_TICK_EVENTS_ROUTE_SUBPATH, type PackagePollingTriggerRuntimeDescriptor, type PackageWebhookTriggerRuntimeDescriptor, type ParsedFlowRunResultBody, type PartiallyRenderedHumanInputDelivery, type PartiallyRenderedMapping, type PartiallyRenderedTemplatePart, type PartiallyRenderedValue, type PollingPublishBody, type PollingPublishEvent, type PollingRuntimeCredentialBody, type PollingTriggerContext, type PollingTriggerGrantBody, type PresignedFileUrlData, type PublishPollingTickEventResult, type PublishPollingTickEventsData, RUNTIME_CREDENTIAL_SESSION_SCOPE_KINDS, type RegisterFlowRunWaitBody, type RegisterFlowRunWaitData, type RenderedFlowComposition, type RenderedHumanInputPrompt, type RuntimeCredentialSession, type RuntimeCredentialSessionNetwork, type RuntimeCredentialSessionScopeKind, type RuntimeNetwork, type RuntimeNetworkModel, SERVER_EXECUTION_CONTRACT_VERSION, STEP_RESULT_ROUTE_SUBPATH, type ServerExecutionContractVersion, type SingleToolGrantBody, type StepRecordBody, type StepRecordBodyParseResult, type StepRecordData, type StepRecordResult, TOOL_HANDLER_BUNDLES_ROUTE_SUBPATH, TOOL_INVOCATION_EGRESS_GRANT_ROUTE_SUBPATH, TOOL_INVOCATION_RUNTIME_CREDENTIAL_ROUTE_SUBPATH, type ToolHandlerBundlesData, type TriggerConnectionInfo, type TriggerHandlerBundlesData, type TriggerHandlerModule, WEBHOOK_PROTOCOL_ADAPTER_BUNDLE_ROUTE_SUBPATH, WEBHOOK_PROTOCOL_ADAPTER_MODULE, WEBHOOK_TRIGGER_CONTEXT_ROUTE_SUBPATH, WEBHOOK_TRIGGER_DELIVERY_ROUTE_SUBPATH, WEBHOOK_TRIGGER_EGRESS_GRANT_ROUTE_SUBPATH, WEBHOOK_TRIGGER_EVENTS_ROUTE_SUBPATH, WEBHOOK_TRIGGER_HANDLER_BUNDLES_ROUTE_SUBPATH, WEBHOOK_TRIGGER_REARM_ROUTE_SUBPATH, WEBHOOK_TRIGGER_RUNTIME_CREDENTIAL_ROUTE_SUBPATH, WFP_USER_RUNTIME_MANIFEST_FORMAT_VERSION, WFP_USER_RUNTIME_UNKNOWN_SOURCE_REVISION, type WebhookDelivery, type WebhookProtocolAdapterBundleData, type WebhookProtocolAdapterModule, type WebhookPublishEvent, type WebhookPublishEventsBody, type WebhookPublishEventsData, type WebhookRearmBody, type WebhookRearmData, type WebhookRuntimeCredentialBody, type WebhookTriggerGrantBody, type WebhookTriggerVerificationMethod, type WebhookWatcherContext, type WfpUserRuntimeManifest, deploymentHandshakeProbePayload, deploymentHandshakeResponseProofPayload, egressGrantAuditPath, egressGrantConsumePath, eventWaitPath, executionContextPath, flowRunEgressGrantPath, flowRunExecutionEventsPath, flowRunResultPath, flowRunRuntimeCredentialPath, flowScriptProtocolAdapterModuleName, handlerBundlesPath, humanInputAcknowledgePath, humanInputExpirePath, humanInputRequestPath, humanInputResolvedEventType, humanInputsPath, internalFileAccessPath, internalFileCompletePath, internalFileContentPath, internalFileStatPath, internalFileUploadSessionPath, internalFilesPath, isValidRequestDigest, parseCompleteFlowRunWaitBody, parseContextStateCleanupRequestBody, parseContextStateCleanupResponseData, parseContextStateScope, parseCreateHumanInputBody, parseEgressGrantAuditBody, parseEgressGrantConsumeBody, parseEgressGrantConsumeData, parseEgressGrantData, parseExecutionContextData, parseFileMetadataData, parseFileRefData, parseFileRuntimeLimits, parseFileUploadSessionData, parseFlowActionGrantBody, parseFlowRunExecutionEventBody, parseFlowRunExecutionEventData, parseFlowRunResultBody, parseFlowRunResultData, parseFlowRuntimeCredentialBody, parseHandlerBundle, parseHandlerBundlesData, parseHumanInputAcknowledgeData, parseHumanInputCreateData, parseHumanInputRequestViewData, parseInternalFileAccessData, parsePollingPublishBody, parsePollingRuntimeCredentialBody, parsePollingTriggerContext, parsePollingTriggerGrantBody, parsePublishPollingTickEventsData, parseRegisterFlowRunWaitBody, parseRegisterFlowRunWaitData, parseRuntimeCredentialSessionCredential, parseRuntimeNetwork, parseSingleToolGrantBody, parseSingleToolRuntimeCredentialBody, parseStepRecordBody, parseStepRecordData, parseToolHandlerBundlesData, parseTriggerHandlerBundlesData, parseWebhookDelivery, parseWebhookPublishEventsBody, parseWebhookRearmBody, parseWebhookRuntimeCredentialBody, parseWebhookTriggerGrantBody, parseWebhookWatcherContext, pollingTriggerContextPath, pollingTriggerEgressGrantPath, pollingTriggerHandlerBundlesPath, pollingTriggerRuntimeCredentialPath, pollingTriggerTickEventsPath, requestHasMultipartFileParts, stepResultPath, toolHandlerBundlesPath, toolInvocationEgressGrantPath, toolInvocationRuntimeCredentialPath, webhookProtocolAdapterBundlePath, webhookTriggerContextPath, webhookTriggerDeliveryPath, webhookTriggerEgressGrantPath, webhookTriggerEventsPath, webhookTriggerHandlerBundlesPath, webhookTriggerRearmPath, webhookTriggerRuntimeCredentialPath, wfpUserRuntimeManifestPath };
853
+ export { CONTEXT_STATE_CLEANUP_ROUTE_PATH, type CompleteFlowRunWaitBody, type CompleteFlowRunWaitData, type ContextStateCleanupRequestBody, type ContextStateCleanupResponseData, type ContextStateScope, type CreateHumanInputRequestBody, DEPLOYMENT_HANDSHAKE_DISPATCHER_CAPABILITIES, DEPLOYMENT_HANDSHAKE_REQUIRED_CAPABILITIES, DEPLOYMENT_HANDSHAKE_ROUTE, type DeploymentHandshakeData, type DeploymentHandshakeRequestBody, type DeploymentHandshakeResponse, EGRESS_GRANT_AUDIT_ROUTE_SUBPATH, EGRESS_GRANT_CONSUME_ROUTE_SUBPATH, EGRESS_GRANT_SCOPE_KINDS, EVENT_WAIT_ROUTE_SUBPATH, EXECUTION_CONTEXT_ROUTE_SUBPATH, type EgressGrant, type EgressGrantAuditBody, type EgressGrantBodyParseResult, type EgressGrantConsumeBody, type EgressGrantCredentialMaterial, type EgressGrantFileRuntime, type EgressGrantScopeKind, type ExecutionBinding, type ExecutionBindingConnection, type ExecutionContextCompiled, type ExecutionContextData, FILE_ACCESS_ROUTE_SUBPATH, FILE_COMPLETE_ROUTE_SUBPATH, FILE_CONTENT_ROUTE_SUBPATH, FILE_STAT_ROUTE_SUBPATH, FILE_UPLOAD_SESSION_ROUTE_SUBPATH, FLOW_RUN_EGRESS_GRANT_ROUTE_SUBPATH, FLOW_RUN_EXECUTION_EVENTS_ROUTE_SUBPATH, FLOW_RUN_EXECUTION_EVENT_TYPES, FLOW_RUN_RESULT_ROUTE_SUBPATH, FLOW_RUN_RUNTIME_CREDENTIAL_ROUTE_SUBPATH, type FileMetadataData, type FileRefData, type FileRuntimeLimits, type FileRuntimeScope, type FileRuntimeScopeKind, type FileUploadSessionData, type FlowActionGrantBody, type FlowExecutionContextFileRuntime, type FlowRunExecutionEventBody, type FlowRunExecutionEventData, type FlowRunExecutionEventType, type FlowRunInputFactBody, type FlowRunResultData, type FlowRunResultRequestBody, type FlowRuntimeCredentialBody, HANDLER_BUNDLES_ROUTE_SUBPATH, HANDSHAKE_CAPABILITY_MISSING, HANDSHAKE_CONTRACT_VERSION_MISMATCH, HANDSHAKE_DISPATCH_NAMESPACE_MISMATCH, HANDSHAKE_REQUEST_INVALID, HANDSHAKE_SECRET_MISMATCH, HANDSHAKE_SECRET_UNCONFIGURED, HUMAN_INPUTS_ROUTE_SUBPATH, HUMAN_INPUT_ACKNOWLEDGE_ROUTE_SUBPATH, HUMAN_INPUT_EXPIRE_ROUTE_SUBPATH, HUMAN_INPUT_REQUEST_ROUTE_SUBPATH, HUMAN_INPUT_RESOLVED_EVENT_PREFIX, type HandlerBundle, type HandlerBundleModule, type HandlerBundlesData, type HandlerBundlesParseResult, type HumanInputActor, type HumanInputOutput, type HumanInputRequestView, type HumanInputResolvedEvent, type HumanInputResponse, INTERNAL_EGRESS_GRANTS_ROUTE_PREFIX, INTERNAL_FILES_ROUTE_PREFIX, INTERNAL_FLOW_RUNS_ROUTE_PREFIX, INTERNAL_FLOW_VERSIONS_ROUTE_PREFIX, INTERNAL_INSTALLATIONS_ROUTE_PREFIX, INTERNAL_POLLING_TRIGGER_INSTANCES_ROUTE_PREFIX, INTERNAL_TOOL_INVOCATIONS_ROUTE_PREFIX, INTERNAL_WEBHOOK_TRIGGER_INSTANCES_ROUTE_PREFIX, type InternalFileAccessData, type InternalFileAccessIntent, POLLING_TRIGGER_CONTEXT_ROUTE_SUBPATH, POLLING_TRIGGER_EGRESS_GRANT_ROUTE_SUBPATH, POLLING_TRIGGER_HANDLER_BUNDLES_ROUTE_SUBPATH, POLLING_TRIGGER_RUNTIME_CREDENTIAL_ROUTE_SUBPATH, POLLING_TRIGGER_TICK_EVENTS_ROUTE_SUBPATH, type PackagePollingTriggerRuntimeDescriptor, type PackageWebhookTriggerRuntimeDescriptor, type ParsedFlowRunResultBody, type PartiallyRenderedHumanInputDelivery, type PartiallyRenderedMapping, type PartiallyRenderedTemplatePart, type PartiallyRenderedValue, type PollingPublishBody, type PollingPublishEvent, type PollingRuntimeCredentialBody, type PollingTriggerContext, type PollingTriggerDispatchData, type PollingTriggerGrantBody, type PresignedFileUrlData, type PublishPollingTickEventResult, type PublishPollingTickEventsData, RUNTIME_CREDENTIAL_SESSION_SCOPE_KINDS, type RegisterFlowRunWaitBody, type RegisterFlowRunWaitData, type RenderedFlowComposition, type RenderedHumanInputPrompt, type RuntimeCredentialSession, type RuntimeCredentialSessionNetwork, type RuntimeCredentialSessionScopeKind, type RuntimeNetwork, type RuntimeNetworkModel, SERVER_EXECUTION_CONTRACT_VERSION, STEP_RESULT_ROUTE_SUBPATH, type ServerExecutionContractVersion, type SingleToolGrantBody, type StepRecordBody, type StepRecordBodyParseResult, type StepRecordData, type StepRecordResult, TOOL_HANDLER_BUNDLES_ROUTE_SUBPATH, TOOL_INVOCATION_EGRESS_GRANT_ROUTE_SUBPATH, TOOL_INVOCATION_RUNTIME_CREDENTIAL_ROUTE_SUBPATH, type ToolHandlerBundlesData, type TriggerConnectionInfo, type TriggerFileRuntimeDispatch, type TriggerHandlerBundlesData, type TriggerHandlerModule, WEBHOOK_PROTOCOL_ADAPTER_BUNDLE_ROUTE_SUBPATH, WEBHOOK_PROTOCOL_ADAPTER_MODULE, WEBHOOK_TRIGGER_CONTEXT_ROUTE_SUBPATH, WEBHOOK_TRIGGER_DELIVERY_ROUTE_SUBPATH, WEBHOOK_TRIGGER_EGRESS_GRANT_ROUTE_SUBPATH, WEBHOOK_TRIGGER_EVENTS_ROUTE_SUBPATH, WEBHOOK_TRIGGER_HANDLER_BUNDLES_ROUTE_SUBPATH, WEBHOOK_TRIGGER_REARM_ROUTE_SUBPATH, WEBHOOK_TRIGGER_RUNTIME_CREDENTIAL_ROUTE_SUBPATH, WFP_USER_RUNTIME_MANIFEST_FORMAT_VERSION, WFP_USER_RUNTIME_UNKNOWN_SOURCE_REVISION, type WebhookDelivery, type WebhookDeliveryDispatchData, type WebhookProtocolAdapterBundleData, type WebhookProtocolAdapterModule, type WebhookPublishEvent, type WebhookPublishEventsBody, type WebhookPublishEventsData, type WebhookRearmBody, type WebhookRearmData, type WebhookRuntimeCredentialBody, type WebhookTriggerGrantBody, type WebhookTriggerVerificationMethod, type WebhookWatcherContext, type WfpUserRuntimeManifest, deploymentHandshakeProbePayload, deploymentHandshakeResponseProofPayload, egressGrantAuditPath, egressGrantConsumePath, eventWaitPath, executionContextPath, flowRunEgressGrantPath, flowRunExecutionEventsPath, flowRunResultPath, flowRunRuntimeCredentialPath, flowScriptProtocolAdapterModuleName, handlerBundlesPath, humanInputAcknowledgePath, humanInputExpirePath, humanInputRequestPath, humanInputResolvedEventType, humanInputsPath, internalFileAccessPath, internalFileCompletePath, internalFileContentPath, internalFileStatPath, internalFileUploadSessionPath, internalFilesPath, isValidRequestDigest, parseCompleteFlowRunWaitBody, parseContextStateCleanupRequestBody, parseContextStateCleanupResponseData, parseContextStateScope, parseCreateHumanInputBody, parseEgressGrantAuditBody, parseEgressGrantConsumeBody, parseEgressGrantConsumeData, parseEgressGrantData, parseExecutionContextData, parseFileMetadataData, parseFileRefData, parseFileRuntimeLimits, parseFileUploadSessionData, parseFlowActionGrantBody, parseFlowRunExecutionEventBody, parseFlowRunExecutionEventData, parseFlowRunResultBody, parseFlowRunResultData, parseFlowRuntimeCredentialBody, parseHandlerBundle, parseHandlerBundlesData, parseHumanInputAcknowledgeData, parseHumanInputCreateData, parseHumanInputRequestViewData, parseInternalFileAccessData, parsePollingPublishBody, parsePollingRuntimeCredentialBody, parsePollingTriggerContext, parsePollingTriggerDispatchData, parsePollingTriggerGrantBody, parsePublishPollingTickEventsData, parseRegisterFlowRunWaitBody, parseRegisterFlowRunWaitData, parseRuntimeCredentialSessionCredential, parseRuntimeNetwork, parseSingleToolGrantBody, parseSingleToolRuntimeCredentialBody, parseStepRecordBody, parseStepRecordData, parseToolHandlerBundlesData, parseTriggerFileRuntimeDispatch, parseTriggerHandlerBundlesData, parseWebhookDelivery, parseWebhookDeliveryDispatchData, parseWebhookPublishEventsBody, parseWebhookRearmBody, parseWebhookRuntimeCredentialBody, parseWebhookTriggerGrantBody, parseWebhookWatcherContext, pollingTriggerContextPath, pollingTriggerEgressGrantPath, pollingTriggerHandlerBundlesPath, pollingTriggerRuntimeCredentialPath, pollingTriggerTickEventsPath, requestHasMultipartFileParts, stepResultPath, toolHandlerBundlesPath, toolInvocationEgressGrantPath, toolInvocationRuntimeCredentialPath, webhookProtocolAdapterBundlePath, webhookTriggerContextPath, webhookTriggerDeliveryPath, webhookTriggerEgressGrantPath, webhookTriggerEventsPath, webhookTriggerHandlerBundlesPath, webhookTriggerRearmPath, webhookTriggerRuntimeCredentialPath, wfpUserRuntimeManifestPath };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- var ee="0.2.9";function u(e){return{ok:!0,value:e}}function r(e){return{ok:!1,reason:e}}function i(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Je="/cleanup-state-scopes";function k(e){if(!i(e)||typeof e.kind!="string")return r("context state scope surface shape is invalid");switch(e.kind){case"webhook-trigger":return te(e);case"polling-trigger":return ne(e);case"flow-action":return re(e);default:return r("context state scope kind is invalid")}}function Xe(e){if(!i(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 s=k(o);if(!s.ok)return s;n.push(s.value)}return u({scopes:n})}function Ye(e){return!i(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 te(e){let t=b(e,["kind","workspaceId","triggerInstanceId"]);return t!==void 0?r(`webhook trigger scope does not accept "${t}"`):e.kind!=="webhook-trigger"||!R(e.workspaceId)||!R(e.triggerInstanceId)?r("webhook trigger state scope is invalid"):u({kind:"webhook-trigger",workspaceId:e.workspaceId,triggerInstanceId:e.triggerInstanceId})}function ne(e){let t=b(e,["kind","workspaceId","pollingInstanceId"]);return t!==void 0?r(`polling trigger scope does not accept "${t}"`):e.kind!=="polling-trigger"||!R(e.workspaceId)||!R(e.pollingInstanceId)?r("polling trigger state scope is invalid"):u({kind:"polling-trigger",workspaceId:e.workspaceId,pollingInstanceId:e.pollingInstanceId})}function re(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"||!R(e.workspaceId)||!R(e.flowId)||!R(e.nodeId)||n!==null&&!R(n)?r("flow action state scope is invalid"):u({kind:"flow-action",workspaceId:e.workspaceId,flowId:e.flowId,nodeId:e.nodeId,connectionId:n})}function R(e){return typeof e=="string"&&e.length>0}function b(e,t){return Object.keys(e).find(n=>!t.includes(n))}var g="/internal/flow-runs",et="/:flowRunId/execution-context";function tt(e){return`${g}/${encodeURIComponent(e)}/execution-context`}function oe(e){return!i(e)||!B(e.fileMaxBytes)||!B(e.fileReadMaxBytes)||!B(e.inlineMultipartBytesMax)?r("file runtime limits must carry three positive integer bounds"):u({fileMaxBytes:e.fileMaxBytes,fileReadMaxBytes:e.fileReadMaxBytes,inlineMultipartBytesMax:e.inlineMultipartBytesMax})}function nt(e){if(!i(e))return r("execution context must be a JSON object");let t=e.compiled;if(typeof e.flowRunId!="string"||typeof e.workspaceId!="string"||!i(e.input)||!i(t)||typeof t.irSchemaVersion!="string"||typeof t.interpreterContractVersion!="string"||typeof t.compiledArtifactId!="string"||!i(t.ir)||!Array.isArray(t.ir.nodes)||!se(e.executionBindings))return r("execution context surface shape is invalid");let n=ie(e.fileRuntime);return n.ok?u({...e,fileRuntime:n.value}):r(n.reason)}function ie(e){if(e===null)return u(null);if(!i(e))return r("fileRuntime must be null or an object");let t=oe(e.limits);return t.ok?u({limits:t.value}):r(t.reason)}function se(e){return Array.isArray(e)?e.every(t=>{if(!i(t))return!1;let n=t.connection,o=k(t.stateScope);return typeof t.nodeId=="string"&&typeof t.toolRef=="string"&&i(t.toolDescriptor)&&i(t.integrationDescriptor)&&i(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 B(e){return typeof e=="number"&&Number.isSafeInteger(e)&&e>0}import{parseAblehiErrorDigest as F}from"@ablehi/error-contract";var ut="/:flowRunId/steps/:nodeId/result",at="/:flowRunId/result",dt="/:flowRunId/execution-events",ct="/:flowRunId/event-waits/:nodeId";function lt(e,t){return`${g}/${encodeURIComponent(e)}/steps/${encodeURIComponent(t)}/result`}function pt(e){return`${g}/${encodeURIComponent(e)}/result`}function ft(e){return`${g}/${encodeURIComponent(e)}/execution-events`}function gt(e,t){return`${g}/${encodeURIComponent(e)}/event-waits/${encodeURIComponent(t)}`}function mt(e){if(!i(e))return{ok:!1,kind:"validation",reason:"step record body must be a JSON object"};let t=m(e,["attempt","result","durationMs"]);if(t!==void 0)return{ok:!1,kind:"validation",reason:`step record does not accept the "${t}" field`};let n=e.attempt;if(typeof n!="number"||!Number.isInteger(n)||n<=0)return{ok:!1,kind:"validation",reason:"attempt must be a positive integer"};let o=ue(e.result);if(!o.ok)return o;let s={attempt:n,result:o.value};if(e.durationMs!==void 0){let d=e.durationMs;if(typeof d!="number"||!Number.isFinite(d)||d<0)return{ok:!1,kind:"validation",reason:"durationMs must be a non-negative number"};s.durationMs=d}return{ok:!0,value:s}}function ue(e){if(!i(e))return{ok:!1,kind:"step_result_invalid",reason:"result must be a JSON object"};let t=e.status;if(t==="succeeded"){let n=m(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=m(e,["status","error"]);if(n!==void 0)return{ok:!1,kind:"validation",reason:`step record result does not accept the "${n}" field`};let o=F(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=m(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=m(e,["status","error"]);if(n!==void 0)return{ok:!1,kind:"validation",reason:`step record result does not accept the "${n}" field`};let o=F(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 Rt(e){return!i(e)||typeof e.flowRunId!="string"||typeof e.nodeId!="string"||!ae(e.recorded)?r("step record data surface shape is invalid"):u({flowRunId:e.flowRunId,nodeId:e.nodeId,recorded:e.recorded})}function ae(e){return e==="succeeded"||e==="failed"||e==="skipped"||e==="timed_out"}function yt(e){if(!i(e))return r("result body must be a JSON object");let t=m(e,["status","output","error","composition"]);if(t!==void 0)return r(`result does not accept the "${t}" field`);let n=e.status;if(n!=="succeeded"&&n!=="failed")return r('result status must be "succeeded" or "failed"');let o={status:n};if(e.output!==void 0){if(n!=="succeeded")return r("output is only allowed on a succeeded result");o.output=e.output}if(e.error!==void 0){if(n!=="failed")return r("error is only allowed on a failed result");let s=F(e.error);if(!s.ok)return r(`result error must be an AblehiErrorDigest: ${s.reason}`);o.error=s.value}if(n==="failed"&&o.error===void 0)return r("a failed result must carry an AblehiErrorDigest");if(e.composition!==void 0){if(n!=="succeeded")return r("composition is only allowed on a succeeded result");o.composition=e.composition}return u(o)}function kt(e){return i(e)?u(e):r("flow run result data must be a JSON object")}var de=["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 It(e){if(!i(e))return r("execution event data must be a JSON object");let t=m(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 _t(e){if(!i(e))return r("execution event body must be a JSON object");let t=m(e,["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=e.eventId;if(typeof n!="string"||n.length===0)return r("eventId must be a non-empty string");let o=e.eventType;if(!ce(o))return r("eventType is not a known flow execution event type");let s=e.occurredAt;if(typeof s!="string"||s.length===0)return r("occurredAt must be a non-empty string");let d={eventId:n,eventType:o,occurredAt:s};for(let a of["nodeId","stepRunId","errorId","payloadRef"]){let c=e[a];if(c!==void 0){if(typeof c!="string"||c.length===0)return r(`${a} must be a non-empty string`);d[a]=c}}for(let a of["attempt","durationMs"]){let c=e[a];if(c!==void 0){if(typeof c!="number"||!Number.isFinite(c)||!Number.isInteger(c)||c<0)return r(`${a} must be a non-negative integer`);d[a]=c}}if(e.inputFact!==void 0){if(o!=="step_started")return r("inputFact is only allowed on step_started events");if(d.attempt===void 0)return r("inputFact requires attempt");let a=le(e.inputFact);if(!a.ok)return a;d.inputFact=a.value}return u(d)}function ce(e){return typeof e=="string"&&de.includes(e)}function le(e){if(!i(e))return r("inputFact must be a JSON object");let t=m(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(!i(o))return r("inputFact.domain must be a JSON object");let s=m(o,["irSchemaVersion","interpreterContractVersion","compiledArtifactId","nodeId","algorithmVersion"]);return s!==void 0?r(`inputFact.domain does not accept the "${s}" 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 pe=/^[A-Za-z0-9_-]{1,100}$/;function ht(e){if(!i(e))return r("register body must be a JSON object");let t=m(e,["eventType","correlationKey"]);if(t!==void 0)return r(`register wait does not accept the "${t}" field`);let n=q(e.eventType);if(!n.ok)return r(n.reason);let o=e.correlationKey;return typeof o!="string"||o.length===0?r("correlationKey must be a non-empty string"):u({eventType:n.value,correlationKey:o})}function Et(e){if(!i(e))return r("complete body must be a JSON object");let t=m(e,["eventType","correlationKey","outcome","eventId"]);if(t!==void 0)return r(`complete wait does not accept the "${t}" field`);let n=e.outcome;if(n!=="received"&&n!=="timed_out")return r('outcome must be "received" or "timed_out"');let o=q(e.eventType);if(!o.ok)return r(o.reason);let s=e.correlationKey;if(typeof s!="string"||s.length===0)return r("correlationKey must be a non-empty string");let d={eventType:o.value,correlationKey:s,outcome:n};if(e.eventId!==void 0){if(typeof e.eventId!="string"||e.eventId.length===0)return r("eventId must be a non-empty string");d.eventId=e.eventId}return u(d)}function wt(e){return!i(e)||e.registered!==!0?r("register wait data surface shape is invalid"):u({registered:!0})}function q(e){return typeof e!="string"||e.length===0?r("eventType must be a non-empty string"):pe.test(e)?u(e):r("eventType must match ^[A-Za-z0-9_-]{1,100}$")}function m(e,t){return Object.keys(e).find(n=>!t.includes(n))}var fe="/internal/flow-versions",Tt="/:flowVersionId/handler-bundles",$="/internal/installations",Pt="/:installationId/handler-bundles";function St(e,t){return`${fe}/${encodeURIComponent(e)}/handler-bundles?compiledArtifactId=${encodeURIComponent(t)}`}function bt(e){return`${$}/${encodeURIComponent(e.installationId)}/handler-bundles?workspaceId=${encodeURIComponent(e.workspaceId)}&artifactDigest=${encodeURIComponent(e.artifactDigest)}`}var ge=new Set(["managed_only","managed_plus_unmanaged_sdk"]);function v(e){if(!I(e))return H("runtimeNetwork must be a JSON object");let t=e.networkModel;return typeof t!="string"||!ge.has(t)?H("runtimeNetwork.networkModel is unknown"):!W(e.apiHosts)||!W(e.authHosts)||typeof e.httpsOnly!="boolean"?H("runtimeNetwork host/https fields are invalid"):{ok:!0,value:{networkModel:t,apiHosts:e.apiHosts,authHosts:e.authHosts,httpsOnly:e.httpsOnly}}}function vt(e){if(!I(e)||typeof e.flowVersionId!="string"||typeof e.compiledArtifactId!="string"||!Array.isArray(e.bundles))return E("handler bundles data surface shape is invalid");let t=V(e.bundles);return t.ok?{ok:!0,value:{flowVersionId:e.flowVersionId,compiledArtifactId:e.compiledArtifactId,bundles:t.value}}:t}function Ct(e){if(!I(e)||typeof e.installationId!="string"||typeof e.artifactDigest!="string"||!Array.isArray(e.bundles))return E("tool handler bundles data surface shape is invalid");let t=V(e.bundles);return t.ok?{ok:!0,value:{installationId:e.installationId,artifactDigest:e.artifactDigest,bundles:t.value}}:t}function V(e){let t=[];for(let n of e){let o=me(n);if(!o.ok)return o;t.push(o.value)}return{ok:!0,value:t}}function me(e){if(!I(e)||typeof e.toolRef!="string"||e.kind!=="handler"&&e.kind!=="request")return E("handler bundle entry shape is invalid");if(e.kind==="request"){if(e.module!==void 0)return E("a request bundle must not carry a module");let o=v(e.runtimeNetwork);return o.ok?{ok:!0,value:{toolRef:e.toolRef,kind:"request",runtimeNetwork:o.value}}:o}let t=e.module;if(!I(t)||typeof t.entry!="string"||t.entry.length===0||!Re(t.files))return E("a handler bundle must carry a { entry, files } module");let n=v(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 E(e){return{ok:!1,kind:"shape",reason:e}}function H(e){return{ok:!1,kind:"runtime_network",reason:e}}function I(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function W(e){return Array.isArray(e)&&e.every(t=>typeof t=="string")}function Re(e){return I(e)&&Object.values(e).every(t=>typeof t=="string")}var w="/internal/webhook-trigger-instances",Bt="/:triggerInstanceId/context",Ft="/:triggerInstanceId/handler-bundles",Ht="/:triggerInstanceId/deliveries/:deliveryId",$t="/:triggerInstanceId/events",Mt="/:triggerInstanceId/rearm",x=e=>`${w}/${encodeURIComponent(e)}`;function Gt(e,t){return`${x(e)}/context?artifactDigest=${encodeURIComponent(t)}`}function Kt(e,t){return`${x(e)}/handler-bundles?artifactDigest=${encodeURIComponent(t)}`}function Lt(e,t){return`${x(e)}/deliveries/${encodeURIComponent(t)}`}function qt(e){return`${x(e)}/events`}function Wt(e){return`${x(e)}/rearm`}var Vt="/:installationId/webhook-protocol-adapter-bundle";function jt(e){return`${$}/${encodeURIComponent(e.installationId)}/webhook-protocol-adapter-bundle?workspaceId=${encodeURIComponent(e.workspaceId)}&artifactDigest=${encodeURIComponent(e.artifactDigest)}`}var Jt="modules/webhook/protocol-adapter.js";function Xt(e){return`modules/webhook/protocol-adapter-${e}.js`}function Yt(e){let t=i(e)?k(e.stateScope):r("webhook watcher context state scope is invalid");return!i(e)||typeof e.artifactDigest!="string"||typeof e.triggerRef!="string"||typeof e.triggerName!="string"||typeof e.integrationRef!="string"||!i(e.inputs)||e.connection!==null&&!ye(e.connection)||!ke(e.runtime)||!t.ok||t.value.kind!=="webhook-trigger"?r("webhook watcher context surface shape is invalid"):u(e)}function ye(e){return i(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(!i(e)||e.type!=="webhook"||typeof e.trigger_ref!="string")return!1;let t=e.webhook;return i(t)&&typeof t.event_handler_module=="string"&&typeof t.enable_handler_module=="string"&&typeof t.disable_handler_module=="string"}function zt(e){if(!i(e)||typeof e.deliveryId!="string"||typeof e.receivedAt!="string"||!i(e.request))return r("webhook delivery surface shape is invalid");let t=e.request;return t.method!=="POST"||!i(t.headers)||typeof t.rawBody!="string"?r("webhook delivery request shape is invalid"):u(e)}function Qt(e){if(!i(e)||typeof e.triggerRef!="string"||typeof e.artifactDigest!="string"||!Array.isArray(e.modules)||!e.modules.every(Ie))return{ok:!1,kind:"shape",reason:"trigger handler bundles data surface shape is invalid"};let t=v(e.runtimeNetwork);return t.ok?{ok:!0,value:{triggerRef:e.triggerRef,artifactDigest:e.artifactDigest,modules:e.modules,runtimeNetwork:t.value}}:t}function Ie(e){return i(e)&&typeof e.specifier=="string"&&e.specifier.length>0&&typeof e.source=="string"}function Zt(e){if(!i(e))return r("publish events body must be a JSON object");let t=M(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 s=[];for(let d of o){let a=_e(d);if(!a.ok)return a;s.push(a.value)}return u({deliveryId:n,events:s})}function _e(e){if(!i(e))return r("each event must be a JSON object");let t=M(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(!i(e.payload))return r("event payload must be a JSON object");let s={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");s.dedupeKey=e.dedupeKey}return u(s)}function en(e){if(!i(e))return r("rearm body must be a JSON object");let t=M(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 M(e,t){return Object.keys(e).find(n=>!t.includes(n))}var T="/internal/polling-trigger-instances",on="/:pollingInstanceId/context",sn="/:pollingInstanceId/handler-bundles",un="/:pollingInstanceId/ticks/:tickId/events",G=e=>`${T}/${encodeURIComponent(e)}`;function an(e,t,n){return`${G(e)}/context?artifactDigest=${encodeURIComponent(t)}&tickId=${encodeURIComponent(n)}`}function dn(e,t){return`${G(e)}/handler-bundles?artifactDigest=${encodeURIComponent(t)}`}function cn(e,t){return`${G(e)}/ticks/${encodeURIComponent(t)}/events`}function ln(e){let t=i(e)?k(e.stateScope):r("polling trigger context state scope is invalid");return!i(e)||typeof e.artifactDigest!="string"||typeof e.triggerRef!="string"||typeof e.triggerName!="string"||typeof e.integrationRef!="string"||!i(e.inputs)||e.connection!==null&&!he(e.connection)||!Ee(e.runtime)||!t.ok||t.value.kind!=="polling-trigger"||!we(e.tick)||!xe(e.limits)?r("polling trigger context surface shape is invalid"):u(e)}function he(e){return i(e)&&typeof e.connectionId=="string"&&typeof e.connectionRef=="string"&&typeof e.integrationRef=="string"&&typeof e.authProfileRef=="string"&&typeof e.authType=="string"}function Ee(e){if(!i(e)||e.type!=="polling"||typeof e.trigger_id!="string"||typeof e.trigger_ref!="string")return!1;let t=e.polling;if(!i(t)||typeof t.run_handler_module!="string")return!1;let n=t.schedule;if(!i(n)||n.type!=="interval"||typeof n.every_seconds!="number")return!1;let o=t.dedup;return i(o)&&(o.strategy==="cursor"||o.strategy==="hash"||o.strategy==="id_field")}function we(e){return i(e)&&typeof e.tickId=="string"&&typeof e.scheduledAt=="string"&&typeof e.attempt=="number"}function xe(e){return i(e)&&typeof e.maxEventsPerTick=="number"}function pn(e){if(!i(e))return r("publish body must be a JSON object");let t=j(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 d of n){let a=Te(d);if(!a.ok)return a;o.push(a.value)}let s={events:o};if("nextCursor"in e){let d=e.nextCursor;if(d!==null&&typeof d!="string")return r("nextCursor must be a string, null, or omitted");s.nextCursor=d}return u(s)}function Te(e){if(!i(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`);if(typeof e.eventId!="string"||e.eventId.length===0)return r("event eventId must be a non-empty string");if(!i(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 fn(e){return!i(e)||typeof e.tickId!="string"||typeof e.cursorUpdated!="boolean"||!Array.isArray(e.results)||!e.results.every(Pe)?r("publish polling tick events data surface shape is invalid"):u(e)}function Pe(e){return i(e)&&typeof e.eventId=="string"&&typeof e.dedupeKey=="string"&&typeof e.duplicate=="boolean"&&(e.flowRunId===null||typeof e.flowRunId=="string")}function j(e,t){return Object.keys(e).find(n=>!t.includes(n))}var J="/internal/egress-grants",K="/internal/tool-invocations",In="/:flowRunId/egress-grant",_n="/:invocationId/egress-grant",hn="/:pollingInstanceId/egress-grant",En="/:triggerInstanceId/egress-grant",wn="/:grantId/consume",xn="/:grantId/audit",Tn=e=>`${g}/${encodeURIComponent(e)}/egress-grant`,Pn=e=>`${K}/${encodeURIComponent(e)}/egress-grant`,Sn=e=>`${T}/${encodeURIComponent(e)}/egress-grant`,bn=e=>`${w}/${encodeURIComponent(e)}/egress-grant`,vn=e=>`${J}/${encodeURIComponent(e)}/consume`,Cn=e=>`${J}/${encodeURIComponent(e)}/audit`,Se=["flow_action","single_tool","polling_trigger","webhook_trigger"],be=/^[A-Za-z0-9][A-Za-z0-9:_+/=.-]{15,1023}$/;function P(e){return typeof e=="string"&&be.test(e)}function ve(e){if(!i(e)||e.body_type!=="multipart")return!1;let t=e.body;if(!i(t))return!1;let n=t.parts;return Array.isArray(n)?n.some(o=>i(o)?o.kind==="file"&&typeof o.file_id=="string"&&o.file_id.length>0:!1):!1}function l(e){return{ok:!1,kind:"shape",reason:e}}function S(){return{ok:!1,kind:"request_digest",reason:"request digest is missing or malformed"}}function A(e,t){if(!i(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 N(e){if(!i(e))return"request must be a JSON object"}function An(e){let t=A(e,["nodeId","request","requestDigest"]);if(!t.ok)return l(t.reason);let n=t.record.nodeId;if(typeof n!="string"||n.length===0)return l("nodeId is required");let o=N(t.record.request);if(o!==void 0)return l(o);let s=t.record.requestDigest;return P(s)?{ok:!0,value:{nodeId:n,requestDigest:s,requestHasMultipartFiles:ve(t.record.request)}}:S()}function Nn(e){let t=A(e,["request","requestDigest"]);if(!t.ok)return l(t.reason);let n=N(t.record.request);if(n!==void 0)return l(n);let o=t.record.requestDigest;return P(o)?{ok:!0,value:{requestDigest:o}}:S()}function On(e){let t=A(e,["tickId","request","requestDigest"]);if(!t.ok)return l(t.reason);let n=t.record.tickId;if(typeof n!="string"||n.length===0)return l("tickId is required");let o=N(t.record.request);if(o!==void 0)return l(o);let s=t.record.requestDigest;return P(s)?{ok:!0,value:{tickId:n,requestDigest:s}}:S()}function Dn(e){let t=A(e,["phase","lifecycle","request","requestDigest"]);if(!t.ok)return l(t.reason);let n=t.record.phase;if(n!=="lifecycle"&&n!=="handler")return l('phase must be "lifecycle" or "handler"');let o=t.record.lifecycle,s;if(o!==void 0){if(o!=="enable"&&o!=="disable"&&o!=="renew")return l('lifecycle must be "enable", "disable", or "renew"');s=o}if(n==="lifecycle"&&s===void 0)return l("lifecycle is required for the lifecycle phase");let d=N(t.record.request);if(d!==void 0)return l(d);let a=t.record.requestDigest;return P(a)?{ok:!0,value:{phase:n,...s!==void 0?{lifecycle:s}:{},requestDigest:a}}:S()}function X(e){return Se.includes(e)?e:void 0}var Ce=["scopeKind","scopeId","requestDigest"];function Un(e){if(!i(e))return l("consume body must be a JSON object");for(let s of Object.keys(e))if(!Ce.includes(s))return l(`consume does not accept the "${s}" field`);let t=X(e.scopeKind);if(t===void 0)return l("scopeKind is invalid");let n=e.scopeId;if(typeof n!="string"||n.length===0)return l("scopeId is required");let o=e.requestDigest;return P(o)?{ok:!0,value:{scopeKind:t,scopeId:n,requestDigest:o}}:S()}var Ae=["scopeKind","scopeId","providerHost","status","durationMs","requestBytes","responseBytes","errorCode"];function C(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 Bn(e){if(!i(e))return l("audit body must be a JSON object");for(let p of Object.keys(e))if(!Ae.includes(p))return l(`audit does not accept the "${p}" field`);let t=X(e.scopeKind);if(t===void 0)return l("scopeKind is invalid");let n=e.scopeId;if(typeof n!="string"||n.length===0)return l("scopeId is required");let o=e.providerHost;if(typeof o!="string"||o.length===0)return l("providerHost is required");let s=C(e.durationMs,"durationMs");if(!s.ok)return l(s.reason);let d;if(e.status!==void 0){let p=C(e.status,"status");if(!p.ok)return l(p.reason);d=p.value}let a;if(e.requestBytes!==void 0){let p=C(e.requestBytes,"requestBytes");if(!p.ok)return l(p.reason);a=p.value}let c;if(e.responseBytes!==void 0){let p=C(e.responseBytes,"responseBytes");if(!p.ok)return l(p.reason);c=p.value}let U;if(e.errorCode!==void 0){let p=e.errorCode;if(typeof p!="string"||p.length===0)return l("errorCode must be a non-empty string");U=p}return{ok:!0,value:{scopeKind:t,scopeId:n,providerHost:o,...d!==void 0?{status:d}:{},durationMs:s.value,...a!==void 0?{requestBytes:a}:{},...c!==void 0?{responseBytes:c}:{},...U!==void 0?{errorCode:U}:{}}}}function Fn(e){return!i(e)||!i(e.grant)?r("egress grant envelope must carry a grant object"):u(e.grant)}function Hn(e){return!i(e)||e.consumed!==!0?r("egress grant consume data must carry consumed:true"):u({consumed:!0})}var Wn="/:flowRunId/runtime-credential",Vn="/:invocationId/runtime-credential",jn="/:pollingInstanceId/runtime-credential",Jn="/:triggerInstanceId/runtime-credential",Xn=e=>`${g}/${encodeURIComponent(e)}/runtime-credential`,Yn=e=>`${K}/${encodeURIComponent(e)}/runtime-credential`,zn=e=>`${T}/${encodeURIComponent(e)}/runtime-credential`,Qn=e=>`${w}/${encodeURIComponent(e)}/runtime-credential`,Zn=["flow_action","tool_invoke","polling_trigger","webhook_trigger"];function O(e,t){if(!i(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 er(e){let t=O(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 tr(e){let t=O(e??{},[]);return t.ok?u(null):r(t.reason)}function nr(e){let t=O(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 rr(e){let t=O(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,s=t.record.deliveryId;if(s!==void 0){if(typeof s!="string"||s.length===0)return r("deliveryId must be a non-empty string");o=s}let d,a=t.record.lifecycleOperation;if(a!==void 0){if(a!=="enable"&&a!=="disable"&&a!=="renew")return r('lifecycleOperation must be "enable", "disable", or "renew"');d=a}return n==="lifecycle"&&d===void 0?r("lifecycleOperation is required for the lifecycle execution kind"):u({executionKind:n,...o!==void 0?{deliveryId:o}:{},...d!==void 0?{lifecycleOperation:d}:{}})}function or(e){return!i(e)||typeof e.sessionId!="string"||typeof e.connectionId!="string"||typeof e.authProfileRef!="string"||typeof e.authType!="string"||!i(e.credential)?r("runtime credential session must carry sessionId, connectionId, auth profile facts and a credential object"):u(e.credential)}function D(e){return!i(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 L(e){return!i(e)||e.method!=="GET"&&e.method!=="PUT"||typeof e.url!="string"||typeof e.expires_at!="string"||!De(e.headers)?r("presigned file URL data is invalid"):u(e)}function Ne(e){if(!i(e))return r("file upload session data is invalid");let t=D(e.file);if(!t.ok)return r(t.reason);let n=L(e.upload);return n.ok?u({file:t.value,upload:n.value}):r(n.reason)}function Oe(e){if(!i(e))return r("file metadata data is invalid");let t=D(e.file);return t.ok?u({file:t.value}):r(t.reason)}function De(e){return i(e)?Object.values(e).every(t=>typeof t=="string"):!1}var _="/internal/files",cr="/upload-session",lr="/:fileId/complete",pr="/:fileId/access",fr="/:fileId/stat",gr="/:fileId/content",mr=()=>_,Rr=()=>`${_}/upload-session`,yr=e=>`${_}/${encodeURIComponent(e)}/complete`,kr=(e,t)=>`${_}/${encodeURIComponent(e)}/access?intent=${encodeURIComponent(t)}`,Y=e=>`?scope_kind=${encodeURIComponent(e.scopeKind)}&scope_id=${encodeURIComponent(e.scopeId)}`,Ir=(e,t)=>`${_}/${encodeURIComponent(e)}/stat${Y(t)}`,_r=(e,t)=>`${_}/${encodeURIComponent(e)}/content${Y(t)}`;function hr(e){if(!i(e))return r("internal file access data is invalid");if(e.intent==="runtime_read"||e.intent==="provider_multipart"){let t=D(e.file);if(!t.ok)return r(t.reason);let n=L(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")}var Tr="/:flowRunId/human-inputs",Pr="/:flowRunId/human-inputs/:requestId",Sr="/:flowRunId/human-inputs/:requestId/expire",br="/:flowRunId/human-inputs/:requestId/acknowledge",Ue=e=>`${g}/${encodeURIComponent(e)}/human-inputs`,z=(e,t)=>`${Ue(e)}/${encodeURIComponent(t)}`,vr=(e,t)=>`${z(e,t)}/expire`,Cr=(e,t)=>`${z(e,t)}/acknowledge`,Be="human_input_resolved";function Ar(e){return`${Be}_${e}`}function f(e){return{ok:!1,reason:e}}function y(e,t){return i(e)?{ok:!0,value:e}:f(`${t} must be an object`)}function h(e,t){return typeof e!="string"||e.length===0?f(`${t} must be a non-empty string`):{ok:!0,value:e}}var Fe=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?(?:Z|[+-]\d{2}:\d{2})$/;function He(e,t){return typeof e!="string"||!Fe.test(e)||Number.isNaN(Date.parse(e))?f(`${t} must be an ISO-8601 timestamp`):{ok:!0,value:e}}function $e(e){let t=y(e,"renderedPrompt");if(!t.ok)return t;let n=h(t.value.title,"renderedPrompt.title");if(!n.ok)return n;let o={title:n.value};if(t.value.body!==void 0){if(typeof t.value.body!="string")return f("renderedPrompt.body must be a string");o.body=t.value.body}if(t.value.format!==void 0){if(t.value.format!=="plain"&&t.value.format!=="markdown")return f("renderedPrompt.format is invalid");o.format=t.value.format}return{ok:!0,value:o}}function Me(e){let t=y(e,"input");if(!t.ok)return t;let n=t.value.kind;if(n==="choice"){if(!Array.isArray(t.value.choices))return f("input.choices must be an array")}else if(n!=="text")if(n==="form"){if(!Array.isArray(t.value.fields))return f("input.fields must be an array")}else return f("input.kind is invalid");return{ok:!0,value:t.value}}function Ge(e){if(e==null)return{ok:!0,value:void 0};let t=y(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 f("partiallyRenderedDelivery.actions must be an array");let o=[];for(let s of n){let d=y(s,"delivery action");if(!d.ok)return d;let a=h(d.value.id,"delivery action id");if(!a.ok)return a;let c=Q(d.value.inputs,`delivery action '${a.value}' inputs`);if(!c.ok)return c;o.push({id:a.value,inputs:c.value})}return{ok:!0,value:{actions:o}}}function Q(e,t){let n=y(e,t);if(!n.ok)return n;let o={};for(let[s,d]of Object.entries(n.value)){let a=Z(d,`${t}.${s}`);if(!a.ok)return a;o[s]=a.value}return{ok:!0,value:o}}function Z(e,t){let n=y(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 s=h(n.value.path,`${t}.path`);return s.ok?{ok:!0,value:{kind:"human_input_ref",path:s.value}}:s}case"array":{if(!Array.isArray(n.value.items))return f(`${t}.items must be an array`);let s=[];for(let[d,a]of n.value.items.entries()){let c=Z(a,`${t}[${d}]`);if(!c.ok)return c;s.push(c.value)}return{ok:!0,value:{kind:"array",items:s}}}case"object":{let s=Q(n.value.entries,`${t}.entries`);return s.ok?{ok:!0,value:{kind:"object",entries:s.value}}:s}case"template":{if(!Array.isArray(n.value.parts))return f(`${t}.parts must be an array`);let s=[];for(let[d,a]of n.value.parts.entries()){let c=Ke(a,`${t}.parts[${d}]`);if(!c.ok)return c;s.push(c.value)}return{ok:!0,value:{kind:"template",parts:s}}}default:return f(`${t}.kind is invalid`)}}function Ke(e,t){let n=y(e,t);if(!n.ok)return n;let o=n.value.kind;if(o==="literal")return typeof n.value.value!="string"?f(`${t}.value must be a string`):{ok:!0,value:{kind:"literal",value:n.value.value}};if(o==="human_input_ref"){let s=h(n.value.path,`${t}.path`);return s.ok?{ok:!0,value:{kind:"human_input_ref",path:s.value}}:s}return f(`${t}.kind is invalid`)}function Nr(e){let t=y(e,"request body");if(!t.ok)return r(t.reason);let n=h(t.value.nodeId,"nodeId");if(!n.ok)return r(n.reason);let o=$e(t.value.renderedPrompt);if(!o.ok)return r(o.reason);let s=Me(t.value.input);if(!s.ok)return r(s.reason);let d=h(t.value.timeout,"timeout");if(!d.ok)return r(d.reason);let a=He(t.value.expiresAt,"expiresAt");if(!a.ok)return r(a.reason);let c=Ge(t.value.partiallyRenderedDelivery);return c.ok?u({nodeId:n.value,renderedPrompt:o.value,input:s.value,timeout:d.value,expiresAt:a.value,...c.value!==void 0?{partiallyRenderedDelivery:c.value}:{}}):r(c.reason)}function Le(e){return!i(e)||typeof e.id!="string"||e.id.length===0||typeof e.nodeId!="string"||typeof e.status!="string"||!(e.output===null||i(e.output))?r("human input request view must carry id, nodeId, status and output"):u(e)}function Or(e){if(!i(e)||typeof e.created!="boolean")return r("human input create data must carry created:boolean");let t=Le(e.request);return t.ok?u({created:e.created,request:t.value}):t}function Dr(e){return!i(e)||e.acknowledged!==!0?r("human input acknowledge data must carry acknowledged:true"):u({acknowledged:!0})}var Br="ablehi-wfp-user-runtime-manifest/v1",Fr="unknown";function Hr(e){return e.endsWith(".js")?`${e.slice(0,-3)}.manifest.json`:`${e}.manifest.json`}var Mr="/internal/deployment-handshake",qe=["start","terminate","send-event","start-webhook-watcher","run-polling-tick","invoke-tool","invoke-trigger-handler","invoke-webhook-protocol-adapter","deployment-handshake"],Gr=qe,Kr="HANDSHAKE_REQUEST_INVALID",Lr="HANDSHAKE_SECRET_UNCONFIGURED",qr="HANDSHAKE_SECRET_MISMATCH",Wr="HANDSHAKE_CONTRACT_VERSION_MISMATCH",Vr="HANDSHAKE_DISPATCH_NAMESPACE_MISMATCH",jr="HANDSHAKE_CAPABILITY_MISSING";function Jr(e){return[e.nonce,e.timestamp,e.contractVersion,e.dispatchNamespace].map(n=>`${n.length}:${n}`).join(".")}function Xr(e){return["response",e.nonce,e.contractVersion,e.dispatchNamespace,...e.capabilities].map(n=>`${n.length}:${n}`).join(".")}export{Je as CONTEXT_STATE_CLEANUP_ROUTE_PATH,qe as DEPLOYMENT_HANDSHAKE_DISPATCHER_CAPABILITIES,Gr as DEPLOYMENT_HANDSHAKE_REQUIRED_CAPABILITIES,Mr as DEPLOYMENT_HANDSHAKE_ROUTE,xn as EGRESS_GRANT_AUDIT_ROUTE_SUBPATH,wn as EGRESS_GRANT_CONSUME_ROUTE_SUBPATH,Se as EGRESS_GRANT_SCOPE_KINDS,ct as EVENT_WAIT_ROUTE_SUBPATH,et as EXECUTION_CONTEXT_ROUTE_SUBPATH,pr as FILE_ACCESS_ROUTE_SUBPATH,lr as FILE_COMPLETE_ROUTE_SUBPATH,gr as FILE_CONTENT_ROUTE_SUBPATH,fr as FILE_STAT_ROUTE_SUBPATH,cr as FILE_UPLOAD_SESSION_ROUTE_SUBPATH,In as FLOW_RUN_EGRESS_GRANT_ROUTE_SUBPATH,dt as FLOW_RUN_EXECUTION_EVENTS_ROUTE_SUBPATH,de as FLOW_RUN_EXECUTION_EVENT_TYPES,at as FLOW_RUN_RESULT_ROUTE_SUBPATH,Wn as FLOW_RUN_RUNTIME_CREDENTIAL_ROUTE_SUBPATH,Tt as HANDLER_BUNDLES_ROUTE_SUBPATH,jr as HANDSHAKE_CAPABILITY_MISSING,Wr as HANDSHAKE_CONTRACT_VERSION_MISMATCH,Vr as HANDSHAKE_DISPATCH_NAMESPACE_MISMATCH,Kr as HANDSHAKE_REQUEST_INVALID,qr as HANDSHAKE_SECRET_MISMATCH,Lr as HANDSHAKE_SECRET_UNCONFIGURED,Tr as HUMAN_INPUTS_ROUTE_SUBPATH,br as HUMAN_INPUT_ACKNOWLEDGE_ROUTE_SUBPATH,Sr as HUMAN_INPUT_EXPIRE_ROUTE_SUBPATH,Pr as HUMAN_INPUT_REQUEST_ROUTE_SUBPATH,Be as HUMAN_INPUT_RESOLVED_EVENT_PREFIX,J as INTERNAL_EGRESS_GRANTS_ROUTE_PREFIX,_ as INTERNAL_FILES_ROUTE_PREFIX,g as INTERNAL_FLOW_RUNS_ROUTE_PREFIX,fe as INTERNAL_FLOW_VERSIONS_ROUTE_PREFIX,$ as INTERNAL_INSTALLATIONS_ROUTE_PREFIX,T as INTERNAL_POLLING_TRIGGER_INSTANCES_ROUTE_PREFIX,K as INTERNAL_TOOL_INVOCATIONS_ROUTE_PREFIX,w as INTERNAL_WEBHOOK_TRIGGER_INSTANCES_ROUTE_PREFIX,on as POLLING_TRIGGER_CONTEXT_ROUTE_SUBPATH,hn as POLLING_TRIGGER_EGRESS_GRANT_ROUTE_SUBPATH,sn as POLLING_TRIGGER_HANDLER_BUNDLES_ROUTE_SUBPATH,jn as POLLING_TRIGGER_RUNTIME_CREDENTIAL_ROUTE_SUBPATH,un as POLLING_TRIGGER_TICK_EVENTS_ROUTE_SUBPATH,Zn as RUNTIME_CREDENTIAL_SESSION_SCOPE_KINDS,ee as SERVER_EXECUTION_CONTRACT_VERSION,ut as STEP_RESULT_ROUTE_SUBPATH,Pt as TOOL_HANDLER_BUNDLES_ROUTE_SUBPATH,_n as TOOL_INVOCATION_EGRESS_GRANT_ROUTE_SUBPATH,Vn as TOOL_INVOCATION_RUNTIME_CREDENTIAL_ROUTE_SUBPATH,Vt as WEBHOOK_PROTOCOL_ADAPTER_BUNDLE_ROUTE_SUBPATH,Jt as WEBHOOK_PROTOCOL_ADAPTER_MODULE,Bt as WEBHOOK_TRIGGER_CONTEXT_ROUTE_SUBPATH,Ht as WEBHOOK_TRIGGER_DELIVERY_ROUTE_SUBPATH,En as WEBHOOK_TRIGGER_EGRESS_GRANT_ROUTE_SUBPATH,$t as WEBHOOK_TRIGGER_EVENTS_ROUTE_SUBPATH,Ft as WEBHOOK_TRIGGER_HANDLER_BUNDLES_ROUTE_SUBPATH,Mt as WEBHOOK_TRIGGER_REARM_ROUTE_SUBPATH,Jn as WEBHOOK_TRIGGER_RUNTIME_CREDENTIAL_ROUTE_SUBPATH,Br as WFP_USER_RUNTIME_MANIFEST_FORMAT_VERSION,Fr as WFP_USER_RUNTIME_UNKNOWN_SOURCE_REVISION,Jr as deploymentHandshakeProbePayload,Xr as deploymentHandshakeResponseProofPayload,Cn as egressGrantAuditPath,vn as egressGrantConsumePath,gt as eventWaitPath,tt as executionContextPath,Tn as flowRunEgressGrantPath,ft as flowRunExecutionEventsPath,pt as flowRunResultPath,Xn as flowRunRuntimeCredentialPath,Xt as flowScriptProtocolAdapterModuleName,St as handlerBundlesPath,Cr as humanInputAcknowledgePath,vr as humanInputExpirePath,z as humanInputRequestPath,Ar as humanInputResolvedEventType,Ue as humanInputsPath,kr as internalFileAccessPath,yr as internalFileCompletePath,_r as internalFileContentPath,Ir as internalFileStatPath,Rr as internalFileUploadSessionPath,mr as internalFilesPath,P as isValidRequestDigest,Et as parseCompleteFlowRunWaitBody,Xe as parseContextStateCleanupRequestBody,Ye as parseContextStateCleanupResponseData,k as parseContextStateScope,Nr as parseCreateHumanInputBody,Bn as parseEgressGrantAuditBody,Un as parseEgressGrantConsumeBody,Hn as parseEgressGrantConsumeData,Fn as parseEgressGrantData,nt as parseExecutionContextData,Oe as parseFileMetadataData,D as parseFileRefData,oe as parseFileRuntimeLimits,Ne as parseFileUploadSessionData,An as parseFlowActionGrantBody,_t as parseFlowRunExecutionEventBody,It as parseFlowRunExecutionEventData,yt as parseFlowRunResultBody,kt as parseFlowRunResultData,er as parseFlowRuntimeCredentialBody,me as parseHandlerBundle,vt as parseHandlerBundlesData,Dr as parseHumanInputAcknowledgeData,Or as parseHumanInputCreateData,Le as parseHumanInputRequestViewData,hr as parseInternalFileAccessData,pn as parsePollingPublishBody,nr as parsePollingRuntimeCredentialBody,ln as parsePollingTriggerContext,On as parsePollingTriggerGrantBody,fn as parsePublishPollingTickEventsData,ht as parseRegisterFlowRunWaitBody,wt as parseRegisterFlowRunWaitData,or as parseRuntimeCredentialSessionCredential,v as parseRuntimeNetwork,Nn as parseSingleToolGrantBody,tr as parseSingleToolRuntimeCredentialBody,mt as parseStepRecordBody,Rt as parseStepRecordData,Ct as parseToolHandlerBundlesData,Qt as parseTriggerHandlerBundlesData,zt as parseWebhookDelivery,Zt as parseWebhookPublishEventsBody,en as parseWebhookRearmBody,rr as parseWebhookRuntimeCredentialBody,Dn as parseWebhookTriggerGrantBody,Yt as parseWebhookWatcherContext,an as pollingTriggerContextPath,Sn as pollingTriggerEgressGrantPath,dn as pollingTriggerHandlerBundlesPath,zn as pollingTriggerRuntimeCredentialPath,cn as pollingTriggerTickEventsPath,ve as requestHasMultipartFileParts,lt as stepResultPath,bt as toolHandlerBundlesPath,Pn as toolInvocationEgressGrantPath,Yn as toolInvocationRuntimeCredentialPath,jt as webhookProtocolAdapterBundlePath,Gt as webhookTriggerContextPath,Lt as webhookTriggerDeliveryPath,bn as webhookTriggerEgressGrantPath,qt as webhookTriggerEventsPath,Kt as webhookTriggerHandlerBundlesPath,Wt as webhookTriggerRearmPath,Qn as webhookTriggerRuntimeCredentialPath,Hr as wfpUserRuntimeManifestPath};
1
+ var ne="0.2.10";function u(e){return{ok:!0,value:e}}function r(e){return{ok:!1,reason:e}}function i(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var ze="/cleanup-state-scopes";function k(e){if(!i(e)||typeof e.kind!="string")return r("context state scope surface shape is invalid");switch(e.kind){case"webhook-trigger":return re(e);case"polling-trigger":return oe(e);case"flow-action":return ie(e);default:return r("context state scope kind is invalid")}}function Qe(e){if(!i(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 s=k(o);if(!s.ok)return s;n.push(s.value)}return u({scopes:n})}function Ze(e){return!i(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 re(e){let t=b(e,["kind","workspaceId","triggerInstanceId"]);return t!==void 0?r(`webhook trigger scope does not accept "${t}"`):e.kind!=="webhook-trigger"||!R(e.workspaceId)||!R(e.triggerInstanceId)?r("webhook trigger state scope is invalid"):u({kind:"webhook-trigger",workspaceId:e.workspaceId,triggerInstanceId:e.triggerInstanceId})}function oe(e){let t=b(e,["kind","workspaceId","pollingInstanceId"]);return t!==void 0?r(`polling trigger scope does not accept "${t}"`):e.kind!=="polling-trigger"||!R(e.workspaceId)||!R(e.pollingInstanceId)?r("polling trigger state scope is invalid"):u({kind:"polling-trigger",workspaceId:e.workspaceId,pollingInstanceId:e.pollingInstanceId})}function ie(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"||!R(e.workspaceId)||!R(e.flowId)||!R(e.nodeId)||n!==null&&!R(n)?r("flow action state scope is invalid"):u({kind:"flow-action",workspaceId:e.workspaceId,flowId:e.flowId,nodeId:e.nodeId,connectionId:n})}function R(e){return typeof e=="string"&&e.length>0}function b(e,t){return Object.keys(e).find(n=>!t.includes(n))}var g="/internal/flow-runs",rt="/:flowRunId/execution-context";function ot(e){return`${g}/${encodeURIComponent(e)}/execution-context`}function F(e){return!i(e)||!B(e.fileMaxBytes)||!B(e.fileReadMaxBytes)||!B(e.inlineMultipartBytesMax)?r("file runtime limits must carry three positive integer bounds"):u({fileMaxBytes:e.fileMaxBytes,fileReadMaxBytes:e.fileReadMaxBytes,inlineMultipartBytesMax:e.inlineMultipartBytesMax})}function it(e){if(!i(e))return r("execution context must be a JSON object");let t=e.compiled;if(typeof e.flowRunId!="string"||typeof e.workspaceId!="string"||!i(e.input)||!i(t)||typeof t.irSchemaVersion!="string"||typeof t.interpreterContractVersion!="string"||typeof t.compiledArtifactId!="string"||!i(t.ir)||!Array.isArray(t.ir.nodes)||!ue(e.executionBindings))return r("execution context surface shape is invalid");let n=se(e.fileRuntime);return n.ok?u({...e,fileRuntime:n.value}):r(n.reason)}function se(e){if(e===null)return u(null);if(!i(e))return r("fileRuntime must be null or an object");let t=F(e.limits);return t.ok?u({limits:t.value}):r(t.reason)}function ue(e){return Array.isArray(e)?e.every(t=>{if(!i(t))return!1;let n=t.connection,o=k(t.stateScope);return typeof t.nodeId=="string"&&typeof t.toolRef=="string"&&i(t.toolDescriptor)&&i(t.integrationDescriptor)&&i(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 B(e){return typeof e=="number"&&Number.isSafeInteger(e)&&e>0}import{parseAblehiErrorDigest as H}from"@ablehi/error-contract";var ct="/:flowRunId/steps/:nodeId/result",lt="/:flowRunId/result",pt="/:flowRunId/execution-events",ft="/:flowRunId/event-waits/:nodeId";function gt(e,t){return`${g}/${encodeURIComponent(e)}/steps/${encodeURIComponent(t)}/result`}function mt(e){return`${g}/${encodeURIComponent(e)}/result`}function Rt(e){return`${g}/${encodeURIComponent(e)}/execution-events`}function yt(e,t){return`${g}/${encodeURIComponent(e)}/event-waits/${encodeURIComponent(t)}`}function kt(e){if(!i(e))return{ok:!1,kind:"validation",reason:"step record body must be a JSON object"};let t=m(e,["attempt","result","durationMs"]);if(t!==void 0)return{ok:!1,kind:"validation",reason:`step record does not accept the "${t}" field`};let n=e.attempt;if(typeof n!="number"||!Number.isInteger(n)||n<=0)return{ok:!1,kind:"validation",reason:"attempt must be a positive integer"};let o=ae(e.result);if(!o.ok)return o;let s={attempt:n,result:o.value};if(e.durationMs!==void 0){let d=e.durationMs;if(typeof d!="number"||!Number.isFinite(d)||d<0)return{ok:!1,kind:"validation",reason:"durationMs must be a non-negative number"};s.durationMs=d}return{ok:!0,value:s}}function ae(e){if(!i(e))return{ok:!1,kind:"step_result_invalid",reason:"result must be a JSON object"};let t=e.status;if(t==="succeeded"){let n=m(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=m(e,["status","error"]);if(n!==void 0)return{ok:!1,kind:"validation",reason:`step record result does not accept the "${n}" field`};let o=H(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=m(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=m(e,["status","error"]);if(n!==void 0)return{ok:!1,kind:"validation",reason:`step record result does not accept the "${n}" field`};let o=H(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 It(e){return!i(e)||typeof e.flowRunId!="string"||typeof e.nodeId!="string"||!de(e.recorded)?r("step record data surface shape is invalid"):u({flowRunId:e.flowRunId,nodeId:e.nodeId,recorded:e.recorded})}function de(e){return e==="succeeded"||e==="failed"||e==="skipped"||e==="timed_out"}function _t(e){if(!i(e))return r("result body must be a JSON object");let t=m(e,["status","output","error","composition"]);if(t!==void 0)return r(`result does not accept the "${t}" field`);let n=e.status;if(n!=="succeeded"&&n!=="failed")return r('result status must be "succeeded" or "failed"');let o={status:n};if(e.output!==void 0){if(n!=="succeeded")return r("output is only allowed on a succeeded result");o.output=e.output}if(e.error!==void 0){if(n!=="failed")return r("error is only allowed on a failed result");let s=H(e.error);if(!s.ok)return r(`result error must be an AblehiErrorDigest: ${s.reason}`);o.error=s.value}if(n==="failed"&&o.error===void 0)return r("a failed result must carry an AblehiErrorDigest");if(e.composition!==void 0){if(n!=="succeeded")return r("composition is only allowed on a succeeded result");o.composition=e.composition}return u(o)}function ht(e){return i(e)?u(e):r("flow run result data must be a JSON object")}var ce=["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 wt(e){if(!i(e))return r("execution event data must be a JSON object");let t=m(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 Et(e){if(!i(e))return r("execution event body must be a JSON object");let t=m(e,["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=e.eventId;if(typeof n!="string"||n.length===0)return r("eventId must be a non-empty string");let o=e.eventType;if(!le(o))return r("eventType is not a known flow execution event type");let s=e.occurredAt;if(typeof s!="string"||s.length===0)return r("occurredAt must be a non-empty string");let d={eventId:n,eventType:o,occurredAt:s};for(let a of["nodeId","stepRunId","errorId","payloadRef"]){let c=e[a];if(c!==void 0){if(typeof c!="string"||c.length===0)return r(`${a} must be a non-empty string`);d[a]=c}}for(let a of["attempt","durationMs"]){let c=e[a];if(c!==void 0){if(typeof c!="number"||!Number.isFinite(c)||!Number.isInteger(c)||c<0)return r(`${a} must be a non-negative integer`);d[a]=c}}if(e.inputFact!==void 0){if(o!=="step_started")return r("inputFact is only allowed on step_started events");if(d.attempt===void 0)return r("inputFact requires attempt");let a=pe(e.inputFact);if(!a.ok)return a;d.inputFact=a.value}return u(d)}function le(e){return typeof e=="string"&&ce.includes(e)}function pe(e){if(!i(e))return r("inputFact must be a JSON object");let t=m(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(!i(o))return r("inputFact.domain must be a JSON object");let s=m(o,["irSchemaVersion","interpreterContractVersion","compiledArtifactId","nodeId","algorithmVersion"]);return s!==void 0?r(`inputFact.domain does not accept the "${s}" 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 fe=/^[A-Za-z0-9_-]{1,100}$/;function xt(e){if(!i(e))return r("register body must be a JSON object");let t=m(e,["eventType","correlationKey"]);if(t!==void 0)return r(`register wait does not accept the "${t}" field`);let n=V(e.eventType);if(!n.ok)return r(n.reason);let o=e.correlationKey;return typeof o!="string"||o.length===0?r("correlationKey must be a non-empty string"):u({eventType:n.value,correlationKey:o})}function Tt(e){if(!i(e))return r("complete body must be a JSON object");let t=m(e,["eventType","correlationKey","outcome","eventId"]);if(t!==void 0)return r(`complete wait does not accept the "${t}" field`);let n=e.outcome;if(n!=="received"&&n!=="timed_out")return r('outcome must be "received" or "timed_out"');let o=V(e.eventType);if(!o.ok)return r(o.reason);let s=e.correlationKey;if(typeof s!="string"||s.length===0)return r("correlationKey must be a non-empty string");let d={eventType:o.value,correlationKey:s,outcome:n};if(e.eventId!==void 0){if(typeof e.eventId!="string"||e.eventId.length===0)return r("eventId must be a non-empty string");d.eventId=e.eventId}return u(d)}function Pt(e){return!i(e)||e.registered!==!0?r("register wait data surface shape is invalid"):u({registered:!0})}function V(e){return typeof e!="string"||e.length===0?r("eventType must be a non-empty string"):fe.test(e)?u(e):r("eventType must match ^[A-Za-z0-9_-]{1,100}$")}function m(e,t){return Object.keys(e).find(n=>!t.includes(n))}var ge="/internal/flow-versions",vt="/:flowVersionId/handler-bundles",M="/internal/installations",bt="/:installationId/handler-bundles";function Ct(e,t){return`${ge}/${encodeURIComponent(e)}/handler-bundles?compiledArtifactId=${encodeURIComponent(t)}`}function At(e){return`${M}/${encodeURIComponent(e.installationId)}/handler-bundles?workspaceId=${encodeURIComponent(e.workspaceId)}&artifactDigest=${encodeURIComponent(e.artifactDigest)}`}var me=new Set(["managed_only","managed_plus_unmanaged_sdk"]);function C(e){if(!_(e))return $("runtimeNetwork must be a JSON object");let t=e.networkModel;return typeof t!="string"||!me.has(t)?$("runtimeNetwork.networkModel is unknown"):!j(e.apiHosts)||!j(e.authHosts)||typeof e.httpsOnly!="boolean"?$("runtimeNetwork host/https fields are invalid"):{ok:!0,value:{networkModel:t,apiHosts:e.apiHosts,authHosts:e.authHosts,httpsOnly:e.httpsOnly}}}function Nt(e){if(!_(e)||typeof e.flowVersionId!="string"||typeof e.compiledArtifactId!="string"||!Array.isArray(e.bundles))return E("handler bundles data surface shape is invalid");let t=J(e.bundles);return t.ok?{ok:!0,value:{flowVersionId:e.flowVersionId,compiledArtifactId:e.compiledArtifactId,bundles:t.value}}:t}function Dt(e){if(!_(e)||typeof e.installationId!="string"||typeof e.artifactDigest!="string"||!Array.isArray(e.bundles))return E("tool handler bundles data surface shape is invalid");let t=J(e.bundles);return t.ok?{ok:!0,value:{installationId:e.installationId,artifactDigest:e.artifactDigest,bundles:t.value}}:t}function J(e){let t=[];for(let n of e){let o=Re(n);if(!o.ok)return o;t.push(o.value)}return{ok:!0,value:t}}function Re(e){if(!_(e)||typeof e.toolRef!="string"||e.kind!=="handler"&&e.kind!=="request")return E("handler bundle entry shape is invalid");if(e.kind==="request"){if(e.module!==void 0)return E("a request bundle must not carry a module");let o=C(e.runtimeNetwork);return o.ok?{ok:!0,value:{toolRef:e.toolRef,kind:"request",runtimeNetwork:o.value}}:o}let t=e.module;if(!_(t)||typeof t.entry!="string"||t.entry.length===0||!ye(t.files))return E("a handler bundle must carry a { entry, files } module");let n=C(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 E(e){return{ok:!1,kind:"shape",reason:e}}function $(e){return{ok:!1,kind:"runtime_network",reason:e}}function _(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function j(e){return Array.isArray(e)&&e.every(t=>typeof t=="string")}function ye(e){return _(e)&&Object.values(e).every(t=>typeof t=="string")}var x="/internal/webhook-trigger-instances",Mt="/:triggerInstanceId/context",Gt="/:triggerInstanceId/handler-bundles",Kt="/:triggerInstanceId/deliveries/:deliveryId",Lt="/:triggerInstanceId/events",qt="/:triggerInstanceId/rearm",T=e=>`${x}/${encodeURIComponent(e)}`;function Wt(e,t){return`${T(e)}/context?artifactDigest=${encodeURIComponent(t)}`}function Vt(e,t){return`${T(e)}/handler-bundles?artifactDigest=${encodeURIComponent(t)}`}function jt(e,t){return`${T(e)}/deliveries/${encodeURIComponent(t)}`}function Jt(e){return`${T(e)}/events`}function Xt(e){return`${T(e)}/rearm`}var Yt="/:installationId/webhook-protocol-adapter-bundle";function zt(e){return`${M}/${encodeURIComponent(e.installationId)}/webhook-protocol-adapter-bundle?workspaceId=${encodeURIComponent(e.workspaceId)}&artifactDigest=${encodeURIComponent(e.artifactDigest)}`}var Qt="modules/webhook/protocol-adapter.js";function Zt(e){return`modules/webhook/protocol-adapter-${e}.js`}function en(e){let t=i(e)?k(e.stateScope):r("webhook watcher context state scope is invalid");return!i(e)||typeof e.artifactDigest!="string"||typeof e.triggerRef!="string"||typeof e.triggerName!="string"||typeof e.integrationRef!="string"||!i(e.inputs)||e.connection!==null&&!ke(e.connection)||!Ie(e.runtime)||!t.ok||t.value.kind!=="webhook-trigger"?r("webhook watcher context surface shape is invalid"):u(e)}function ke(e){return i(e)&&typeof e.connectionId=="string"&&typeof e.connectionRef=="string"&&typeof e.integrationRef=="string"&&typeof e.authProfileRef=="string"&&typeof e.authType=="string"}function Ie(e){if(!i(e)||e.type!=="webhook"||typeof e.trigger_ref!="string")return!1;let t=e.webhook;return i(t)&&typeof t.event_handler_module=="string"&&typeof t.enable_handler_module=="string"&&typeof t.disable_handler_module=="string"}function _e(e){if(!i(e)||typeof e.deliveryId!="string"||typeof e.receivedAt!="string"||!i(e.request))return r("webhook delivery surface shape is invalid");let t=e.request;return t.method!=="POST"||!i(t.headers)||typeof t.rawBody!="string"?r("webhook delivery request shape is invalid"):u(e)}function G(e){if(!i(e)||typeof e.token!="string"||typeof e.expiresAt!="string")return r("trigger file runtime dispatch shape is invalid");let t=F(e.limits);return t.ok?u({token:e.token,expiresAt:e.expiresAt,limits:t.value}):r(t.reason)}function tn(e){if(!i(e))return r("webhook delivery dispatch data is invalid");let t=_e(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=G(n);return o.ok?u({delivery:t.value,fileRuntime:o.value}):r(o.reason)}function nn(e){if(!i(e)||typeof e.triggerRef!="string"||typeof e.artifactDigest!="string"||!Array.isArray(e.modules)||!e.modules.every(he))return{ok:!1,kind:"shape",reason:"trigger handler bundles data surface shape is invalid"};let t=C(e.runtimeNetwork);return t.ok?{ok:!0,value:{triggerRef:e.triggerRef,artifactDigest:e.artifactDigest,modules:e.modules,runtimeNetwork:t.value}}:t}function he(e){return i(e)&&typeof e.specifier=="string"&&e.specifier.length>0&&typeof e.source=="string"}function rn(e){if(!i(e))return r("publish events body must be a JSON object");let t=K(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 s=[];for(let d of o){let a=we(d);if(!a.ok)return a;s.push(a.value)}return u({deliveryId:n,events:s})}function we(e){if(!i(e))return r("each event must be a JSON object");let t=K(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(!i(e.payload))return r("event payload must be a JSON object");let s={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");s.dedupeKey=e.dedupeKey}return u(s)}function on(e){if(!i(e))return r("rearm body must be a JSON object");let t=K(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 K(e,t){return Object.keys(e).find(n=>!t.includes(n))}var P="/internal/polling-trigger-instances",cn="/:pollingInstanceId/context",ln="/:pollingInstanceId/handler-bundles",pn="/:pollingInstanceId/ticks/:tickId/events",L=e=>`${P}/${encodeURIComponent(e)}`;function fn(e,t,n){return`${L(e)}/context?artifactDigest=${encodeURIComponent(t)}&tickId=${encodeURIComponent(n)}`}function gn(e,t){return`${L(e)}/handler-bundles?artifactDigest=${encodeURIComponent(t)}`}function mn(e,t){return`${L(e)}/ticks/${encodeURIComponent(t)}/events`}function Ee(e){let t=i(e)?k(e.stateScope):r("polling trigger context state scope is invalid");return!i(e)||typeof e.artifactDigest!="string"||typeof e.triggerRef!="string"||typeof e.triggerName!="string"||typeof e.integrationRef!="string"||!i(e.inputs)||e.connection!==null&&!xe(e.connection)||!Te(e.runtime)||!t.ok||t.value.kind!=="polling-trigger"||!Pe(e.tick)||!Se(e.limits)?r("polling trigger context surface shape is invalid"):u(e)}function Rn(e){if(!i(e))return r("polling trigger dispatch data is invalid");let t=Ee(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=G(n);return o.ok?u({context:t.value,fileRuntime:o.value}):r(o.reason)}function xe(e){return i(e)&&typeof e.connectionId=="string"&&typeof e.connectionRef=="string"&&typeof e.integrationRef=="string"&&typeof e.authProfileRef=="string"&&typeof e.authType=="string"}function Te(e){if(!i(e)||e.type!=="polling"||typeof e.trigger_id!="string"||typeof e.trigger_ref!="string")return!1;let t=e.polling;if(!i(t)||typeof t.run_handler_module!="string")return!1;let n=t.schedule;if(!i(n)||n.type!=="interval"||typeof n.every_seconds!="number")return!1;let o=t.dedup;return i(o)&&(o.strategy==="cursor"||o.strategy==="hash"||o.strategy==="id_field")}function Pe(e){return i(e)&&typeof e.tickId=="string"&&typeof e.scheduledAt=="string"&&typeof e.attempt=="number"}function Se(e){return i(e)&&typeof e.maxEventsPerTick=="number"}function yn(e){if(!i(e))return r("publish body must be a JSON object");let t=X(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 d of n){let a=ve(d);if(!a.ok)return a;o.push(a.value)}let s={events:o};if("nextCursor"in e){let d=e.nextCursor;if(d!==null&&typeof d!="string")return r("nextCursor must be a string, null, or omitted");s.nextCursor=d}return u(s)}function ve(e){if(!i(e))return r("each event must be a JSON object");let t=X(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(!i(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 kn(e){return!i(e)||typeof e.tickId!="string"||typeof e.cursorUpdated!="boolean"||!Array.isArray(e.results)||!e.results.every(be)?r("publish polling tick events data surface shape is invalid"):u(e)}function be(e){return i(e)&&typeof e.eventId=="string"&&typeof e.dedupeKey=="string"&&typeof e.duplicate=="boolean"&&(e.flowRunId===null||typeof e.flowRunId=="string")}function X(e,t){return Object.keys(e).find(n=>!t.includes(n))}var Y="/internal/egress-grants",q="/internal/tool-invocations",xn="/:flowRunId/egress-grant",Tn="/:invocationId/egress-grant",Pn="/:pollingInstanceId/egress-grant",Sn="/:triggerInstanceId/egress-grant",vn="/:grantId/consume",bn="/:grantId/audit",Cn=e=>`${g}/${encodeURIComponent(e)}/egress-grant`,An=e=>`${q}/${encodeURIComponent(e)}/egress-grant`,Nn=e=>`${P}/${encodeURIComponent(e)}/egress-grant`,Dn=e=>`${x}/${encodeURIComponent(e)}/egress-grant`,On=e=>`${Y}/${encodeURIComponent(e)}/consume`,Un=e=>`${Y}/${encodeURIComponent(e)}/audit`,Ce=["flow_action","single_tool","polling_trigger","webhook_trigger"],Ae=/^[A-Za-z0-9][A-Za-z0-9:_+/=.-]{15,1023}$/;function S(e){return typeof e=="string"&&Ae.test(e)}function Ne(e){if(!i(e)||e.body_type!=="multipart")return!1;let t=e.body;if(!i(t))return!1;let n=t.parts;return Array.isArray(n)?n.some(o=>i(o)?o.kind==="file"&&typeof o.file_id=="string"&&o.file_id.length>0:!1):!1}function l(e){return{ok:!1,kind:"shape",reason:e}}function v(){return{ok:!1,kind:"request_digest",reason:"request digest is missing or malformed"}}function N(e,t){if(!i(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 D(e){if(!i(e))return"request must be a JSON object"}function Bn(e){let t=N(e,["nodeId","request","requestDigest"]);if(!t.ok)return l(t.reason);let n=t.record.nodeId;if(typeof n!="string"||n.length===0)return l("nodeId is required");let o=D(t.record.request);if(o!==void 0)return l(o);let s=t.record.requestDigest;return S(s)?{ok:!0,value:{nodeId:n,requestDigest:s,requestHasMultipartFiles:Ne(t.record.request)}}:v()}function Fn(e){let t=N(e,["request","requestDigest"]);if(!t.ok)return l(t.reason);let n=D(t.record.request);if(n!==void 0)return l(n);let o=t.record.requestDigest;return S(o)?{ok:!0,value:{requestDigest:o}}:v()}function Hn(e){let t=N(e,["tickId","request","requestDigest"]);if(!t.ok)return l(t.reason);let n=t.record.tickId;if(typeof n!="string"||n.length===0)return l("tickId is required");let o=D(t.record.request);if(o!==void 0)return l(o);let s=t.record.requestDigest;return S(s)?{ok:!0,value:{tickId:n,requestDigest:s}}:v()}function $n(e){let t=N(e,["phase","lifecycle","deliveryId","request","requestDigest"]);if(!t.ok)return l(t.reason);let n=t.record.phase;if(n!=="lifecycle"&&n!=="handler")return l('phase must be "lifecycle" or "handler"');let o=t.record.lifecycle,s;if(o!==void 0){if(o!=="enable"&&o!=="disable"&&o!=="renew")return l('lifecycle must be "enable", "disable", or "renew"');s=o}if(n==="lifecycle"&&s===void 0)return l("lifecycle is required for the lifecycle phase");let d=t.record.deliveryId,a;if(d!==void 0){if(typeof d!="string"||d.length===0)return l("deliveryId must be a non-empty string");a=d}if(n==="handler"&&a===void 0)return l("deliveryId is required for the handler phase");let c=D(t.record.request);if(c!==void 0)return l(c);let I=t.record.requestDigest;return S(I)?{ok:!0,value:{phase:n,...s!==void 0?{lifecycle:s}:{},...a!==void 0?{deliveryId:a}:{},requestDigest:I}}:v()}function z(e){return Ce.includes(e)?e:void 0}var De=["scopeKind","scopeId","requestDigest"];function Mn(e){if(!i(e))return l("consume body must be a JSON object");for(let s of Object.keys(e))if(!De.includes(s))return l(`consume does not accept the "${s}" field`);let t=z(e.scopeKind);if(t===void 0)return l("scopeKind is invalid");let n=e.scopeId;if(typeof n!="string"||n.length===0)return l("scopeId is required");let o=e.requestDigest;return S(o)?{ok:!0,value:{scopeKind:t,scopeId:n,requestDigest:o}}:v()}var Oe=["scopeKind","scopeId","providerHost","status","durationMs","requestBytes","responseBytes","errorCode"];function A(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 Gn(e){if(!i(e))return l("audit body must be a JSON object");for(let p of Object.keys(e))if(!Oe.includes(p))return l(`audit does not accept the "${p}" field`);let t=z(e.scopeKind);if(t===void 0)return l("scopeKind is invalid");let n=e.scopeId;if(typeof n!="string"||n.length===0)return l("scopeId is required");let o=e.providerHost;if(typeof o!="string"||o.length===0)return l("providerHost is required");let s=A(e.durationMs,"durationMs");if(!s.ok)return l(s.reason);let d;if(e.status!==void 0){let p=A(e.status,"status");if(!p.ok)return l(p.reason);d=p.value}let a;if(e.requestBytes!==void 0){let p=A(e.requestBytes,"requestBytes");if(!p.ok)return l(p.reason);a=p.value}let c;if(e.responseBytes!==void 0){let p=A(e.responseBytes,"responseBytes");if(!p.ok)return l(p.reason);c=p.value}let I;if(e.errorCode!==void 0){let p=e.errorCode;if(typeof p!="string"||p.length===0)return l("errorCode must be a non-empty string");I=p}return{ok:!0,value:{scopeKind:t,scopeId:n,providerHost:o,...d!==void 0?{status:d}:{},durationMs:s.value,...a!==void 0?{requestBytes:a}:{},...c!==void 0?{responseBytes:c}:{},...I!==void 0?{errorCode:I}:{}}}}function Kn(e){return!i(e)||!i(e.grant)?r("egress grant envelope must carry a grant object"):u(e.grant)}function Ln(e){return!i(e)||e.consumed!==!0?r("egress grant consume data must carry consumed:true"):u({consumed:!0})}var Yn="/:flowRunId/runtime-credential",zn="/:invocationId/runtime-credential",Qn="/:pollingInstanceId/runtime-credential",Zn="/:triggerInstanceId/runtime-credential",er=e=>`${g}/${encodeURIComponent(e)}/runtime-credential`,tr=e=>`${q}/${encodeURIComponent(e)}/runtime-credential`,nr=e=>`${P}/${encodeURIComponent(e)}/runtime-credential`,rr=e=>`${x}/${encodeURIComponent(e)}/runtime-credential`,or=["flow_action","tool_invoke","polling_trigger","webhook_trigger"];function O(e,t){if(!i(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 ir(e){let t=O(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 sr(e){let t=O(e??{},[]);return t.ok?u(null):r(t.reason)}function ur(e){let t=O(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 ar(e){let t=O(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,s=t.record.deliveryId;if(s!==void 0){if(typeof s!="string"||s.length===0)return r("deliveryId must be a non-empty string");o=s}let d,a=t.record.lifecycleOperation;if(a!==void 0){if(a!=="enable"&&a!=="disable"&&a!=="renew")return r('lifecycleOperation must be "enable", "disable", or "renew"');d=a}return n==="lifecycle"&&d===void 0?r("lifecycleOperation is required for the lifecycle execution kind"):u({executionKind:n,...o!==void 0?{deliveryId:o}:{},...d!==void 0?{lifecycleOperation:d}:{}})}function dr(e){return!i(e)||typeof e.sessionId!="string"||typeof e.connectionId!="string"||typeof e.authProfileRef!="string"||typeof e.authType!="string"||!i(e.credential)?r("runtime credential session must carry sessionId, connectionId, auth profile facts and a credential object"):u(e.credential)}function U(e){return!i(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 W(e){return!i(e)||e.method!=="GET"&&e.method!=="PUT"||typeof e.url!="string"||typeof e.expires_at!="string"||!Fe(e.headers)?r("presigned file URL data is invalid"):u(e)}function Ue(e){if(!i(e))return r("file upload session data is invalid");let t=U(e.file);if(!t.ok)return r(t.reason);let n=W(e.upload);return n.ok?u({file:t.value,upload:n.value}):r(n.reason)}function Be(e){if(!i(e))return r("file metadata data is invalid");let t=U(e.file);return t.ok?u({file:t.value}):r(t.reason)}function Fe(e){return i(e)?Object.values(e).every(t=>typeof t=="string"):!1}var h="/internal/files",mr="/upload-session",Rr="/:fileId/complete",yr="/:fileId/access",kr="/:fileId/stat",Ir="/:fileId/content",_r=()=>h,hr=()=>`${h}/upload-session`,wr=e=>`${h}/${encodeURIComponent(e)}/complete`,Er=(e,t)=>`${h}/${encodeURIComponent(e)}/access?intent=${encodeURIComponent(t)}`,Q=e=>`?scope_kind=${encodeURIComponent(e.scopeKind)}&scope_id=${encodeURIComponent(e.scopeId)}`,xr=(e,t)=>`${h}/${encodeURIComponent(e)}/stat${Q(t)}`,Tr=(e,t)=>`${h}/${encodeURIComponent(e)}/content${Q(t)}`;function Pr(e){if(!i(e))return r("internal file access data is invalid");if(e.intent==="runtime_read"||e.intent==="provider_multipart"){let t=U(e.file);if(!t.ok)return r(t.reason);let n=W(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")}var Cr="/:flowRunId/human-inputs",Ar="/:flowRunId/human-inputs/:requestId",Nr="/:flowRunId/human-inputs/:requestId/expire",Dr="/:flowRunId/human-inputs/:requestId/acknowledge",He=e=>`${g}/${encodeURIComponent(e)}/human-inputs`,Z=(e,t)=>`${He(e)}/${encodeURIComponent(t)}`,Or=(e,t)=>`${Z(e,t)}/expire`,Ur=(e,t)=>`${Z(e,t)}/acknowledge`,$e="human_input_resolved";function Br(e){return`${$e}_${e}`}function f(e){return{ok:!1,reason:e}}function y(e,t){return i(e)?{ok:!0,value:e}:f(`${t} must be an object`)}function w(e,t){return typeof e!="string"||e.length===0?f(`${t} must be a non-empty string`):{ok:!0,value:e}}var Me=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?(?:Z|[+-]\d{2}:\d{2})$/;function Ge(e,t){return typeof e!="string"||!Me.test(e)||Number.isNaN(Date.parse(e))?f(`${t} must be an ISO-8601 timestamp`):{ok:!0,value:e}}function Ke(e){let t=y(e,"renderedPrompt");if(!t.ok)return t;let n=w(t.value.title,"renderedPrompt.title");if(!n.ok)return n;let o={title:n.value};if(t.value.body!==void 0){if(typeof t.value.body!="string")return f("renderedPrompt.body must be a string");o.body=t.value.body}if(t.value.format!==void 0){if(t.value.format!=="plain"&&t.value.format!=="markdown")return f("renderedPrompt.format is invalid");o.format=t.value.format}return{ok:!0,value:o}}function Le(e){let t=y(e,"input");if(!t.ok)return t;let n=t.value.kind;if(n==="choice"){if(!Array.isArray(t.value.choices))return f("input.choices must be an array")}else if(n!=="text")if(n==="form"){if(!Array.isArray(t.value.fields))return f("input.fields must be an array")}else return f("input.kind is invalid");return{ok:!0,value:t.value}}function qe(e){if(e==null)return{ok:!0,value:void 0};let t=y(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 f("partiallyRenderedDelivery.actions must be an array");let o=[];for(let s of n){let d=y(s,"delivery action");if(!d.ok)return d;let a=w(d.value.id,"delivery action id");if(!a.ok)return a;let c=ee(d.value.inputs,`delivery action '${a.value}' inputs`);if(!c.ok)return c;o.push({id:a.value,inputs:c.value})}return{ok:!0,value:{actions:o}}}function ee(e,t){let n=y(e,t);if(!n.ok)return n;let o={};for(let[s,d]of Object.entries(n.value)){let a=te(d,`${t}.${s}`);if(!a.ok)return a;o[s]=a.value}return{ok:!0,value:o}}function te(e,t){let n=y(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 s=w(n.value.path,`${t}.path`);return s.ok?{ok:!0,value:{kind:"human_input_ref",path:s.value}}:s}case"array":{if(!Array.isArray(n.value.items))return f(`${t}.items must be an array`);let s=[];for(let[d,a]of n.value.items.entries()){let c=te(a,`${t}[${d}]`);if(!c.ok)return c;s.push(c.value)}return{ok:!0,value:{kind:"array",items:s}}}case"object":{let s=ee(n.value.entries,`${t}.entries`);return s.ok?{ok:!0,value:{kind:"object",entries:s.value}}:s}case"template":{if(!Array.isArray(n.value.parts))return f(`${t}.parts must be an array`);let s=[];for(let[d,a]of n.value.parts.entries()){let c=We(a,`${t}.parts[${d}]`);if(!c.ok)return c;s.push(c.value)}return{ok:!0,value:{kind:"template",parts:s}}}default:return f(`${t}.kind is invalid`)}}function We(e,t){let n=y(e,t);if(!n.ok)return n;let o=n.value.kind;if(o==="literal")return typeof n.value.value!="string"?f(`${t}.value must be a string`):{ok:!0,value:{kind:"literal",value:n.value.value}};if(o==="human_input_ref"){let s=w(n.value.path,`${t}.path`);return s.ok?{ok:!0,value:{kind:"human_input_ref",path:s.value}}:s}return f(`${t}.kind is invalid`)}function Fr(e){let t=y(e,"request body");if(!t.ok)return r(t.reason);let n=w(t.value.nodeId,"nodeId");if(!n.ok)return r(n.reason);let o=Ke(t.value.renderedPrompt);if(!o.ok)return r(o.reason);let s=Le(t.value.input);if(!s.ok)return r(s.reason);let d=w(t.value.timeout,"timeout");if(!d.ok)return r(d.reason);let a=Ge(t.value.expiresAt,"expiresAt");if(!a.ok)return r(a.reason);let c=qe(t.value.partiallyRenderedDelivery);return c.ok?u({nodeId:n.value,renderedPrompt:o.value,input:s.value,timeout:d.value,expiresAt:a.value,...c.value!==void 0?{partiallyRenderedDelivery:c.value}:{}}):r(c.reason)}function Ve(e){return!i(e)||typeof e.id!="string"||e.id.length===0||typeof e.nodeId!="string"||typeof e.status!="string"||!(e.output===null||i(e.output))?r("human input request view must carry id, nodeId, status and output"):u(e)}function Hr(e){if(!i(e)||typeof e.created!="boolean")return r("human input create data must carry created:boolean");let t=Ve(e.request);return t.ok?u({created:e.created,request:t.value}):t}function $r(e){return!i(e)||e.acknowledged!==!0?r("human input acknowledge data must carry acknowledged:true"):u({acknowledged:!0})}var Gr="ablehi-wfp-user-runtime-manifest/v1",Kr="unknown";function Lr(e){return e.endsWith(".js")?`${e.slice(0,-3)}.manifest.json`:`${e}.manifest.json`}var Wr="/internal/deployment-handshake",je=["start","terminate","send-event","start-webhook-watcher","run-polling-tick","invoke-tool","invoke-trigger-handler","invoke-webhook-protocol-adapter","deployment-handshake"],Vr=je,jr="HANDSHAKE_REQUEST_INVALID",Jr="HANDSHAKE_SECRET_UNCONFIGURED",Xr="HANDSHAKE_SECRET_MISMATCH",Yr="HANDSHAKE_CONTRACT_VERSION_MISMATCH",zr="HANDSHAKE_DISPATCH_NAMESPACE_MISMATCH",Qr="HANDSHAKE_CAPABILITY_MISSING";function Zr(e){return[e.nonce,e.timestamp,e.contractVersion,e.dispatchNamespace].map(n=>`${n.length}:${n}`).join(".")}function eo(e){return["response",e.nonce,e.contractVersion,e.dispatchNamespace,...e.capabilities].map(n=>`${n.length}:${n}`).join(".")}export{ze as CONTEXT_STATE_CLEANUP_ROUTE_PATH,je as DEPLOYMENT_HANDSHAKE_DISPATCHER_CAPABILITIES,Vr as DEPLOYMENT_HANDSHAKE_REQUIRED_CAPABILITIES,Wr as DEPLOYMENT_HANDSHAKE_ROUTE,bn as EGRESS_GRANT_AUDIT_ROUTE_SUBPATH,vn as EGRESS_GRANT_CONSUME_ROUTE_SUBPATH,Ce as EGRESS_GRANT_SCOPE_KINDS,ft as EVENT_WAIT_ROUTE_SUBPATH,rt as EXECUTION_CONTEXT_ROUTE_SUBPATH,yr as FILE_ACCESS_ROUTE_SUBPATH,Rr as FILE_COMPLETE_ROUTE_SUBPATH,Ir as FILE_CONTENT_ROUTE_SUBPATH,kr as FILE_STAT_ROUTE_SUBPATH,mr as FILE_UPLOAD_SESSION_ROUTE_SUBPATH,xn as FLOW_RUN_EGRESS_GRANT_ROUTE_SUBPATH,pt as FLOW_RUN_EXECUTION_EVENTS_ROUTE_SUBPATH,ce as FLOW_RUN_EXECUTION_EVENT_TYPES,lt as FLOW_RUN_RESULT_ROUTE_SUBPATH,Yn as FLOW_RUN_RUNTIME_CREDENTIAL_ROUTE_SUBPATH,vt as HANDLER_BUNDLES_ROUTE_SUBPATH,Qr as HANDSHAKE_CAPABILITY_MISSING,Yr as HANDSHAKE_CONTRACT_VERSION_MISMATCH,zr as HANDSHAKE_DISPATCH_NAMESPACE_MISMATCH,jr as HANDSHAKE_REQUEST_INVALID,Xr as HANDSHAKE_SECRET_MISMATCH,Jr as HANDSHAKE_SECRET_UNCONFIGURED,Cr as HUMAN_INPUTS_ROUTE_SUBPATH,Dr as HUMAN_INPUT_ACKNOWLEDGE_ROUTE_SUBPATH,Nr as HUMAN_INPUT_EXPIRE_ROUTE_SUBPATH,Ar as HUMAN_INPUT_REQUEST_ROUTE_SUBPATH,$e as HUMAN_INPUT_RESOLVED_EVENT_PREFIX,Y as INTERNAL_EGRESS_GRANTS_ROUTE_PREFIX,h as INTERNAL_FILES_ROUTE_PREFIX,g as INTERNAL_FLOW_RUNS_ROUTE_PREFIX,ge as INTERNAL_FLOW_VERSIONS_ROUTE_PREFIX,M as INTERNAL_INSTALLATIONS_ROUTE_PREFIX,P as INTERNAL_POLLING_TRIGGER_INSTANCES_ROUTE_PREFIX,q as INTERNAL_TOOL_INVOCATIONS_ROUTE_PREFIX,x as INTERNAL_WEBHOOK_TRIGGER_INSTANCES_ROUTE_PREFIX,cn as POLLING_TRIGGER_CONTEXT_ROUTE_SUBPATH,Pn as POLLING_TRIGGER_EGRESS_GRANT_ROUTE_SUBPATH,ln as POLLING_TRIGGER_HANDLER_BUNDLES_ROUTE_SUBPATH,Qn as POLLING_TRIGGER_RUNTIME_CREDENTIAL_ROUTE_SUBPATH,pn as POLLING_TRIGGER_TICK_EVENTS_ROUTE_SUBPATH,or as RUNTIME_CREDENTIAL_SESSION_SCOPE_KINDS,ne as SERVER_EXECUTION_CONTRACT_VERSION,ct as STEP_RESULT_ROUTE_SUBPATH,bt as TOOL_HANDLER_BUNDLES_ROUTE_SUBPATH,Tn as TOOL_INVOCATION_EGRESS_GRANT_ROUTE_SUBPATH,zn as TOOL_INVOCATION_RUNTIME_CREDENTIAL_ROUTE_SUBPATH,Yt as WEBHOOK_PROTOCOL_ADAPTER_BUNDLE_ROUTE_SUBPATH,Qt as WEBHOOK_PROTOCOL_ADAPTER_MODULE,Mt as WEBHOOK_TRIGGER_CONTEXT_ROUTE_SUBPATH,Kt as WEBHOOK_TRIGGER_DELIVERY_ROUTE_SUBPATH,Sn as WEBHOOK_TRIGGER_EGRESS_GRANT_ROUTE_SUBPATH,Lt as WEBHOOK_TRIGGER_EVENTS_ROUTE_SUBPATH,Gt as WEBHOOK_TRIGGER_HANDLER_BUNDLES_ROUTE_SUBPATH,qt as WEBHOOK_TRIGGER_REARM_ROUTE_SUBPATH,Zn as WEBHOOK_TRIGGER_RUNTIME_CREDENTIAL_ROUTE_SUBPATH,Gr as WFP_USER_RUNTIME_MANIFEST_FORMAT_VERSION,Kr as WFP_USER_RUNTIME_UNKNOWN_SOURCE_REVISION,Zr as deploymentHandshakeProbePayload,eo as deploymentHandshakeResponseProofPayload,Un as egressGrantAuditPath,On as egressGrantConsumePath,yt as eventWaitPath,ot as executionContextPath,Cn as flowRunEgressGrantPath,Rt as flowRunExecutionEventsPath,mt as flowRunResultPath,er as flowRunRuntimeCredentialPath,Zt as flowScriptProtocolAdapterModuleName,Ct as handlerBundlesPath,Ur as humanInputAcknowledgePath,Or as humanInputExpirePath,Z as humanInputRequestPath,Br as humanInputResolvedEventType,He as humanInputsPath,Er as internalFileAccessPath,wr as internalFileCompletePath,Tr as internalFileContentPath,xr as internalFileStatPath,hr as internalFileUploadSessionPath,_r as internalFilesPath,S as isValidRequestDigest,Tt as parseCompleteFlowRunWaitBody,Qe as parseContextStateCleanupRequestBody,Ze as parseContextStateCleanupResponseData,k as parseContextStateScope,Fr as parseCreateHumanInputBody,Gn as parseEgressGrantAuditBody,Mn as parseEgressGrantConsumeBody,Ln as parseEgressGrantConsumeData,Kn as parseEgressGrantData,it as parseExecutionContextData,Be as parseFileMetadataData,U as parseFileRefData,F as parseFileRuntimeLimits,Ue as parseFileUploadSessionData,Bn as parseFlowActionGrantBody,Et as parseFlowRunExecutionEventBody,wt as parseFlowRunExecutionEventData,_t as parseFlowRunResultBody,ht as parseFlowRunResultData,ir as parseFlowRuntimeCredentialBody,Re as parseHandlerBundle,Nt as parseHandlerBundlesData,$r as parseHumanInputAcknowledgeData,Hr as parseHumanInputCreateData,Ve as parseHumanInputRequestViewData,Pr as parseInternalFileAccessData,yn as parsePollingPublishBody,ur as parsePollingRuntimeCredentialBody,Ee as parsePollingTriggerContext,Rn as parsePollingTriggerDispatchData,Hn as parsePollingTriggerGrantBody,kn as parsePublishPollingTickEventsData,xt as parseRegisterFlowRunWaitBody,Pt as parseRegisterFlowRunWaitData,dr as parseRuntimeCredentialSessionCredential,C as parseRuntimeNetwork,Fn as parseSingleToolGrantBody,sr as parseSingleToolRuntimeCredentialBody,kt as parseStepRecordBody,It as parseStepRecordData,Dt as parseToolHandlerBundlesData,G as parseTriggerFileRuntimeDispatch,nn as parseTriggerHandlerBundlesData,_e as parseWebhookDelivery,tn as parseWebhookDeliveryDispatchData,rn as parseWebhookPublishEventsBody,on as parseWebhookRearmBody,ar as parseWebhookRuntimeCredentialBody,$n as parseWebhookTriggerGrantBody,en as parseWebhookWatcherContext,fn as pollingTriggerContextPath,Nn as pollingTriggerEgressGrantPath,gn as pollingTriggerHandlerBundlesPath,nr as pollingTriggerRuntimeCredentialPath,mn as pollingTriggerTickEventsPath,Ne as requestHasMultipartFileParts,gt as stepResultPath,At as toolHandlerBundlesPath,An as toolInvocationEgressGrantPath,tr as toolInvocationRuntimeCredentialPath,zt as webhookProtocolAdapterBundlePath,Wt as webhookTriggerContextPath,jt as webhookTriggerDeliveryPath,Dn as webhookTriggerEgressGrantPath,Jt as webhookTriggerEventsPath,Vt as webhookTriggerHandlerBundlesPath,Xt as webhookTriggerRearmPath,rr as webhookTriggerRuntimeCredentialPath,Lr as wfpUserRuntimeManifestPath};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ablehi/server-execution-contract",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "description": "Ablehi server to Cloudflare execution contract.",
5
5
  "license": "Apache-2.0",
6
6
  "publishConfig": {
@@ -23,6 +23,13 @@
23
23
  "files": [
24
24
  "dist"
25
25
  ],
26
+ "scripts": {
27
+ "build": "tsup",
28
+ "typecheck": "tsc --noEmit -p tsconfig.json",
29
+ "test": "vitest run --passWithNoTests",
30
+ "lint": "eslint src --ext .ts",
31
+ "check": "pnpm build && pnpm typecheck && pnpm lint && pnpm test"
32
+ },
26
33
  "dependencies": {
27
34
  "@ablehi/error-contract": "0.0.1",
28
35
  "@ablehi/flow-contract": "0.1.1"
@@ -34,12 +41,5 @@
34
41
  "tsup": "^8.5.1",
35
42
  "typescript": "^6.0.3",
36
43
  "vitest": "^4.1.9"
37
- },
38
- "scripts": {
39
- "build": "tsup",
40
- "typecheck": "tsc --noEmit -p tsconfig.json",
41
- "test": "vitest run --passWithNoTests",
42
- "lint": "eslint src --ext .ts",
43
- "check": "pnpm build && pnpm typecheck && pnpm lint && pnpm test"
44
44
  }
45
- }
45
+ }