eve 0.17.0 → 0.17.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/dist/src/channel/types.d.ts +11 -0
- package/dist/src/chunks/{use-eve-agent-BEOUv37s.js → use-eve-agent-Bh1NmXO9.js} +8 -5
- package/dist/src/chunks/{use-eve-agent-C25KOe9i.js → use-eve-agent-Dvy_Wjvq.js} +8 -5
- package/dist/src/cli/dev/tui/status-line.d.ts +1 -1
- package/dist/src/cli/dev/tui/tui.d.ts +2 -0
- package/dist/src/cli/dev/tui/tui.js +1 -1
- package/dist/src/cli/dev/url-target.d.ts +14 -0
- package/dist/src/cli/dev/url-target.js +1 -0
- package/dist/src/cli/run.js +3 -3
- package/dist/src/client/client.js +1 -1
- package/dist/src/compiled/.vendor-stamp.json +4 -4
- package/dist/src/compiled/@chat-adapter/slack/api.d.ts +132 -0
- package/dist/src/compiled/@chat-adapter/slack/api.js +1 -0
- package/dist/src/compiled/@chat-adapter/slack/blocks.js +1 -1
- package/dist/src/compiled/@chat-adapter/slack/format.d.ts +33 -0
- package/dist/src/compiled/@chat-adapter/slack/format.js +1 -0
- package/dist/src/compiled/@chat-adapter/slack/index.js +28 -28
- package/dist/src/compiled/@chat-adapter/slack/types-AntsVifS.d.ts +187 -0
- package/dist/src/compiled/@chat-adapter/slack/webhook.d.ts +10 -0
- package/dist/src/compiled/@chat-adapter/slack/webhook.js +1 -0
- package/dist/src/compiled/@workflow/core/classify-error.d.ts +15 -0
- package/dist/src/compiled/@workflow/core/index.js +2 -2
- package/dist/src/compiled/@workflow/core/runtime.js +27 -27
- package/dist/src/compiled/@workflow/core/serialization.d.ts +12 -3
- package/dist/src/compiled/@workflow/core/step/context-storage.d.ts +10 -0
- package/dist/src/compiled/@workflow/core/version.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/workflow.js +1 -1
- package/dist/src/compiled/_chunks/node/chunk-AYN7QRWH-B__hKQV7.js +1 -0
- package/dist/src/compiled/_chunks/node/chunk-HFKBBKCJ-CWaVIQuL.js +1 -0
- package/dist/src/compiled/_chunks/workflow/{attribute-changes-DUxG-Gic.js → attribute-changes-zAifvEhb.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/{resume-hook-CUCPW67D.js → resume-hook-C15uJ2ik.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/run-BJUPZ0Ni.js +1 -0
- package/dist/src/compiled/_chunks/workflow/{sleep-Dxuzj5to.js → sleep-C8B-TYir.js} +1 -1
- package/dist/src/compiler/manifest.d.ts +2 -2
- package/dist/src/compiler/manifest.js +1 -1
- package/dist/src/compiler/normalize-agent-config.js +1 -1
- package/dist/src/context/keys.d.ts +2 -0
- package/dist/src/context/keys.js +1 -1
- package/dist/src/evals/assertions/run.js +2 -2
- package/dist/src/execution/create-session-step.d.ts +2 -0
- package/dist/src/execution/create-session-step.js +1 -1
- package/dist/src/execution/dispatch-runtime-actions-step.js +1 -1
- package/dist/src/execution/durable-session-store.d.ts +3 -0
- package/dist/src/execution/remote-agent-dispatch.js +1 -1
- package/dist/src/execution/runtime-context.js +1 -1
- package/dist/src/execution/session.d.ts +6 -1
- package/dist/src/execution/session.js +3 -3
- package/dist/src/execution/subagent-invocation.d.ts +20 -5
- package/dist/src/execution/subagent-invocation.js +2 -2
- package/dist/src/execution/subagent-tool.d.ts +7 -0
- package/dist/src/execution/subagent-tool.js +1 -1
- package/dist/src/execution/workflow-entry.js +1 -1
- package/dist/src/harness/advertised-tools.d.ts +33 -0
- package/dist/src/harness/advertised-tools.js +1 -0
- package/dist/src/harness/subagent-depth.d.ts +17 -0
- package/dist/src/harness/subagent-depth.js +1 -0
- package/dist/src/harness/tool-loop.js +1 -1
- package/dist/src/harness/turn-tag-state.d.ts +30 -22
- package/dist/src/harness/turn-tag-state.js +1 -1
- package/dist/src/harness/types.d.ts +28 -0
- package/dist/src/harness/workflow-continuation-security.d.ts +1 -0
- package/dist/src/harness/workflow-continuation-security.js +1 -1
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/internal/authored-definition/core.js +1 -1
- package/dist/src/internal/http/basic-auth.d.ts +1 -0
- package/dist/src/internal/http/basic-auth.js +1 -0
- package/dist/src/internal/nitro/host/configure-nitro-routes.js +2 -2
- package/dist/src/internal/nitro/routes/channel-dispatch.js +1 -1
- package/dist/src/internal/nitro/routes/channel-route-context.d.ts +5 -0
- package/dist/src/internal/nitro/routes/channel-route-context.js +1 -0
- package/dist/src/internal/nitro/routes/info.d.ts +2 -6
- package/dist/src/internal/nitro/routes/info.js +1 -1
- package/dist/src/protocol/routes.d.ts +2 -4
- package/dist/src/public/channels/eve.d.ts +5 -4
- package/dist/src/public/channels/eve.js +1 -1
- package/dist/src/public/channels/slack/api.d.ts +3 -6
- package/dist/src/public/channels/slack/api.js +1 -1
- package/dist/src/public/channels/slack/inbound.d.ts +11 -9
- package/dist/src/public/channels/slack/inbound.js +1 -1
- package/dist/src/public/channels/slack/interactions.d.ts +2 -1
- package/dist/src/public/channels/slack/interactions.js +1 -1
- package/dist/src/public/channels/slack/mrkdwn.d.ts +3 -35
- package/dist/src/public/channels/slack/mrkdwn.js +1 -1
- package/dist/src/public/channels/slack/slackChannel.js +1 -1
- package/dist/src/public/channels/slack/verify.d.ts +4 -42
- package/dist/src/public/channels/slack/verify.js +1 -1
- package/dist/src/public/definitions/agent.d.ts +1 -1
- package/dist/src/public/index.d.ts +1 -1
- package/dist/src/runtime/resolve-agent.js +1 -1
- package/dist/src/services/dev-client/client-options.d.ts +5 -1
- package/dist/src/services/dev-client/client-options.js +1 -1
- package/dist/src/setup/boxes/preflight.js +1 -1
- package/dist/src/setup/boxes/select-model.js +1 -1
- package/dist/src/setup/flows/model.js +1 -1
- package/dist/src/setup/scaffold/create/project.d.ts +1 -1
- package/dist/src/setup/scaffold/create/project.js +1 -1
- package/dist/src/setup/scaffold/create/web-template.d.ts +3 -0
- package/dist/src/setup/scaffold/create/web-template.js +1 -1
- package/dist/src/shared/agent-definition.d.ts +37 -0
- package/dist/src/shared/default-agent-model.d.ts +1 -1
- package/dist/src/shared/default-agent-model.js +1 -1
- package/dist/src/svelte/index.js +1 -1
- package/dist/src/svelte/use-eve-agent.js +1 -1
- package/dist/src/vue/index.js +1 -1
- package/dist/src/vue/use-eve-agent.js +1 -1
- package/docs/agent-config.md +35 -8
- package/docs/channels/eve.mdx +3 -2
- package/docs/concepts/sessions-runs-and-streaming.md +2 -2
- package/docs/getting-started.mdx +5 -5
- package/docs/guides/dev-tui.md +7 -1
- package/docs/reference/cli.md +10 -1
- package/docs/reference/typescript-api.md +1 -1
- package/docs/subagents.mdx +19 -0
- package/package.json +5 -5
- package/dist/src/compiled/_chunks/node/chunk-AYN7QRWH-Csu8sG38.js +0 -1
- package/dist/src/compiled/_chunks/workflow/run-CVlF84yI.js +0 -1
|
@@ -93,7 +93,16 @@ export declare const FRAMED_STREAM_MAX_TOTAL_RECONNECTS = 1000;
|
|
|
93
93
|
*/
|
|
94
94
|
export declare function createReconnectingFramedStream(runId: string, name: string, startIndex?: number): ReadableStream<Uint8Array>;
|
|
95
95
|
export declare class WorkflowServerWritableStream extends WritableStream<Uint8Array> {
|
|
96
|
-
|
|
96
|
+
/**
|
|
97
|
+
* @param runReadyBarrier Turbo mode only: a promise that resolves once the
|
|
98
|
+
* backgrounded `run_started` has landed. When the step body runs
|
|
99
|
+
* optimistically (before `run_started` is durable), the first chunk write to
|
|
100
|
+
* a brand-new stream would otherwise reach the World before the run exists
|
|
101
|
+
* and be rejected as run-not-found. Awaiting this once before the first
|
|
102
|
+
* flush/close orders the write after the run's creation. `undefined` outside
|
|
103
|
+
* turbo and on the await path, where the run was already durable.
|
|
104
|
+
*/
|
|
105
|
+
constructor(runId: string, name: string, runReadyBarrier?: Promise<unknown>);
|
|
97
106
|
}
|
|
98
107
|
export type { ByteStreamFraming, Reducers, Revivers, SerializableSpecial, } from './serialization/types.js';
|
|
99
108
|
import type { ByteStreamFraming, Reducers, Revivers } from './serialization/types.js';
|
|
@@ -112,7 +121,7 @@ import type { ByteStreamFraming, Reducers, Revivers } from './serialization/type
|
|
|
112
121
|
* to `false` for backwards compatibility with older runs.
|
|
113
122
|
* @returns
|
|
114
123
|
*/
|
|
115
|
-
export declare function getExternalReducers(global: Record<string, any> | undefined, ops: Promise<void>[], runId: string, cryptoKey: EncryptionKeyParam, framedByteStreams?: boolean): Partial<Reducers>;
|
|
124
|
+
export declare function getExternalReducers(global: Record<string, any> | undefined, ops: Promise<void>[], runId: string, cryptoKey: EncryptionKeyParam, framedByteStreams?: boolean, runReadyBarrier?: Promise<unknown>): Partial<Reducers>;
|
|
116
125
|
/**
|
|
117
126
|
* Reducers for serialization boundary from within the workflow execution
|
|
118
127
|
* environment, passing return value to the client side and into step arguments.
|
|
@@ -380,7 +389,7 @@ export declare function hydrateStepArguments(value: Uint8Array | unknown, runId:
|
|
|
380
389
|
* backwards compatibility with older runs.
|
|
381
390
|
* @returns The dehydrated value as binary data (Uint8Array) with format prefix
|
|
382
391
|
*/
|
|
383
|
-
export declare function dehydrateStepReturnValue(value: unknown, runId: string, key: CryptoKey | undefined, ops?: Promise<any>[], global?: Record<string, any>, v1Compat?: boolean, framedByteStreams?: boolean, compression?: boolean): Promise<Uint8Array | unknown>;
|
|
392
|
+
export declare function dehydrateStepReturnValue(value: unknown, runId: string, key: CryptoKey | undefined, ops?: Promise<any>[], global?: Record<string, any>, v1Compat?: boolean, framedByteStreams?: boolean, compression?: boolean, runReadyBarrier?: Promise<unknown>): Promise<Uint8Array | unknown>;
|
|
384
393
|
/**
|
|
385
394
|
* Called from the step handler when a step throws. Dehydrates the thrown
|
|
386
395
|
* value from within the step execution environment into a format that can
|
|
@@ -51,6 +51,16 @@ export type StepContext = {
|
|
|
51
51
|
closureVars?: Record<string, any>;
|
|
52
52
|
encryptionKey?: CryptoKey;
|
|
53
53
|
writables?: Map<string, CachedWritable>;
|
|
54
|
+
/**
|
|
55
|
+
* Turbo mode only: a promise that resolves once the backgrounded
|
|
56
|
+
* `run_started` has landed (the run exists). Set when the step body runs
|
|
57
|
+
* optimistically — before `run_started`/`step_started` are confirmed — so a
|
|
58
|
+
* direct step-body world write (e.g. `experimental_setAttributes`, which
|
|
59
|
+
* resolves to a host-side `attr_set` create) can gate on it and never race
|
|
60
|
+
* ahead of the run's creation. `undefined` outside turbo and on the await
|
|
61
|
+
* path, where `run_started` was already durable before the body ran.
|
|
62
|
+
*/
|
|
63
|
+
runReadyBarrier?: Promise<unknown>;
|
|
54
64
|
};
|
|
55
65
|
export declare const contextStorage: AsyncLocalStorage<StepContext>;
|
|
56
66
|
//# sourceMappingURL=context-storage.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "5.0.0-beta.
|
|
1
|
+
export declare const version = "5.0.0-beta.26";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e,i as t}from"../../_chunks/workflow/dist-Dxrjttr2.js";import{dn as n,fn as r,fr as i,lr as a,mr as o,nn as s,on as c,t as l,tn as u,un as d,ur as f}from"../../_chunks/workflow/attribute-changes-
|
|
1
|
+
import{c as e,i as t}from"../../_chunks/workflow/dist-Dxrjttr2.js";import{dn as n,fn as r,fr as i,lr as a,mr as o,nn as s,on as c,t as l,tn as u,un as d,ur as f}from"../../_chunks/workflow/attribute-changes-zAifvEhb.js";import{t as p}from"../../_chunks/workflow/sleep-C8B-TYir.js";import{t as m}from"../../_chunks/workflow/run-BJUPZ0Ni.js";async function h(e,n={}){let i=l(e,n);if(i.length===0)return;let a=n.allowReservedAttributes===!0,o=globalThis[r];if(!o)throw new t("experimental_setAttributes() called outside a workflow runtime context. It must be called from within a workflow body (`use workflow`).");await o(i,a?{allowReservedAttributes:!0}:{})}s(u,m);function g(e){let t=globalThis[d];return t||f(`createHook()`,`https://workflow-sdk.dev/docs/api-reference/workflow/create-hook`,g),t(e)}function _(e){let{respondWith:t,token:n,...r}=e??{};if(n!==void 0)throw Error("`createWebhook()` does not accept a `token` option. Webhook tokens are always randomly generated. Use `createHook()` with `resumeHook()` for deterministic token patterns.");let i;t!==void 0&&(i={respondWith:t});let a=g({...r,metadata:i,isWebhook:!0}),{url:s}=o();return a.url=`${s}/.well-known/workflow/v1/webhook/${encodeURIComponent(a.token)}`,a}function v(){function e(t,n){i(`defineHook().resume()`,`https://workflow-sdk.dev/docs/api-reference/workflow-api/resume-hook`,e)}return{create(e){return g(e)},resume:e}}function y(e={}){let{namespace:t}=e,r=globalThis[n](t);return Object.create(globalThis.WritableStream.prototype,{[c]:{value:r,writable:!1}})}function b(){a(`getStepMetadata()`,`https://workflow-sdk.dev/docs/api-reference/workflow/get-step-metadata`,b)}function x(){i(`resumeHook()`,`https://workflow-sdk.dev/docs/api-reference/workflow-api/resume-hook`,x)}export{t as FatalError,e as RetryableError,g as createHook,_ as createWebhook,v as defineHook,h as experimental_setAttributes,b as getStepMetadata,o as getWorkflowMetadata,y as getWritable,x as resumeHook,p as sleep};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=/[<>|]/,t=/[\^|>]/,n=/^[A-Z0-9_]+$/,r=/(?<![<\w])@([A-Z][A-Z0-9_]+)/g,i=3e3;function a(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`)}function o(e){return e.replace(/</g,`<`).replace(/>/g,`>`).replace(/&/g,`&`)}function s(e,t={}){return v(e),{...t.emoji===void 0?{}:{emoji:t.emoji},text:e,type:`plain_text`}}function c(e,t={}){return v(e),{text:e,type:`mrkdwn`,...t.verbatim===void 0?{}:{verbatim:t.verbatim}}}function l(e){return y(e,`userId`),`<@${e}>`}function u(e){return y(e,`channelId`),`<#${e}>`}function d(e){return y(e,`userGroupId`),`<!subteam^${e}>`}function f(e){return`<!${e}>`}function p(e,t){return b(e,`url`),t?`<${e}|${a(t)}>`:`<${e}>`}function m(e,t,n,r={}){x(t,`token`);let i=e instanceof Date?Math.floor(e.getTime()/1e3):e;if(!Number.isInteger(i))throw TypeError(`timestamp must be an integer unix timestamp or Date`);return`<!date^${i}^${t}${r.link?`^${S(r.link)}`:``}|${a(n)}>`}function h(e){let t=e;return t=t.replace(/<@([A-Z0-9_]+)\|([^<>]+)>/g,`@$2`),t=t.replace(/<@([A-Z0-9_]+)>/g,`@$1`),t=t.replace(/<#[A-Z0-9_]+\|([^<>]+)>/g,`#$1`),t=t.replace(/<#([A-Z0-9_]+)>/g,`#$1`),t=t.replace(/<(https?:\/\/[^|<>]+)\|([^<>]+)>/g,`[$2]($1)`),t=t.replace(/<(https?:\/\/[^<>]+)>/g,`$1`),t=t.replace(/(?<![_*\\])\*([^*\n]+)\*(?![_*])/g,`**$1**`),t=t.replace(/(?<!~)~([^~\n]+)~(?!~)/g,`~~$1~~`),o(t)}function g(e){return e.replace(/\*\*(.+?)\*\*/g,`*$1*`)}function _(e){return e.replace(r,`<@$1>`)}function v(e){if(e.length<1||e.length>i)throw TypeError(`text must be between 1 and ${i} characters`)}function y(e,t){if(!n.test(e))throw TypeError(`${t} must be a Slack ID`)}function b(t,n){if(e.test(t))throw TypeError(`${n} cannot contain Slack control characters`)}function x(e,n){if(t.test(e))throw TypeError(`${n} cannot contain Slack date control characters`)}function S(e){return x(e,`link`),e}export{m as a,l as c,g as d,h as f,u as i,d as l,s as n,p as o,o as p,a as r,f as s,c as t,_ as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=class extends Error{constructor(e){super(e),this.name=`SlackWebhookError`}},t=class extends e{constructor(e){super(e),this.name=`SlackWebhookVerificationError`}},n=class extends e{constructor(e){super(e),this.name=`SlackWebhookParseError`}};function r(e,t){if(!e)return;if(typeof Headers<`u`&&e instanceof Headers)return e.get(t)??void 0;let n=t.toLowerCase();if(d(e)){for(let[t,r]of e)if(t.toLowerCase()===n)return r;return}for(let[t,r]of Object.entries(e))if(t.toLowerCase()===n)return f(r)}function i(e){let t=r(e,`x-slack-retry-num`);if(!t)return;let n=Number(t);if(Number.isFinite(n))return{num:n,reason:r(e,`x-slack-retry-reason`)}}function a(e,t){return t.includes(`application/x-www-form-urlencoded`)?!0:t.includes(`application/json`)?!1:!e.trimStart().startsWith(`{`)&&e.includes(`=`)}function o(e){try{return JSON.parse(e)}catch{throw new n(`Slack webhook body is invalid JSON`)}}function s(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function c(e){return s(e)?e:void 0}function l(e){return typeof e==`string`?e:``}function u(e){return l(e)||void 0}function d(e){return typeof e[Symbol.iterator]==`function`}function f(e){if(typeof e==`string`)return e;if(Array.isArray(e))return e[0]}function p(e,t={}){let n=t.headers,s=t.contentType??r(n,`content-type`)??``,c=i(n);return a(e,s)?m(e,c):h(o(e),c)}function m(e,t){let n=new URLSearchParams(e),r=n.get(`payload`);return r===null?n.has(`command`)?v(n,t):{kind:`unsupported`,raw:Object.fromEntries(n),retry:t,type:`form`}:g(o(r),t)}function h(e,t){if(!s(e))return{kind:`unsupported`,raw:e,retry:t,type:`unknown`};if(e.type===`url_verification`&&typeof e.challenge==`string`)return{challenge:e.challenge,kind:`url_verification`,raw:e,retry:t};if(e.type!==`event_callback`||!s(e.event))return{kind:`unsupported`,raw:e,retry:t,type:typeof e.type==`string`?e.type:`unknown`};let n=e.event;return n.type===`app_mention`?_(`app_mention`,e,n,t):n.type===`message`&&n.channel_type===`im`?_(`direct_message`,e,n,t):{kind:`unsupported`,raw:e,retry:t,type:typeof n.type==`string`?n.type:`event_callback`}}function g(e,t){if(!s(e))return{kind:`unsupported`,raw:e,retry:t,type:`interaction`};switch(e.type){case`block_actions`:return y(e,t);case`block_suggestion`:return x(e,t);case`view_submission`:return S(e,t);case`view_closed`:return C(e,t);default:return{kind:`unsupported`,raw:e,retry:t,type:typeof e.type==`string`?e.type:`interaction`}}}function _(e,t,n,r){let i=l(n.channel),a=l(n.ts),o=l(n.thread_ts)||a,s=u(n.team_id)||u(t.team_id),c=u(t.enterprise_id)||u(t.context_enterprise_id),d=i?{channelId:i,enterpriseId:c,teamId:s,threadTs:o}:{channelId:``,enterpriseId:c,teamId:s,threadTs:o},f={apiAppId:u(t.api_app_id),channelId:i,continuation:d,enterpriseId:c,eventId:u(t.event_id),eventTime:typeof t.event_time==`number`?t.event_time:void 0,files:w(n.files),eventType:n.type,isExtSharedChannel:typeof t.is_ext_shared_channel==`boolean`?t.is_ext_shared_channel:void 0,raw:n,retry:r,teamId:s,text:l(n.text),threadTs:o,ts:a,userId:u(n.user)};return e===`app_mention`?{...f,eventType:`app_mention`,kind:e}:{...f,botId:u(n.bot_id),eventType:`message`,kind:e,subtype:u(n.subtype)}}function v(e,t){let n=e.get(`enterprise_id`)||void 0,r=e.get(`team_id`)||void 0;return{channelId:e.get(`channel_id`)??``,channelName:e.get(`channel_name`)||void 0,command:e.get(`command`)??``,enterpriseId:n,isEnterpriseInstall:e.get(`is_enterprise_install`)===`true`,kind:`slash_command`,raw:Object.fromEntries(e),responseUrl:e.get(`response_url`)||void 0,retry:t,teamId:r,text:e.get(`text`)??``,triggerId:e.get(`trigger_id`)||void 0,userId:e.get(`user_id`)??``,userName:e.get(`user_name`)||void 0}}function y(e,t){let n=c(e.channel),r=c(e.container),i=c(e.message),a=E(e.user),o=c(e.team),s=c(e.enterprise),l=u(n?.id)||u(r?.channel_id),d=u(i?.ts)||u(r?.message_ts),f=u(i?.thread_ts)||u(r?.thread_ts)||d,p=u(o?.id)||a.teamId,m=u(s?.id)||u(o?.enterprise_id),h=l&&f?{channelId:l,enterpriseId:m,teamId:p,threadTs:f}:void 0,g=Array.isArray(i?.blocks)?i.blocks:void 0,_=D(g);return{actions:Array.isArray(e.actions)?e.actions.map(e=>b(e,a)):[],channelId:l,continuation:h,enterpriseId:m,isEnterpriseInstall:typeof e.is_enterprise_install==`boolean`?e.is_enterprise_install:void 0,kind:`block_actions`,messageBlocks:g,messagePromptBlock:_,messagePromptText:O(_),messageTs:d,raw:e,responseUrl:u(e.response_url),retry:t,teamId:p,threadTs:f,triggerId:u(e.trigger_id),user:a,userId:a.id,userName:a.username||a.name}}function b(e,t){let n=s(e)?e:{},r=c(n.selected_option),i=c(n.text),a=c(r?.text);return{actionId:l(n.action_id),blockId:u(n.block_id),label:u(a?.text)||u(i?.text),raw:n,selectedOptionLabel:u(a?.text),selectedOptionValue:u(r?.value),type:l(n.type),user:t,value:u(n.value)}}function x(e,t){let n=c(e.channel),r=c(e.team),i=c(e.enterprise),a=c(e.user);return{actionId:l(e.action_id),blockId:l(e.block_id),channelId:u(n?.id),enterpriseId:u(i?.id)||u(r?.enterprise_id),kind:`block_suggestion`,raw:e,retry:t,teamId:u(r?.id),userId:l(a?.id),value:l(e.value)}}function S(e,t){let n=c(e.team),r=c(e.enterprise),i=E(e.user),a=c(e.view)??{};return{callbackId:u(a.callback_id),enterpriseId:u(r?.id)||u(n?.enterprise_id),kind:`view_submission`,privateMetadata:u(a.private_metadata),raw:e,responseUrls:Array.isArray(a.response_urls)?a.response_urls:void 0,retry:t,teamId:u(n?.id),user:i,userId:i.id,values:k(a),view:a}}function C(e,t){let n=c(e.team),r=c(e.enterprise),i=E(e.user);return{enterpriseId:u(r?.id)||u(n?.enterprise_id),kind:`view_closed`,raw:e,retry:t,teamId:u(n?.id),user:i,userId:i.id,view:c(e.view)??{}}}function w(e){return Array.isArray(e)?e.map(e=>s(e)?e:void 0).filter(e=>e!==void 0).map(e=>{let t=u(e.mimetype);return{downloadUrl:u(e.url_private_download),filetype:u(e.filetype),id:l(e.id),mimeType:t,name:u(e.name),raw:e,size:typeof e.size==`number`?e.size:void 0,title:u(e.title),type:T(t),url:u(e.url_private)}}):[]}function T(e){return e?.startsWith(`image/`)?`image`:e?.startsWith(`video/`)?`video`:e?.startsWith(`audio/`)?`audio`:`file`}function E(e){let t=c(e)??{};return{id:l(t.id),name:u(t.name),teamId:u(t.team_id),username:u(t.username)}}function D(e){return e?.find(e=>{let t=c(e);return t?.type===`section`&&c(t.text)})}function O(e){return u(c(c(e)?.text)?.text)}function k(e){let t=c(c(e.state)?.values);if(!t)return[];let n=[];for(let[e,r]of Object.entries(t)){let t=c(r);if(t)for(let[r,i]of Object.entries(t)){let t=c(i);if(!t)continue;let a=c(t.selected_option),o=c(a?.text);n.push({actionId:r,blockId:e,raw:t,selectedOptionLabel:u(o?.text),selectedOptionValue:u(a?.value),type:u(t.type),value:u(t.value)})}}return n}var A=/^[\da-f]+$/i;async function j(e,t){return p(await M(e,t),{contentType:t.contentType,headers:e.headers})}async function M(e,n){let r=await e.text();if(n.webhookVerifier){let i=await n.webhookVerifier(e,r);if(!i)throw new t(`Slack webhook verifier rejected the request`);return typeof i==`string`?i:r}return await N(r,e.headers,n),r}async function N(e,n,i){let a=i.signingSecret;if(!a)throw new t(`Slack signing secret is required`);let o=r(n,`x-slack-request-timestamp`),s=r(n,`x-slack-signature`);if(!(o&&s))throw new t(`Slack signature headers are required`);let c=Number(o);if(!Number.isFinite(c))throw new t(`Slack timestamp is invalid`);let l=Math.floor((i.now?.()??Date.now())/1e3),u=i.maxSkewSeconds??300;if(Math.abs(l-c)>u)throw new t(`Slack timestamp is too old`);if(!await P(e,a,o,s))throw new t(`Slack signature is invalid`)}async function P(e,n,r,i){let a=globalThis.crypto;if(!a?.subtle)throw new t(`Web Crypto is not available`);let o=new TextEncoder,s=await a.subtle.importKey(`raw`,o.encode(n),{hash:`SHA-256`,name:`HMAC`},!1,[`verify`]);return a.subtle.verify(`HMAC`,s,F(i),o.encode(`v0:${r}:${e}`))}function F(e){if(!e.startsWith(`v0=`))throw new t(`Slack signature is invalid`);let n=e.slice(3);if(n.length%2!=0||!A.test(n))throw new t(`Slack signature is invalid`);let r=new ArrayBuffer(n.length/2),i=new Uint8Array(r);for(let e=0;e<i.length;e++)i[e]=Number.parseInt(n.slice(e*2,e*2+2),16);return r}export{j as a,p as i,n,M as o,t as r,N as s,e as t};
|
|
@@ -56,4 +56,4 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
56
56
|
`)?e.split(`
|
|
57
57
|
`).map((e,t)=>t===0?e:` ${e}`).join(`
|
|
58
58
|
`):e;if(typeof e==`number`||typeof e==`boolean`)return String(e);try{return JSON.stringify(e)}catch{return String(e)}}var Wv=class e extends Error{steps;globalThis;stepCount;hookCount;waitCount;attributeCount;hookDisposedCount;abortCount;constructor(e,t){let n=[...e.values()],r=0,i=0,o=0,s=0,c=0,l=0;for(let e of n)e.type===`step`?r++:e.type===`hook`?e.disposed?c++:e.abortRequested?l++:i++:e.type===`wait`?o++:e.type===`attribute`&&s++;let u=[];r>0&&u.push(`${r} ${a(`step`,`steps`,r)}`),i>0&&u.push(`${i} ${a(`hook`,`hooks`,i)}`),o>0&&u.push(`${o} ${a(`wait`,`waits`,o)}`),s>0&&u.push(`${s} ${a(`attribute write`,`attribute writes`,s)}`),c>0&&u.push(`${c} hook ${a(`disposal`,`disposals`,c)}`);let d=a(`has`,`have`,r+i+o+s+c),f=+(r>0)+ +(i>0)+ +(o>0)+ +(s>0)+ +(c>0),p;p=f>1?`processed`:r>0?`run`:i>0||o>0?`created`:s>0?`written`:c>0?`processed`:`received`;let m=u.length>0?`${u.join(` and `)} ${d} not been ${p} yet`:`0 steps have not been run yet`;super(m),this.name=`WorkflowSuspension`,this.steps=n,this.globalThis=t,this.stepCount=r,this.hookCount=i,this.waitCount=o,this.attributeCount=s,this.hookDisposedCount=c,this.abortCount=l}static is(t){return t instanceof e}};function Gv(){throw new v(`This API is not available inside a workflow function. Workflow functions run in a deterministic VM; move the call to a step function for full Node.js access.`)}function $(...e){return t=>Object.fromEntries(e.map(e=>[e,t]))}const Kv=$(`workflow.name`),qv=$(`workflow.operation`),Jv=$(`workflow.run.id`),Yv=$(`workflow.run.status`),Xv=$(`workflow.started_at`),Zv=$(`workflow.events.count`),Qv=$(`workflow.arguments.count`),$v=$(`workflow.result.type`),ey=$(`workflow.trace.propagated`),ty=$(`workflow.trace.mode`),ny=$(`workflow.turbo`),ry=$(`workflow.error.name`),iy=$(`workflow.error.message`),ay=$(`workflow.error.code`),oy=$(`workflow.steps.created`),sy=$(`workflow.hooks.created`),cy=$(`workflow.waits.created`),ly=$(`workflow.route.type`),uy=$(`workflow.route.handler_cached`),dy=$(`workflow.route.invocation_count`),fy=$(`workflow.route.entrypoint_age_ms`),py=$(`workflow.route.module_body_init_ms`),my=$(`step.name`),hy=$(`step.id`),gy=$(`step.attempt`),_y=$(`step.status`),vy=$(`step.max_retries`),yy=$(`step.skipped`),by=$(`step.skip_reason`),xy=$(`step.arguments.count`),Sy=$(`step.result.type`),Cy=$(`step.error.name`),wy=$(`step.error.message`),Ty=$(`step.fatal_error`),Ey=$(`step.retry.exhausted`),Dy=$(`step.retry.timeout_seconds`),Oy=$(`step.retry.will_retry`),ky=$(`messaging.system`),Ay=$(`messaging.destination.name`),jy=$(`messaging.message.id`),My=$(`messaging.operation.type`),Ny=$(`workflow.queue.overhead_ms`),Py=$(`deployment.id`),Fy=$(`workflow.hook.token`),Iy=$(`workflow.hook.id`),Ly=$(`workflow.hook.found`),Ry=$(`workflow.suspension.state`),zy=$(`workflow.suspension.hook_count`),By=$(`workflow.suspension.step_count`),Vy=$(`workflow.suspension.wait_count`),Hy=$(`http.request.method`),Uy=$(`http.route`),Wy=$(`http.response.status_code`),Gy=$(`error.type`),Ky=$(`workflow.events.pages_loaded`),qy=$(`workflow.queue.deserialize_time_ms`),Jy=$(`workflow.queue.execution_time_ms`),Yy=$(`workflow.queue.serialize_time_ms`),Xy=$(`workflow.serialization.operation`),Zy=$(`workflow.serialization.compressed`),Qy=$(`workflow.serialization.codec`),$y=$(`workflow.serialization.uncompressed_bytes`),eb=$(`workflow.serialization.stored_bytes`),tb=$(`workflow.serialization.compression_ratio`),nb=$(`peer.service`),rb=$(`rpc.system`),ib=$(`rpc.service`),ab=$(`rpc.method`),ob=$(`error.retryable`),sb=$(`error.category`),cb=new Set;function lb(){let e=process.env.WORKFLOW_TRACE_MODE;return e===`continuous`?`continuous`:(e&&e!==`linked`&&!cb.has(e)&&(cb.add(e),Ab.warn(`Unrecognized WORKFLOW_TRACE_MODE value "${e}"; expected "linked" or "continuous". Falling back to "linked".`)),`linked`)}function ub(e){return e!==void 0&&Object.keys(e).length>0}function db(e,t){return e===`linked`&&ub(t)?Promise.resolve(t):pb()}async function fb(e,t){if(e!==`linked`)return wb();let n=await Tb(ub(t)?t:void 0);return n?[n]:void 0}async function pb(){let e=await gb.value;if(!e)return{};let t={};return e.propagation.inject(e.context.active(),t),t}async function mb(e){let t=await gb.value;if(t)return t.propagation.extract(t.context.active(),e)}async function hb(e,t){if(!e)return t();let n=await gb.value;if(!n)return t();let r=await mb(e);return r?n.context.with(r,async()=>await t()):t()}const gb=o(async()=>{try{return await import(`./src-CQuMexnO.js`).then(t=>e(t.t(),1))}catch{return Ab.info(`OpenTelemetry not available, tracing will be disabled`),null}}),_b=o(async()=>{let e=await gb.value;return e?e.trace.getTracer(`workflow`):null});async function vb(e,...t){let[n,r]=await Promise.all([_b.value,gb.value]),{fn:i,opts:a}=typeof t[0]==`function`?{fn:t[0],opts:{}}:{fn:t[1],opts:t[0]};if(!i)throw Error(`Function to trace must be provided`);return!n||!r?await i():n.startActiveSpan(e,a,async e=>{try{let t=await i(e);return e.setStatus({code:r.SpanStatusCode.OK}),t}catch(t){throw e.setStatus({code:r.SpanStatusCode.ERROR,message:t.message}),yb(t,r,e),t}finally{e.end()}})}function yb(e,t,n){!e||!Wv.is(e)||(n.setStatus({code:t.SpanStatusCode.OK}),n.setAttributes({...Ry(`suspended`),...By(e.stepCount),...zy(e.hookCount),...Vy(e.waitCount)}))}async function bb(e){let[t,n]=await Promise.all([mb(e),gb.value]);if(!(!t||!n))return n.trace.getSpanContext(t)}async function xb(){return await Cb(e=>e.trace.getActiveSpan())}async function Sb(e){return Cb(t=>t.SpanKind[e])}async function Cb(e){let t=await gb.value;if(t)return await e(t)}function wb(){return Cb(e=>{let t=e.trace.getActiveSpan()?.spanContext();if(t)return[{context:t}]})}async function Tb(e){if(!e)return;let[t,n]=await Promise.all([bb(e),gb.value]);if(!(!t||!n)&&n.trace.isSpanContextValid(t))return{context:t}}async function Eb(e,t){let n=await gb.value;if(!n)return t();let r=n.propagation.createBaggage({"workflow.run_id":{value:e.workflowRunId},"workflow.name":{value:e.workflowName}}),i=n.propagation.setBaggage(n.context.active(),r);return n.context.with(i,()=>t())}function Db(e,t){if(!t)return!1;let n=!1;for(let r of t.split(`,`)){let t=r.trim();if(!t)continue;let i=t.startsWith(`-`),a=i?t.slice(1):t;RegExp(`^${a.replace(/[|\\{}()[\]^$+?.]/g,`\\$&`).replace(/\*/g,`.*`)}$`).test(e)&&(n=!i)}return n}function Ob(e,t={}){let n=r=>{let i=n=>t.debugNamespace??`workflow:${e}:${n}`,a=t=>{let n=i(t);return(i,a)=>{let o=Object.keys(r).length>0,s=a&&Object.keys(a).length>0,c=o||s?{...r,...a??{}}:void 0;(t===`error`||t===`warn`)&&(t===`error`?console.error:console.warn)(Iv(`[workflow-sdk]`,i,c)),Db(n,process.env.DEBUG)&&(console.debug(`[${n}] ${i}`,c??``),xb().then(n=>{n?.addEvent(`${t}.${e}`,{message:i,...c})}).catch(()=>{}))}};return{debug:a(`debug`),info:a(`info`),warn:a(`warn`),error:a(`error`),child:e=>n({...r,...e}),forRun:(e,t,i)=>n({...r,workflowRunId:e,...t===void 0?{}:{workflowName:t},...i??{}})}};return n({})}const kb=Ob(`step`),Ab=Ob(`runtime`),jb=Ob(`webhook`),Mb=Ob(`events`);Ob(`adapter`),Ob(`build`,{debugNamespace:`workflow:build`});function Nb(e){if(m.is(e))throw e}function Pb(e,t){let n=e.includes(`return value`)?`returning`:`passing`,r=`Failed to serialize ${e}`;t instanceof qg&&t.path&&(r+=` at path "${t.path}"`);let i=`Ensure you're ${n} workflow serializable types. Check the serialization docs to see what's serializable: https://workflow-sdk.dev/docs/foundations/serialization`;return t instanceof qg&&t.value!==void 0&&Ab.error(`Serialization failed`,{context:e,problematicValue:t.value}),{message:r,hint:i}}async function Fb(e,t,n){try{let r=pv.serialize(e,`client`,n);return Pv(await jv(gv(Q.DEVALUE_V1,r),n?.compression===!0,n?.compressionStats),t)}catch(e){Nb(e);let{message:t,hint:n}=Pb(`client value`,e);throw new h(t,{hint:n,cause:e})}}async function Ib(e,t,n){let r=await Mv(await Fv(e,t),n?.compressionStats);if(!(r instanceof Uint8Array)){if(pv.deserializeLegacy)return pv.deserializeLegacy(r,`client`,n);throw Error(`Cannot deserialize non-binary data without legacy support`)}let{format:i,payload:a}=vv(r);if(i===Q.DEVALUE_V1)return pv.deserialize(a,`client`,n);throw Error(`Unsupported serialization format: ${i}`)}async function Lb(e,t,n){try{let r=pv.serialize(e,`step`,n);return Pv(await jv(gv(Q.DEVALUE_V1,r),n?.compression===!0,n?.compressionStats),t)}catch(e){Nb(e);let{message:t,hint:n}=Pb(`step value`,e);throw new h(t,{hint:n,cause:e})}}async function Rb(e,t,n){let r=await Mv(await Fv(e,t),n?.compressionStats);if(!(r instanceof Uint8Array)){if(pv.deserializeLegacy)return pv.deserializeLegacy(r,`step`,n);throw Error(`Cannot deserialize non-binary data without legacy support`)}let{format:i,payload:a}=vv(r);if(i===Q.DEVALUE_V1)return pv.deserialize(a,`step`,n);throw Error(`Unsupported serialization format: ${i}`)}function zb(e,t){if(!(e instanceof Uint8Array)){if(pv.deserializeLegacy)return pv.deserializeLegacy(e,`workflow`,t);throw Error(`Cannot deserialize non-binary data without legacy support`)}let{format:n,payload:r}=vv(e);if(n===Q.DEVALUE_V1)return pv.deserialize(r,`workflow`,t);throw Error(`Unsupported serialization format: ${n}`)}const Bb=Symbol.for(`WORKFLOW_STEP_CONTEXT_STORAGE`),Vb=globalThis[Bb]??(globalThis[Bb]=new ne);function Hb(e,t,n){if(e===0&&t===0&&n===0)return null;let r=[];e>0&&r.push(`${e} ${a(`step`,`steps`,e)}`),t>0&&r.push(`${t} ${a(`hook`,`hooks`,t)}`),n>0&&r.push(`${n} ${a(`timer`,`timers`,n)}`);let i=[];e>0&&i.push(`steps are completed`),t>0&&i.push(`hooks are received`),n>0&&i.push(`timers have elapsed`);let o=i.join(` and `);return`${r.join(` and `)} to be enqueued\n Workflow will suspend and resume when ${o}`}function Ub(e,t){let n=`${e.replace(`wrun_`,`strm_`)}_user`;return t?`${n}_${Buffer.from(t,`utf-8`).toString(`base64url`)}`:n}function Wb(e){return`strm_${e}_system_abort`}function Gb(e){if(!e.startsWith(`abrt_`))throw Error(`Invalid abort hook token format: expected "abrt_" prefix, got "${e}"`);return Wb(e.slice(5))}var Kb;(function(e){e[e.Consumed=0]=`Consumed`,e[e.NotConsumed=1]=`NotConsumed`,e[e.Finished=2]=`Finished`})(Kb||={});var qb=class{eventIndex;events=[];callbacks=[];onConsumedEvent;onUnconsumedEvent;getPromiseQueue;pendingUnconsumedCheck=null;pendingUnconsumedTimeout=null;unconsumedCheckVersion=0;constructor(e,t){this.events=e,this.eventIndex=0,this.onConsumedEvent=t.onConsumedEvent,this.onUnconsumedEvent=t.onUnconsumedEvent,this.getPromiseQueue=t.getPromiseQueue}subscribe(e){this.callbacks.push(e),this.pendingUnconsumedCheck!==null&&(this.unconsumedCheckVersion++,this.pendingUnconsumedCheck=null,this.pendingUnconsumedTimeout!==null&&(clearTimeout(this.pendingUnconsumedTimeout),this.pendingUnconsumedTimeout=null)),process.nextTick(this.consume)}notifyConsumedEvent(e){if(this.onConsumedEvent)try{this.onConsumedEvent(e)}catch(e){Mb.error(`onConsumedEvent callback threw an error`,{error:e})}}consume=()=>{for(;;){let e=this.events[this.eventIndex]??null;if(!this.consumeOne(e)){this.handleUnconsumed(e);return}}};consumeOne(e){for(let t=0;t<this.callbacks.length;t++){let n=this.callbacks[t],r=Kb.NotConsumed;try{r=n(e)}catch(e){Mb.error(`EventConsumer callback threw an error`,{error:e})}if(!(r!==Kb.Consumed&&r!==Kb.Finished))return e!==null&&this.notifyConsumedEvent(e),this.eventIndex++,r===Kb.Finished&&this.callbacks.splice(t,1),e!==null}return!1}handleUnconsumed(e){if(e!==null){let t=++this.unconsumedCheckVersion;this.pendingUnconsumedCheck=this.getPromiseQueue().then(()=>new Promise(e=>setTimeout(e,0))).then(()=>this.getPromiseQueue()).then(()=>{this.pendingUnconsumedTimeout=setTimeout(()=>{this.pendingUnconsumedTimeout=null,this.unconsumedCheckVersion===t&&(this.pendingUnconsumedCheck=null,this.onUnconsumedEvent(e))},100)})}}},Jb=class{aborted=!1;reason=void 0;[X];[Z];#e=[];#t=null;get onabort(){return this.#t}set onabort(e){this.#t=e,e&&this.aborted&&e.call(this)}constructor(e,t){this[X]=e,this[Z]=t}_setAborted(e){if(!this.aborted){this.aborted=!0,this.reason=e,this.#t&&this.#t.call(this);for(let e of this.#e)e();this.#e=[]}}addEventListener(e,t){if(e===`abort`){if(this.aborted){t();return}this.#e.push(t)}}removeEventListener(e,t){e===`abort`&&(this.#e=this.#e.filter(e=>e!==t))}throwIfAborted(){if(this.aborted)throw this.reason??new DOMException(`The operation was aborted.`,`AbortError`)}};function Yb(e){return class{signal;[X];[Z];constructor(){let t=e.generateUlid(),n=Wb(t),r=`abrt_${t}`;this[X]=n,this[Z]=r,this.signal=new Jb(n,r);let i=`hook_${e.generateUlid()}`;e.invocationsQueue.set(i,{type:`hook`,correlationId:i,token:r,isWebhook:!1,isSystem:!0}),e.eventsConsumer.subscribe(t=>{if(!t||t.correlationId!==i)return Kb.NotConsumed;let n=`eventData`in t&&t.eventData&&`token`in t.eventData?t.eventData.token:void 0;if(typeof n==`string`&&n!==this[Z])return e.promiseQueue=e.promiseQueue.then(()=>{e.onWorkflowError(new _(`Replay divergence: abort hook event ${t.eventType} for ${i} belongs to token "${n}", but the current abort hook expects "${this[Z]}"`,{eventId:t.eventId}))}),Kb.Finished;if(t.eventType===`hook_created`){let t=e.invocationsQueue.get(i);return t&&t.type===`hook`&&(t.hasCreatedEvent=!0),Kb.Consumed}if(t.eventType===`hook_received`){let n=t.eventData?.payload;return e.pendingDeliveries++,e.promiseQueue=e.promiseQueue.then(async()=>{let t;try{if(n!==void 0)try{let r=await zx(n,e.runId,e.encryptionKey,e.globalThis);r&&typeof r==`object`&&`reason`in r&&(t=r.reason)}catch{}this.signal._setAborted(t)}finally{e.pendingDeliveries--}}),e.invocationsQueue.delete(i),Kb.Consumed}return t.eventType===`hook_disposed`?(e.invocationsQueue.delete(i),Kb.Finished):Kb.NotConsumed})}abort(t){if(!this.signal.aborted){this.signal._setAborted(t);for(let[,n]of e.invocationsQueue)if(n.type===`hook`&&n.token===this[Z]){n.abortRequested=!0,n.abortReason=t;break}}}}}function Xb(){return{abort(e){let t=new Jb(``,``);return t._setAborted(e??new DOMException(`The operation was aborted.`,`AbortError`)),t},any(e){let t=new Jb(``,``),n=Array.from(e);for(let e of n)if(e.aborted)return t._setAborted(e.reason),t;let r=[],i=()=>{for(let{signal:e,listener:t}of r)e.removeEventListener&&e.removeEventListener(`abort`,t);r.length=0};for(let e of n){if(!e.addEventListener)continue;let n=()=>{t.aborted||(t._setAborted(e.reason),i())};r.push({signal:e,listener:n}),e.addEventListener(`abort`,n)}return t},timeout(){throw Error(`AbortSignal.timeout() is not supported in workflow functions. Use sleep() with an AbortController instead. See: /docs/errors/abort-signal-timeout-in-workflow`)}}}const Zb=Ih();function Qb(e){try{return e.getReader({mode:`byob`}).releaseLock(),`bytes`}catch{}}function $b(e){return Nb(e),e instanceof h&&e.cause!==void 0||e instanceof v&&e.cause!==void 0?e.cause:e}async function ex(e,t){if(e.recorded)try{let n=await xb();if(!n)return;let r=e.uncompressedBytes??0,i=e.storedBytes??0;n.setAttributes({...Xy(t),...Zy(e.compressed??!1),...Qy(e.codec??`none`),...$y(r),...eb(i),...e.compressed&&r>0?tb(1-i/r):{}})}catch{}}function tx(e,t){let n=new TextEncoder,r={resolved:!1,key:void 0};return new TransformStream({async transform(i,a){try{r.resolved||=(r.key=await Nv(t),!0);let o=l_(i,e),s=n.encode(o),c=gv(Q.DEVALUE_V1,s);if(r.key){let e=await m_(r.key,c);c=gv(Q.ENCRYPTED,e)}let l=new Uint8Array(4+c.length);new DataView(l.buffer).setUint32(0,c.length,!1),l.set(c,4),a.enqueue(l)}catch(e){if(m.is(e)){a.error(e);return}let{message:t,hint:n}=Pb(`stream chunk`,e);a.error(new h(t,{hint:n,cause:e}))}}})}function nx(e,t){let n=new TextDecoder,r=new Uint8Array,i={resolved:!1,key:void 0};function a(e){let t=new Uint8Array(r.length+e.length);t.set(r,0),t.set(e,r.length),r=t}async function o(a){for(i.resolved||=(i.key=await Nv(t),!0);r.length>=4;){let t=new DataView(r.buffer,r.byteOffset,r.byteLength).getUint32(0,!1);if(r.length<4+t)break;let o=r.slice(4,4+t);r=r.slice(4+t);let{format:s,payload:c}=vv(o);if(s===Q.ENCRYPTED){if(!i.key){a.error(new m(`Encrypted stream data encountered but no encryption key is available. Encryption is not configured or no key was provided for this run.`,{context:{operation:`decrypt`,byteLength:c.byteLength,formatPrefix:`encr`}}));return}let e;try{e=await h_(i.key,c)}catch(e){throw m.is(e)&&e.context&&(e.context.formatPrefix=s),e}({format:s,payload:c}=vv(e))}if(s===Q.DEVALUE_V1){let t=n.decode(c);a.enqueue(s_(t,e))}}}return new TransformStream({async transform(t,i){if(r.length===0&&t.length>=4){let e=new DataView(t.buffer,t.byteOffset,t.byteLength).getUint32(0,!1);if(e>0&&e<1e8){a(t),await o(i);return}}else if(r.length>0){a(t),await o(i);return}let s=n.decode(t).split(`
|
|
59
|
-
`);for(let t of s)t.length>0&&i.enqueue(s_(t,e))},async flush(e){r.length>0&&await o(e)}})}const rx=1e8;function ix(){return new TransformStream({transform(e,t){if(e.length===0)return;if(e.length>rx){t.error(new v(`Byte-stream chunk of ${e.length} bytes exceeds the maximum framed chunk size (${rx}). Split the data into smaller chunks before writing.`,{slug:`serialization-failed`}));return}let n=new Uint8Array(4+e.length);new DataView(n.buffer).setUint32(0,e.length,!1),n.set(e,4),t.enqueue(n)}})}function ax(){let e=new Uint8Array;function t(t){let n=new Uint8Array(e.length+t.length);n.set(e,0),n.set(t,e.length),e=n}return new TransformStream({transform(n,r){for(n.length>0&&t(n);e.length>=4;){let t=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(0,!1);if(t>rx){r.error(new v(`Byte-stream frame length ${t} exceeds maximum (${rx}). This usually means a non-framed byte stream is being read as framed.`,{slug:`serialization-failed`}));return}let n=4+t;if(e.length<n)break;r.enqueue(e.slice(4,n)),e=e.slice(n)}},flush(t){e.length>0&&t.error(new v(`Byte-stream ended with ${e.length} bytes of incomplete frame data. The stream was truncated mid-frame.`,{slug:`serialization-failed`}))}})}var ox=class extends ReadableStream{#e;constructor(e,t,n){if(typeof t!=`string`||t.length===0)throw new v(`"name" is required, got "${t}"`);super({type:`bytes`,pull:async r=>{let i=this.#e;if(!i){let r=await(await T_()).streams.get(e,t,n);i=this.#e=r.getReader()}if(!i){r.error(Error(`Failed to get reader`));return}let a=await i.read();a.done?(this.#e=void 0,r.close()):r.enqueue(a.value)},cancel:async e=>{this.#e&&=(await this.#e.cancel(e).catch(()=>{}),void 0)}})}};function sx(e,t,n){let r=n===void 0||n>=0,i=n??0,a=0,o=0,s=0,c,l=new Uint8Array;async function u(){let o=await T_(),s=r?i+a:n;c=(await o.streams.get(e,t,s)).getReader()}async function d(){for(c&&=(await c.cancel().catch(()=>{}),void 0),i+=a,a=0,l=new Uint8Array;;){if(o++,s++,o>50)throw Error(`Stream "${t}" exceeded maximum reconnection attempts (50)`);if(s>1e3)throw Error(`Stream "${t}" exceeded maximum total reconnection attempts (1000)`);try{await u();return}catch{}}}return new ReadableStream({pull:async e=>{for(;;){if(!c)try{await u()}catch(t){e.error(t);return}let t;try{t=await c.read()}catch(t){if(!r){e.error(t);return}try{await d()}catch(t){e.error(t);return}continue}if(t.done||!t.value){c=void 0,e.close();return}let n=t.value;if(n.length>0){let e=new Uint8Array(l.length+n.length);e.set(l,0),e.set(n,l.length),l=e}let i=!1;for(;l.length>=4;){let t=4+new DataView(l.buffer,l.byteOffset,l.byteLength).getUint32(0,!1);if(l.length<t)break;e.enqueue(l.slice(0,t)),l=l.slice(t),a++,i=!0}if(i){o=0;return}}},cancel:async()=>{c&&=(await c.cancel().catch(e=>{console.warn(`Error closing ReadableStream reader:`,e)}),void 0)}})}var cx=class extends WritableStream{constructor(e,t){if(typeof e!=`string`)throw new v(`"runId" must be a string, got "${typeof e}"`);if(typeof t!=`string`||t.length===0)throw new v(`"name" is required, got "${t}"`);let n=T_(),r=[],i=null,a=null,o,s=async()=>{if(i&&=(clearTimeout(i),null),r.length===0)return;let a=r.slice(),s=await n;if(o===void 0&&(o=s.streamFlushIntervalMs??10),typeof s.streams.writeMulti==`function`&&a.length>1)await s.streams.writeMulti(e,t,a);else for(let n of a)await s.streams.write(e,t,n);r=[]},c=[],l=()=>{i||=setTimeout(()=>{i=null;let e=c;c=[],a=s().then(()=>{for(let t of e)t.resolve()},t=>{for(let n of e)n.reject(t)})},o??10)};super({async write(e){a&&=(await a,null),r.push(e),l(),await new Promise((e,t)=>{c.push({resolve:e,reject:t})})},async close(){a&&=(await a,null),await s(),await(await n).streams.close(e,t)},abort(e){i&&=(clearTimeout(i),null),r=[];let t=c;c=[];let n=e??Error(`Stream aborted`);for(let e of t)e.reject(n)}})}};function lx(e=globalThis){return{...J_(),...ov(),...iv(e),Request:t=>{if(!(t instanceof e.Request))return!1;let n={method:t.method,url:t.url,headers:t.headers,body:t.body,duplex:t.duplex},r=t[B_];return r&&(n.responseWritable=r),t.signal&&(t.signal.aborted||t.signal[X])&&(n.signal=t.signal),n},Response:t=>t instanceof e.Response?{type:t.type,url:t.url,status:t.status,statusText:t.statusText,headers:t.headers,body:t.body,redirected:t.redirected}:!1}}function ux(e,t,n,r,i,a){let o=t[X],s=t[Z];if(!o){let e=(n[N_]||Zb)();o=Wb(e),s=`abrt_${e}`,t[X]=o,t[Z]=s,t.signal&&(t.signal[X]=o,t.signal[Z]=s)}return fx(e,o,i,a,r),{streamName:o,hookToken:s,aborted:e.aborted,reason:e.aborted?e.reason:void 0}}function dx(e,t){let n=t[X]??t.signal?.[X],r=t[Z]??t.signal?.[Z];if(!n)throw Error(`AbortController/AbortSignal stream name is not set`);return{streamName:n,hookToken:r,aborted:e.aborted,reason:e.aborted?e.reason:void 0}}function fx(e,t,n,r,i){e.aborted||e[H_]||(e[H_]=!0,e.addEventListener(`abort`,()=>{i.push((async()=>{try{let i=await Nv(r),a=await Mx({aborted:!0,reason:e.reason},n,i),o=new cx(n,t).getWriter();await o.write(a),await o.close()}catch{}})())},{once:!0}))}function px(e=globalThis,t,n,r,i=!1){return{...lx(e),ReadableStream:a=>{if(!(a instanceof e.ReadableStream))return!1;if(a.locked)throw new h(`ReadableStream is locked and cannot be passed across a workflow boundary.`,{hint:`Pass the stream before calling .getReader() / .pipeThrough() / .pipeTo(), or tee it with .tee() and pass one of the branches.`});let o=`strm_${(e[N_]||Zb)()}`,s=Qb(a),c=new cx(n,o);s===`bytes`?i?t.push(a.pipeThrough(ix()).pipeTo(c)):t.push(a.pipeTo(c)):t.push(a.pipeThrough(tx(px(e,t,n,r,i),r)).pipeTo(c));let l={name:o};return s&&(l.type=s),s===`bytes`&&i&&(l.framing=`framed-v1`),l},WritableStream:r=>{if(!(r instanceof e.WritableStream))return!1;let i=r[P_],a=r[L_];if(typeof i==`string`&&typeof a==`string`){let e={name:i,runId:a},t=r[R_];return typeof t==`string`&&(e.deploymentId=t),e}let o=`strm_${(e[N_]||Zb)()}`,s=new ox(n,o);return t.push(s.pipeTo(r)),{name:o}},AbortController:i=>!e.AbortController||typeof e.AbortController!=`function`||!(i instanceof e.AbortController)?!1:ux(i.signal,i,e,t,n,r),AbortSignal:i=>!e.AbortSignal||typeof e.AbortSignal!=`function`||!(i instanceof e.AbortSignal)?!1:ux(i,i,e,t,n,r)}}function mx(e=globalThis){return{...lx(e),ReadableStream:t=>{if(!(t instanceof e.ReadableStream))return!1;let n=t[z_];if(n!==void 0)return{bodyInit:n};let r=t[P_];if(!r)throw new v("ReadableStream `name` is not set");let i={name:r},a=t[F_];a&&(i.type=a);let o=t[I_];return o&&(i.framing=o),i},WritableStream:t=>{if(!(t instanceof e.WritableStream))return!1;let n=t[P_];if(!n)throw new v("WritableStream `name` is not set");let r={name:n},i=t[L_];typeof i==`string`&&(r.runId=i);let a=t[R_];return typeof a==`string`&&(r.deploymentId=a),r},AbortController:t=>{if(!t||!t.signal)return!1;let n=t,r=n[X]??n.signal?.[X],i=e.AbortController&&typeof e.AbortController==`function`&&t instanceof e.AbortController;return!r&&!i?!1:dx(t.signal,n)},AbortSignal:t=>{let n=t?.[X],r=e.AbortSignal&&typeof e.AbortSignal==`function`&&t instanceof e.AbortSignal;return!n&&!r?!1:dx(t,t)}}}function hx(e=globalThis,t,n,r,i=!1){return{...lx(e),ReadableStream:a=>{if(!(a instanceof e.ReadableStream))return!1;if(a.locked)throw new h(`ReadableStream is locked and cannot be passed across a workflow boundary.`,{hint:`Pass the stream before calling .getReader() / .pipeThrough() / .pipeTo(), or tee it with .tee() and pass one of the branches.`});let o=a[P_],s=a[F_],c=a[I_];if(!o){o=`strm_${(e[N_]||Zb)()}`,s=Qb(a),c=s===`bytes`&&i?`framed-v1`:c;let l=new cx(n,o);s===`bytes`?c===`framed-v1`?t.push(a.pipeThrough(ix()).pipeTo(l)):t.push(a.pipeTo(l)):t.push(a.pipeThrough(tx(hx(e,t,n,r,i),r)).pipeTo(l))}let l={name:o};return s&&(l.type=s),c&&(l.framing=c),l},WritableStream:i=>{if(!(i instanceof e.WritableStream))return!1;let a=i[P_],o=i[L_];a||(a=`strm_${(e[N_]||Zb)()}`,t.push(new ox(n,a).pipeThrough(nx(Tx(e,t,n,r),r)).pipeTo(i)));let s={name:a};typeof o==`string`&&(s.runId=o);let c=i[R_];return typeof c==`string`&&(s.deploymentId=c),s},AbortController:i=>!e.AbortController||typeof e.AbortController!=`function`||!(i instanceof e.AbortController)?!1:ux(i.signal,i,e,t,n,r),AbortSignal:i=>!e.AbortSignal||typeof e.AbortSignal!=`function`||!(i instanceof e.AbortSignal)?!1:ux(i,i,e,t,n,r)}}function gx(e,t,n,r){let i=new AbortController;return r.push((async()=>{try{let r=new ox(t,n).getReader(),a=await Promise.race([r.read(),new Promise(e=>{if(i.signal.aborted){e({value:void 0,done:!0});return}i.signal.addEventListener(`abort`,()=>e({value:void 0,done:!0}),{once:!0})})]);if(r.releaseLock(),a.value&&!a.done)try{let n=Vb.getStore(),r=await Nx(a.value,t,n?.encryptionKey);e.abort(r?.reason)}catch{e.abort()}}catch{}})()),i}function _x(e,t,n){let r=e,i=e.signal;r[X]=t.streamName,r[Z]=t.hookToken,i[X]=t.streamName,i[Z]=t.hookToken,n&&(r[U_]=n,i[U_]=n)}function vx(e,t){let n=e,r=t;n[X]!==void 0&&(r[X]=n[X]),n[Z]!==void 0&&(r[Z]=n[Z]),n[U_]!==void 0&&(r[U_]=n[U_])}function yx(e,t,n){let r=new AbortController;e.aborted?(_x(r,e),r.abort(e.reason)):e.streamName?_x(r,e,gx(r,n,e.streamName,t)):_x(r,e);let i=r.abort.bind(r);return r.abort=t=>{if(r.signal.aborted)return;i(t);let n=Vb.getStore();if(n&&(n.ops.push((async()=>{try{let r=await Mx({aborted:!0,reason:t},n.workflowMetadata.workflowRunId,n.encryptionKey),i=new cx(n.workflowMetadata.workflowRunId,e.streamName).getWriter();await i.write(r),await i.close()}catch{}})()),e.hookToken)){let r=(async()=>{try{let{resumeHook:n}=await import(`./resume-hook-CUCPW67D.js`).then(e=>e.i);await n(e.hookToken,{aborted:!0,reason:t})}catch{}})();n.preCompletionOps.push(r)}},r}function bx(e,t,n){let r=new AbortController;return e.aborted?(_x(r,e),r.abort(e.reason)):e.streamName?_x(r,e,gx(r,n,e.streamName,t)):_x(r,e),r.signal}function xx(e=globalThis){return{...Y_(e),...av(e)}}async function Sx(e,t){let n=await T_();if(!n.getEncryptionKeyForRun)return;let r=t?await n.getEncryptionKeyForRun(e,{deploymentId:t}):await n.getEncryptionKeyForRun(await n.runs.get(e));return r?await p_(r,[`encrypt`]):void 0}function Cx(e=globalThis,t,n,r){return{...xx(e),StepFunction:()=>{throw new h(`Step functions cannot be deserialized in client context. Step functions should not be returned from workflows.`,{hint:`A step function reference reached the client. Return a serializable value (e.g. the step result) instead of the step itself.`})},WorkflowFunction:e=>Object.assign(()=>{throw new h(`Workflow functions cannot be called directly. Use start() to invoke them.`,{hint:"Wrap the workflow with `start(workflowFn, { ... })` from `workflow` to begin a run instead of invoking it like a normal function."})},{workflowId:e.workflowId}),Request:t=>{let n={method:t.method,headers:new e.Headers(t.headers),body:t.body,duplex:t.duplex};t.signal&&(n.signal=t.signal);let r=new e.Request(t.url,n);return t.signal&&vx(t.signal,r.signal),r},Response:t=>new e.Response(t.body,{status:t.status,statusText:t.statusText,headers:new e.Headers(t.headers)}),ReadableStream:i=>{if(`bodyInit`in i){let t=i.bodyInit;return new e.Response(t).body}if(i.type===`bytes`){let r=new ox(n,i.name,i.startIndex),a=g_();t.push(a.promise);let{readable:o,writable:s}=i.framing===`framed-v1`?ax():new e.TransformStream;return x_(r,s,a).catch(()=>{}),b_(o,a),o}else{let a=sx(n,i.name,i.startIndex),o=nx(Cx(e,t,n,r),r),s=g_();return t.push(s.promise),x_(a,o.writable,s).catch(()=>{}),b_(o.readable,s),o.readable}},WritableStream:i=>{let a=typeof i.runId==`string`?i.runId:n,o=a===n?r:Sx(a,i.deploymentId),s=tx(px(e,t,a,o),o),c=new cx(a,i.name),l=g_();return t.push(l.promise),x_(s.readable,c,l).catch(()=>{}),y_(s.writable,l),Object.defineProperty(s.writable,P_,{value:i.name,writable:!1}),Object.defineProperty(s.writable,L_,{value:a,writable:!1}),typeof i.deploymentId==`string`&&Object.defineProperty(s.writable,R_,{value:i.deploymentId,writable:!1}),s.writable},AbortController:e=>yx(e,t,n),AbortSignal:e=>bx(e,t,n)}}function wx(e=globalThis){return{...xx(e),...sv(e),Request:t=>{Object.setPrototypeOf(t,e.Request.prototype);let n=t.responseWritable;return n&&(t[B_]=n,delete t.responseWritable,t.respondWith=()=>{throw new h("`respondWith()` must be called from within a step function.",{hint:'Move the `respondWith(...)` call inside a `"use step"` function — it cannot be invoked from a workflow context.'})}),t},WorkflowFunction:e=>Object.assign(()=>{throw new h(`Workflow functions cannot be called directly. Use start() to invoke them.`,{hint:"Wrap the workflow with `start(workflowFn, { ... })` from `workflow` to begin a run instead of invoking it like a normal function."})},{workflowId:e.workflowId}),Response:t=>(Object.setPrototypeOf(t,e.Response.prototype),t),ReadableStream:t=>`bodyInit`in t?Object.create(e.ReadableStream.prototype,{[z_]:{value:t.bodyInit,writable:!1}}):Object.create(e.ReadableStream.prototype,{[P_]:{value:t.name,writable:!1},[F_]:{value:t.type,writable:!1},[I_]:{value:t.framing,writable:!1}}),WritableStream:t=>{let n={[P_]:{value:t.name,writable:!1}};return typeof t.runId==`string`&&(n[L_]={value:t.runId,writable:!1}),typeof t.deploymentId==`string`&&(n[R_]={value:t.deploymentId,writable:!1}),Object.create(e.WritableStream.prototype,n)},AbortController:e=>{let t=new Jb(e.streamName,e.hookToken);return e.aborted&&t._setAborted(e.reason),{[X]:e.streamName,[Z]:e.hookToken,signal:t,abort:()=>{}}},AbortSignal:e=>{let t=new Jb(e.streamName,e.hookToken);return e.aborted&&t._setAborted(e.reason),t}}}function Tx(e=globalThis,t,n,r,i){return{...xx(e),StepFunction:e=>{let t=e.stepId,n=e.closureVars,r=`boundThis`in e,i=r?e.boundThis:void 0,a=Array.isArray(e.boundArgs)?e.boundArgs:[],o=y(t);if(!o)throw new h(`Step function "${t}" not found. Make sure the step function is registered.`,{hint:`Make sure the step file is included in your build (i.e. it is listed in the workflow manifest), and that the SWC plugin is configured for the file.`});if(!n&&!r&&a.length===0)return o;let s=function(...e){let t=r?i:this,s=a.length>0?[...a,...e]:e;if(n){let e=Vb.getStore();if(!e)throw new v(`Cannot call step function with closure variables outside step context`);let r={...e,closureVars:n};return Vb.run(r,()=>o.apply(t,s))}return o.apply(t,s)};return Object.defineProperty(s,"name",{value:o.name}),Object.defineProperty(s,"stepId",{value:t,writable:!1,enumerable:!1,configurable:!1}),o.maxRetries!==void 0&&(s.maxRetries=o.maxRetries),s},WorkflowFunction:e=>Object.assign(()=>{throw new h(`Workflow functions cannot be called directly. Use start() to invoke them.`,{hint:"Wrap the workflow with `start(workflowFn, { ... })` from `workflow` to begin a run instead of invoking it like a normal function."})},{workflowId:e.workflowId}),Request:t=>{let n=t.responseWritable,r={method:t.method,headers:new e.Headers(t.headers),body:t.body,duplex:t.duplex};t.signal&&(r.signal=t.signal);let i=new e.Request(t.url,r);return t.signal&&vx(t.signal,i.signal),n&&(i.respondWith=async e=>{let t=n.getWriter();await t.write(e),await t.close()}),i},Response:t=>new e.Response(t.body,{status:t.status,statusText:t.statusText,headers:new e.Headers(t.headers)}),ReadableStream:a=>{if(`bodyInit`in a){let t=a.bodyInit;return new e.Response(t).body}let o=new ox(n,a.name);if(a.type===`bytes`){let n=g_();t.push(n.promise);let{readable:r,writable:i}=a.framing===`framed-v1`?ax():new e.TransformStream;return x_(o,i,n).catch(()=>{}),b_(r,n),r}else{let a=nx(Tx(e,t,n,r,i),r),s=g_();return t.push(s.promise),x_(o,a.writable,s).catch(()=>{}),b_(a.readable,s),a.readable}},WritableStream:a=>{let o=typeof a.runId==`string`?a.runId:n,s=typeof a.deploymentId==`string`?a.deploymentId:o===n?i:void 0,c=o===n?r:Sx(o,s),l=tx(hx(e,t,o,c),c),u=new cx(o,a.name),d=g_();return t.push(d.promise),x_(l.readable,u,d).catch(()=>{}),y_(l.writable,d),Object.defineProperty(l.writable,P_,{value:a.name,writable:!1}),Object.defineProperty(l.writable,L_,{value:o,writable:!1}),s&&Object.defineProperty(l.writable,R_,{value:s,writable:!1}),l.writable},AbortController:e=>yx(e,t,n),AbortSignal:e=>bx(e,t,n)}}async function Ex(e,t){return await Pv(e,t)}async function Dx(e,t){return Fv(e,t)}async function Ox(e,t,n,r=[],i=globalThis,a=!1,o=!1,s=!1){if(a)return $_(l_(e,px(i,r,t,n,o)));try{let a={},c=await Fb(e,n,{global:i,extraReducers:Vx(px(i,r,t,n,o)),compression:s,compressionStats:a});return await ex(a,`serialize`),c}catch(e){let t=$b(e),{message:n,hint:r}=Pb(`workflow arguments`,t);throw new h(n,{hint:r,cause:t})}}async function kx(e,t,n,r=globalThis,i={}){let a={},o=await Mv(await Dx(e,n),a);return await ex(a,`deserialize`),zb(o,{global:r,extraRevivers:{...Hx(wx(r)),...i}})}async function Ax(e,t,n,r=globalThis,i=!1,a=!1){if(i)return $_(l_(e,mx(r)));try{let t={},i=await Lb(e,n,{global:r,extraReducers:Vx(mx(r)),compression:a,compressionStats:t});return await ex(t,`serialize`),i}catch(e){let t=$b(e),{message:n,hint:r}=Pb(`workflow return value`,t);throw new h(n,{hint:r,cause:t})}}async function jx(e,t,n,r=[],i=globalThis,a={}){let o={},s=await Ib(e,n,{global:i,extraRevivers:{...Hx(Cx(i,r,t,n)),...a},compressionStats:o});return await ex(o,`deserialize`),s}async function Mx(e,t,n,r=globalThis,i=!1,a=!1){if(i)return $_(l_(e,mx(r)));try{let t={},i=await Lb(e,n,{global:r,extraReducers:Vx(mx(r)),compression:a,compressionStats:t});return await ex(t,`serialize`),i}catch(e){let t=$b(e),{message:n,hint:r}=Pb(`step arguments`,t);throw new h(n,{hint:r,cause:t})}}async function Nx(e,t,n,r=[],i=globalThis,a={},o){let s={},c=await Rb(e,n,{global:i,extraRevivers:{...Hx(Tx(i,r,t,n,o)),...a},compressionStats:s});return await ex(s,`deserialize`),c}async function Px(e,t,n,r=[],i=globalThis,a=!1,o=!1,s=!1){if(a)return $_(l_(e,hx(i,r,t,n,o)));try{let a={},c=await Lb(e,n,{global:i,extraReducers:Vx(hx(i,r,t,n,o)),compression:s,compressionStats:a});return await ex(a,`serialize`),c}catch(e){let t=$b(e),{message:n,hint:r}=Pb(`step return value`,t);throw new h(n,{hint:r,cause:t})}}async function Fx(e,t,n,r=[],i=globalThis,a=!1){try{let o=l_(e,hx(i,r,t,n)),s=new TextEncoder().encode(o),c=gv(Q.DEVALUE_V1,s),l={},u=await Ex(await jv(c,a,l),n);return await ex(l,`serialize`),u}catch(e){let t=$b(e),{message:n,hint:r}=Pb(`step error`,t);throw new h(n,{hint:r,cause:t})}}async function Ix(e,t,n,r=globalThis,i={}){let a={},o=await Mv(await Dx(e,n),a);if(await ex(a,`deserialize`),!(o instanceof Uint8Array))return c_(o,{...wx(r),...i});let{format:s,payload:c}=vv(o);if(s===Q.DEVALUE_V1)return s_(new TextDecoder().decode(c),{...wx(r),...i});throw Error(`Unsupported serialization format: ${s}`)}async function Lx(e,t,n,r=globalThis,i=!1){try{let t=l_(e,mx(r)),a=new TextEncoder().encode(t),o=gv(Q.DEVALUE_V1,a),s={},c=await Ex(await jv(o,i,s),n);return await ex(s,`serialize`),c}catch(e){let t=$b(e),{message:n,hint:r}=Pb(`run error`,t);throw new h(n,{hint:r,cause:t})}}async function Rx(e,t,n,r=[],i=globalThis,a={}){let o={},s=await Mv(await Dx(e,n),o);if(await ex(o,`deserialize`),!(s instanceof Uint8Array))return c_(s,{...Cx(i,r,t,n),...a});let{format:c,payload:l}=vv(s);if(c===Q.DEVALUE_V1)return s_(new TextDecoder().decode(l),{...Cx(i,r,t,n),...a});throw Error(`Unsupported serialization format: ${c}`)}async function zx(e,t,n,r=globalThis,i={}){let a={},o=await Mv(await Dx(e,n),a);return await ex(a,`deserialize`),zb(o,{global:r,extraRevivers:{...Hx(wx(r)),...i}})}const Bx=[`ReadableStream`,`WritableStream`,`Request`,`Response`,`StepFunction`,`AbortController`,`AbortSignal`];function Vx(e){let t={};for(let n of Bx)n in e&&(t[n]=e[n]);return t}function Hx(e){let t={};for(let n of Bx)n in e&&(t[n]=e[n]);return t}const Ux=[{format:Q.ENCRYPTED,minVersion:`4.2.0-beta.64`},{format:Q.GZIP,minVersion:`5.0.0-beta.18`},{format:Q.ZSTD,minVersion:`5.0.0-beta.18`}],Wx=[{capability:`framedByteStreams`,minVersion:`5.0.0-beta.15`}],Gx=new Set([Q.DEVALUE_V1]);function Kx(e){if(!e||!f_.default.valid(e))return{supportedFormats:Gx,framedByteStreams:!1};let t=new Set(Gx);for(let{format:n,minVersion:r}of Ux)f_.default.gte(e,r)&&t.add(n);let n={supportedFormats:t,framedByteStreams:!1};for(let{capability:t,minVersion:r}of Wx)f_.default.gte(e,r)&&(n[t]=!0);return n}const qx=`5.0.0-beta.24`,Jx=/^[a-zA-Z0-9_\-./@]+$/;function Yx(e,t){if(!Jx.test(e))throw Error(`Invalid workflow name "${e}": must only contain alphanumeric characters, underscores, hyphens, dots, forward slashes, or at signs`);return`${ah(`workflow`,ih(t))}${e}`}const Xx=Ih();function Zx(e){return`__health_check__${e}`}function Qx(e){let t=fh.safeParse(e);if(t.success)return t.data}function $x(e){return`wrun_hc_${e}`}async function eS(e,t,n){let r=await T_(),i=Zx(e.correlationId),a=JSON.stringify({healthy:!0,endpoint:t,correlationId:e.correlationId,specVersion:n??5,workflowCoreVersion:qx,timestamp:Date.now()}),o=$x(e.correlationId);await r.streams.write(o,i,a),await r.streams.close(o,i)}async function tS(e,t){let n=[],r=!1,i=!1;for(;!r&&!i;){let a=e.read(),o=new Promise(e=>setTimeout(()=>{i=!0,e({done:!0,value:void 0})},t)),s=await Promise.race([a,o]);r=s.done,s.value&&n.push(s.value)}return{chunks:n,timedOut:i}}function nS(e){if(e.length===0)return null;let t=e.reduce((e,t)=>e+t.length,0),n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;let i=new TextDecoder().decode(n),a;try{a=JSON.parse(i)}catch{return i.length>0?{healthy:!0}:null}if(typeof a!=`object`||!a||!(`healthy`in a)||typeof a.healthy!=`boolean`)return null;let o=a,s={healthy:o.healthy};return typeof o.specVersion==`number`&&(s.specVersion=o.specVersion),typeof o.workflowCoreVersion==`string`&&(s.workflowCoreVersion=o.workflowCoreVersion),s}async function rS(e,t,n){let r=n?.timeout??3e4,i=Xx(),a=Zx(i),o=`${ah(t,ih(n?.namespace))}health_check`,s=Date.now();try{for(await e.queue(o,{__healthCheck:!0,correlationId:i},{specVersion:1,deploymentId:n?.deploymentId});Date.now()-s<r;)try{let t=(await e.streams.get($x(i),a)).getReader(),{chunks:n,timedOut:r}=await tS(t,500);if(r){try{t.cancel()}catch{}await new Promise(e=>setTimeout(e,100));continue}let o=nS(n);if(o)return{...o,latencyMs:Date.now()-s};await new Promise(e=>setTimeout(e,100))}catch{await new Promise(e=>setTimeout(e,100))}return{healthy:!1,error:`Health check timed out after ${r}ms`}}catch(e){return{healthy:!1,error:e instanceof Error?e.message:String(e)}}}function iS(e,t){return new d(`Event pagination ${t} for workflow run "${e}".`,{code:u.WORLD_CONTRACT_ERROR})}function aS(e,t,n){if(t){if(n.has(t))throw iS(e,`did not advance`);n.add(t)}}function oS(e,t,n){for(let r of n)t.has(r.eventId)||(t.add(r.eventId),e.push(r))}function sS(e,t,n,r){if(t){if(n===null)throw iS(e,`returned more pages without a cursor`);if(r.has(n))throw iS(e,`repeated a cursor`)}}function cS(e,t,n){return t!==null&&!n&&d.is(e)&&e.status===400}async function lS(e,t){let n=t!==void 0;return vb(n?`workflow.loadNewEvents`:`workflow.loadEvents`,async r=>{r?.setAttributes({...Jv(e)});let i=[],a=new Set,o=new Set,s=t??null,c=!0,l=0,u=!1,d=await T_(),f=Date.now();for(;c;){let t=Date.now(),r=s;aS(e,r,o);let f;try{f=await d.events.list({runId:e,pagination:{sortOrder:`asc`,cursor:r??void 0}})}catch(t){if(cS(t,r,u)){Ab.warn(`Event cursor was rejected; retrying with a full event reload.`,{workflowRunId:e}),i.length=0,a.clear(),o.clear(),s=null,u=!0;continue}throw t}oS(i,a,f.data),c=f.hasMore,sS(e,c,f.cursor,o),s=f.cursor??s,l++,Ab.debug(`Loaded event page`,{workflowRunId:e,incremental:n,page:l,pageEvents:f.data.length,totalEvents:i.length,hasMore:c,pageMs:Date.now()-t})}return Ab.debug(`Event load complete`,{workflowRunId:e,incremental:n,totalEvents:i.length,pagesLoaded:l,totalMs:Date.now()-f}),r?.setAttributes({...Zv(i.length),...Ky(l)}),{events:i,cursor:s}})}const uS={"Access-Control-Allow-Origin":`*`,"Access-Control-Allow-Methods":`POST, OPTIONS, GET, HEAD`,"Access-Control-Allow-Headers":`Content-Type`};function dS(e,t){return async n=>{let r=new URL(n.url);return r.searchParams.has(`__health`)?n.method===`OPTIONS`?new Response(null,{status:204,headers:uS}):new Response(JSON.stringify({healthy:!0,endpoint:r.pathname,specVersion:t??5,workflowCoreVersion:qx}),{status:200,headers:{"Content-Type":`application/json`,...uS}}):await e(n)}}async function fS(e,...t){let n=t[0];await vb(`queue.publish`,{attributes:{...ky(`vercel-queue`),...Ay(n),...My(`publish`),...nb(`vercel-queue`),...rb(`vercel-queue`),...ib(`vqs`),...ab(`publish`)},kind:await Sb(`PRODUCER`)},async n=>{let{messageId:r}=await e.queue(...t);r&&n?.setAttributes(jy(r))})}function pS(e){if(e.requestedAt)try{return Ny(Date.now()-e.requestedAt.getTime())}catch{return}}function mS(e,t){let n;return()=>(n||=(async()=>{let n=await e.getEncryptionKeyForRun?.(t);return n?await p_(n):void 0})(),n)}function hS(t){import(`./functions-CnVBREsg.js`).then(t=>e(t.default,1)).then(({waitUntil:e})=>{e(t)})}function gS(e,t){hS(e.catch(e=>{if(!(e?.name===`AbortError`||e?.name===`ResponseAborted`))try{t(e)}catch{}}))}async function _S(e){let t=e();return hS(t.catch(()=>{})),t}function vS(e,t={}){if(typeof e!=`object`||!e||Array.isArray(e))throw new g(`experimental_setAttributes requires a plain object, got ${e===null?`null`:Array.isArray(e)?`array`:typeof e}`);let n=Object.entries(e).map(([e,t])=>({key:e,value:t===void 0?null:t}));if(n.length===0)return n;let r=t.allowReservedAttributes===!0;try{Am(n,{allowReservedAttributes:r})}catch(e){throw e instanceof Em?new g(e.message):e}return n}export{sb as $,Nf as $n,Wv as $t,jx as A,xh as An,Qv as At,kb as B,oh as Bn,uy as Bt,Cx as C,Uh as Cn,Sy as Ct,Ix as D,Ih as Dn,by as Dt,Nx as E,Ah as En,Oy as Et,Hb as F,sh as Fn,sy as Ft,lb as G,Nm as Gn,Yv as Gt,fb as H,eh as Hn,py as Ht,Gb as I,ph as In,Kv as It,pb as J,jm as Jn,ty as Jt,ub as K,q as Kn,Xv as Kt,Ub as L,nh as Ln,qv as Lt,Yb as M,gh as Mn,iy as Mt,Kb as N,_h as Nn,ry as Nt,zx as O,Ch as On,yy as Ot,qb as P,mh as Pn,Zv as Pt,Py as Q,am as Qn,Gv as Qt,Vb as R,uh as Rn,$v as Rt,px as S,Wh as Sn,my as St,Rx as T,Vh as Tn,Dy as Tt,db as U,$m as Un,ly as Ut,jb as V,ih as Vn,dy as Vt,Sb as W,Pm as Wn,Jv as Wt,hb as X,wm as Xn,ny as Xt,vb as Y,Am as Yn,ey as Yt,Eb as Z,bm as Zn,cy as Zt,Mx as _,T_ as _n,Te as _r,wy as _t,Yx as a,N_ as an,R as ar,Hy as at,Ox as b,y_ as bn,hy as bt,lS as c,L_ as cn,Oe as cr,Ay as ct,fS as d,M_ as dn,je as dr,ky as dt,Q as en,Uf as er,ob as et,dS as f,k_ as fn,Me as fr,qy as ft,Lx as g,E_ as gn,Ce as gr,gy as gt,cx as h,D_ as hn,we as hr,xy as ht,pS as i,z_ as in,H as ir,Fy as it,Xb as j,yh as jn,ay as jt,kx as k,bh as kn,_y as kt,mS as l,B_ as ln,Ae as lr,jy as lt,Kx as m,O_ as mn,De as mr,Yy as mt,gS as n,K_ as nn,B as nr,Ly as nt,eS as o,P_ as on,Yf as or,Wy as ot,qx as p,j_ as pn,Ee as pr,Jy as pt,Tb as q,Em as qn,oy as qt,_S as r,q_ as rn,V as rr,Iy as rt,rS as s,R_ as sn,ed as sr,Uy as st,vS as t,G_ as tn,bf as tr,Gy as tt,Qx as u,A_ as un,ke as ur,My as ut,Fx as v,g_ as vn,Cy as vt,tx as w,Bh as wn,Ey as wt,Ax as x,p_ as xn,vy as xt,Px as y,x_ as yn,Ty as yt,Ab as z,ah as zn,fy as zt};
|
|
59
|
+
`);for(let t of s)t.length>0&&i.enqueue(s_(t,e))},async flush(e){r.length>0&&await o(e)}})}const rx=1e8;function ix(){return new TransformStream({transform(e,t){if(e.length===0)return;if(e.length>rx){t.error(new v(`Byte-stream chunk of ${e.length} bytes exceeds the maximum framed chunk size (${rx}). Split the data into smaller chunks before writing.`,{slug:`serialization-failed`}));return}let n=new Uint8Array(4+e.length);new DataView(n.buffer).setUint32(0,e.length,!1),n.set(e,4),t.enqueue(n)}})}function ax(){let e=new Uint8Array;function t(t){let n=new Uint8Array(e.length+t.length);n.set(e,0),n.set(t,e.length),e=n}return new TransformStream({transform(n,r){for(n.length>0&&t(n);e.length>=4;){let t=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(0,!1);if(t>rx){r.error(new v(`Byte-stream frame length ${t} exceeds maximum (${rx}). This usually means a non-framed byte stream is being read as framed.`,{slug:`serialization-failed`}));return}let n=4+t;if(e.length<n)break;r.enqueue(e.slice(4,n)),e=e.slice(n)}},flush(t){e.length>0&&t.error(new v(`Byte-stream ended with ${e.length} bytes of incomplete frame data. The stream was truncated mid-frame.`,{slug:`serialization-failed`}))}})}var ox=class extends ReadableStream{#e;constructor(e,t,n){if(typeof t!=`string`||t.length===0)throw new v(`"name" is required, got "${t}"`);super({type:`bytes`,pull:async r=>{let i=this.#e;if(!i){let r=await(await T_()).streams.get(e,t,n);i=this.#e=r.getReader()}if(!i){r.error(Error(`Failed to get reader`));return}let a=await i.read();a.done?(this.#e=void 0,r.close()):r.enqueue(a.value)},cancel:async e=>{this.#e&&=(await this.#e.cancel(e).catch(()=>{}),void 0)}})}};function sx(e,t,n){let r=n===void 0||n>=0,i=n??0,a=0,o=0,s=0,c,l=new Uint8Array;async function u(){let o=await T_(),s=r?i+a:n;c=(await o.streams.get(e,t,s)).getReader()}async function d(){for(c&&=(await c.cancel().catch(()=>{}),void 0),i+=a,a=0,l=new Uint8Array;;){if(o++,s++,o>50)throw Error(`Stream "${t}" exceeded maximum reconnection attempts (50)`);if(s>1e3)throw Error(`Stream "${t}" exceeded maximum total reconnection attempts (1000)`);try{await u();return}catch{}}}return new ReadableStream({pull:async e=>{for(;;){if(!c)try{await u()}catch(t){e.error(t);return}let t;try{t=await c.read()}catch(t){if(!r){e.error(t);return}try{await d()}catch(t){e.error(t);return}continue}if(t.done||!t.value){c=void 0,e.close();return}let n=t.value;if(n.length>0){let e=new Uint8Array(l.length+n.length);e.set(l,0),e.set(n,l.length),l=e}let i=!1;for(;l.length>=4;){let t=4+new DataView(l.buffer,l.byteOffset,l.byteLength).getUint32(0,!1);if(l.length<t)break;e.enqueue(l.slice(0,t)),l=l.slice(t),a++,i=!0}if(i){o=0;return}}},cancel:async()=>{c&&=(await c.cancel().catch(e=>{console.warn(`Error closing ReadableStream reader:`,e)}),void 0)}})}var cx=class extends WritableStream{constructor(e,t,n){if(typeof e!=`string`)throw new v(`"runId" must be a string, got "${typeof e}"`);if(typeof t!=`string`||t.length===0)throw new v(`"name" is required, got "${t}"`);let r=T_(),i=n,a=async()=>{if(i){try{await i}catch{}i=void 0}},o=[],s=null,c=null,l,u=async()=>{if(s&&=(clearTimeout(s),null),o.length===0)return;await a();let n=o.slice(),i=await r;if(l===void 0&&(l=i.streamFlushIntervalMs??10),typeof i.streams.writeMulti==`function`&&n.length>1)await i.streams.writeMulti(e,t,n);else for(let r of n)await i.streams.write(e,t,r);o=[]},d=[],f=()=>{s||=setTimeout(()=>{s=null;let e=d;d=[],c=u().then(()=>{for(let t of e)t.resolve()},t=>{for(let n of e)n.reject(t)})},l??10)};super({async write(e){c&&=(await c,null),o.push(e),f(),await new Promise((e,t)=>{d.push({resolve:e,reject:t})})},async close(){c&&=(await c,null),await u(),await a(),await(await r).streams.close(e,t)},abort(e){s&&=(clearTimeout(s),null),o=[];let t=d;d=[];let n=e??Error(`Stream aborted`);for(let e of t)e.reject(n)}})}};function lx(e=globalThis){return{...J_(),...ov(),...iv(e),Request:t=>{if(!(t instanceof e.Request))return!1;let n={method:t.method,url:t.url,headers:t.headers,body:t.body,duplex:t.duplex},r=t[B_];return r&&(n.responseWritable=r),t.signal&&(t.signal.aborted||t.signal[X])&&(n.signal=t.signal),n},Response:t=>t instanceof e.Response?{type:t.type,url:t.url,status:t.status,statusText:t.statusText,headers:t.headers,body:t.body,redirected:t.redirected}:!1}}function ux(e,t,n,r,i,a){let o=t[X],s=t[Z];if(!o){let e=(n[N_]||Zb)();o=Wb(e),s=`abrt_${e}`,t[X]=o,t[Z]=s,t.signal&&(t.signal[X]=o,t.signal[Z]=s)}return fx(e,o,i,a,r),{streamName:o,hookToken:s,aborted:e.aborted,reason:e.aborted?e.reason:void 0}}function dx(e,t){let n=t[X]??t.signal?.[X],r=t[Z]??t.signal?.[Z];if(!n)throw Error(`AbortController/AbortSignal stream name is not set`);return{streamName:n,hookToken:r,aborted:e.aborted,reason:e.aborted?e.reason:void 0}}function fx(e,t,n,r,i){e.aborted||e[H_]||(e[H_]=!0,e.addEventListener(`abort`,()=>{i.push((async()=>{try{let i=await Nv(r),a=await Mx({aborted:!0,reason:e.reason},n,i),o=new cx(n,t).getWriter();await o.write(a),await o.close()}catch{}})())},{once:!0}))}function px(e=globalThis,t,n,r,i=!1,a){return{...lx(e),ReadableStream:o=>{if(!(o instanceof e.ReadableStream))return!1;if(o.locked)throw new h(`ReadableStream is locked and cannot be passed across a workflow boundary.`,{hint:`Pass the stream before calling .getReader() / .pipeThrough() / .pipeTo(), or tee it with .tee() and pass one of the branches.`});let s=`strm_${(e[N_]||Zb)()}`,c=Qb(o),l=new cx(n,s,a);c===`bytes`?i?t.push(o.pipeThrough(ix()).pipeTo(l)):t.push(o.pipeTo(l)):t.push(o.pipeThrough(tx(px(e,t,n,r,i,a),r)).pipeTo(l));let u={name:s};return c&&(u.type=c),c===`bytes`&&i&&(u.framing=`framed-v1`),u},WritableStream:r=>{if(!(r instanceof e.WritableStream))return!1;let i=r[P_],a=r[L_];if(typeof i==`string`&&typeof a==`string`){let e={name:i,runId:a},t=r[R_];return typeof t==`string`&&(e.deploymentId=t),e}let o=`strm_${(e[N_]||Zb)()}`,s=new ox(n,o);return t.push(s.pipeTo(r)),{name:o}},AbortController:i=>!e.AbortController||typeof e.AbortController!=`function`||!(i instanceof e.AbortController)?!1:ux(i.signal,i,e,t,n,r),AbortSignal:i=>!e.AbortSignal||typeof e.AbortSignal!=`function`||!(i instanceof e.AbortSignal)?!1:ux(i,i,e,t,n,r)}}function mx(e=globalThis){return{...lx(e),ReadableStream:t=>{if(!(t instanceof e.ReadableStream))return!1;let n=t[z_];if(n!==void 0)return{bodyInit:n};let r=t[P_];if(!r)throw new v("ReadableStream `name` is not set");let i={name:r},a=t[F_];a&&(i.type=a);let o=t[I_];return o&&(i.framing=o),i},WritableStream:t=>{if(!(t instanceof e.WritableStream))return!1;let n=t[P_];if(!n)throw new v("WritableStream `name` is not set");let r={name:n},i=t[L_];typeof i==`string`&&(r.runId=i);let a=t[R_];return typeof a==`string`&&(r.deploymentId=a),r},AbortController:t=>{if(!t||!t.signal)return!1;let n=t,r=n[X]??n.signal?.[X],i=e.AbortController&&typeof e.AbortController==`function`&&t instanceof e.AbortController;return!r&&!i?!1:dx(t.signal,n)},AbortSignal:t=>{let n=t?.[X],r=e.AbortSignal&&typeof e.AbortSignal==`function`&&t instanceof e.AbortSignal;return!n&&!r?!1:dx(t,t)}}}function hx(e=globalThis,t,n,r,i=!1,a){return{...lx(e),ReadableStream:o=>{if(!(o instanceof e.ReadableStream))return!1;if(o.locked)throw new h(`ReadableStream is locked and cannot be passed across a workflow boundary.`,{hint:`Pass the stream before calling .getReader() / .pipeThrough() / .pipeTo(), or tee it with .tee() and pass one of the branches.`});let s=o[P_],c=o[F_],l=o[I_];if(!s){s=`strm_${(e[N_]||Zb)()}`,c=Qb(o),l=c===`bytes`&&i?`framed-v1`:l;let u=new cx(n,s,a);c===`bytes`?l===`framed-v1`?t.push(o.pipeThrough(ix()).pipeTo(u)):t.push(o.pipeTo(u)):t.push(o.pipeThrough(tx(hx(e,t,n,r,i,a),r)).pipeTo(u))}let u={name:s};return c&&(u.type=c),l&&(u.framing=l),u},WritableStream:i=>{if(!(i instanceof e.WritableStream))return!1;let a=i[P_],o=i[L_];a||(a=`strm_${(e[N_]||Zb)()}`,t.push(new ox(n,a).pipeThrough(nx(Tx(e,t,n,r),r)).pipeTo(i)));let s={name:a};typeof o==`string`&&(s.runId=o);let c=i[R_];return typeof c==`string`&&(s.deploymentId=c),s},AbortController:i=>!e.AbortController||typeof e.AbortController!=`function`||!(i instanceof e.AbortController)?!1:ux(i.signal,i,e,t,n,r),AbortSignal:i=>!e.AbortSignal||typeof e.AbortSignal!=`function`||!(i instanceof e.AbortSignal)?!1:ux(i,i,e,t,n,r)}}function gx(e,t,n,r){let i=new AbortController;return r.push((async()=>{try{let r=new ox(t,n).getReader(),a=await Promise.race([r.read(),new Promise(e=>{if(i.signal.aborted){e({value:void 0,done:!0});return}i.signal.addEventListener(`abort`,()=>e({value:void 0,done:!0}),{once:!0})})]);if(r.releaseLock(),a.value&&!a.done)try{let n=Vb.getStore(),r=await Nx(a.value,t,n?.encryptionKey);e.abort(r?.reason)}catch{e.abort()}}catch{}})()),i}function _x(e,t,n){let r=e,i=e.signal;r[X]=t.streamName,r[Z]=t.hookToken,i[X]=t.streamName,i[Z]=t.hookToken,n&&(r[U_]=n,i[U_]=n)}function vx(e,t){let n=e,r=t;n[X]!==void 0&&(r[X]=n[X]),n[Z]!==void 0&&(r[Z]=n[Z]),n[U_]!==void 0&&(r[U_]=n[U_])}function yx(e,t,n){let r=new AbortController;e.aborted?(_x(r,e),r.abort(e.reason)):e.streamName?_x(r,e,gx(r,n,e.streamName,t)):_x(r,e);let i=r.abort.bind(r);return r.abort=t=>{if(r.signal.aborted)return;i(t);let n=Vb.getStore();if(n&&(n.ops.push((async()=>{try{let r=await Mx({aborted:!0,reason:t},n.workflowMetadata.workflowRunId,n.encryptionKey),i=new cx(n.workflowMetadata.workflowRunId,e.streamName).getWriter();await i.write(r),await i.close()}catch{}})()),e.hookToken)){let r=(async()=>{try{let{resumeHook:n}=await import(`./resume-hook-C15uJ2ik.js`).then(e=>e.i);await n(e.hookToken,{aborted:!0,reason:t})}catch{}})();n.preCompletionOps.push(r)}},r}function bx(e,t,n){let r=new AbortController;return e.aborted?(_x(r,e),r.abort(e.reason)):e.streamName?_x(r,e,gx(r,n,e.streamName,t)):_x(r,e),r.signal}function xx(e=globalThis){return{...Y_(e),...av(e)}}async function Sx(e,t){let n=await T_();if(!n.getEncryptionKeyForRun)return;let r=t?await n.getEncryptionKeyForRun(e,{deploymentId:t}):await n.getEncryptionKeyForRun(await n.runs.get(e));return r?await p_(r,[`encrypt`]):void 0}function Cx(e=globalThis,t,n,r){return{...xx(e),StepFunction:()=>{throw new h(`Step functions cannot be deserialized in client context. Step functions should not be returned from workflows.`,{hint:`A step function reference reached the client. Return a serializable value (e.g. the step result) instead of the step itself.`})},WorkflowFunction:e=>Object.assign(()=>{throw new h(`Workflow functions cannot be called directly. Use start() to invoke them.`,{hint:"Wrap the workflow with `start(workflowFn, { ... })` from `workflow` to begin a run instead of invoking it like a normal function."})},{workflowId:e.workflowId}),Request:t=>{let n={method:t.method,headers:new e.Headers(t.headers),body:t.body,duplex:t.duplex};t.signal&&(n.signal=t.signal);let r=new e.Request(t.url,n);return t.signal&&vx(t.signal,r.signal),r},Response:t=>new e.Response(t.body,{status:t.status,statusText:t.statusText,headers:new e.Headers(t.headers)}),ReadableStream:i=>{if(`bodyInit`in i){let t=i.bodyInit;return new e.Response(t).body}if(i.type===`bytes`){let r=new ox(n,i.name,i.startIndex),a=g_();t.push(a.promise);let{readable:o,writable:s}=i.framing===`framed-v1`?ax():new e.TransformStream;return x_(r,s,a).catch(()=>{}),b_(o,a),o}else{let a=sx(n,i.name,i.startIndex),o=nx(Cx(e,t,n,r),r),s=g_();return t.push(s.promise),x_(a,o.writable,s).catch(()=>{}),b_(o.readable,s),o.readable}},WritableStream:i=>{let a=typeof i.runId==`string`?i.runId:n,o=a===n?r:Sx(a,i.deploymentId),s=tx(px(e,t,a,o),o),c=new cx(a,i.name),l=g_();return t.push(l.promise),x_(s.readable,c,l).catch(()=>{}),y_(s.writable,l),Object.defineProperty(s.writable,P_,{value:i.name,writable:!1}),Object.defineProperty(s.writable,L_,{value:a,writable:!1}),typeof i.deploymentId==`string`&&Object.defineProperty(s.writable,R_,{value:i.deploymentId,writable:!1}),s.writable},AbortController:e=>yx(e,t,n),AbortSignal:e=>bx(e,t,n)}}function wx(e=globalThis){return{...xx(e),...sv(e),Request:t=>{Object.setPrototypeOf(t,e.Request.prototype);let n=t.responseWritable;return n&&(t[B_]=n,delete t.responseWritable,t.respondWith=()=>{throw new h("`respondWith()` must be called from within a step function.",{hint:'Move the `respondWith(...)` call inside a `"use step"` function — it cannot be invoked from a workflow context.'})}),t},WorkflowFunction:e=>Object.assign(()=>{throw new h(`Workflow functions cannot be called directly. Use start() to invoke them.`,{hint:"Wrap the workflow with `start(workflowFn, { ... })` from `workflow` to begin a run instead of invoking it like a normal function."})},{workflowId:e.workflowId}),Response:t=>(Object.setPrototypeOf(t,e.Response.prototype),t),ReadableStream:t=>`bodyInit`in t?Object.create(e.ReadableStream.prototype,{[z_]:{value:t.bodyInit,writable:!1}}):Object.create(e.ReadableStream.prototype,{[P_]:{value:t.name,writable:!1},[F_]:{value:t.type,writable:!1},[I_]:{value:t.framing,writable:!1}}),WritableStream:t=>{let n={[P_]:{value:t.name,writable:!1}};return typeof t.runId==`string`&&(n[L_]={value:t.runId,writable:!1}),typeof t.deploymentId==`string`&&(n[R_]={value:t.deploymentId,writable:!1}),Object.create(e.WritableStream.prototype,n)},AbortController:e=>{let t=new Jb(e.streamName,e.hookToken);return e.aborted&&t._setAborted(e.reason),{[X]:e.streamName,[Z]:e.hookToken,signal:t,abort:()=>{}}},AbortSignal:e=>{let t=new Jb(e.streamName,e.hookToken);return e.aborted&&t._setAborted(e.reason),t}}}function Tx(e=globalThis,t,n,r,i){return{...xx(e),StepFunction:e=>{let t=e.stepId,n=e.closureVars,r=`boundThis`in e,i=r?e.boundThis:void 0,a=Array.isArray(e.boundArgs)?e.boundArgs:[],o=y(t);if(!o)throw new h(`Step function "${t}" not found. Make sure the step function is registered.`,{hint:`Make sure the step file is included in your build (i.e. it is listed in the workflow manifest), and that the SWC plugin is configured for the file.`});if(!n&&!r&&a.length===0)return o;let s=function(...e){let t=r?i:this,s=a.length>0?[...a,...e]:e;if(n){let e=Vb.getStore();if(!e)throw new v(`Cannot call step function with closure variables outside step context`);let r={...e,closureVars:n};return Vb.run(r,()=>o.apply(t,s))}return o.apply(t,s)};return Object.defineProperty(s,"name",{value:o.name}),Object.defineProperty(s,"stepId",{value:t,writable:!1,enumerable:!1,configurable:!1}),o.maxRetries!==void 0&&(s.maxRetries=o.maxRetries),s},WorkflowFunction:e=>Object.assign(()=>{throw new h(`Workflow functions cannot be called directly. Use start() to invoke them.`,{hint:"Wrap the workflow with `start(workflowFn, { ... })` from `workflow` to begin a run instead of invoking it like a normal function."})},{workflowId:e.workflowId}),Request:t=>{let n=t.responseWritable,r={method:t.method,headers:new e.Headers(t.headers),body:t.body,duplex:t.duplex};t.signal&&(r.signal=t.signal);let i=new e.Request(t.url,r);return t.signal&&vx(t.signal,i.signal),n&&(i.respondWith=async e=>{let t=n.getWriter();await t.write(e),await t.close()}),i},Response:t=>new e.Response(t.body,{status:t.status,statusText:t.statusText,headers:new e.Headers(t.headers)}),ReadableStream:a=>{if(`bodyInit`in a){let t=a.bodyInit;return new e.Response(t).body}let o=new ox(n,a.name);if(a.type===`bytes`){let n=g_();t.push(n.promise);let{readable:r,writable:i}=a.framing===`framed-v1`?ax():new e.TransformStream;return x_(o,i,n).catch(()=>{}),b_(r,n),r}else{let a=nx(Tx(e,t,n,r,i),r),s=g_();return t.push(s.promise),x_(o,a.writable,s).catch(()=>{}),b_(a.readable,s),a.readable}},WritableStream:a=>{let o=typeof a.runId==`string`?a.runId:n,s=typeof a.deploymentId==`string`?a.deploymentId:o===n?i:void 0,c=o===n?r:Sx(o,s),l=tx(hx(e,t,o,c),c),u=new cx(o,a.name),d=g_();return t.push(d.promise),x_(l.readable,u,d).catch(()=>{}),y_(l.writable,d),Object.defineProperty(l.writable,P_,{value:a.name,writable:!1}),Object.defineProperty(l.writable,L_,{value:o,writable:!1}),s&&Object.defineProperty(l.writable,R_,{value:s,writable:!1}),l.writable},AbortController:e=>yx(e,t,n),AbortSignal:e=>bx(e,t,n)}}async function Ex(e,t){return await Pv(e,t)}async function Dx(e,t){return Fv(e,t)}async function Ox(e,t,n,r=[],i=globalThis,a=!1,o=!1,s=!1){if(a)return $_(l_(e,px(i,r,t,n,o)));try{let a={},c=await Fb(e,n,{global:i,extraReducers:Vx(px(i,r,t,n,o)),compression:s,compressionStats:a});return await ex(a,`serialize`),c}catch(e){let t=$b(e),{message:n,hint:r}=Pb(`workflow arguments`,t);throw new h(n,{hint:r,cause:t})}}async function kx(e,t,n,r=globalThis,i={}){let a={},o=await Mv(await Dx(e,n),a);return await ex(a,`deserialize`),zb(o,{global:r,extraRevivers:{...Hx(wx(r)),...i}})}async function Ax(e,t,n,r=globalThis,i=!1,a=!1){if(i)return $_(l_(e,mx(r)));try{let t={},i=await Lb(e,n,{global:r,extraReducers:Vx(mx(r)),compression:a,compressionStats:t});return await ex(t,`serialize`),i}catch(e){let t=$b(e),{message:n,hint:r}=Pb(`workflow return value`,t);throw new h(n,{hint:r,cause:t})}}async function jx(e,t,n,r=[],i=globalThis,a={}){let o={},s=await Ib(e,n,{global:i,extraRevivers:{...Hx(Cx(i,r,t,n)),...a},compressionStats:o});return await ex(o,`deserialize`),s}async function Mx(e,t,n,r=globalThis,i=!1,a=!1){if(i)return $_(l_(e,mx(r)));try{let t={},i=await Lb(e,n,{global:r,extraReducers:Vx(mx(r)),compression:a,compressionStats:t});return await ex(t,`serialize`),i}catch(e){let t=$b(e),{message:n,hint:r}=Pb(`step arguments`,t);throw new h(n,{hint:r,cause:t})}}async function Nx(e,t,n,r=[],i=globalThis,a={},o){let s={},c=await Rb(e,n,{global:i,extraRevivers:{...Hx(Tx(i,r,t,n,o)),...a},compressionStats:s});return await ex(s,`deserialize`),c}async function Px(e,t,n,r=[],i=globalThis,a=!1,o=!1,s=!1,c){if(a)return $_(l_(e,hx(i,r,t,n,o,c)));try{let a={},l=await Lb(e,n,{global:i,extraReducers:Vx(hx(i,r,t,n,o,c)),compression:s,compressionStats:a});return await ex(a,`serialize`),l}catch(e){let t=$b(e),{message:n,hint:r}=Pb(`step return value`,t);throw new h(n,{hint:r,cause:t})}}async function Fx(e,t,n,r=[],i=globalThis,a=!1){try{let o=l_(e,hx(i,r,t,n)),s=new TextEncoder().encode(o),c=gv(Q.DEVALUE_V1,s),l={},u=await Ex(await jv(c,a,l),n);return await ex(l,`serialize`),u}catch(e){let t=$b(e),{message:n,hint:r}=Pb(`step error`,t);throw new h(n,{hint:r,cause:t})}}async function Ix(e,t,n,r=globalThis,i={}){let a={},o=await Mv(await Dx(e,n),a);if(await ex(a,`deserialize`),!(o instanceof Uint8Array))return c_(o,{...wx(r),...i});let{format:s,payload:c}=vv(o);if(s===Q.DEVALUE_V1)return s_(new TextDecoder().decode(c),{...wx(r),...i});throw Error(`Unsupported serialization format: ${s}`)}async function Lx(e,t,n,r=globalThis,i=!1){try{let t=l_(e,mx(r)),a=new TextEncoder().encode(t),o=gv(Q.DEVALUE_V1,a),s={},c=await Ex(await jv(o,i,s),n);return await ex(s,`serialize`),c}catch(e){let t=$b(e),{message:n,hint:r}=Pb(`run error`,t);throw new h(n,{hint:r,cause:t})}}async function Rx(e,t,n,r=[],i=globalThis,a={}){let o={},s=await Mv(await Dx(e,n),o);if(await ex(o,`deserialize`),!(s instanceof Uint8Array))return c_(s,{...Cx(i,r,t,n),...a});let{format:c,payload:l}=vv(s);if(c===Q.DEVALUE_V1)return s_(new TextDecoder().decode(l),{...Cx(i,r,t,n),...a});throw Error(`Unsupported serialization format: ${c}`)}async function zx(e,t,n,r=globalThis,i={}){let a={},o=await Mv(await Dx(e,n),a);return await ex(a,`deserialize`),zb(o,{global:r,extraRevivers:{...Hx(wx(r)),...i}})}const Bx=[`ReadableStream`,`WritableStream`,`Request`,`Response`,`StepFunction`,`AbortController`,`AbortSignal`];function Vx(e){let t={};for(let n of Bx)n in e&&(t[n]=e[n]);return t}function Hx(e){let t={};for(let n of Bx)n in e&&(t[n]=e[n]);return t}const Ux=[{format:Q.ENCRYPTED,minVersion:`4.2.0-beta.64`},{format:Q.GZIP,minVersion:`5.0.0-beta.18`},{format:Q.ZSTD,minVersion:`5.0.0-beta.18`}],Wx=[{capability:`framedByteStreams`,minVersion:`5.0.0-beta.15`}],Gx=new Set([Q.DEVALUE_V1]);function Kx(e){if(!e||!f_.default.valid(e))return{supportedFormats:Gx,framedByteStreams:!1};let t=new Set(Gx);for(let{format:n,minVersion:r}of Ux)f_.default.gte(e,r)&&t.add(n);let n={supportedFormats:t,framedByteStreams:!1};for(let{capability:t,minVersion:r}of Wx)f_.default.gte(e,r)&&(n[t]=!0);return n}const qx=`5.0.0-beta.26`,Jx=/^[a-zA-Z0-9_\-./@]+$/;function Yx(e,t){if(!Jx.test(e))throw Error(`Invalid workflow name "${e}": must only contain alphanumeric characters, underscores, hyphens, dots, forward slashes, or at signs`);return`${ah(`workflow`,ih(t))}${e}`}const Xx=Ih();function Zx(e){return`__health_check__${e}`}function Qx(e){let t=fh.safeParse(e);if(t.success)return t.data}function $x(e){return`wrun_hc_${e}`}async function eS(e,t,n){let r=await T_(),i=Zx(e.correlationId),a=JSON.stringify({healthy:!0,endpoint:t,correlationId:e.correlationId,specVersion:n??5,workflowCoreVersion:qx,timestamp:Date.now()}),o=$x(e.correlationId);await r.streams.write(o,i,a),await r.streams.close(o,i)}async function tS(e,t){let n=[],r=!1,i=!1;for(;!r&&!i;){let a=e.read(),o=new Promise(e=>setTimeout(()=>{i=!0,e({done:!0,value:void 0})},t)),s=await Promise.race([a,o]);r=s.done,s.value&&n.push(s.value)}return{chunks:n,timedOut:i}}function nS(e){if(e.length===0)return null;let t=e.reduce((e,t)=>e+t.length,0),n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;let i=new TextDecoder().decode(n),a;try{a=JSON.parse(i)}catch{return i.length>0?{healthy:!0}:null}if(typeof a!=`object`||!a||!(`healthy`in a)||typeof a.healthy!=`boolean`)return null;let o=a,s={healthy:o.healthy};return typeof o.specVersion==`number`&&(s.specVersion=o.specVersion),typeof o.workflowCoreVersion==`string`&&(s.workflowCoreVersion=o.workflowCoreVersion),s}async function rS(e,t,n){let r=n?.timeout??3e4,i=Xx(),a=Zx(i),o=`${ah(t,ih(n?.namespace))}health_check`,s=Date.now();try{for(await e.queue(o,{__healthCheck:!0,correlationId:i},{specVersion:1,deploymentId:n?.deploymentId});Date.now()-s<r;)try{let t=(await e.streams.get($x(i),a)).getReader(),{chunks:n,timedOut:r}=await tS(t,500);if(r){try{t.cancel()}catch{}await new Promise(e=>setTimeout(e,100));continue}let o=nS(n);if(o)return{...o,latencyMs:Date.now()-s};await new Promise(e=>setTimeout(e,100))}catch{await new Promise(e=>setTimeout(e,100))}return{healthy:!1,error:`Health check timed out after ${r}ms`}}catch(e){return{healthy:!1,error:e instanceof Error?e.message:String(e)}}}function iS(e,t){return new d(`Event pagination ${t} for workflow run "${e}".`,{code:u.WORLD_CONTRACT_ERROR})}function aS(e,t,n){if(t){if(n.has(t))throw iS(e,`did not advance`);n.add(t)}}function oS(e,t,n){for(let r of n)t.has(r.eventId)||(t.add(r.eventId),e.push(r))}function sS(e,t,n,r){if(t){if(n===null)throw iS(e,`returned more pages without a cursor`);if(r.has(n))throw iS(e,`repeated a cursor`)}}function cS(e,t,n){return t!==null&&!n&&d.is(e)&&e.status===400}async function lS(e,t){let n=t!==void 0;return vb(n?`workflow.loadNewEvents`:`workflow.loadEvents`,async r=>{r?.setAttributes({...Jv(e)});let i=[],a=new Set,o=new Set,s=t??null,c=!0,l=0,u=!1,d=await T_(),f=Date.now();for(;c;){let t=Date.now(),r=s;aS(e,r,o);let f;try{f=await d.events.list({runId:e,pagination:{sortOrder:`asc`,cursor:r??void 0}})}catch(t){if(cS(t,r,u)){Ab.warn(`Event cursor was rejected; retrying with a full event reload.`,{workflowRunId:e}),i.length=0,a.clear(),o.clear(),s=null,u=!0;continue}throw t}oS(i,a,f.data),c=f.hasMore,sS(e,c,f.cursor,o),s=f.cursor??s,l++,Ab.debug(`Loaded event page`,{workflowRunId:e,incremental:n,page:l,pageEvents:f.data.length,totalEvents:i.length,hasMore:c,pageMs:Date.now()-t})}return Ab.debug(`Event load complete`,{workflowRunId:e,incremental:n,totalEvents:i.length,pagesLoaded:l,totalMs:Date.now()-f}),r?.setAttributes({...Zv(i.length),...Ky(l)}),{events:i,cursor:s}})}const uS={"Access-Control-Allow-Origin":`*`,"Access-Control-Allow-Methods":`POST, OPTIONS, GET, HEAD`,"Access-Control-Allow-Headers":`Content-Type`};function dS(e,t){return async n=>{let r=new URL(n.url);return r.searchParams.has(`__health`)?n.method===`OPTIONS`?new Response(null,{status:204,headers:uS}):new Response(JSON.stringify({healthy:!0,endpoint:r.pathname,specVersion:t??5,workflowCoreVersion:qx}),{status:200,headers:{"Content-Type":`application/json`,...uS}}):await e(n)}}async function fS(e,...t){let n=t[0];await vb(`queue.publish`,{attributes:{...ky(`vercel-queue`),...Ay(n),...My(`publish`),...nb(`vercel-queue`),...rb(`vercel-queue`),...ib(`vqs`),...ab(`publish`)},kind:await Sb(`PRODUCER`)},async n=>{let{messageId:r}=await e.queue(...t);r&&n?.setAttributes(jy(r))})}function pS(e){if(e.requestedAt)try{return Ny(Date.now()-e.requestedAt.getTime())}catch{return}}function mS(e,t){let n;return()=>(n||=(async()=>{let n=await e.getEncryptionKeyForRun?.(t);return n?await p_(n):void 0})(),n)}function hS(t){import(`./functions-CnVBREsg.js`).then(t=>e(t.default,1)).then(({waitUntil:e})=>{e(t)})}function gS(e,t){hS(e.catch(e=>{if(!(e?.name===`AbortError`||e?.name===`ResponseAborted`))try{t(e)}catch{}}))}async function _S(e){let t=e();return hS(t.catch(()=>{})),t}function vS(e,t={}){if(typeof e!=`object`||!e||Array.isArray(e))throw new g(`experimental_setAttributes requires a plain object, got ${e===null?`null`:Array.isArray(e)?`array`:typeof e}`);let n=Object.entries(e).map(([e,t])=>({key:e,value:t===void 0?null:t}));if(n.length===0)return n;let r=t.allowReservedAttributes===!0;try{Am(n,{allowReservedAttributes:r})}catch(e){throw e instanceof Em?new g(e.message):e}return n}export{sb as $,Nf as $n,Wv as $t,jx as A,xh as An,Qv as At,kb as B,oh as Bn,uy as Bt,Cx as C,Uh as Cn,Sy as Ct,Ix as D,Ih as Dn,by as Dt,Nx as E,Ah as En,Oy as Et,Hb as F,sh as Fn,sy as Ft,lb as G,Nm as Gn,Yv as Gt,fb as H,eh as Hn,py as Ht,Gb as I,ph as In,Kv as It,pb as J,jm as Jn,ty as Jt,ub as K,q as Kn,Xv as Kt,Ub as L,nh as Ln,qv as Lt,Yb as M,gh as Mn,iy as Mt,Kb as N,_h as Nn,ry as Nt,zx as O,Ch as On,yy as Ot,qb as P,mh as Pn,Zv as Pt,Py as Q,am as Qn,Gv as Qt,Vb as R,uh as Rn,$v as Rt,px as S,Wh as Sn,my as St,Rx as T,Vh as Tn,Dy as Tt,db as U,$m as Un,ly as Ut,jb as V,ih as Vn,dy as Vt,Sb as W,Pm as Wn,Jv as Wt,hb as X,wm as Xn,ny as Xt,vb as Y,Am as Yn,ey as Yt,Eb as Z,bm as Zn,cy as Zt,Mx as _,T_ as _n,Te as _r,wy as _t,Yx as a,N_ as an,R as ar,Hy as at,Ox as b,y_ as bn,hy as bt,lS as c,L_ as cn,Oe as cr,Ay as ct,fS as d,M_ as dn,je as dr,ky as dt,Q as en,Uf as er,ob as et,dS as f,k_ as fn,Me as fr,qy as ft,Lx as g,E_ as gn,Ce as gr,gy as gt,cx as h,D_ as hn,we as hr,xy as ht,pS as i,z_ as in,H as ir,Fy as it,Xb as j,yh as jn,ay as jt,kx as k,bh as kn,_y as kt,mS as l,B_ as ln,Ae as lr,jy as lt,Kx as m,O_ as mn,De as mr,Yy as mt,gS as n,K_ as nn,B as nr,Ly as nt,eS as o,P_ as on,Yf as or,Wy as ot,qx as p,j_ as pn,Ee as pr,Jy as pt,Tb as q,Em as qn,oy as qt,_S as r,q_ as rn,V as rr,Iy as rt,rS as s,R_ as sn,ed as sr,Uy as st,vS as t,G_ as tn,bf as tr,Gy as tt,Qx as u,A_ as un,ke as ur,My as ut,Fx as v,g_ as vn,Cy as vt,tx as w,Bh as wn,Ey as wt,Ax as x,p_ as xn,vy as xt,Px as y,x_ as yn,Ty as yt,Ab as z,ah as zn,fy as zt};
|
package/dist/src/compiled/_chunks/workflow/{resume-hook-CUCPW67D.js → resume-hook-C15uJ2ik.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./chunk-BHKSVoKr.js";import{n as t,o as n,w as r}from"./dist-Dxrjttr2.js";import{E as i,It as a,Wt as o,Y as s,_n as c,a as l,en as u,it as d,kn as f,ln as p,m,n as h,nt as g,q as _,r as v,rt as y,xn as b,y as x,z as S}from"./attribute-changes-
|
|
1
|
+
import{r as e}from"./chunk-BHKSVoKr.js";import{n as t,o as n,w as r}from"./dist-Dxrjttr2.js";import{E as i,It as a,Wt as o,Y as s,_n as c,a as l,en as u,it as d,kn as f,ln as p,m,n as h,nt as g,q as _,r as v,rt as y,xn as b,y as x,z as S}from"./attribute-changes-zAifvEhb.js";var C=e({getHookByToken:()=>T,resumeHook:()=>E,resumeWebhook:()=>D});async function w(e){let t=await c(),n=await t.hooks.getByToken(e),r=await t.runs.get(n.runId),a=await t.getEncryptionKeyForRun?.(r),o=a?await b(a):void 0;return n.metadata!==void 0&&(n.metadata=await i(n.metadata,n.runId,o)),{hook:n,run:r,encryptionKey:o}}async function T(e){let{hook:t}=await w(e);return t}async function E(e,t,n){return await v(()=>s(`hook.resume`,async r=>{let i=await c();try{let s,c,p;if(typeof e==`string`){let t=await w(e);s=t.hook,c=t.run,p=n??t.encryptionKey}else if(s=e,c=await i.runs.get(s.runId),n)p=n;else{let e=await i.getEncryptionKeyForRun?.(c);p=e?await b(e):void 0}r?.setAttributes({...d(s.token),...y(s.hookId),...o(s.runId)});let g=c.executionContext?.workflowCoreVersion,v=m(typeof g==`string`?g:void 0);v.supportedFormats.has(u.ENCRYPTED)||(p=void 0);let C=(c.specVersion??0)>=5&&v.supportedFormats.has(u.GZIP),T=[],E=f(s.specVersion),D=await x(t,s.runId,p,T,globalThis,E,v.framedByteStreams,C);h(Promise.all(T),e=>{e!==void 0&&S.warn(`Background flush of hook payload ops failed`,{workflowRunId:s.runId,hookId:s.hookId,error:e instanceof Error?e.message:String(e)})}),await i.events.create(s.runId,{eventType:`hook_received`,specVersion:5,correlationId:s.hookId,eventData:{...E?{}:{token:s.token},payload:D}},{v1Compat:E}),r?.setAttributes({...a(c.workflowName)});let O=await _(c.executionContext?.traceCarrier);return O&&r?.addLink?.(O),await i.queue(l(c.workflowName),{runId:s.runId,traceCarrier:c.executionContext?.traceCarrier??void 0},{deploymentId:c.deploymentId,specVersion:c.specVersion??1}),s}catch(t){throw r?.setAttributes({...d(typeof e==`string`?e:e.token),...g(!1)}),t}}))}async function D(e,i){let{hook:a,encryptionKey:o}=await w(e);if(a.isWebhook===!1)throw new n(e);let s,c;if(a.metadata&&typeof a.metadata==`object`&&`respondWith`in a.metadata)if(a.metadata.respondWith===`manual`){let{readable:e,writable:t}=new TransformStream;c=e,i[p]=t}else if(a.metadata.respondWith instanceof Response)s=a.metadata.respondWith;else throw new r(`Invalid \`respondWith\` value: ${a.metadata.respondWith}`,{slug:t.WEBHOOK_INVALID_RESPOND_WITH_VALUE});else s=new Response(null,{status:202});if(await E(a,i,o),c){let e=c.getReader(),t=await e.read();t.value&&(s=t.value),e.cancel()}if(!s)throw new r(`Workflow run did not send a response`,{slug:t.WEBHOOK_RESPONSE_NOT_SENT});return s}export{C as i,E as n,D as r,T as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as e}from"./dist-FLIfyJ4Y.js";import{C as t,E as n,S as r,T as i,b as a,d as o,m as s,p as c,r as l,s as u,t as d,w as f,x as p,y as m}from"./dist-Dxrjttr2.js";import{A as h,At as g,C as _,Dn as v,Gt as ee,It as y,J as b,L as x,Lt as S,Q as C,T as w,Wt as T,Y as E,_n as D,a as O,b as k,en as A,gn as j,hn as M,k as N,kn as P,m as F,n as I,p as L,r as R,s as z,t as B,xn as V,z as H}from"./attribute-changes-zAifvEhb.js";const U=new Set([`PARSE_ERROR`,`SCHEMA_VALIDATION`,n.WORLD_CONTRACT_ERROR]),W=new Set([`TRANSPORT`,`TIMEOUT`]),G=[f.is,c.is,m.is,o.is];function K(e){if(!i.is(e)||e.status!==void 0)return!1;let t=`cause`in e?e.cause:void 0;return e.code!==void 0&&U.has(e.code)||e.message.startsWith(`Failed to parse response body for `)||e.message.startsWith(`Schema validation failed for `)||typeof t==`object`&&!!t&&`name`in t&&t.name===`ZodError`}function q(e){return s.is(e)?!0:i.is(e)?e.status!==void 0&&e.status>=500?!0:e.code!==void 0&&W.has(e.code):!1}function J(e){if(u.is(e))return n.REPLAY_DIVERGENCE;if(d.is(e))return n.CORRUPTED_EVENT_LOG;if(K(e)||q(e))return n.WORLD_CONTRACT_ERROR;for(let t of G)if(t(e))return n.RUNTIME_ERROR;return n.USER_ERROR}const Y=v();let X=!1;async function Z(t,n,r){"use step";return await R(()=>{let i=t?.workflowId;if(!i)throw new f(`'start' received an invalid workflow function. Ensure the Workflow SDK is configured correctly and the function includes a 'use workflow' directive.`,{slug:`start-invalid-workflow-function`});return E(`workflow.start ${e(i)}`,async e=>{e?.setAttributes({...y(i),...S(`start`)});let t=[],a=r??{};Array.isArray(n)?t=n:typeof n==`object`&&(a=n),e?.setAttributes({...g(t.length)});let o=a?.world??await D(),s=await o.getDeploymentId(),c=a.deploymentId??s;c===`latest`&&(o.resolveLatestDeploymentId?c=await o.resolveLatestDeploymentId():(X||(X=!0,H.warn(`deploymentId: 'latest' has no effect in this world and was ignored. It is only supported by worlds with atomic deployments, such as Vercel. The run will target the current deployment.`,{currentDeploymentId:s})),c=s));let u,d;if(c===s)u=!0,d=!0;else if(typeof o.streams?.get!=`function`)u=!1,d=!1;else{let e=F((await z(o,`workflow`,{deploymentId:c,timeout:2e3}).catch(()=>void 0))?.workflowCoreVersion);u=e.framedByteStreams,d=e.supportedFormats.has(A.GZIP)}let p=[],m=`wrun_${Y()}`,h=await b(),_=a.specVersion??o.specVersion??2,v=P(_),x=a.allowReservedAttributes===!0,w;if(a.attributes&&Object.keys(a.attributes).length>0){if(_<4)throw new f(`Initial workflow attributes require a World that supports spec version 4 or later.`);for(let[e,t]of Object.entries(a.attributes))if(typeof t!=`string`)throw new f(`Initial workflow attribute ${JSON.stringify(e)} must be a string value.`);let e=B(a.attributes,{allowReservedAttributes:x});w=Object.fromEntries(e.map(({key:e,value:t})=>[e,t]))}let E=w?{attributes:w,...x?{allowReservedAttributes:!0}:{}}:{},j=await o.getEncryptionKeyForRun?.(m,{...a,deploymentId:c}),M=j?await V(j):void 0,N=await k(t,m,M,p,globalThis,v,u,d&&_>=5),R={traceCarrier:h,workflowCoreVersion:L,features:{encryption:!!M}},[U,W]=await Promise.allSettled([o.events.create(m,{eventType:`run_created`,specVersion:_,eventData:{deploymentId:c,workflowName:i,input:N,executionContext:R,...E}},{v1Compat:v}),o.queue(O(i),{runId:m,traceCarrier:h,..._>=3?{runInput:{input:N,deploymentId:c,workflowName:i,specVersion:_,executionContext:R,...E}}:{}},{deploymentId:c,specVersion:_})]);if(W.status===`rejected`)throw W.reason;let G=!1;if(U.status===`rejected`){let e=U.reason;if(!l.is(e))if(q(e))G=!0,H.warn(`Run creation event failed, but the run was accepted via the queue. The run_created event will be re-tried async by the runtime.`,{workflowRunId:m,error:e.message});else throw e}else{let e=U.value;if(!e.run)throw new f(`Missing 'run' in server response for 'run_created' event`);if(!v&&e.run.runId!==m)throw new f(`Server returned different runId than requested: expected ${m}, got ${e.run.runId}`)}return I(Promise.all(p),e=>{H.warn(`Background flush of workflow argument streams failed`,{workflowRunId:m,error:e instanceof Error?e.message:String(e)})}),e?.setAttributes({...T(m),...C(c),...U.status===`fulfilled`&&U.value.run?ee(U.value.run.status):{}}),new $(m,{resilientStart:G})})})}const te=e=>Array.isArray(e)?e:[e];async function ne(e,t,n={}){try{let r=await e.runs.get(t,{resolveData:`all`}),i=await e.getEncryptionKeyForRun?.(r),a=i?await V(i):void 0,o=te(await N(r.input,t,a,globalThis)),s=n.specVersion??r.specVersion??1,c=n.deploymentId??r.deploymentId;return(await Z({workflowId:r.workflowName},o,{deploymentId:c,world:e,specVersion:s})).runId}catch(e){throw Error(`Failed to recreate run from ${t}: ${e instanceof Error?e.message:String(e)}`,{cause:e})}}async function re(e,t){try{let n=(await e.runs.get(t,{resolveData:`none`})).specVersion??1,r=P(n),i={eventType:`run_cancelled`,specVersion:n};await e.events.create(t,i,{v1Compat:r})}catch(e){throw Error(`Failed to cancel run ${t}: ${e instanceof Error?e.message:String(e)}`,{cause:e})}}async function ie(e,t){try{let n=await e.runs.get(t,{resolveData:`none`});await e.queue(O(n.workflowName),{runId:t},{deploymentId:n.deploymentId,specVersion:n.specVersion??1})}catch(e){throw Error(`Failed to re-enqueue run ${t}: ${e instanceof Error?e.message:String(e)}`,{cause:e})}}async function Q(e,t,n){try{let r=await e.runs.get(t,{resolveData:`none`}),i=P(r.specVersion),a=[],o=null;do{let n=await e.events.list({runId:t,pagination:{limit:1e3,...o?{cursor:o}:{}},resolveData:`none`});a.push(...n.data),o=n.hasMore?n.cursor:null}while(o);let s=a.filter(e=>e.eventType===`wait_created`),c=new Set(a.filter(e=>e.eventType===`wait_completed`).map(e=>e.correlationId)),u=s.filter(e=>!c.has(e.correlationId));if(n?.correlationIds&&n.correlationIds.length>0){let e=new Set(n.correlationIds);u=u.filter(t=>t.correlationId&&e.has(t.correlationId))}let d=[],f=0;for(let n of u){if(!n.correlationId)continue;let a=i?{eventType:`wait_completed`,correlationId:n.correlationId}:{eventType:`wait_completed`,correlationId:n.correlationId,specVersion:r.specVersion,eventData:{resumeAt:n.eventData.resumeAt}};try{await e.events.create(t,a,{v1Compat:i}),f++}catch(e){l.is(e)?f++:d.push(e instanceof Error?e:Error(String(e)))}}if(f>0&&await e.queue(O(r.workflowName),{runId:t},{deploymentId:r.deploymentId,specVersion:r.specVersion??1}),d.length>0)throw AggregateError(d,`Failed to complete ${d.length}/${u.length} pending wait(s) for run ${t}`);return{stoppedCount:f}}catch(e){throw e instanceof AggregateError?e:Error(`Failed to wake up run ${t}: ${e instanceof Error?e.message:String(e)}`,{cause:e})}}async function ae(e,t,n,r){try{return await e.streams.get(t,n,r?.startIndex)}catch(e){throw Error(`Failed to read stream ${n}: ${e instanceof Error?e.message:String(e)}`,{cause:e})}}async function oe(e,t){try{return await e.streams.list(t)}catch(e){throw Error(`Failed to list streams for run ${t}: ${e instanceof Error?e.message:String(e)}`,{cause:e})}}var $=class e{static[j](e){return{runId:e.runId,resilientStart:e.#r}}static[M](t){return new e(t.runId,{resilientStart:t.resilientStart})}runId;#e;get#t(){return this.#e||=D(),this.#e}#n=null;#r=!1;constructor(e,t){this.runId=e,this.#r=t?.resilientStart??!1}#i(){return this.#n||=(async()=>{let e=await this.#t,t=await e.runs.get(this.runId),n=await e.getEncryptionKeyForRun?.(t);return n?await V(n):void 0})(),this.#n}#a(){return()=>this.#i()}async wakeUp(e){"use step";return Q(await this.#t,this.runId,e)}async cancel(){"use step";await(await this.#t).events.create(this.runId,{eventType:`run_cancelled`,specVersion:5})}get exists(){"use step";return this.#t.then(e=>e.runs.get(this.runId,{resolveData:`none`}).then(()=>!0).catch(e=>{if(t.is(e))return!1;throw e}))}get status(){"use step";return this.#t.then(e=>e.runs.get(this.runId).then(e=>e.status))}get returnValue(){"use step";return this.#o()}get workflowName(){"use step";return this.#t.then(e=>e.runs.get(this.runId).then(e=>e.workflowName))}get createdAt(){"use step";return this.#t.then(e=>e.runs.get(this.runId).then(e=>e.createdAt))}get startedAt(){"use step";return this.#t.then(e=>e.runs.get(this.runId).then(e=>e.startedAt))}get completedAt(){"use step";return this.#t.then(e=>e.runs.get(this.runId).then(e=>e.completedAt))}get readable(){return this.getReadable()}getReadable(e={}){"use step";let{ops:t=[],global:n=globalThis,startIndex:r,namespace:i}=e,a=x(this.runId,i),o=this.#a(),s=_(n,t,this.runId,o).ReadableStream({name:a,startIndex:r}),c=this.#t,l=this.runId;return Object.assign(s,{getTailIndex:async()=>(await(await c).streams.getInfo(l,a)).tailIndex})}async#o(){let e=await this.#t,n=0,i=this.#r?3:0,o=[1e3,3e3,6e3];for(;;)try{let t=await e.runs.get(this.runId);if(t.status===`completed`){let e=await this.#i();return await h(t.output,this.runId,e)}if(t.status===`cancelled`)throw new a(this.runId);if(t.status===`failed`){let e=await this.#i(),n;try{n=await w(t.error,this.runId,e)}catch{n=Error(`Failed to hydrate workflow run error`)}throw new p(this.runId,n,{errorCode:t.errorCode})}throw new r(this.runId,t.status)}catch(e){if(r.is(e)){await new Promise(e=>setTimeout(e,1e3));continue}if(t.is(e)&&n<i){let e=o[n];n++,await new Promise(t=>setTimeout(t,e));continue}throw e}}};function se(e){return new $(e)}export{ae as a,Q as c,q as d,K as f,oe as i,Z as l,se as n,ne as o,re as r,ie as s,$ as t,J as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{pn as e,ur as t}from"./attribute-changes-
|
|
1
|
+
import{pn as e,ur as t}from"./attribute-changes-zAifvEhb.js";async function n(r){let i=globalThis[e];return i||t(`sleep()`,`https://workflow-sdk.dev/docs/api-reference/workflow/sleep`,n),i(r)}export{n as t};
|
|
@@ -19,7 +19,7 @@ export declare const ROOT_COMPILED_AGENT_NODE_ID = "__root__";
|
|
|
19
19
|
/**
|
|
20
20
|
* Current compiled manifest schema version.
|
|
21
21
|
*/
|
|
22
|
-
export declare const COMPILED_AGENT_MANIFEST_VERSION =
|
|
22
|
+
export declare const COMPILED_AGENT_MANIFEST_VERSION = 32;
|
|
23
23
|
/**
|
|
24
24
|
* Compiled channel entry preserved in the compiled manifest.
|
|
25
25
|
*/
|
|
@@ -455,7 +455,7 @@ export declare const compiledAgentManifestSchema: z.ZodObject<{
|
|
|
455
455
|
sourceId: z.ZodString;
|
|
456
456
|
sourceKind: z.ZodLiteral<"module">;
|
|
457
457
|
}, z.core.$strict>>;
|
|
458
|
-
version: z.ZodLiteral<
|
|
458
|
+
version: z.ZodLiteral<32>;
|
|
459
459
|
workspaceResourceRoot: z.ZodObject<{
|
|
460
460
|
contentHash: z.ZodOptional<z.ZodString>;
|
|
461
461
|
logicalPath: z.ZodString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{z}from"#compiled/zod/index.js";import{discoverDiagnosticsSummarySchema}from"#discover/diagnostics.js";import{compiledRemoteAgentNodeSchema}from"#compiler/remote-agent-node.js";import{jsonObjectSchema}from"#shared/json-schemas.js";const COMPILED_AGENT_MANIFEST_KIND=`eve-agent-compiled-manifest`,ROOT_COMPILED_AGENT_NODE_ID=`__root__`,COMPILED_AGENT_MANIFEST_VERSION=31,moduleSourceRefSchema=z.object({exportName:z.string().optional(),sourceKind:z.literal(`module`),logicalPath:z.string(),sourceId:z.string()}).strict(),channelMethodSchema=z.union([z.literal(`GET`),z.literal(`POST`),z.literal(`PUT`),z.literal(`PATCH`),z.literal(`DELETE`),z.literal(`WEBSOCKET`)]),compiledChannelCorsSchema=z.object({origin:z.union([z.literal(`*`),z.literal(`null`),z.array(z.string())]).optional(),methods:z.union([z.literal(`*`),z.array(z.string())]).optional(),allowHeaders:z.union([z.literal(`*`),z.array(z.string())]).optional(),exposeHeaders:z.union([z.literal(`*`),z.array(z.string())]).optional(),credentials:z.boolean().optional(),maxAge:z.union([z.string(),z.literal(!1)]).optional(),preflight:z.object({statusCode:z.number().int().min(100).max(599).optional()}).strict().optional()}).strict(),compiledChannelDefinitionSchema=z.object({kind:z.literal(`channel`),name:z.string(),logicalPath:z.string(),method:channelMethodSchema,urlPath:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`),exportName:z.string().optional(),adapterKind:z.string().optional(),cors:compiledChannelCorsSchema.optional()}).strict(),disabledCompiledChannelEntrySchema=z.object({kind:z.literal(`disabled`),name:z.string(),logicalPath:z.string()}).strict(),compiledChannelEntrySchema=z.union([compiledChannelDefinitionSchema,disabledCompiledChannelEntrySchema]),modelRoutingSchema=z.union([z.object({kind:z.literal(`gateway`),target:z.string(),byok:z.string().optional()}).strict(),z.object({kind:z.literal(`external`),provider:z.string()}).strict()]),compiledRuntimeModelReferenceSchema=z.object({contextWindowTokens:z.number().int().positive().optional(),id:z.string(),source:moduleSourceRefSchema.optional(),providerOptions:z.record(z.string(),jsonObjectSchema).optional(),routing:modelRoutingSchema}).strict(),compiledAgentBuildDefinitionSchema=z.object({externalDependencies:z.array(z.string()).optional()}).strict(),compiledAgentWorkflowWorldDefinitionSchema=z.string(),compiledAgentWorkflowDefinitionSchema=z.object({world:compiledAgentWorkflowWorldDefinitionSchema.optional()}).strict(),compiledAgentCompactionDefinitionSchema=z.object({model:compiledRuntimeModelReferenceSchema.optional(),thresholdPercent:z.number().finite().min(0).max(1).optional()}).strict(),compiledAgentConfigSchema=z.object({build:compiledAgentBuildDefinitionSchema.optional(),compaction:compiledAgentCompactionDefinitionSchema.optional(),description:z.string().optional(),experimental:z.object({workflow:compiledAgentWorkflowDefinitionSchema.optional()}).strict().optional(),model:compiledRuntimeModelReferenceSchema,name:z.string(),outputSchema:jsonObjectSchema.optional(),reasoning:z.enum([`provider-default`,`none`,`minimal`,`low`,`medium`,`high`,`xhigh`]).optional(),source:moduleSourceRefSchema.optional()}).strict(),compiledInstructionsSchema=z.object({name:z.string(),logicalPath:z.string(),markdown:z.string(),sourceId:z.string(),sourceKind:z.union([z.literal(`markdown`),z.literal(`module`)])}).strict(),compiledSkillBaseFields={name:z.string(),description:z.string(),license:z.string().optional(),markdown:z.string(),metadata:z.record(z.string(),z.string()).optional(),sourceId:z.string(),logicalPath:z.string()},compiledSkillSourceSchema=z.discriminatedUnion(`sourceKind`,[z.object({...compiledSkillBaseFields,sourceKind:z.literal(`markdown`)}).strict(),z.object({...compiledSkillBaseFields,sourceKind:z.literal(`module`),exportName:z.string().optional()}).strict(),z.object({...compiledSkillBaseFields,sourceKind:z.literal(`skill-package`),skillId:z.string(),skillFilePath:z.string(),rootPath:z.string(),assetsPath:z.string().optional(),referencesPath:z.string().optional(),scriptsPath:z.string().optional()}).strict()]),compiledScheduleDefinitionSchema=z.object({cron:z.string(),hasRun:z.boolean(),name:z.string(),logicalPath:z.string(),markdown:z.string().optional(),sourceId:z.string(),sourceKind:z.union([z.literal(`markdown`),z.literal(`module`)])}).strict(),compiledSandboxDefinitionSchema=z.object({backendName:z.string().optional(),description:z.string().optional(),exportName:z.string().optional(),logicalPath:z.string(),revalidationKey:z.string().optional(),sourceHash:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledSandboxWorkspaceSchema=z.object({logicalPath:z.string(),rootEntries:z.array(z.string()).readonly(),sourceId:z.string(),sourcePath:z.string()}).strict(),compiledWorkspaceResourceRootSchema=z.object({contentHash:z.string().optional(),logicalPath:z.string(),rootEntries:z.array(z.string()).readonly()}).strict(),compiledConnectionDefinitionSchema=z.object({connectionName:z.string(),description:z.string(),exportName:z.string().optional(),logicalPath:z.string(),protocol:z.enum([`mcp`,`openapi`]).default(`mcp`),sourceId:z.string(),sourceKind:z.literal(`module`),url:z.string(),vercelConnect:z.object({connector:z.string()}).strict().optional()}).strict(),compiledToolDefinitionSchema=z.object({description:z.string(),exportName:z.string().optional(),inputSchema:jsonObjectSchema.nullable(),logicalPath:z.string(),name:z.string(),outputSchema:jsonObjectSchema.optional(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledDynamicToolDefinitionSchema=z.object({eventNames:z.array(z.string()).readonly(),exportName:z.string().optional(),logicalPath:z.string(),slug:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledDynamicSkillDefinitionSchema=z.object({eventNames:z.array(z.string()).readonly(),exportName:z.string().optional(),logicalPath:z.string(),slug:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledDynamicInstructionsDefinitionSchema=z.object({eventNames:z.array(z.string()).readonly(),exportName:z.string().optional(),logicalPath:z.string(),slug:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledHookDefinitionSchema=z.object({exportName:z.string().optional(),logicalPath:z.string(),slug:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledAgentNodeManifestSchema=z.object({agentRoot:z.string(),appRoot:z.string(),channels:z.array(compiledChannelEntrySchema),config:compiledAgentConfigSchema,connections:z.array(compiledConnectionDefinitionSchema),diagnosticsSummary:discoverDiagnosticsSummarySchema,disabledFrameworkTools:z.array(z.string()).readonly(),workflowEnabled:z.boolean().default(!1),dynamicInstructions:z.array(compiledDynamicInstructionsDefinitionSchema).default([]),dynamicSkills:z.array(compiledDynamicSkillDefinitionSchema).default([]),dynamicTools:z.array(compiledDynamicToolDefinitionSchema).default([]),hooks:z.array(compiledHookDefinitionSchema),sandbox:compiledSandboxDefinitionSchema.nullable(),sandboxWorkspaces:z.array(compiledSandboxWorkspaceSchema),schedules:z.array(compiledScheduleDefinitionSchema),remoteAgents:z.array(compiledRemoteAgentNodeSchema),skills:z.array(compiledSkillSourceSchema).readonly(),instructions:compiledInstructionsSchema.optional(),tools:z.array(compiledToolDefinitionSchema),workspaceResourceRoot:compiledWorkspaceResourceRootSchema}).strict(),compiledSubagentNodeSchema=z.object({agent:compiledAgentNodeManifestSchema,description:z.string(),entryPath:z.string(),logicalPath:z.string(),name:z.string(),nodeId:z.string(),rootPath:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`),exportName:z.string().optional()}).strict(),compiledSubagentEdgeSchema=z.object({childNodeId:z.string(),parentNodeId:z.string()}).strict(),compiledAgentManifestSchema=z.object({agentRoot:z.string(),appRoot:z.string(),channels:z.array(compiledChannelEntrySchema),config:compiledAgentConfigSchema,connections:z.array(compiledConnectionDefinitionSchema),diagnosticsSummary:discoverDiagnosticsSummarySchema,disabledFrameworkTools:z.array(z.string()).readonly(),workflowEnabled:z.boolean().default(!1),dynamicInstructions:z.array(compiledDynamicInstructionsDefinitionSchema).default([]),dynamicSkills:z.array(compiledDynamicSkillDefinitionSchema).default([]),dynamicTools:z.array(compiledDynamicToolDefinitionSchema).default([]),hooks:z.array(compiledHookDefinitionSchema),kind:z.literal(COMPILED_AGENT_MANIFEST_KIND),remoteAgents:z.array(compiledRemoteAgentNodeSchema),sandbox:compiledSandboxDefinitionSchema.nullable(),sandboxWorkspaces:z.array(compiledSandboxWorkspaceSchema),schedules:z.array(compiledScheduleDefinitionSchema),skills:z.array(compiledSkillSourceSchema).readonly(),subagentEdges:z.array(compiledSubagentEdgeSchema),subagents:z.array(compiledSubagentNodeSchema),instructions:compiledInstructionsSchema.optional(),tools:z.array(compiledToolDefinitionSchema),version:z.literal(31),workspaceResourceRoot:compiledWorkspaceResourceRootSchema}).strict();function createCompiledAgentNodeManifest(e){let t={agentRoot:e.agentRoot,appRoot:e.appRoot,channels:[...e.channels??[]],connections:[...e.connections??[]],config:{build:e.config.build===void 0?void 0:{externalDependencies:e.config.build.externalDependencies===void 0?void 0:[...e.config.build.externalDependencies]},compaction:{model:e.config.compaction?.model===void 0?void 0:cloneCompiledRuntimeModelReference(e.config.compaction.model),thresholdPercent:e.config.compaction?.thresholdPercent},description:e.config.description,experimental:e.config.experimental===void 0?void 0:{workflow:e.config.experimental.workflow===void 0?void 0:{world:e.config.experimental.workflow.world}},model:cloneCompiledRuntimeModelReference(e.config.model),name:e.config.name,outputSchema:e.config.outputSchema,reasoning:e.config.reasoning,source:e.config.source===void 0?void 0:{...e.config.source}},diagnosticsSummary:e.diagnosticsSummary??{errors:0,warnings:0},disabledFrameworkTools:[...e.disabledFrameworkTools??[]],workflowEnabled:e.workflowEnabled??!1,dynamicInstructions:[...e.dynamicInstructions??[]],dynamicSkills:[...e.dynamicSkills??[]],dynamicTools:[...e.dynamicTools??[]],hooks:[...e.hooks??[]],remoteAgents:[...e.remoteAgents??[]],sandbox:e.sandbox??null,sandboxWorkspaces:[...e.sandboxWorkspaces??[]],schedules:[...e.schedules??[]],skills:[...e.skills??[]],tools:[...e.tools??[]],workspaceResourceRoot:e.workspaceResourceRoot??{logicalPath:``,rootEntries:deriveResourceRootEntries({sandboxWorkspaces:e.sandboxWorkspaces,skills:e.skills})}};return e.instructions!==void 0&&(t.instructions=e.instructions),t}function deriveResourceRootEntries(e){let t=new Set;(e.skills??[]).length>0&&t.add(`skills/`);for(let n of e.sandboxWorkspaces??[])for(let e of n.rootEntries)t.add(e);return[...t].sort((e,t)=>e.localeCompare(t))}function createCompiledSubagentNodeId(e,t){return e===`__root__`?t:`${e}::${t}`}function createCompiledAgentManifest(e){return{...createCompiledAgentNodeManifest(e),kind:COMPILED_AGENT_MANIFEST_KIND,subagentEdges:[...e.subagentEdges??[]],subagents:[...e.subagents??[]],version:31}}function cloneCompiledRuntimeModelReference(e){let t={id:e.id,routing:cloneModelRouting(e.routing)};return e.contextWindowTokens!==void 0&&(t.contextWindowTokens=e.contextWindowTokens),e.providerOptions!==void 0&&(t.providerOptions={...e.providerOptions}),e.source!==void 0&&(t.source={...e.source}),t}function cloneModelRouting(e){return e.kind===`external`?{kind:`external`,provider:e.provider}:e.byok===void 0?{kind:`gateway`,target:e.target}:{kind:`gateway`,target:e.target,byok:e.byok}}export{COMPILED_AGENT_MANIFEST_KIND,COMPILED_AGENT_MANIFEST_VERSION,ROOT_COMPILED_AGENT_NODE_ID,compiledAgentManifestSchema,createCompiledAgentManifest,createCompiledAgentNodeManifest,createCompiledSubagentNodeId,deriveResourceRootEntries};
|
|
1
|
+
import{z}from"#compiled/zod/index.js";import{discoverDiagnosticsSummarySchema}from"#discover/diagnostics.js";import{compiledRemoteAgentNodeSchema}from"#compiler/remote-agent-node.js";import{jsonObjectSchema}from"#shared/json-schemas.js";const COMPILED_AGENT_MANIFEST_KIND=`eve-agent-compiled-manifest`,ROOT_COMPILED_AGENT_NODE_ID=`__root__`,COMPILED_AGENT_MANIFEST_VERSION=32,moduleSourceRefSchema=z.object({exportName:z.string().optional(),sourceKind:z.literal(`module`),logicalPath:z.string(),sourceId:z.string()}).strict(),channelMethodSchema=z.union([z.literal(`GET`),z.literal(`POST`),z.literal(`PUT`),z.literal(`PATCH`),z.literal(`DELETE`),z.literal(`WEBSOCKET`)]),compiledChannelCorsSchema=z.object({origin:z.union([z.literal(`*`),z.literal(`null`),z.array(z.string())]).optional(),methods:z.union([z.literal(`*`),z.array(z.string())]).optional(),allowHeaders:z.union([z.literal(`*`),z.array(z.string())]).optional(),exposeHeaders:z.union([z.literal(`*`),z.array(z.string())]).optional(),credentials:z.boolean().optional(),maxAge:z.union([z.string(),z.literal(!1)]).optional(),preflight:z.object({statusCode:z.number().int().min(100).max(599).optional()}).strict().optional()}).strict(),compiledChannelDefinitionSchema=z.object({kind:z.literal(`channel`),name:z.string(),logicalPath:z.string(),method:channelMethodSchema,urlPath:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`),exportName:z.string().optional(),adapterKind:z.string().optional(),cors:compiledChannelCorsSchema.optional()}).strict(),disabledCompiledChannelEntrySchema=z.object({kind:z.literal(`disabled`),name:z.string(),logicalPath:z.string()}).strict(),compiledChannelEntrySchema=z.union([compiledChannelDefinitionSchema,disabledCompiledChannelEntrySchema]),modelRoutingSchema=z.union([z.object({kind:z.literal(`gateway`),target:z.string(),byok:z.string().optional()}).strict(),z.object({kind:z.literal(`external`),provider:z.string()}).strict()]),compiledRuntimeModelReferenceSchema=z.object({contextWindowTokens:z.number().int().positive().optional(),id:z.string(),source:moduleSourceRefSchema.optional(),providerOptions:z.record(z.string(),jsonObjectSchema).optional(),routing:modelRoutingSchema}).strict(),compiledAgentBuildDefinitionSchema=z.object({externalDependencies:z.array(z.string()).optional()}).strict(),compiledAgentWorkflowWorldDefinitionSchema=z.string(),compiledAgentWorkflowDefinitionSchema=z.object({world:compiledAgentWorkflowWorldDefinitionSchema.optional()}).strict(),compiledAgentCompactionDefinitionSchema=z.object({model:compiledRuntimeModelReferenceSchema.optional(),thresholdPercent:z.number().finite().min(0).max(1).optional()}).strict(),compiledAgentLimitsDefinitionSchema=z.object({maxSubagentDepth:z.number().int().positive().optional(),maxInputTokensPerSession:z.number().int().positive().optional(),maxOutputTokensPerSession:z.number().int().positive().optional()}).strict(),compiledAgentConfigSchema=z.object({build:compiledAgentBuildDefinitionSchema.optional(),compaction:compiledAgentCompactionDefinitionSchema.optional(),description:z.string().optional(),experimental:z.object({workflow:compiledAgentWorkflowDefinitionSchema.optional()}).strict().optional(),model:compiledRuntimeModelReferenceSchema,name:z.string(),outputSchema:jsonObjectSchema.optional(),reasoning:z.enum([`provider-default`,`none`,`minimal`,`low`,`medium`,`high`,`xhigh`]).optional(),source:moduleSourceRefSchema.optional(),limits:compiledAgentLimitsDefinitionSchema.optional()}).strict(),compiledInstructionsSchema=z.object({name:z.string(),logicalPath:z.string(),markdown:z.string(),sourceId:z.string(),sourceKind:z.union([z.literal(`markdown`),z.literal(`module`)])}).strict(),compiledSkillBaseFields={name:z.string(),description:z.string(),license:z.string().optional(),markdown:z.string(),metadata:z.record(z.string(),z.string()).optional(),sourceId:z.string(),logicalPath:z.string()},compiledSkillSourceSchema=z.discriminatedUnion(`sourceKind`,[z.object({...compiledSkillBaseFields,sourceKind:z.literal(`markdown`)}).strict(),z.object({...compiledSkillBaseFields,sourceKind:z.literal(`module`),exportName:z.string().optional()}).strict(),z.object({...compiledSkillBaseFields,sourceKind:z.literal(`skill-package`),skillId:z.string(),skillFilePath:z.string(),rootPath:z.string(),assetsPath:z.string().optional(),referencesPath:z.string().optional(),scriptsPath:z.string().optional()}).strict()]),compiledScheduleDefinitionSchema=z.object({cron:z.string(),hasRun:z.boolean(),name:z.string(),logicalPath:z.string(),markdown:z.string().optional(),sourceId:z.string(),sourceKind:z.union([z.literal(`markdown`),z.literal(`module`)])}).strict(),compiledSandboxDefinitionSchema=z.object({backendName:z.string().optional(),description:z.string().optional(),exportName:z.string().optional(),logicalPath:z.string(),revalidationKey:z.string().optional(),sourceHash:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledSandboxWorkspaceSchema=z.object({logicalPath:z.string(),rootEntries:z.array(z.string()).readonly(),sourceId:z.string(),sourcePath:z.string()}).strict(),compiledWorkspaceResourceRootSchema=z.object({contentHash:z.string().optional(),logicalPath:z.string(),rootEntries:z.array(z.string()).readonly()}).strict(),compiledConnectionDefinitionSchema=z.object({connectionName:z.string(),description:z.string(),exportName:z.string().optional(),logicalPath:z.string(),protocol:z.enum([`mcp`,`openapi`]).default(`mcp`),sourceId:z.string(),sourceKind:z.literal(`module`),url:z.string(),vercelConnect:z.object({connector:z.string()}).strict().optional()}).strict(),compiledToolDefinitionSchema=z.object({description:z.string(),exportName:z.string().optional(),inputSchema:jsonObjectSchema.nullable(),logicalPath:z.string(),name:z.string(),outputSchema:jsonObjectSchema.optional(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledDynamicToolDefinitionSchema=z.object({eventNames:z.array(z.string()).readonly(),exportName:z.string().optional(),logicalPath:z.string(),slug:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledDynamicSkillDefinitionSchema=z.object({eventNames:z.array(z.string()).readonly(),exportName:z.string().optional(),logicalPath:z.string(),slug:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledDynamicInstructionsDefinitionSchema=z.object({eventNames:z.array(z.string()).readonly(),exportName:z.string().optional(),logicalPath:z.string(),slug:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledHookDefinitionSchema=z.object({exportName:z.string().optional(),logicalPath:z.string(),slug:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledAgentNodeManifestSchema=z.object({agentRoot:z.string(),appRoot:z.string(),channels:z.array(compiledChannelEntrySchema),config:compiledAgentConfigSchema,connections:z.array(compiledConnectionDefinitionSchema),diagnosticsSummary:discoverDiagnosticsSummarySchema,disabledFrameworkTools:z.array(z.string()).readonly(),workflowEnabled:z.boolean().default(!1),dynamicInstructions:z.array(compiledDynamicInstructionsDefinitionSchema).default([]),dynamicSkills:z.array(compiledDynamicSkillDefinitionSchema).default([]),dynamicTools:z.array(compiledDynamicToolDefinitionSchema).default([]),hooks:z.array(compiledHookDefinitionSchema),sandbox:compiledSandboxDefinitionSchema.nullable(),sandboxWorkspaces:z.array(compiledSandboxWorkspaceSchema),schedules:z.array(compiledScheduleDefinitionSchema),remoteAgents:z.array(compiledRemoteAgentNodeSchema),skills:z.array(compiledSkillSourceSchema).readonly(),instructions:compiledInstructionsSchema.optional(),tools:z.array(compiledToolDefinitionSchema),workspaceResourceRoot:compiledWorkspaceResourceRootSchema}).strict(),compiledSubagentNodeSchema=z.object({agent:compiledAgentNodeManifestSchema,description:z.string(),entryPath:z.string(),logicalPath:z.string(),name:z.string(),nodeId:z.string(),rootPath:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`),exportName:z.string().optional()}).strict(),compiledSubagentEdgeSchema=z.object({childNodeId:z.string(),parentNodeId:z.string()}).strict(),compiledAgentManifestSchema=z.object({agentRoot:z.string(),appRoot:z.string(),channels:z.array(compiledChannelEntrySchema),config:compiledAgentConfigSchema,connections:z.array(compiledConnectionDefinitionSchema),diagnosticsSummary:discoverDiagnosticsSummarySchema,disabledFrameworkTools:z.array(z.string()).readonly(),workflowEnabled:z.boolean().default(!1),dynamicInstructions:z.array(compiledDynamicInstructionsDefinitionSchema).default([]),dynamicSkills:z.array(compiledDynamicSkillDefinitionSchema).default([]),dynamicTools:z.array(compiledDynamicToolDefinitionSchema).default([]),hooks:z.array(compiledHookDefinitionSchema),kind:z.literal(COMPILED_AGENT_MANIFEST_KIND),remoteAgents:z.array(compiledRemoteAgentNodeSchema),sandbox:compiledSandboxDefinitionSchema.nullable(),sandboxWorkspaces:z.array(compiledSandboxWorkspaceSchema),schedules:z.array(compiledScheduleDefinitionSchema),skills:z.array(compiledSkillSourceSchema).readonly(),subagentEdges:z.array(compiledSubagentEdgeSchema),subagents:z.array(compiledSubagentNodeSchema),instructions:compiledInstructionsSchema.optional(),tools:z.array(compiledToolDefinitionSchema),version:z.literal(32),workspaceResourceRoot:compiledWorkspaceResourceRootSchema}).strict();function createCompiledAgentNodeManifest(e){let t={agentRoot:e.agentRoot,appRoot:e.appRoot,channels:[...e.channels??[]],connections:[...e.connections??[]],config:{build:e.config.build===void 0?void 0:{externalDependencies:e.config.build.externalDependencies===void 0?void 0:[...e.config.build.externalDependencies]},compaction:{model:e.config.compaction?.model===void 0?void 0:cloneCompiledRuntimeModelReference(e.config.compaction.model),thresholdPercent:e.config.compaction?.thresholdPercent},description:e.config.description,experimental:e.config.experimental===void 0?void 0:{workflow:e.config.experimental.workflow===void 0?void 0:{world:e.config.experimental.workflow.world}},model:cloneCompiledRuntimeModelReference(e.config.model),name:e.config.name,outputSchema:e.config.outputSchema,reasoning:e.config.reasoning,limits:e.config.limits===void 0?void 0:{maxInputTokensPerSession:e.config.limits.maxInputTokensPerSession,maxOutputTokensPerSession:e.config.limits.maxOutputTokensPerSession,maxSubagentDepth:e.config.limits.maxSubagentDepth},source:e.config.source===void 0?void 0:{...e.config.source}},diagnosticsSummary:e.diagnosticsSummary??{errors:0,warnings:0},disabledFrameworkTools:[...e.disabledFrameworkTools??[]],workflowEnabled:e.workflowEnabled??!1,dynamicInstructions:[...e.dynamicInstructions??[]],dynamicSkills:[...e.dynamicSkills??[]],dynamicTools:[...e.dynamicTools??[]],hooks:[...e.hooks??[]],remoteAgents:[...e.remoteAgents??[]],sandbox:e.sandbox??null,sandboxWorkspaces:[...e.sandboxWorkspaces??[]],schedules:[...e.schedules??[]],skills:[...e.skills??[]],tools:[...e.tools??[]],workspaceResourceRoot:e.workspaceResourceRoot??{logicalPath:``,rootEntries:deriveResourceRootEntries({sandboxWorkspaces:e.sandboxWorkspaces,skills:e.skills})}};return e.instructions!==void 0&&(t.instructions=e.instructions),t}function deriveResourceRootEntries(e){let t=new Set;(e.skills??[]).length>0&&t.add(`skills/`);for(let n of e.sandboxWorkspaces??[])for(let e of n.rootEntries)t.add(e);return[...t].sort((e,t)=>e.localeCompare(t))}function createCompiledSubagentNodeId(e,t){return e===`__root__`?t:`${e}::${t}`}function createCompiledAgentManifest(e){return{...createCompiledAgentNodeManifest(e),kind:COMPILED_AGENT_MANIFEST_KIND,subagentEdges:[...e.subagentEdges??[]],subagents:[...e.subagents??[]],version:32}}function cloneCompiledRuntimeModelReference(e){let t={id:e.id,routing:cloneModelRouting(e.routing)};return e.contextWindowTokens!==void 0&&(t.contextWindowTokens=e.contextWindowTokens),e.providerOptions!==void 0&&(t.providerOptions={...e.providerOptions}),e.source!==void 0&&(t.source={...e.source}),t}function cloneModelRouting(e){return e.kind===`external`?{kind:`external`,provider:e.provider}:e.byok===void 0?{kind:`gateway`,target:e.target}:{kind:`gateway`,target:e.target,byok:e.byok}}export{COMPILED_AGENT_MANIFEST_KIND,COMPILED_AGENT_MANIFEST_VERSION,ROOT_COMPILED_AGENT_NODE_ID,compiledAgentManifestSchema,createCompiledAgentManifest,createCompiledAgentNodeManifest,createCompiledSubagentNodeId,deriveResourceRootEntries};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{isAbsolute,join,relative,resolve}from"node:path";import{DEFAULT_AGENT_MODEL_ID}from"#shared/default-agent-model.js";import{toErrorMessage}from"#shared/errors.js";import{normalizeJsonSchemaDefinition}from"#shared/json-schema.js";import{normalizeLogicalPath}from"#discover/filesystem.js";import{classifyModelRouting}from"#internal/classify-model-routing.js";import{normalizeAgentDefinition}from"#internal/authored-definition/core.js";import{formatLanguageModelGatewayId}from"#internal/runtime-model.js";import{parseJsonObject}from"#shared/json.js";import{loadModuleBackedDefinition}from"#compiler/normalize-helpers.js";async function compileAgentConfig(e,t){let n=e.configModule,r=n===void 0?void 0:formatAgentConfigModulePath(e,n),a=normalizeAgentDefinition(n===void 0?{model:DEFAULT_AGENT_MODEL_ID}:await loadModuleBackedDefinition({agentRoot:e.agentRoot,displayPath:r,kind:`agent config`,source:n}),n===void 0?`Expected the default agent config to match the public eve shape.`:`Expected the agent config export "${n.exportName??`default`}" from "${r}" to match the public eve shape.`),o=await normalizeAuthoredModelReference({modelCatalog:t.modelCatalog,purpose:`the primary compaction trigger model`,contextWindowTokens:a.modelContextWindowTokens,providerOptions:a.modelOptions?.providerOptions,source:n,sourcePath:r,value:a.model}),s={},c={compaction:s,model:o,name:e.agentId};a.description!==void 0&&(c.description=a.description);let l=normalizeExperimentalDefinition(a.experimental);return l!==void 0&&(c.experimental=l),a.build!==void 0&&(c.build={externalDependencies:a.build.externalDependencies===void 0?void 0:[...a.build.externalDependencies]}),a.outputSchema!==void 0&&(c.outputSchema=normalizeJsonSchemaDefinition(a.outputSchema,`output`)),a.reasoning!==void 0&&(c.reasoning=a.reasoning),n!==void 0&&(c.source={exportName:n.exportName,sourceKind:`module`,logicalPath:n.logicalPath,sourceId:n.sourceId}),a.compaction?.model!==void 0&&(s.model=await normalizeAuthoredModelReference({modelCatalog:t.modelCatalog,purpose:`the compaction summary model`,contextWindowTokens:a.compaction.modelContextWindowTokens,providerOptions:a.modelOptions?.providerOptions,source:n,sourcePath:r,value:a.compaction.model})),a.compaction?.thresholdPercent!==void 0&&(s.thresholdPercent=a.compaction.thresholdPercent),c}function normalizeExperimentalDefinition(e){if(e===void 0)return;let t={};return e.workflow!==void 0&&(t.workflow={world:e.workflow.world}),t}async function normalizeAuthoredModelReference(e){if(typeof e.value==`string`)return await withCompiledRuntimeModelLimits({id:formatLanguageModelGatewayId(e.value),providerOptions:parseProviderOptionsRecord(e.providerOptions),routing:classifyModelRouting(e.value,e.providerOptions)},e);let t=e.source;if(t===void 0)throw Error(`Expected ${e.purpose} to provide a valid AI SDK language model reference.`);let n=e.value,r=n.specificationVersion;if(r!==`v2`&&r!==`v3`&&r!==`v4`||typeof n.provider!=`string`||typeof n.modelId!=`string`||typeof n.doGenerate!=`function`||typeof n.doStream!=`function`)throw Error(`Expected the authored agent config export "${t.exportName??`default`}" from "${e.sourcePath??t.logicalPath}" to provide a valid AI SDK language model.`);let i={id:formatLanguageModelGatewayId(n),source:{exportName:t.exportName,sourceKind:`module`,logicalPath:t.logicalPath,sourceId:t.sourceId},providerOptions:parseProviderOptionsRecord(e.providerOptions),routing:classifyModelRouting(n,e.providerOptions)};if(e.contextWindowTokens===void 0){let t=await e.modelCatalog.getByProviderModelId(n.provider,n.modelId);if(t)return{...i,id:t.slug,contextWindowTokens:t.limits.contextWindowTokens}}return await withCompiledRuntimeModelLimits(i,e)}function formatAgentConfigModulePath(e,r){let i=join(e.agentRoot,r.logicalPath);return normalizeLogicalPath(relative(resolveTopLevelAgentRoot(e),i))}function resolveTopLevelAgentRoot(e){let t=resolve(e.appRoot),n=resolve(t,`agent`);return isPathInsideOrEqual(n,resolve(e.agentRoot))?n:t}function isPathInsideOrEqual(t,r){let i=relative(t,r);return i===``||!i.startsWith(`..`)&&!isAbsolute(i)}async function withCompiledRuntimeModelLimits(e,t){if(t.contextWindowTokens!==void 0)return{...e,contextWindowTokens:t.contextWindowTokens};let n;try{n=await t.modelCatalog.getModelLimits(e.id)}catch(n){throw Error(`Failed to load AI Gateway model metadata for ${t.purpose} "${e.id}". ${toErrorMessage(n)}`)}if(n===null)throw Error(`Cannot compile agent compaction because ${t.purpose} "${e.id}" does not have known AI Gateway context window metadata.`);return{...e,contextWindowTokens:n.contextWindowTokens}}function parseProviderOptionsRecord(e){if(e===void 0)return;let t={};for(let[n,r]of Object.entries(e))t[n]=parseJsonObject(r);return t}export{compileAgentConfig};
|
|
1
|
+
import{isAbsolute,join,relative,resolve}from"node:path";import{DEFAULT_AGENT_MODEL_ID}from"#shared/default-agent-model.js";import{toErrorMessage}from"#shared/errors.js";import{normalizeJsonSchemaDefinition}from"#shared/json-schema.js";import{normalizeLogicalPath}from"#discover/filesystem.js";import{classifyModelRouting}from"#internal/classify-model-routing.js";import{normalizeAgentDefinition}from"#internal/authored-definition/core.js";import{formatLanguageModelGatewayId}from"#internal/runtime-model.js";import{parseJsonObject}from"#shared/json.js";import{loadModuleBackedDefinition}from"#compiler/normalize-helpers.js";async function compileAgentConfig(e,t){let n=e.configModule,r=n===void 0?void 0:formatAgentConfigModulePath(e,n),a=normalizeAgentDefinition(n===void 0?{model:DEFAULT_AGENT_MODEL_ID}:await loadModuleBackedDefinition({agentRoot:e.agentRoot,displayPath:r,kind:`agent config`,source:n}),n===void 0?`Expected the default agent config to match the public eve shape.`:`Expected the agent config export "${n.exportName??`default`}" from "${r}" to match the public eve shape.`),o=await normalizeAuthoredModelReference({modelCatalog:t.modelCatalog,purpose:`the primary compaction trigger model`,contextWindowTokens:a.modelContextWindowTokens,providerOptions:a.modelOptions?.providerOptions,source:n,sourcePath:r,value:a.model}),s={},c={compaction:s,model:o,name:e.agentId};a.description!==void 0&&(c.description=a.description);let l=normalizeExperimentalDefinition(a.experimental);return l!==void 0&&(c.experimental=l),a.build!==void 0&&(c.build={externalDependencies:a.build.externalDependencies===void 0?void 0:[...a.build.externalDependencies]}),a.outputSchema!==void 0&&(c.outputSchema=normalizeJsonSchemaDefinition(a.outputSchema,`output`)),a.reasoning!==void 0&&(c.reasoning=a.reasoning),a.limits!==void 0&&(c.limits={maxSubagentDepth:a.limits.maxSubagentDepth,maxInputTokensPerSession:a.limits.maxInputTokensPerSession,maxOutputTokensPerSession:a.limits.maxOutputTokensPerSession}),n!==void 0&&(c.source={exportName:n.exportName,sourceKind:`module`,logicalPath:n.logicalPath,sourceId:n.sourceId}),a.compaction?.model!==void 0&&(s.model=await normalizeAuthoredModelReference({modelCatalog:t.modelCatalog,purpose:`the compaction summary model`,contextWindowTokens:a.compaction.modelContextWindowTokens,providerOptions:a.modelOptions?.providerOptions,source:n,sourcePath:r,value:a.compaction.model})),a.compaction?.thresholdPercent!==void 0&&(s.thresholdPercent=a.compaction.thresholdPercent),c}function normalizeExperimentalDefinition(e){if(e===void 0)return;let t={};return e.workflow!==void 0&&(t.workflow={world:e.workflow.world}),t}async function normalizeAuthoredModelReference(e){if(typeof e.value==`string`)return await withCompiledRuntimeModelLimits({id:formatLanguageModelGatewayId(e.value),providerOptions:parseProviderOptionsRecord(e.providerOptions),routing:classifyModelRouting(e.value,e.providerOptions)},e);let t=e.source;if(t===void 0)throw Error(`Expected ${e.purpose} to provide a valid AI SDK language model reference.`);let n=e.value,r=n.specificationVersion;if(r!==`v2`&&r!==`v3`&&r!==`v4`||typeof n.provider!=`string`||typeof n.modelId!=`string`||typeof n.doGenerate!=`function`||typeof n.doStream!=`function`)throw Error(`Expected the authored agent config export "${t.exportName??`default`}" from "${e.sourcePath??t.logicalPath}" to provide a valid AI SDK language model.`);let i={id:formatLanguageModelGatewayId(n),source:{exportName:t.exportName,sourceKind:`module`,logicalPath:t.logicalPath,sourceId:t.sourceId},providerOptions:parseProviderOptionsRecord(e.providerOptions),routing:classifyModelRouting(n,e.providerOptions)};if(e.contextWindowTokens===void 0){let t=await e.modelCatalog.getByProviderModelId(n.provider,n.modelId);if(t)return{...i,id:t.slug,contextWindowTokens:t.limits.contextWindowTokens}}return await withCompiledRuntimeModelLimits(i,e)}function formatAgentConfigModulePath(e,r){let i=join(e.agentRoot,r.logicalPath);return normalizeLogicalPath(relative(resolveTopLevelAgentRoot(e),i))}function resolveTopLevelAgentRoot(e){let t=resolve(e.appRoot),n=resolve(t,`agent`);return isPathInsideOrEqual(n,resolve(e.agentRoot))?n:t}function isPathInsideOrEqual(t,r){let i=relative(t,r);return i===``||!i.startsWith(`..`)&&!isAbsolute(i)}async function withCompiledRuntimeModelLimits(e,t){if(t.contextWindowTokens!==void 0)return{...e,contextWindowTokens:t.contextWindowTokens};let n;try{n=await t.modelCatalog.getModelLimits(e.id)}catch(n){throw Error(`Failed to load AI Gateway model metadata for ${t.purpose} "${e.id}". ${toErrorMessage(n)}`)}if(n===null)throw Error(`Cannot compile agent compaction because ${t.purpose} "${e.id}" does not have known AI Gateway context window metadata.`);return{...e,contextWindowTokens:n.contextWindowTokens}}function parseProviderOptionsRecord(e){if(e===void 0)return;let t={};for(let[n,r]of Object.entries(e))t[n]=parseJsonObject(r);return t}export{compileAgentConfig};
|
|
@@ -42,6 +42,8 @@ export declare const ChannelRequestIdKey: ContextKey<string>;
|
|
|
42
42
|
export declare const ChannelInstrumentationKey: ContextKey<ChannelInstrumentationProjection>;
|
|
43
43
|
export declare const ModeKey: ContextKey<RunMode>;
|
|
44
44
|
export declare const ParentSessionKey: ContextKey<SessionParent>;
|
|
45
|
+
export declare const SubagentDepthKey: ContextKey<number>;
|
|
46
|
+
export declare const SubagentMaxDepthKey: ContextKey<number>;
|
|
45
47
|
/**
|
|
46
48
|
* Session-level capability flags (see {@link SessionCapabilities}). Set
|
|
47
49
|
* on root runs by channel routes and inherited pointwise by subagent
|
package/dist/src/context/keys.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ContextKey}from"#context/key.js";const AuthKey=new ContextKey(`eve.auth`),InitiatorAuthKey=new ContextKey(`eve.initiatorAuth`),SessionIdKey=new ContextKey(`eve.sessionId`),ContinuationTokenKey=new ContextKey(`eve.continuationToken`),ChannelRequestIdKey=new ContextKey(`eve.channelRequestId`),ChannelInstrumentationKey=new ContextKey(`eve.channelInstrumentation`),ModeKey=new ContextKey(`eve.mode`),ParentSessionKey=new ContextKey(`eve.parentSession`),CapabilitiesKey=new ContextKey(`eve.capabilities`),SessionCallbackKey=new ContextKey(`eve.sessionCallback`),SessionKey=new ContextKey(`eve.session`),SandboxKey=new ContextKey(`eve.sandbox`),SessionDynamicToolMetadataKey=new ContextKey(`eve.sessionDynamicToolMetadata`),TurnDynamicToolMetadataKey=new ContextKey(`eve.turnDynamicToolMetadata`),LiveStepToolsKey=new ContextKey(`eve.liveStepTools`),DynamicSkillManifestKey=new ContextKey(`eve.dynamicSkillManifest`),SessionDynamicInstructionsKey=new ContextKey(`eve.sessionDynamicInstructions`),TurnDynamicInstructionsKey=new ContextKey(`eve.turnDynamicInstructions`);export{AuthKey,CapabilitiesKey,ChannelInstrumentationKey,ChannelRequestIdKey,ContinuationTokenKey,DynamicSkillManifestKey,InitiatorAuthKey,LiveStepToolsKey,ModeKey,ParentSessionKey,SandboxKey,SessionCallbackKey,SessionDynamicInstructionsKey,SessionDynamicToolMetadataKey,SessionIdKey,SessionKey,TurnDynamicInstructionsKey,TurnDynamicToolMetadataKey};
|
|
1
|
+
import{ContextKey}from"#context/key.js";const AuthKey=new ContextKey(`eve.auth`),InitiatorAuthKey=new ContextKey(`eve.initiatorAuth`),SessionIdKey=new ContextKey(`eve.sessionId`),ContinuationTokenKey=new ContextKey(`eve.continuationToken`),ChannelRequestIdKey=new ContextKey(`eve.channelRequestId`),ChannelInstrumentationKey=new ContextKey(`eve.channelInstrumentation`),ModeKey=new ContextKey(`eve.mode`),ParentSessionKey=new ContextKey(`eve.parentSession`),SubagentDepthKey=new ContextKey(`eve.subagentDepth`),SubagentMaxDepthKey=new ContextKey(`eve.subagentMaxDepth`),CapabilitiesKey=new ContextKey(`eve.capabilities`),SessionCallbackKey=new ContextKey(`eve.sessionCallback`),SessionKey=new ContextKey(`eve.session`),SandboxKey=new ContextKey(`eve.sandbox`),SessionDynamicToolMetadataKey=new ContextKey(`eve.sessionDynamicToolMetadata`),TurnDynamicToolMetadataKey=new ContextKey(`eve.turnDynamicToolMetadata`),LiveStepToolsKey=new ContextKey(`eve.liveStepTools`),DynamicSkillManifestKey=new ContextKey(`eve.dynamicSkillManifest`),SessionDynamicInstructionsKey=new ContextKey(`eve.sessionDynamicInstructions`),TurnDynamicInstructionsKey=new ContextKey(`eve.turnDynamicInstructions`);export{AuthKey,CapabilitiesKey,ChannelInstrumentationKey,ChannelRequestIdKey,ContinuationTokenKey,DynamicSkillManifestKey,InitiatorAuthKey,LiveStepToolsKey,ModeKey,ParentSessionKey,SandboxKey,SessionCallbackKey,SessionDynamicInstructionsKey,SessionDynamicToolMetadataKey,SessionIdKey,SessionKey,SubagentDepthKey,SubagentMaxDepthKey,TurnDynamicInstructionsKey,TurnDynamicToolMetadataKey};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{deepEquals,eventMatches,subagentCallMatches,testRegExp,toolCallMatches}from"#evals/match.js";import{LOAD_SKILL_TOOL_NAME}from"#runtime/skills/fragment-context.js";const PASS={score:1},fail=(e,t)=>({score:0,message:e,metadata:t});function succeeded(){return{name:`succeeded`,evaluate(e){let t=runFailure(e);return t===void 0?e.derived.parked?fail(`run parked on ${e.derived.inputRequests.length} unanswered input request(s)`):PASS:t}}}function parked(){return{name:`parked`,evaluate(e){let t=runFailure(e);return t===void 0?e.derived.parked?PASS:fail(`expected the run to park on HITL input; it ended "${e.status}" with no pending requests`):t}}}function messageIncludes(e){return{name:`messageIncludes(${String(e)})`,evaluate(t){let n=joinCompletedMessages(t.events);return(typeof e==`string`?n.includes(e):testRegExp(e,n))?PASS:fail(`assistant messages did not include ${String(e)}; got: ${truncate(n)}`)}}}function calledTool(e,t={}){return validateCount(t.count),{name:`calledTool(${e})`,evaluate(n){let r=n.derived.toolCalls.filter(t=>t.name===e),a=r.filter(e=>toolCallMatches(e,t));if(t.count===void 0?a.length>0:a.length===t.count)return{score:1,metadata:{matchingCalls:a.length}};let o=r.length>0?`observed ${e} calls: ${r.map(e=>truncate(JSON.stringify(e.input))).join(`, `)}`:`observed tools: [${n.derived.toolCalls.map(e=>e.name).join(`, `)}]`;return fail(`${t.count===void 0?`expected a matching call to "${e}"`:`expected exactly ${t.count} matching call(s), found ${a.length}`}; ${o}`)}}}function loadedSkill(e,t={}){return{...calledTool(LOAD_SKILL_TOOL_NAME,{...t,input:{skill:e}}),name:`loadedSkill(${e})`}}function notCalledTool(e){return{name:`notCalledTool(${e})`,evaluate(t){let n=t.derived.toolCalls.filter(t=>t.name===e).length;return n===0?PASS:fail(`"${e}" was called ${n} time(s)`)}}}function toolOrder(e){return{name:`toolOrder(${e.join(` → `)})`,evaluate(t){let n=requestedTools(t.events).map(e=>e.name),r=missingOrderedName(e,n);return r===void 0?PASS:fail(`missing "${r.name}" after [${e.slice(0,r.cursor).join(`, `)}]; observed request order: [${n.join(`, `)}]`)}}}function usedNoTools(){return{name:`usedNoTools`,evaluate(e){let t=e.derived.toolCallCount;return t===0?PASS:fail(`expected no tool calls, got ${t}`,{toolCallCount:t})}}}function maxToolCalls(e){return validateCount(e),{name:`maxToolCalls(${e})`,evaluate(t){let n=t.derived.toolCallCount;return n<=e?PASS:fail(`expected at most ${e} tool calls, got ${n}`,{maxAllowed:e,toolCallCount:n})}}}function noFailedActions(){return{name:`noFailedActions`,evaluate(e){let t=e.events.filter(e=>e.type===`action.result`&&(e.data.status===`failed`||e.data.result.isError===!0));if(t.length===0)return PASS;let n=t.map(
|
|
2
|
-
`)}function failureDetail(e,t){return t===void 0?e:`${e} (code: ${t})`}function runFailure(e){if(e.status===`failed`)return fail(failureDetail(`run failed`,e.derived.failureCode));let t=e.events.find(e=>e.type===`turn.failed`||e.type===`step.failed`);return t===void 0?void 0:fail(`${t.type} (${t.data.code}): ${t.data.message}`)}function truncate(e,t=200){return e===void 0?`undefined`:e.length<=t?e:`${e.slice(0,t)}…`}function validateCount(e){if(e!==void 0&&(!Number.isInteger(e)||e<0))throw TypeError(`Assertion count must be a non-negative integer; received ${e}.`)}function missingOrderedName(e,t){let n=0;for(let r of t)if(r===e[n]&&(n+=1),n===e.length)return;let r=e[n];return r===void 0?void 0:{cursor:n,name:r}}function requestedTools(e){let t=[],n=new Set,append=(e,r)=>{n.has(e)||(n.add(e),t.push({callId:e,name:r}))};for(let t of e)if(t.type===`actions.requested`)for(let e of t.data.actions)e.kind===`tool-call`&&append(e.callId,e.toolName);else if(t.type===`input.requested`)for(let e of t.data.requests){let{action:t}=e;t.kind===`tool-call`&&append(t.callId,t.toolName)}return t}export{calledSubagent,calledTool,eventOrder,eventsSatisfy,loadedSkill,maxToolCalls,messageIncludes,noFailedActions,notCalledTool,notEvent,outputEquals,outputMatches,parked,succeeded,toolOrder,typedEvent,usedNoTools};
|
|
1
|
+
import{deepEquals,eventMatches,subagentCallMatches,testRegExp,toolCallMatches}from"#evals/match.js";import{LOAD_SKILL_TOOL_NAME}from"#runtime/skills/fragment-context.js";const PASS={score:1},fail=(e,t)=>({score:0,message:e,metadata:t});function succeeded(){return{name:`succeeded`,evaluate(e){let t=runFailure(e);return t===void 0?e.derived.parked?fail(`run parked on ${e.derived.inputRequests.length} unanswered input request(s)`):PASS:t}}}function parked(){return{name:`parked`,evaluate(e){let t=runFailure(e);return t===void 0?e.derived.parked?PASS:fail(`expected the run to park on HITL input; it ended "${e.status}" with no pending requests`):t}}}function messageIncludes(e){return{name:`messageIncludes(${String(e)})`,evaluate(t){let n=joinCompletedMessages(t.events);return(typeof e==`string`?n.includes(e):testRegExp(e,n))?PASS:fail(`assistant messages did not include ${String(e)}; got: ${truncate(n)}`)}}}function calledTool(e,t={}){return validateCount(t.count),{name:`calledTool(${e})`,evaluate(n){let r=n.derived.toolCalls.filter(t=>t.name===e),a=r.filter(e=>toolCallMatches(e,t));if(t.count===void 0?a.length>0:a.length===t.count)return{score:1,metadata:{matchingCalls:a.length}};let o=r.length>0?`observed ${e} calls: ${r.map(e=>truncate(JSON.stringify(e.input))).join(`, `)}`:`observed tools: [${n.derived.toolCalls.map(e=>e.name).join(`, `)}]`;return fail(`${t.count===void 0?`expected a matching call to "${e}"`:`expected exactly ${t.count} matching call(s), found ${a.length}`}; ${o}`)}}}function loadedSkill(e,t={}){return{...calledTool(LOAD_SKILL_TOOL_NAME,{...t,input:{skill:e}}),name:`loadedSkill(${e})`}}function notCalledTool(e){return{name:`notCalledTool(${e})`,evaluate(t){let n=t.derived.toolCalls.filter(t=>t.name===e).length;return n===0?PASS:fail(`"${e}" was called ${n} time(s)`)}}}function toolOrder(e){return{name:`toolOrder(${e.join(` → `)})`,evaluate(t){let n=requestedTools(t.events).map(e=>e.name),r=missingOrderedName(e,n);return r===void 0?PASS:fail(`missing "${r.name}" after [${e.slice(0,r.cursor).join(`, `)}]; observed request order: [${n.join(`, `)}]`)}}}function usedNoTools(){return{name:`usedNoTools`,evaluate(e){let t=e.derived.toolCallCount;return t===0?PASS:fail(`expected no tool calls, got ${t}`,{toolCallCount:t})}}}function maxToolCalls(e){return validateCount(e),{name:`maxToolCalls(${e})`,evaluate(t){let n=t.derived.toolCallCount;return n<=e?PASS:fail(`expected at most ${e} tool calls, got ${n}`,{maxAllowed:e,toolCallCount:n})}}}function noFailedActions(){return{name:`noFailedActions`,evaluate(e){let t=e.events.filter(e=>e.type===`action.result`&&(e.data.status===`failed`||e.data.result.isError===!0));if(t.length===0)return PASS;let n=t.map(formatFailedActionResult);return fail(`${t.length} failed action(s): ${n.join(`; `)}`,{failedActions:t.map(e=>({callId:e.data.result.callId,error:e.data.error,kind:e.data.result.kind,output:e.data.result.output,status:e.data.status}))})}}}function calledSubagent(e,t={}){return validateCount(t.count),{name:`calledSubagent(${e})`,evaluate(r){let i=r.derived.subagentCalls.filter(t=>t.name===e),a=i.filter(e=>subagentCallMatches(e,t));return(t.count===void 0?a.length>0:a.length===t.count)?{score:1,metadata:{matchingCalls:a.length}}:i.length===0?fail(`subagent "${e}" was never called; observed: [${r.derived.subagentCalls.map(e=>e.name).join(`, `)}]`,{observedSubagentCalls:r.derived.subagentCalls}):fail(`subagent "${e}" was called but ${a.length} call(s) matched the constraints`,{observedSubagentCalls:i})}}}function eventsSatisfy(e,t){return{name:`eventsSatisfy(${e})`,evaluate(n){return t(n.events)?PASS:fail(`event predicate "${e}" did not hold`)}}}function typedEvent(e){return validateCount(e.count),{name:`event(${e.type})`,evaluate(n){let r=n.events.filter(n=>eventMatches(n,e));return(e.count===void 0?r.length>0:r.length===e.count)?{score:1,metadata:{matchingEvents:r.length}}:fail(`expected ${e.count===void 0?`at least one`:`exactly ${e.count}`} matching ${e.type} event(s), found ${r.length}; observed: [${n.events.map(e=>e.type).join(`, `)}]`)}}}function notEvent(e){return{name:`notEvent(${e.type})`,evaluate(n){let r=n.events.filter(n=>eventMatches(n,e));return r.length===0?PASS:fail(`expected no matching ${e.type} events, found ${r.length}`)}}}function eventOrder(e){for(let t of e)validateCount(t.count);return{name:`eventOrder(${e.map(e=>e.type).join(` → `)})`,evaluate(n){let r=-1;for(let i of e){let e=n.events.flatMap((e,n)=>eventMatches(e,i)?[n]:[]);if(!(i.count===void 0?e.length>0:e.length===i.count))return fail(`expected ${i.count===void 0?`at least one`:`exactly ${i.count}`} matching ${i.type} event(s), found ${e.length}`);let a=e[0];if(a===void 0||a<=r)return fail(`event group ${i.type} did not occur after the previous group`);r=e[e.length-1]??r}return PASS}}}function outputEquals(t){return{name:`outputEquals`,evaluate(n){return deepEquals(n.output,t)?PASS:fail(`output ${truncate(JSON.stringify(n.output))} does not equal expected ${truncate(JSON.stringify(t))}`)}}}function outputMatches(e){return{name:`outputMatches`,async evaluate(t){let n=await e[`~standard`].validate(t.output);return!(`issues`in n)||n.issues===void 0?PASS:fail(`output failed schema validation: ${n.issues.map(e=>e.message).join(`; `)}`)}}}function joinCompletedMessages(e){let t=[];for(let n of e)n.type===`message.completed`&&n.data.message!==null&&t.push(n.data.message);return t.join(`
|
|
2
|
+
`)}function failureDetail(e,t){return t===void 0?e:`${e} (code: ${t})`}function formatFailedActionResult(e){let{result:t,status:n}=e.data;return[actionResultLabel(t),`callId=${t.callId}`,`status=${n}`,t.isError===!0?`isError=true`:void 0,e.data.error?.message===void 0?void 0:`error=${e.data.error.message}`,`output=${truncate(formatUnknown(t.output))}`].filter(e=>e!==void 0).join(` `)}function actionResultLabel(e){switch(e.kind){case`tool-result`:return`tool-result:${e.toolName}`;case`subagent-result`:return`subagent-result:${e.subagentName}`;case`load-skill-result`:return e.name===void 0?`load-skill-result`:`load-skill-result:${e.name}`}}function runFailure(e){if(e.status===`failed`)return fail(failureDetail(`run failed`,e.derived.failureCode));let t=e.events.find(e=>e.type===`turn.failed`||e.type===`step.failed`);return t===void 0?void 0:fail(`${t.type} (${t.data.code}): ${t.data.message}`)}function truncate(e,t=200){return e===void 0?`undefined`:e.length<=t?e:`${e.slice(0,t)}…`}function formatUnknown(e){if(e!==void 0){if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return String(e)}}}function validateCount(e){if(e!==void 0&&(!Number.isInteger(e)||e<0))throw TypeError(`Assertion count must be a non-negative integer; received ${e}.`)}function missingOrderedName(e,t){let n=0;for(let r of t)if(r===e[n]&&(n+=1),n===e.length)return;let r=e[n];return r===void 0?void 0:{cursor:n,name:r}}function requestedTools(e){let t=[],n=new Set,append=(e,r)=>{n.has(e)||(n.add(e),t.push({callId:e,name:r}))};for(let t of e)if(t.type===`actions.requested`)for(let e of t.data.actions)e.kind===`tool-call`&&append(e.callId,e.toolName);else if(t.type===`input.requested`)for(let e of t.data.requests){let{action:t}=e;t.kind===`tool-call`&&append(t.callId,t.toolName)}return t}export{calledSubagent,calledTool,eventOrder,eventsSatisfy,loadedSkill,maxToolCalls,messageIncludes,noFailedActions,notCalledTool,notEvent,outputEquals,outputMatches,parked,succeeded,toolOrder,typedEvent,usedNoTools};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getCompiledRuntimeAgentBundle}from"#runtime/sessions/compiled-agent-cache.js";import{createDurableSessionState}from"#execution/durable-session-store.js";import{createSession}from"#execution/session.js";async function createSessionStep(e){"use step";let t=await getCompiledRuntimeAgentBundle({compiledArtifactsSource:e.compiledArtifactsSource,nodeId:e.nodeId});return{state:createDurableSessionState({session:createSession({compactionOverrides:{thresholdPercent:t.resolvedAgent.config.compaction?.thresholdPercent},continuationToken:e.continuationToken,outputSchema:e.outputSchema,rootSessionId:e.rootSessionId,sessionId:e.sessionId,turnAgent:t.turnAgent})})}}export{createSessionStep};
|
|
1
|
+
import{getCompiledRuntimeAgentBundle}from"#runtime/sessions/compiled-agent-cache.js";import{createDurableSessionState}from"#execution/durable-session-store.js";import{createSession}from"#execution/session.js";async function createSessionStep(e){"use step";let t=await getCompiledRuntimeAgentBundle({compiledArtifactsSource:e.compiledArtifactsSource,nodeId:e.nodeId});return{state:createDurableSessionState({session:createSession({compactionOverrides:{thresholdPercent:t.resolvedAgent.config.compaction?.thresholdPercent},continuationToken:e.continuationToken,limits:{maxInputTokensPerSession:t.resolvedAgent.config.limits?.maxInputTokensPerSession,maxOutputTokensPerSession:t.resolvedAgent.config.limits?.maxOutputTokensPerSession},outputSchema:e.outputSchema,rootSessionId:e.rootSessionId,sessionId:e.sessionId,subagentDepth:e.subagentDepth,subagentMaxDepth:e.subagentMaxDepth??t.resolvedAgent.config.limits?.maxSubagentDepth,turnAgent:t.turnAgent})})}}export{createSessionStep};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createLogger,logError}from"#internal/logging.js";import{callAdapterEventHandler}from"#channel/adapter.js";import{AuthKey,CapabilitiesKey,ChannelInstrumentationKey,InitiatorAuthKey}from"#context/keys.js";import{toErrorMessage}from"#shared/errors.js";import{createSubagentCalledEvent,encodeMessageStreamEvent,timestampHandleMessageStreamEvent}from"#protocol/message.js";import{BundleKey,ChannelKey}from"#runtime/sessions/runtime-context-keys.js";import{createDurableSessionState,readDurableSession}from"#execution/durable-session-store.js";import{hydrateDurableSession}from"#execution/session.js";import{deserializeContext}from"#context/serialize.js";import{buildAdapterContext}from"#channel/adapter-context.js";import{getPendingRuntimeActionBatch,recordPendingSubagentChildToken}from"#harness/runtime-actions.js";import{resolveRemoteAgentForAction,startRemoteAgentSession}from"#execution/remote-agent-dispatch.js";import{buildSubagentRunInput}from"#execution/subagent-tool.js";import{createWorkflowRuntime,workflowEntryReference}from"#execution/workflow-runtime.js";const log=createLogger(`execution.dispatch-runtime-actions`);async function dispatchRuntimeActionsStep(e){"use step";let s=await readDurableSession(e.sessionState),
|
|
1
|
+
import{createLogger,logError}from"#internal/logging.js";import{callAdapterEventHandler}from"#channel/adapter.js";import{AuthKey,CapabilitiesKey,ChannelInstrumentationKey,InitiatorAuthKey}from"#context/keys.js";import{toErrorMessage}from"#shared/errors.js";import{createSubagentCalledEvent,encodeMessageStreamEvent,timestampHandleMessageStreamEvent}from"#protocol/message.js";import{BundleKey,ChannelKey}from"#runtime/sessions/runtime-context-keys.js";import{createDurableSessionState,readDurableSession}from"#execution/durable-session-store.js";import{hydrateDurableSession}from"#execution/session.js";import{deserializeContext}from"#context/serialize.js";import{buildAdapterContext}from"#channel/adapter-context.js";import{getPendingRuntimeActionBatch,recordPendingSubagentChildToken}from"#harness/runtime-actions.js";import{resolveRemoteAgentForAction,startRemoteAgentSession}from"#execution/remote-agent-dispatch.js";import{buildSubagentRunInput}from"#execution/subagent-tool.js";import{createWorkflowRuntime,workflowEntryReference}from"#execution/workflow-runtime.js";import{getSubagentDelegationName,isSubagentDelegationAction,resolveSubagentDelegationLimit}from"#harness/subagent-depth.js";const log=createLogger(`execution.dispatch-runtime-actions`);async function dispatchRuntimeActionsStep(e){"use step";let s=await readDurableSession(e.sessionState),f=getPendingRuntimeActionBatch(s.state);if(f===void 0||f.actions.length===0)return{results:[],sessionState:e.sessionState};let p=await deserializeContext(e.serializedContext),m=p.require(BundleKey),h=hydrateDurableSession({compactionOverrides:{thresholdPercent:m.resolvedAgent.config.compaction?.thresholdPercent},durable:s,turnAgent:m.turnAgent}),g=p.require(ChannelKey),_=p.get(AuthKey)??null,v=p.get(CapabilitiesKey),y=p.get(ChannelInstrumentationKey),b=p.get(InitiatorAuthKey)??null,x=e.parentWritable.getWriter(),S=buildAdapterContext(g,p),C=resolveSubagentDelegationLimit(h),w=h,T=[];try{for(let r of f.actions){if(C.reached&&isSubagentDelegationAction(r)){log.warn(`subagent depth limit reached; blocking delegated call`,{callId:r.callId,currentDepth:C.currentDepth,maxDepth:C.maxDepth,nodeId:r.nodeId,subagentName:getSubagentDelegationName(r)}),T.push(createSubagentDepthLimitResult({action:r,delegationLimit:C}));continue}let i,a,o,s;switch(r.kind){case`subagent-call`:{let t=m.subagentRegistry.subagentsByNodeId.get(r.nodeId),n=t?.definition.kind===`subagent`?{description:t.definition.description,type:`local`}:{type:`runtime`},o=createWorkflowRuntime({compiledArtifactsSource:m.compiledArtifactsSource,nodeId:r.nodeId}),{childContinuationToken:c,runInput:l}=buildSubagentRunInput({action:r,auth:_,batchEvent:f.event,capabilities:v,channelMetadata:y,initiatorAuth:b,parentContinuationToken:e.parentContinuationToken,session:h,source:n}),u=await o.run(l);w=recordPendingSubagentChildToken({callId:r.callId,childContinuationToken:c,session:w}),i=u.sessionId,a=r.name,s=r.subagentName;break}case`remote-agent-call`:{let n;try{n=resolveRemoteAgentForAction({nodeId:r.nodeId,remoteAgentName:r.remoteAgentName,registry:m.subagentRegistry.subagentsByNodeId}),i=await startRemoteAgentSession({action:r,callbackBaseUrl:e.callbackBaseUrl,callbackToken:e.parentContinuationToken,remote:n,session:h})}catch(e){logError(log,`remote agent start failed`,e,{remoteAgentName:r.remoteAgentName,nodeId:r.nodeId,callId:r.callId}),T.push(createRemoteAgentStartFailureResult({action:r,error:e}));continue}a=r.name,o={url:n.url},s=r.remoteAgentName;break}default:throw Error(`Unsupported runtime action kind "${r.kind}" in workflow runtime.`)}let d=await callAdapterEventHandler(g,createSubagentCalledEvent({callId:r.callId,childSessionId:i,name:a,remote:o,sequence:f.event.sequence,sessionId:h.sessionId,toolName:s,turnId:f.event.turnId,workflowId:workflowEntryReference.workflowId}),S);await x.write(encodeMessageStreamEvent(timestampHandleMessageStreamEvent(d)))}}finally{x.releaseLock()}return{results:T,sessionState:w===h?e.sessionState:createDurableSessionState({session:w})}}function createRemoteAgentStartFailureResult(e){return{callId:e.action.callId,isError:!0,kind:`subagent-result`,output:{code:`REMOTE_AGENT_START_FAILED`,message:toErrorMessage(e.error)},subagentName:e.action.remoteAgentName}}function createSubagentDepthLimitResult(e){let t=getSubagentDelegationName(e.action);return{callId:e.action.callId,isError:!0,kind:`subagent-result`,output:{code:`SUBAGENT_DEPTH_LIMIT_REACHED`,currentDepth:e.delegationLimit.currentDepth,maxDepth:e.delegationLimit.maxDepth,message:`Subagent depth limit reached (${e.delegationLimit.maxDepth}); "${t}" was not called.`},subagentName:t}}export{dispatchRuntimeActionsStep};
|
|
@@ -69,9 +69,12 @@ export interface DurableSession {
|
|
|
69
69
|
readonly rootSessionId?: string;
|
|
70
70
|
readonly continuationToken: string;
|
|
71
71
|
readonly history: ModelMessage[];
|
|
72
|
+
readonly limits?: HarnessSession["limits"];
|
|
72
73
|
readonly outputSchema?: JsonObject;
|
|
73
74
|
readonly state?: SessionStateMap;
|
|
74
75
|
readonly sandboxState?: SandboxState;
|
|
76
|
+
readonly subagentDepth?: number;
|
|
77
|
+
readonly subagentMaxDepth?: number;
|
|
75
78
|
readonly agent: {
|
|
76
79
|
readonly system: string;
|
|
77
80
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createEveCallbackRoutePath}from"#protocol/routes.js";import{EVE_SESSION_ID_HEADER}from"#protocol/message.js";import{createWorkflowCallbackUrl}from"#execution/workflow-callback-url.js";import{
|
|
1
|
+
import{createEveCallbackRoutePath}from"#protocol/routes.js";import{EVE_SESSION_ID_HEADER}from"#protocol/message.js";import{createWorkflowCallbackUrl}from"#execution/workflow-callback-url.js";import{formatSubagentInput}from"#execution/subagent-invocation.js";async function startRemoteAgentSession(n){let r=n.callbackToken??n.session.continuationToken;if(!r)throw Error(`Cannot dispatch remote agent without a parent continuation token.`);if(!n.callbackBaseUrl)throw Error(`Cannot dispatch remote agent without a callback base URL.`);let i=await resolveRemoteAgentRequestHeaders(n.remote),a=await fetch(createRemoteAgentSessionUrl(n.remote),{body:JSON.stringify({callback:{callId:n.action.callId,subagentName:n.action.remoteAgentName,token:r,url:createWorkflowCallbackUrl(n.callbackBaseUrl,createEveCallbackRoutePath(r))},message:formatRemoteAgentCallInputMessage({action:n.action,remote:n.remote}),mode:`task`,outputSchema:n.action.input.outputSchema??n.remote.outputSchema}),headers:{"content-type":`application/json`,...i},method:`POST`});if(!a.ok)throw Error(`Remote agent "${n.action.remoteAgentName}" create-session request failed with HTTP ${a.status}.`);let o=a.headers.get(EVE_SESSION_ID_HEADER);if(o!==null&&o.length>0)return o;try{let e=await a.json();if(typeof e.sessionId==`string`&&e.sessionId.length>0)return e.sessionId}catch{}throw Error(`Remote agent "${n.action.remoteAgentName}" create-session response did not include a session id.`)}function resolveRemoteAgentForAction(e){let t=e.registry.get(e.nodeId)?.definition;if(t?.kind!==`remote`)throw Error(`Missing remote agent "${e.remoteAgentName}" in runtime registry.`);return t}function createRemoteAgentSessionUrl(e){return new URL(e.path,`${trimTrailingSlash(e.url)}/`).toString()}async function resolveRemoteAgentRequestHeaders(e){let t={};return e.headers!==void 0&&Object.assign(t,typeof e.headers==`function`?await e.headers():e.headers),e.auth!==void 0&&Object.assign(t,(await e.auth()).headers),t}function formatRemoteAgentCallInputMessage(e){let t=typeof e.action.input.message==`string`?e.action.input.message:``;return formatSubagentInput({description:e.remote.description,message:t,name:e.action.remoteAgentName,type:`remote`}).message}function trimTrailingSlash(e){return e.endsWith(`/`)?e.slice(0,-1):e}export{resolveRemoteAgentForAction,startRemoteAgentSession};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{AuthKey,CapabilitiesKey,ChannelInstrumentationKey,ChannelRequestIdKey,ContinuationTokenKey,InitiatorAuthKey,ModeKey,ParentSessionKey,SessionCallbackKey}from"#context/keys.js";import{ContextContainer}from"#context/container.js";import{BundleKey}from"#runtime/sessions/runtime-context-keys.js";import{setChannelContext}from"#execution/channel-context.js";function buildRunContext(t){let{bundle:n,run:r}=t,i=new ContextContainer,a=r.auth;if(i.set(BundleKey,n),setChannelContext(i,r.adapter,{channelName:r.channelName}),r.channelMetadata!==void 0){let e=i.get(ChannelInstrumentationKey);i.set(ChannelInstrumentationKey,{kind:e?.kind??r.channelMetadata.kind,metadata:r.channelMetadata.metadata})}return i.set(ContinuationTokenKey,r.continuationToken??``),i.set(ModeKey,r.mode),i.set(AuthKey,a),i.set(InitiatorAuthKey,r.initiatorAuth??a),r.capabilities!==void 0&&i.set(CapabilitiesKey,r.capabilities),r.requestId!==void 0&&i.set(ChannelRequestIdKey,r.requestId),r.callback!==void 0&&i.set(SessionCallbackKey,r.callback),r.parent!==void 0&&i.set(ParentSessionKey,r.parent),i}export{buildRunContext};
|
|
1
|
+
import{AuthKey,CapabilitiesKey,ChannelInstrumentationKey,ChannelRequestIdKey,ContinuationTokenKey,InitiatorAuthKey,ModeKey,ParentSessionKey,SessionCallbackKey,SubagentDepthKey,SubagentMaxDepthKey}from"#context/keys.js";import{ContextContainer}from"#context/container.js";import{BundleKey}from"#runtime/sessions/runtime-context-keys.js";import{setChannelContext}from"#execution/channel-context.js";function buildRunContext(t){let{bundle:n,run:r}=t,i=new ContextContainer,a=r.auth;if(i.set(BundleKey,n),setChannelContext(i,r.adapter,{channelName:r.channelName}),r.channelMetadata!==void 0){let e=i.get(ChannelInstrumentationKey);i.set(ChannelInstrumentationKey,{kind:e?.kind??r.channelMetadata.kind,metadata:r.channelMetadata.metadata})}return i.set(ContinuationTokenKey,r.continuationToken??``),i.set(ModeKey,r.mode),i.set(AuthKey,a),i.set(InitiatorAuthKey,r.initiatorAuth??a),r.capabilities!==void 0&&i.set(CapabilitiesKey,r.capabilities),r.requestId!==void 0&&i.set(ChannelRequestIdKey,r.requestId),r.callback!==void 0&&i.set(SessionCallbackKey,r.callback),r.parent!==void 0&&i.set(ParentSessionKey,r.parent),r.subagentDepth!==void 0&&i.set(SubagentDepthKey,r.subagentDepth),r.subagentMaxDepth!==void 0&&i.set(SubagentMaxDepthKey,r.subagentMaxDepth),i}export{buildRunContext};
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { DurableSession } from "#execution/durable-session-store.js";
|
|
2
|
-
import type { HarnessSession } from "#harness/types.js";
|
|
2
|
+
import type { HarnessSession, SessionLimits } from "#harness/types.js";
|
|
3
3
|
import type { RuntimeTurnAgent } from "#runtime/agent/bootstrap.js";
|
|
4
|
+
export declare const DEFAULT_ROOT_MAX_INPUT_TOKENS_PER_SESSION = 40000000;
|
|
5
|
+
export declare const DEFAULT_SUBAGENT_MAX_INPUT_TOKENS_PER_SESSION = 5000000;
|
|
4
6
|
/**
|
|
5
7
|
* Creates the durable compaction configuration used by one harness session.
|
|
6
8
|
*/
|
|
@@ -31,7 +33,10 @@ export interface CreateSessionInput {
|
|
|
31
33
|
readonly rootSessionId?: string;
|
|
32
34
|
readonly sessionId: string;
|
|
33
35
|
readonly turnAgent: RuntimeTurnAgent;
|
|
36
|
+
readonly limits?: SessionLimits;
|
|
34
37
|
readonly outputSchema?: HarnessSession["outputSchema"];
|
|
38
|
+
readonly subagentDepth?: number;
|
|
39
|
+
readonly subagentMaxDepth?: number;
|
|
35
40
|
}
|
|
36
41
|
/** Creates a fresh {@link HarnessSession} from the current `turnAgent`. */
|
|
37
42
|
export declare function createSession(input: CreateSessionInput): HarnessSession;
|