eve 0.26.2 → 0.27.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -0
- package/dist/src/channel/resolve-active-session.d.ts +4 -0
- package/dist/src/channel/resolve-active-session.js +1 -0
- package/dist/src/channel/routes.d.ts +11 -0
- package/dist/src/cli/dev/tui/vercel-trusted-sources-policy.d.ts +1 -1
- package/dist/src/cli/dev/tui/vercel-trusted-sources.js +1 -1
- package/dist/src/compiled/.vendor-stamp.json +16 -16
- package/dist/src/compiled/@ai-sdk/anthropic/index.js +2 -2
- package/dist/src/compiled/@ai-sdk/google/index.d.ts +9 -2
- package/dist/src/compiled/@ai-sdk/google/index.js +6 -6
- package/dist/src/compiled/@ai-sdk/mcp/index.d.ts +18 -3
- package/dist/src/compiled/@ai-sdk/mcp/index.js +1 -1
- package/dist/src/compiled/@ai-sdk/openai/index.d.ts +285 -24
- package/dist/src/compiled/@ai-sdk/openai/index.js +2 -2
- package/dist/src/compiled/@ai-sdk/otel/index.js +1 -1
- package/dist/src/compiled/@ai-sdk/provider-utils/index.d.ts +7 -3
- package/dist/src/compiled/@vercel/oidc/index.js +28 -2
- package/dist/src/compiled/@vercel/sandbox/api-client/api-client.d.ts +11 -0
- package/dist/src/compiled/@vercel/sandbox/api-client/validators.d.ts +7 -0
- package/dist/src/compiled/@vercel/sandbox/command.d.ts +8 -0
- package/dist/src/compiled/@vercel/sandbox/execution-context.d.ts +116 -0
- package/dist/src/compiled/@vercel/sandbox/index.d.ts +3 -1
- package/dist/src/compiled/@vercel/sandbox/index.js +20 -19
- package/dist/src/compiled/@vercel/sandbox/network-policy.d.ts +13 -5
- package/dist/src/compiled/@vercel/sandbox/sandbox-user.d.ts +212 -0
- package/dist/src/compiled/@vercel/sandbox/sandbox.d.ts +133 -2
- package/dist/src/compiled/@vercel/sandbox/session.d.ts +2 -1
- package/dist/src/compiled/@vercel/sandbox/snapshot.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/create-hook.d.ts +41 -22
- package/dist/src/compiled/@workflow/core/flushable-stream.d.ts +29 -0
- package/dist/src/compiled/@workflow/core/global.d.ts +2 -0
- package/dist/src/compiled/@workflow/core/index.js +2 -2
- package/dist/src/compiled/@workflow/core/private.d.ts +6 -17
- package/dist/src/compiled/@workflow/core/private.js +1 -1
- package/dist/src/compiled/@workflow/core/replay-payload-cache.d.ts +56 -0
- package/dist/src/compiled/@workflow/core/runtime/constants.d.ts +11 -0
- package/dist/src/compiled/@workflow/core/runtime/helpers.d.ts +6 -4
- package/dist/src/compiled/@workflow/core/runtime/resume-hook.d.ts +4 -1
- package/dist/src/compiled/@workflow/core/runtime/step-executor.d.ts +39 -0
- package/dist/src/compiled/@workflow/core/runtime.js +3 -3
- package/dist/src/compiled/@workflow/core/serialization.d.ts +44 -4
- package/dist/src/compiled/@workflow/core/symbols.d.ts +13 -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/@workflow/errors/error-codes.d.ts +2 -0
- package/dist/src/compiled/@workflow/errors/index.d.ts +14 -0
- package/dist/src/compiled/@workflow/errors/index.js +1 -1
- package/dist/src/compiled/@workflow/world/events.d.ts +15 -0
- package/dist/src/compiled/@workflow/world/hooks.d.ts +2 -1
- package/dist/src/compiled/@workflow/world/interfaces.d.ts +77 -4
- package/dist/src/compiled/@workflow/world-local/index.js +4 -4
- package/dist/src/compiled/@workflow/world-vercel/index.js +16 -16
- package/dist/src/compiled/_chunks/node/{auth-BuQkq4Gr.js → auth-l7F2PF2b.js} +2 -2
- package/dist/src/compiled/_chunks/node/{version-DD-FX9rK.js → version-CjHTLx2a.js} +1 -1
- package/dist/src/compiled/_chunks/node/virtual-loader-Cwgujv7l.js +1 -0
- package/dist/src/compiled/_chunks/workflow/attribute-changes-Dk1fP6vt.js +20 -0
- package/dist/src/compiled/_chunks/workflow/{chunk-BHKSVoKr.js → chunk-BTyA9uPd.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/dist-B3qkUnLJ.js +3 -0
- package/dist/src/compiled/_chunks/workflow/{dist-CSfKNxQW.js → dist-BX517Nmz.js} +2 -2
- package/dist/src/compiled/_chunks/workflow/{dist-zLevmMyU.js → dist-C_VDTghO.js} +10 -10
- package/dist/src/compiled/_chunks/workflow/{dist-CttsoN4D.js → dist-CrxV2rsR.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/{functions-PT9ri9Hu.js → functions-Dv8dc_-I.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/resume-hook-czpG5xnP.js +1 -0
- package/dist/src/compiled/_chunks/workflow/run-6zaMjFY6.js +1 -0
- package/dist/src/compiled/_chunks/workflow/sleep-B2u06FWc.js +1 -0
- package/dist/src/compiled/_chunks/workflow/{src-CQuMexnO.js → src-D1EltLDA.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/{token-CaY0nA5J.js → token-Cz223z3C.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/token-DWqA5-DA.js +1 -0
- package/dist/src/compiled/_chunks/workflow/token-util-B6qBs3-0.js +27 -0
- package/dist/src/compiled/_chunks/workflow/{undici-fb54XL8i.js → undici-C2ZhYnV9.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/wrapper-Cc2otuUR.js +6 -0
- package/dist/src/compiled/env-runner/index.js +1 -1
- package/dist/src/compiled/env-runner/node-worker.js +1 -1
- package/dist/src/compiled/eventsource-parser/stream/index.d.ts +16 -3
- package/dist/src/compiled/jose/index.js +1 -1
- package/dist/src/compiler/compile-from-memory.d.ts +5 -0
- package/dist/src/compiler/compile-from-memory.js +1 -1
- package/dist/src/compiler/extension-compatibility.d.ts +10 -10
- package/dist/src/compiler/extension-compatibility.js +1 -1
- package/dist/src/execution/deliver-payloads.d.ts +1 -1
- package/dist/src/execution/deliver-payloads.js +1 -1
- package/dist/src/execution/workflow-entry.js +1 -1
- package/dist/src/execution/workflow-steps.js +1 -1
- package/dist/src/harness/compaction-prompt.d.ts +19 -1
- package/dist/src/harness/compaction-prompt.js +7 -5
- package/dist/src/harness/compaction.d.ts +4 -11
- package/dist/src/harness/compaction.js +1 -1
- package/dist/src/harness/prompt-cache.d.ts +16 -5
- package/dist/src/harness/prompt-cache.js +1 -1
- package/dist/src/harness/session-limit-continuation.d.ts +8 -0
- package/dist/src/harness/session-limit-continuation.js +1 -1
- package/dist/src/harness/session-limit-enforcement.d.ts +9 -6
- package/dist/src/harness/session-limit-enforcement.js +1 -1
- package/dist/src/harness/stale-input-responses.d.ts +21 -3
- package/dist/src/harness/stale-input-responses.js +2 -2
- package/dist/src/harness/token-estimate.d.ts +9 -0
- package/dist/src/harness/token-estimate.js +1 -0
- package/dist/src/harness/tool-loop.js +2 -2
- package/dist/src/harness/turn-cancellation.d.ts +13 -0
- package/dist/src/harness/turn-cancellation.js +1 -1
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/internal/nitro/host/copy-host-middleware.js +1 -1
- package/dist/src/internal/nitro/routes/channel-dispatch.js +1 -1
- package/dist/src/internal/workflow-bundle/vercel-workflow-output.js +1 -1
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/models/updateprojectblock.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/models/updateprojectprojectsbranchmatcher.js +1 -0
- package/dist/src/packages/eve-catalog/src/index.js +1 -1
- package/dist/src/public/channels/auth.d.ts +59 -9
- package/dist/src/public/channels/auth.js +1 -1
- package/dist/src/public/channels/discord/defaults.js +1 -1
- package/dist/src/public/channels/linear/api.d.ts +2 -0
- package/dist/src/public/channels/linear/api.js +3 -1
- package/dist/src/public/channels/linear/defaults.js +2 -2
- package/dist/src/public/channels/linear/hitl.d.ts +8 -13
- package/dist/src/public/channels/linear/hitl.js +3 -3
- package/dist/src/public/channels/linear/index.d.ts +1 -1
- package/dist/src/public/channels/linear/index.js +1 -1
- package/dist/src/public/channels/linear/linearChannel.js +1 -1
- package/dist/src/public/channels/slack/api.d.ts +20 -0
- package/dist/src/public/channels/slack/api.js +1 -1
- package/dist/src/public/channels/slack/defaults.js +1 -1
- package/dist/src/public/channels/slack/inbound.d.ts +31 -0
- package/dist/src/public/channels/slack/inbound.js +1 -1
- package/dist/src/public/channels/slack/index.d.ts +2 -2
- package/dist/src/public/channels/slack/slackChannel.d.ts +72 -4
- package/dist/src/public/channels/slack/slackChannel.js +1 -1
- package/dist/src/public/channels/teams/defaults.js +2 -2
- package/dist/src/public/channels/teams/index.d.ts +1 -1
- package/dist/src/public/channels/teams/teamsChannel.d.ts +7 -2
- package/dist/src/public/channels/teams/teamsChannel.js +1 -1
- package/dist/src/public/channels/telegram/defaults.js +1 -1
- package/dist/src/public/definitions/channel.d.ts +1 -1
- package/dist/src/public/next/index.js +1 -1
- package/dist/src/public/nuxt/index.d.ts +1 -1
- package/dist/src/public/nuxt/index.js +1 -1
- package/dist/src/public/nuxt/module.d.ts +10 -24
- package/dist/src/public/nuxt/module.js +1 -1
- package/dist/src/public/nuxt/routing.d.ts +5 -39
- package/dist/src/public/nuxt/routing.js +1 -1
- package/dist/src/public/nuxt/vercel-services.d.ts +117 -0
- package/dist/src/public/nuxt/vercel-services.js +1 -0
- package/dist/src/runtime/framework-tools/connection-search-dynamic.js +2 -1
- package/dist/src/runtime/framework-tools/todo.js +1 -1
- package/dist/src/runtime/governance/auth/http-basic.js +1 -1
- package/dist/src/setup/scaffold/create/add-to-project.js +1 -1
- package/dist/src/setup/scaffold/create/project.js +2 -2
- package/dist/src/setup/scaffold/create/web-template.d.ts +1 -1
- package/dist/src/setup/scaffold/create/web-template.js +90 -5
- package/dist/src/setup/scaffold/update/channels.js +2 -2
- package/dist/src/setup/scaffold/update/connections.js +1 -1
- package/dist/src/{public/next → shared}/resolve-eve-binary.d.ts +1 -1
- package/docs/agent-config.md +10 -5
- package/docs/channels/slack.mdx +76 -10
- package/docs/channels/teams.mdx +10 -3
- package/docs/extensions.md +115 -77
- package/docs/guides/auth-and-route-protection.md +14 -1
- package/docs/guides/deployment/vercel.mdx +1 -1
- package/docs/guides/frontend/nuxt.mdx +22 -1
- package/docs/guides/frontend/overview.mdx +2 -0
- package/docs/meta.json +1 -0
- package/package.json +22 -22
- package/dist/src/compiled/@workflow/core/step-hydration-cache.d.ts +0 -148
- package/dist/src/compiled/_chunks/node/virtual-loader-B8K8w9cr.js +0 -1
- package/dist/src/compiled/_chunks/workflow/attribute-changes-CXiYB8h9.js +0 -20
- package/dist/src/compiled/_chunks/workflow/dist-BYo8Gno2.js +0 -3
- package/dist/src/compiled/_chunks/workflow/resume-hook-CHXbXuRZ.js +0 -1
- package/dist/src/compiled/_chunks/workflow/run-BjtAGa3_.js +0 -1
- package/dist/src/compiled/_chunks/workflow/sleep-BJAv0MFP.js +0 -1
- package/dist/src/compiled/_chunks/workflow/token-D4VIwGlD.js +0 -1
- package/dist/src/compiled/_chunks/workflow/wrapper-ulTvoTdW.js +0 -6
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/models/updateprojectprojectsaction.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/models/updateprojectprojectsoptionsallowlist.js +0 -1
- package/dist/src/public/nuxt/vercel-json.d.ts +0 -17
- package/dist/src/public/nuxt/vercel-json.js +0 -1
- /package/dist/src/node_modules/.pnpm/{@vercel_sdk@1.28.1 → @vercel_sdk@1.28.8}/node_modules/@vercel/sdk/esm/lib/primitives.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_sdk@1.28.1 → @vercel_sdk@1.28.8}/node_modules/@vercel/sdk/esm/lib/schemas.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_sdk@1.28.1 → @vercel_sdk@1.28.8}/node_modules/@vercel/sdk/esm/models/aclaction.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_sdk@1.28.1 → @vercel_sdk@1.28.8}/node_modules/@vercel/sdk/esm/models/sdkvalidationerror.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_sdk@1.28.1 → @vercel_sdk@1.28.8}/node_modules/@vercel/sdk/esm/types/defaultToZeroValue.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_sdk@1.28.1 → @vercel_sdk@1.28.8}/node_modules/@vercel/sdk/esm/types/fp.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_sdk@1.28.1 → @vercel_sdk@1.28.8}/node_modules/@vercel/sdk/esm/types/primitives.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_sdk@1.28.1 → @vercel_sdk@1.28.8}/node_modules/@vercel/sdk/esm/types/rfcdate.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_sdk@1.28.1 → @vercel_sdk@1.28.8}/node_modules/@vercel/sdk/esm/types/smartUnion.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_sdk@1.28.1 → @vercel_sdk@1.28.8}/node_modules/@vercel/sdk/esm/types/unrecognized.js +0 -0
- /package/dist/src/{public/next → shared}/resolve-eve-binary.js +0 -0
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* 1. {@link applySessionLimitContinuation} runs after pending-input
|
|
7
7
|
* resolution and acts on the user's answer to a continuation prompt —
|
|
8
|
-
* grant a fresh budget window, or
|
|
8
|
+
* grant a fresh budget window, or cancel the in-flight turn tree.
|
|
9
9
|
* 2. {@link enforceSessionTokenLimit} runs before each model call and, when
|
|
10
10
|
* the session is over budget, parks it on the deterministic continuation
|
|
11
11
|
* prompt (sessions that can reach a human) or fails it (task-mode sessions
|
|
@@ -25,11 +25,14 @@ interface SessionLimitPolicyInput {
|
|
|
25
25
|
*
|
|
26
26
|
* Granted: resets the token budget windows via
|
|
27
27
|
* {@link extendSessionTokenBudget} and lets the step continue transparently.
|
|
28
|
-
* Declined: a user decision, not an error —
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
28
|
+
* Declined: a user decision, not an error — the decline cancels the
|
|
29
|
+
* in-flight turn tree through the standard cancellation path, settling as
|
|
30
|
+
* `turn.cancelled` → `session.waiting` with no failure surfaced anywhere.
|
|
31
|
+
* The harness only declares the intent by throwing
|
|
32
|
+
* {@link SessionLimitDeclinedError}; the execution layer detects it at the
|
|
33
|
+
* step boundary and cancels the root turn, whose cancelled arm cascades to
|
|
34
|
+
* every descendant, so the delegating parent never receives an error result
|
|
35
|
+
* it could retry against a fresh budget share.
|
|
33
36
|
*
|
|
34
37
|
* Returns `result: null` when the step should continue with `session`.
|
|
35
38
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createInputRequestedEvent
|
|
1
|
+
import{createInputRequestedEvent}from"#protocol/message.js";import{emitFailedStep,emitTurnEpilogue,setHarnessEmissionState}from"#harness/emission.js";import{SessionLimitDeclinedError}from"#harness/turn-cancellation.js";import{setPendingInputBatch}from"#harness/input-requests.js";import{extendSessionTokenBudget,getSessionTokenLimitViolation,getSessionTokenUsage}from"#harness/turn-tag-state.js";import{createSessionLimitContinuationRequest}from"#harness/session-limit-continuation.js";async function applySessionLimitContinuation(e){if(e.limitContinuation===void 0)return{result:null,session:e.session};if(e.limitContinuation.granted)return{result:null,session:extendSessionTokenBudget(e.session)};if(!(e.config.mode===`conversation`||e.session.continuationToken!==``)){let t=getSessionTokenLimitViolation(e.session);return{result:t===null?{next:{done:!0,output:``},session:e.session}:await failSessionTokenLimit({...e,violation:t}),session:e.session}}throw new SessionLimitDeclinedError}async function enforceSessionTokenLimit(e){let t=getSessionTokenLimitViolation(e.session);if(t===null)return null;let{emit:n}=e;return n!==void 0&&(e.config.mode===`conversation`||e.config.capabilities?.requestInput===!0)?parkOnSessionTokenLimit({...e,emit:n,violation:t}):failSessionTokenLimit({...e,violation:t})}async function parkOnSessionTokenLimit(t){let i=getSessionTokenUsage(t.session),a=createSessionLimitContinuationRequest({sessionId:t.session.sessionId,totalUsedTokens:t.violation.kind===`input`?i.inputTokens:i.outputTokens,violation:t.violation}),o=t.emissionState,s=setPendingInputBatch({event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},requests:[a],responseMessages:[],session:{...t.session,history:[...t.messages]}});return await t.emit(createInputRequestedEvent({requests:[a],sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId})),t.config.mode===`conversation`&&(o=await emitTurnEpilogue(t.emit,o,t.config.mode,s.continuationToken)),{next:null,session:setHarnessEmissionState(s,o)}}function formatSessionTokenLimitMessage(e){return`The session reached its configured ${e} token limit.`}async function failSessionTokenLimit(e){let n=getSessionTokenUsage(e.session),r=formatSessionTokenLimitMessage(e.violation.kind),i={inputTokens:n.inputTokens,kind:e.violation.kind,limit:e.violation.limit,outputTokens:n.outputTokens,usedTokens:e.violation.usedTokens};return e.emit&&await emitFailedStep(e.emit,e.emissionState,{code:`SESSION_TOKEN_LIMIT_REACHED`,details:i,message:r,sessionId:e.session.sessionId}),{next:{done:!0,isError:e.config.mode===`task`?!0:void 0,output:e.config.mode===`task`?r:``},session:e.session}}export{applySessionLimitContinuation,enforceSessionTokenLimit};
|
|
@@ -9,14 +9,32 @@ type StaleResponseConversion = {
|
|
|
9
9
|
readonly stepInput: StepInput;
|
|
10
10
|
};
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
12
|
+
* Filter pass: removes stale answers to session-limit continuation prompts
|
|
13
|
+
* from the step input before any stale handling runs.
|
|
14
|
+
*
|
|
15
|
+
* These are dropped rather than converted: surfacing a stale "Stop" as
|
|
16
|
+
* conversational prose would read fail-open, and a stale grant must not
|
|
17
|
+
* extend any budget — a currently pending prompt (if any) stays parked and
|
|
18
|
+
* re-raises. Stripping the responses also keeps them from resolving (and
|
|
19
|
+
* clearing) a pending batch they never answered. Answers to a currently
|
|
20
|
+
* pending continuation prompt pass through untouched.
|
|
21
|
+
*/
|
|
22
|
+
export declare function dropStaleSessionLimitContinuationResponses(input: {
|
|
23
|
+
readonly pendingRequestIds: ReadonlySet<string>;
|
|
24
|
+
readonly stepInput?: StepInput;
|
|
25
|
+
}): StepInput | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Transformation pass: a response is stale when its request ID is not in
|
|
28
|
+
* the currently pending HITL batch — the request was already answered,
|
|
29
|
+
* cleared by a follow-up message, or cancelled.
|
|
15
30
|
*
|
|
16
31
|
* Responses for pending requests stay structured; stale responses become
|
|
17
32
|
* plain user-message text. A stale response never reaches structured HITL
|
|
18
33
|
* processing, so a stale approval cannot authorize an earlier tool call.
|
|
19
34
|
* Request details recovered from history are best-effort model context.
|
|
35
|
+
*
|
|
36
|
+
* Assumes {@link dropStaleSessionLimitContinuationResponses} already ran:
|
|
37
|
+
* stale continuation answers must never reach this conversion.
|
|
20
38
|
*/
|
|
21
39
|
export declare function convertStaleResponsesToUserMessage(input: {
|
|
22
40
|
readonly history: readonly ModelMessage[];
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{appendUserContent,normalizeUserContent}from"#harness/messages.js";import{isApprovalRequest}from"#harness/input-requests.js";import{extractHistoricalInputRequests}from"#harness/input-extraction.js";function convertStaleResponsesToUserMessage(e){let t=e.stepInput?.inputResponses;if(e.stepInput===void 0||t===void 0||t.length===0)return{kind:`unchanged`,stepInput:e.stepInput};let n=[],
|
|
1
|
+
import{appendUserContent,normalizeUserContent}from"#harness/messages.js";import{isApprovalRequest}from"#harness/input-requests.js";import{isSessionLimitContinuationRequestId}from"#harness/session-limit-continuation.js";import{extractHistoricalInputRequests}from"#harness/input-extraction.js";function dropStaleSessionLimitContinuationResponses(e){let t=e.stepInput?.inputResponses;if(e.stepInput===void 0||t===void 0||t.length===0)return e.stepInput;let n=t.filter(t=>e.pendingRequestIds.has(t.requestId)||!isSessionLimitContinuationRequestId(t.requestId));if(n.length===t.length)return e.stepInput;let{inputResponses:i,...a}=e.stepInput;return n.length===0?a:{...a,inputResponses:n}}function convertStaleResponsesToUserMessage(e){let t=e.stepInput?.inputResponses;if(e.stepInput===void 0||t===void 0||t.length===0)return{kind:`unchanged`,stepInput:e.stepInput};let n=[],r=[];for(let i of t)e.pendingRequestIds.has(i.requestId)?n.push(i):r.push(i);if(r.length===0)return{kind:`unchanged`,stepInput:e.stepInput};let a=extractHistoricalInputRequests({history:e.history,requestIds:new Set(r.map(e=>e.requestId))}),o=appendOptionalUserContent(e.stepInput.message,formatModelMessage(r,a)),s=appendOptionalUserContent(e.stepInput.message,formatDisplayMessage(r,a)),{inputResponses:c,...l}=e.stepInput,u={...l,message:o};return n.length>0&&(u.inputResponses=n),{displayMessage:s,kind:`converted`,stepInput:u}}function formatModelMessage(e,t){let r=e.map(e=>{let r=t.get(e.requestId),i=r?.options?.find(t=>t.id===e.optionId),a={};if(e.optionId!==void 0&&(a.optionId=e.optionId),i!==void 0){let e={id:i.id,label:i.label};i.description!==void 0&&(e.description=i.description),a.selectedOption=e}e.text!==void 0&&(a.text=e.text);let o={requestId:e.requestId,response:a};return r!==void 0&&(o.prompt=r.prompt,o.requestType=isApprovalRequest(r)?`approval`:`question`),o});return[`The user submitted the following response to an earlier interactive prompt.`,`Treat it as new input at the current point in the conversation and decide whether it is still relevant.${e.some(e=>{let r=t.get(e.requestId);return r===void 0||isApprovalRequest(r)})?` This does not authorize an earlier action; request approval again if that action is still needed.`:``}`,JSON.stringify(r,null,2)].join(`
|
|
2
2
|
`)}function formatDisplayMessage(e,t){return e.map(e=>e.text!==void 0&&e.text.length>0?e.text:t.get(e.requestId)?.options?.find(t=>t.id===e.optionId)?.label??e.optionId??`Response to an earlier interactive prompt`).join(`
|
|
3
|
-
`)}function appendOptionalUserContent(n,r){let i=normalizeUserContent(n);return i===void 0?r:appendUserContent({appended:r,existing:i})}export{convertStaleResponsesToUserMessage};
|
|
3
|
+
`)}function appendOptionalUserContent(n,r){let i=normalizeUserContent(n);return i===void 0?r:appendUserContent({appended:r,existing:i})}export{convertStaleResponsesToUserMessage,dropStaleSessionLimitContinuationResponses};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rough token estimate: serialized JSON length / 4. Good enough for
|
|
3
|
+
* deciding whether compaction is needed; the real token count comes back
|
|
4
|
+
* from the model each step via `CompactionConfig.lastKnownInputTokens`.
|
|
5
|
+
*
|
|
6
|
+
* Accepts any JSON-serializable value so callers can apply the same heuristic
|
|
7
|
+
* to whole message arrays or individual content parts on one consistent ruler.
|
|
8
|
+
*/
|
|
9
|
+
export declare function estimateTokens(value: unknown): number;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function estimateTokens(e){return JSON.stringify(e).length/4}export{estimateTokens};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{createErrorId,createLogger,formatError,logError,recordErrorOnSpan}from"#internal/logging.js";import{isScheduleAppAuth}from"#channel/schedule-auth.js";import{AuthKey,ParentSessionKey}from"#context/keys.js";import{resolveInstalledPackageInfo}from"#internal/application/package.js";import{toErrorMessage}from"#shared/errors.js";import{createActionResultEvent,createAuthorizationRequiredEvent,createCompactionCompletedEvent,createCompactionRequestedEvent,createInputRequestedEvent,createResultCompletedEvent,createStepStartedEvent}from"#protocol/message.js";import{summarizeKnownError}from"#harness/semantic-errors/index.js";import{resolveProviderHeaders}from"#internal/gateway.js";import{formatLanguageModelGatewayId}from"#internal/runtime-model.js";import{contextStorage}from"#context/container.js";import{advanceStep,emitFailedStep,emitRecoverableFailedTurn,emitStepStarted,emitStreamContent,emitTurnEpilogue,emitTurnPreamble,getHarnessEmissionState,setHarnessEmissionState}from"#harness/emission.js";import{ToolLoopAgent,isStepCount}from"ai";import{createRuntimeActionRequestFromToolCall,resolvePendingRuntimeActions,setPendingRuntimeActionBatch}from"#harness/runtime-actions.js";import{clearPendingWorkflowInterrupt,getPendingWorkflowInterrupt,setPendingWorkflowInterrupt}from"#harness/workflow-interrupt-state.js";import{getWorkflowRuntimeActionInterrupts,isWorkflowRuntimeActionInterrupt}from"#harness/workflow-runtime-action-state.js";import{getActiveDynamicModelSelection}from"#context/dynamic-model-lifecycle.js";import{context,trace}from"#compiled/@opentelemetry/api/index.js";import{isAuthorizationSignal,setPendingAuthorization}from"#harness/authorization.js";import{throwIfTurnAborted}from"#harness/turn-cancellation.js";import{
|
|
1
|
+
import{createErrorId,createLogger,formatError,logError,recordErrorOnSpan}from"#internal/logging.js";import{isScheduleAppAuth}from"#channel/schedule-auth.js";import{AuthKey,ParentSessionKey}from"#context/keys.js";import{resolveInstalledPackageInfo}from"#internal/application/package.js";import{toErrorMessage}from"#shared/errors.js";import{createActionResultEvent,createAuthorizationRequiredEvent,createCompactionCompletedEvent,createCompactionRequestedEvent,createInputRequestedEvent,createResultCompletedEvent,createStepStartedEvent}from"#protocol/message.js";import{summarizeKnownError}from"#harness/semantic-errors/index.js";import{resolveProviderHeaders}from"#internal/gateway.js";import{formatLanguageModelGatewayId}from"#internal/runtime-model.js";import{contextStorage}from"#context/container.js";import{advanceStep,emitFailedStep,emitRecoverableFailedTurn,emitStepStarted,emitStreamContent,emitTurnEpilogue,emitTurnPreamble,getHarnessEmissionState,setHarnessEmissionState}from"#harness/emission.js";import{ToolLoopAgent,isStepCount}from"ai";import{createRuntimeActionRequestFromToolCall,resolvePendingRuntimeActions,setPendingRuntimeActionBatch}from"#harness/runtime-actions.js";import{normalizeUserContent,resolveAssistantStepText}from"#harness/messages.js";import{clearPendingWorkflowInterrupt,getPendingWorkflowInterrupt,setPendingWorkflowInterrupt}from"#harness/workflow-interrupt-state.js";import{getWorkflowRuntimeActionInterrupts,isWorkflowRuntimeActionInterrupt}from"#harness/workflow-runtime-action-state.js";import{getActiveDynamicModelSelection}from"#context/dynamic-model-lifecycle.js";import{context,trace}from"#compiled/@opentelemetry/api/index.js";import{isAuthorizationSignal,setPendingAuthorization}from"#harness/authorization.js";import{throwIfTurnAborted}from"#harness/turn-cancellation.js";import{buildDynamicInstructionMessages}from"#context/dynamic-instruction-lifecycle.js";import{PendingSkillAnnouncementKey}from"#context/dynamic-skill-lifecycle.js";import{consumeDeferredStepInput,getApprovedTools,getPendingInputRequestIds,hasDeferredStepInput,hasStepInput,resolvePendingInput,setPendingInputBatch}from"#harness/input-requests.js";import{accumulateTurnUsage,getTurnUsageState,setTurnUsageState}from"#harness/turn-tag-state.js";import{getWorkflowContinuationSecurity,readWorkflowContinuationSecurity}from"#harness/workflow-continuation-security.js";import{buildWorkflowHostTools,resolveWorkflowSandboxBridgeRequestLimit}from"#harness/workflow-sandbox.js";import{CONDITIONAL_DELIVERY_INSTRUCTION,EMPTY_DELIVERY_SENTINEL,hasEmptyDeliverySentinel}from"#shared/empty-delivery.js";import{createToolResultMessagePartFromToolError}from"#harness/action-result-helpers.js";import{getInvalidToolCallInputError,isInvalidToolCall}from"#harness/tool-call-input-errors.js";import{EmptyModelResponseError,classifyModelCallError,extractModelCallErrorDetails,extractUnsupportedProviderToolTypes,extractUpstreamRejectionMessage,isNoOutputGeneratedError}from"#harness/model-call-error.js";import{readToolInterrupt}from"#harness/tool-interrupts.js";import{ASK_QUESTION_TOOL_NAME}from"#runtime/framework-tools/ask-question.js";import{extractQuestionInputRequests,extractToolApprovalInputRequests}from"#harness/input-extraction.js";import{applyLastToolCacheBreakpoint,applySystemCacheBreakpoint,detectPromptCachePath,getAnthropicCacheMarker}from"#harness/prompt-cache.js";import{buildDynamicTools}from"#context/build-dynamic-tools.js";import{hydrateSandboxAttachments,stageAttachmentsToSandbox}from"#harness/attachment-staging.js";import{createWorkflowLifecycle}from"#harness/workflow-lifecycle.js";import{compactMessages,getInputTokenCount,resolveCompactionModel,shouldCompact}from"#harness/compaction.js";import{applySessionLimitContinuation,enforceSessionTokenLimit}from"#harness/session-limit-enforcement.js";import{setEveAttributes}from"#runtime/attributes/emit.js";import{buildTelemetryRuntimeContext}from"#harness/instrumentation-runtime-context.js";import{convertStaleResponsesToUserMessage,dropStaleSessionLimitContinuationResponses}from"#harness/stale-input-responses.js";import{getInstrumentationConfig}from"#harness/instrumentation-config.js";import{normalizeProviderToolHistory}from"#harness/provider-tool-history.js";import{extractWorkflowStreamWriteErrorDetails}from"#harness/workflow-stream-error.js";import{ensureOtelIntegration}from"#harness/otel-integration.js";import{getAdvertisedTools}from"#harness/advertised-tools.js";import{resolveFrameworkToolFromUpstreamType}from"#harness/provider-tools.js";import{buildStepHooks,emitStepActions}from"#harness/step-hooks.js";import{buildToolApproval,buildToolSetFromDefinitions,buildToolSetWithProviderTools}from"#harness/tools.js";import{continueWorkflowSandboxInterrupt,getWorkflowSandboxInterrupt,unwrapWorkflowSandboxResult}from"#shared/workflow-sandbox.js";import{FINAL_OUTPUT_TOOL_NAME,buildFinalOutputTool}from"#runtime/framework-tools/final-output.js";const environment=process.env.NODE_ENV??`unknown`,eveVersion=resolveInstalledPackageInfo().version,log=createLogger(`harness.tool-loop`);function logToolExecutionError(e){e.toolOutput.type===`tool-error`&&logError(log,`tool execution failed`,e.toolOutput.error,{toolName:e.toolCall.toolName,toolCallId:e.toolCall.toolCallId})}function enrichTelemetry(e,t,n){if(e===void 0)return;let r={};for(let e of Object.keys(n??{}))r[e]=!0;return{functionId:e.functionId??t,includeRuntimeContext:r,isEnabled:!0,recordInputs:e.recordInputs??!0,recordOutputs:e.recordOutputs??!0}}function mergeSystemInstructions(e){if(e.length===0)return;if(e.length===1)return{...e[0]};let t;for(let n of e)n.providerOptions!==void 0&&(t={...t,...n.providerOptions});let n={role:`system`,content:e.map(e=>e.content).join(`
|
|
2
2
|
|
|
3
|
-
`)};return t!==void 0&&(n.providerOptions=t),n}function buildGatewayAttributionHeaders(e,t){let n=resolveProviderHeaders(e);if(n===void 0)return;let r=t?.agentName??t?.agentId,i=process.env.VERCEL_PROJECT_PRODUCTION_URL||process.env.VERCEL_URL,a=i?`https://${i}`:void 0,o={...n};return r&&(o[`x-title`]=r),a&&(o[`http-referer`]=a),o}async function resolveActiveRuntimeModel(e){if(e.ctx===void 0)return{model:await e.config.resolveModel(e.session.agent.modelReference),session:e.session};let t=e.session.agent.dynamicModelDefaultReference??e.session.agent.modelReference,n=getActiveDynamicModelSelection(e.ctx);return n===null?{model:await e.config.resolveModel(t),session:updateSessionModelReference(e.session,t)}:{model:n.model===void 0?await e.config.resolveModel(n.reference):n.model,session:updateSessionModelReference(e.session,n.reference)}}function updateSessionModelReference(e,t){let n=e.agent.modelReference;return{...e,agent:{...e.agent,modelReference:t},compaction:updateCompactionThresholdForModelReference({compaction:e.compaction,modelReference:t,priorReference:n})}}function updateCompactionThresholdForModelReference(e){if(e.modelReference.contextWindowTokens===void 0||e.priorReference.contextWindowTokens===void 0)return e.compaction;let t=e.compaction.threshold/e.priorReference.contextWindowTokens;return{...e.compaction,threshold:Math.max(1,Math.floor(e.modelReference.contextWindowTokens*t))}}const TURN_TRACE_STATE_KEY=`eve.harness.turnTrace`;function getTurnTraceState(e){return e.state?.[TURN_TRACE_STATE_KEY]}function setTurnTraceState(e,t){let n={traceId:t.traceId,spanId:t.spanId,traceFlags:t.traceFlags};return{...e,state:{...e.state,[TURN_TRACE_STATE_KEY]:n}}}function resolveStepOtelContext(e,t,n){if(t)return trace.setSpan(context.active(),t);if(e){let e=getTurnTraceState(n);if(e){let t=trace.wrapSpanContext({traceId:e.traceId,spanId:e.spanId,traceFlags:e.traceFlags});return trace.setSpan(context.active(),t)}}}function createToolLoopHarness(t){let n=t.handleEvent,c=getInstrumentationConfig();c!==void 0&&ensureOtelIntegration();let d=c===void 0?void 0:trace.getTracer(`eve`),f=t.runtimeIdentity?.agentName;async function runStep(e,t){let n;if(d&&hasStepInput(t)){let t=c?.functionId??f,r={"eve.version":eveVersion,"eve.environment":environment,"eve.session.id":e.sessionId};t&&(r[`ai.telemetry.functionId`]=t),n=d.startSpan(`ai.eve.turn`,{attributes:r})}let r=resolveStepOtelContext(d,n,e),executeStep=()=>executeStepBody(e,t,n);try{return r?await context.with(r,executeStep):await executeStep()}finally{n?.end()}}async function executeStepBody(d,p,m){let h=d;m&&(h=setTurnTraceState(h,m.spanContext()));let v=getHarnessEmissionState(h.state),x=consumeDeferredStepInput({input:p,session:h});h=x.session;let O=await resolvePendingRuntimeActions({emit:n,session:h,stepInput:x.input});if(O.outcome===`unresolved`)return{next:null,session:O.session};h=O.session;let A=convertStaleResponsesToUserMessage({history:O.messages,pendingRequestIds:getPendingInputRequestIds(h.state),stepInput:x.input}),j=A.stepInput,M=A.kind===`converted`?{...j,message:A.displayMessage}:j,N=resolvePendingInput({history:O.messages,resolveApprovalKey:resolveApprovalKeyFromTools(t.tools),session:h,stepInput:j});if(N.outcome===`unresolved`)return n&&N.deferredMessage===!0&&hasStepInput(p)?(v=await emitTurnPreamble(n,M??{},v,t.runtimeIdentity),v=await emitTurnEpilogue(n,v,t.mode,N.session.continuationToken),{next:null,session:setHarnessEmissionState(N.session,v)}):{next:null,session:N.session};if(n&&N.rejectedActions)for(let e of N.rejectedActions.results)await n(createActionResultEvent({rejected:!0,result:e,sequence:N.rejectedActions.event.sequence,stepIndex:N.rejectedActions.event.stepIndex,turnId:N.rejectedActions.event.turnId}));n&&hasStepInput(p)&&(v=await emitTurnPreamble(n,M??{},v,t.runtimeIdentity),h=setHarnessEmissionState(h,v),m&&m.setAttribute(`eve.turn.id`,v.turnId)),h=N.session;let P=N.messages,F=await applySessionLimitContinuation({config:t,emit:n,emissionState:v,limitContinuation:N.limitContinuation,session:h});if(F.result!==null)return F.result;if(h=F.session,j?.context!==void 0&&N.deferredContext!==!0)for(let e of j.context)P.push({content:e,role:`user`});let I=normalizeUserContent(j?.message);if(I!==void 0&&!N.deferredMessage&&!N.consumedMessage){let e=await stageAttachmentsToSandbox(I);P.push({content:e,role:`user`})}let L=contextStorage.getStore();L!==void 0&&t.dispatchDynamicModelEvent!==void 0&&await t.dispatchDynamicModelEvent({ctx:L,event:createStepStartedEvent({sequence:v.sequence,stepIndex:v.stepIndex,turnId:v.turnId}),fallback:h.agent.dynamicModelDefaultReference??h.agent.modelReference,messages:P});let R=await resolveActiveRuntimeModel({config:t,ctx:L,session:h});h=R.session;let z=R.model,B=detectPromptCachePath(z),V=B.kind===`anthropic-direct`?getAnthropicCacheMarker():void 0,H=buildGatewayAttributionHeaders(z,t.runtimeIdentity);({messages:P,session:h}=await maybeCompact({abortSignal:t.abortSignal,emit:n,emissionState:v,messages:P,model:z,onCompaction:t.onCompaction,resolveModel:t.resolveModel,runtimeIdentity:t.runtimeIdentity,session:h,telemetry:enrichTelemetry(c,f)??void 0}));let U=getApprovedTools(h),W=h.outputSchema===void 0&&L!==void 0&&isScheduleAppAuth(L.get(AuthKey))&&L.get(ParentSessionKey)===void 0,G=await hydrateSandboxAttachments(P),K=[],q=[];for(let e of G)e.role===`system`?K.push(e):q.push(e);if(L!==void 0){K.push(...buildDynamicInstructionMessages(L));let e=L.get(PendingSkillAnnouncementKey);e!==void 0&&e.length>0&&K.push({role:`system`,content:e})}W&&K.push({role:`system`,content:CONDITIONAL_DELIVERY_INSTRUCTION});let J=q,prepareModelCallInput=e=>{let t=e?[{role:`system`,content:e}]:[],n=h.agent.system?[{role:`system`,content:h.agent.system}]:[],r=K.length>0||t.length>0?[...t,...n,...K]:void 0,i=r!==void 0&&V?applySystemCacheBreakpoint(r,V):r,a=i===void 0?h.agent.system??void 0:mergeSystemInstructions(i);return{instructions:a,telemetryRuntimeContext:buildTelemetryRuntimeContext({eveVersion,authored:c,emissionState:v,environment,modelInput:{instructions:a,messages:J},session:h})}},runSingleModelCall=async e=>{let{instructions:i,telemetryRuntimeContext:a={}}=e.preparedInput??prepareModelCallInput(e.extraSystemNote);e.retryReason&&(a[`eve.retry.reason`]=e.retryReason);let o=e.trailingUserNote?[...J,{role:`user`,content:e.trailingUserNote}]:J,s=getAdvertisedTools({session:h,tools:t.tools}),l=await buildToolSetWithProviderTools({approvedTools:U,capabilities:t.capabilities,disabledProviderTools:e.disabledProviderTools,modelReference:h.agent.modelReference,tools:s});if(L!==void 0){let n=getAdvertisedTools({session:h,tools:buildDynamicTools(L)}),r=buildToolSetFromDefinitions({approvedTools:U,capabilities:t.capabilities,disabledProviderTools:e.disabledProviderTools,tools:n});for(let[e,t]of Object.entries(r))l[e]=t}h.outputSchema!==void 0&&(l[FINAL_OUTPUT_TOOL_NAME]=buildFinalOutputTool(h.outputSchema));let u=n===void 0?void 0:({tools:e})=>createWorkflowLifecycle({emit:n,emissionState:v,tools:e}),d=t.workflow===!0?{lifecycle:u,maxSubagents:t.workflowMaxSubagents}:void 0,p=await getAdvertisedTools({modelTools:l,session:h,tools:s,workflow:d});h=p.session;let m=p.modelTools,g=V?applyLastToolCacheBreakpoint(m,V):m,y=buildStepHooks({cachePath:B,emit:n,emissionState:v,emitStepStarted:e.suppressStepStartedEmission!==!0,marker:V,session:h}),b=new ToolLoopAgent({headers:H,instructions:i,model:z,onToolExecutionEnd:logToolExecutionError,onError(e){summarizeKnownError(e.error)?.tags.includes(`config`)!==!0&&logError(log,`tool-loop stream error`,e.error)},onStepFinish:y.onStepFinish,prepareStep:y.prepareStep,reasoning:h.agent.reasoning,runtimeContext:a,stopWhen:isStepCount(1),telemetry:enrichTelemetry(c,f,a),toolApproval:buildToolApproval(m),tools:g});return(async()=>{if(n){let e=[...t.tools].filter(([e,t])=>t.runtimeAction!==void 0&&s.get(e)===void 0).map(([e])=>e),r=new Set([ASK_QUESTION_TOOL_NAME,FINAL_OUTPUT_TOOL_NAME,...e]),i=await b.stream({abortSignal:t.abortSignal,messages:o}),{emittedActionCallIds:a,handledInlineToolResultCallIds:c,invalidInputToolCallIds:l,inlineAuthorizationResults:u,trailingInlineToolResultParts:d}=await emitStreamContent(n,v,i.fullStream,{excludedActionToolNames:r,tools:t.tools});throwIfTurnAborted(t.abortSignal);let[f,p]=await Promise.all([y.stepResult,i.responseMessages]);if(isEmptyModelResponse(f)&&extractToolResultCallIds(p).size===0&&u.length===0&&d.length===0)throw new EmptyModelResponseError;await emitStepActions(n,v,f,{emittedActionCallIds:a,excludedActionCallIds:l,excludedActionToolNames:r,handledInlineToolResultCallIds:c,tools:s});let m=f.toolResults,h=new Map(m.map(e=>[e.toolCallId,e]));for(let e of u)h.set(e.toolCallId,e);return withAccumulatedResponseMessages({invalidInputToolCallIds:l,responseMessages:appendMissingToolResultMessages({append:d,responseMessages:p}),stepResult:f,toolResults:[...h.values()]})}let e=await b.generate({abortSignal:t.abortSignal,messages:o});throwIfTurnAborted(t.abortSignal);let r=await y.stepResult;if(isEmptyModelResponse(r)&&extractToolResultCallIds(e.responseMessages).size===0)throw new EmptyModelResponseError;return withAccumulatedResponseMessages({responseMessages:e.responseMessages,stepResult:r})})().catch(rethrowNoOutputAsEmptyResponse)},runOneModelCall=async e=>runModelCallWithRetries(t=>runSingleModelCall({...e,preparedInput:t===1?e.preparedInput:void 0,suppressStepStartedEmission:t===1?e.suppressStepStartedEmission:!0}),{sessionId:h.sessionId,turnId:v.turnId},t.abortSignal),ne=prepareModelCallInput();n&&await emitStepStarted(n,v,P);let Y=await continuePendingWorkflowInterrupt({childResults:j?.runtimeActionResults,config:t,emit:n,emissionState:v,runStep,session:h});if(Y!==null)return Y;let X=await enforceSessionTokenLimit({config:t,emit:n,emissionState:v,messages:P,session:h});if(X!==null)return X;let Z;try{Z=await runOneModelCall({preparedInput:ne,suppressStepStartedEmission:!0})}catch(r){throwIfTurnAborted(t.abortSignal);let a=await runModelCallRecoveryPipeline({error:r,stages:[e=>attemptUnsupportedProviderToolRecovery({error:e.error,runOneModelCall,sessionId:h.sessionId,turnId:v.turnId}),e=>attemptEmptyResponseRecovery({emptyDeliveryEnabled:W,error:e.error,retryCallOptions:e.retryCallOptions,runOneModelCall,sessionId:h.sessionId,turnId:v.turnId})]});if(throwIfTurnAborted(t.abortSignal),a.outcome===`recovered`)Z=a.result;else{let r=a.error;if(m&&recordErrorOnSpan(m,r),!n)throw r;let o=extractWorkflowStreamWriteErrorDetails(r);if(o!==null){let t=createErrorId();return log.error(`workflow stream write failed — parking session for retry by the user`,{...o,errorId:t,error:r,sessionId:h.sessionId,turnId:v.turnId}),v=await emitRecoverableFailedTurn(n,v,{code:`WORKFLOW_STREAM_WRITE_FAILED`,continuationToken:h.continuationToken,details:{...o,errorId:t},message:toErrorMessage(r)}),{next:null,session:setHarnessEmissionState(h,v)}}let s=classifyModelCallError(r),c=createErrorId(),u=summarizeKnownError(r),d=u===null?extractUpstreamRejectionMessage(r):null,f=u?.message??d?.message??toErrorMessage(r),p=u?.hint===void 0?f:`${f} ${u.hint}`,g=extractModelCallErrorDetails(r),y=buildModelCallFailureDetails({catalogSummary:u,error:r,errorId:c,modelCallDetails:g,upstreamRejection:d}),b=buildModelCallFailureLogFields({error:r,errorId:c,modelCallDetails:g,recognized:u!==null||d!==null,sessionId:h.sessionId,turnId:v.turnId});if(s===`terminal`)return u===null?log.error(d?.message??`model call failed terminally`,b):log.error(`${u.name}: ${u.message}`,{errorId:c,hint:u.hint,sessionId:h.sessionId,turnId:v.turnId}),await emitFailedStep(n,v,{code:`MODEL_CALL_FAILED`,details:y,message:f,sessionId:h.sessionId}),{next:t.mode===`task`?{done:!0,isError:!0,output:p}:{done:!0,output:``},session:h};if(t.mode===`task`){if(s===`recoverable`&&!(r instanceof EmptyModelResponseError))throw log.warn(d?.message??`model call failed recoverably in task mode — rethrowing for durable step retry`,b),r;return log.error(d?.message??`model call failed; failing the task run`,b),await emitFailedStep(n,v,{code:`MODEL_CALL_FAILED`,details:y,message:f,sessionId:h.sessionId}),{next:{done:!0,isError:!0,output:p},session:h}}return log.error(d?.message??`model call failed — parking session for retry by the user`,b),v=await emitRecoverableFailedTurn(n,v,{code:`MODEL_CALL_FAILED`,continuationToken:h.continuationToken,details:y,message:f}),{next:null,session:setHarnessEmissionState(h,v)}}}let Q=accumulateTurnUsage({previous:getTurnUsageState(h.state),turnId:v.turnId,usage:extractTokenUsageDelta({costUsd:extractGatewayCostUsd(Z.providerMetadata),usage:Z.usage})});h=setTurnUsageState(h,Q);let $;try{$=formatLanguageModelGatewayId(z)}catch{$=void 0}return await setEveAttributes({"$eve.model":$,"$eve.input_tokens":Q.inputTokens,"$eve.output_tokens":Q.outputTokens,"$eve.cache_read_tokens":Q.cacheReadTokens,"$eve.cache_write_tokens":Q.cacheWriteTokens,"$eve.cost_usd":Q.sawCost?Q.costUsd:void 0,"$eve.tool_count":t.tools.size}),handleStepResult({config:t,emit:n,emissionState:v,promptMessages:P,result:Z,runStep,session:h})}return runStep}function extractTokenUsageDelta(e){let t=e.usage;if(!(t===void 0&&e.costUsd===void 0))return{cacheReadTokens:t?.inputTokenDetails?.cacheReadTokens,cacheWriteTokens:t?.inputTokenDetails?.cacheWriteTokens,costUsd:e.costUsd,inputTokens:t?.inputTokens,outputTokens:t?.outputTokens}}function extractGatewayCostUsd(e){let t=readGatewayMetadata(e)?.cost;if(typeof t==`number`&&Number.isFinite(t))return t;if(typeof t==`string`){let e=Number(t);return Number.isFinite(e)?e:void 0}}function readGatewayMetadata(e){let t=e?.gateway;return t&&typeof t==`object`&&!Array.isArray(t)?t:void 0}function buildModelCallFailureDetails(e){let{catalogSummary:t,error:r,errorId:i,modelCallDetails:a,upstreamRejection:o}=e;if(t!==null){let e={errorId:i,message:t.message,name:t.name,semanticErrorId:t.id,...a};return t.hint!==void 0&&(e.hint=t.hint),e}return o===null?{...formatError(r,i),...a}:{errorId:i,message:toErrorMessage(r),name:o.name,...a}}function buildModelCallFailureLogFields(e){let t={errorId:e.errorId,sessionId:e.sessionId,turnId:e.turnId};return e.recognized?{...t,details:e.modelCallDetails}:{...t,error:e.error}}async function runModelCallRecoveryPipeline(e){let t=e.error,n;for(let r of e.stages){let e=await r({error:t,retryCallOptions:n});if(e.outcome===`recovered`)return e;e.outcome===`failed`&&(t=e.error,n=e.retryCallOptions)}return{outcome:`failed`,error:t}}function withAccumulatedResponseMessages(e){let{stepResult:t}=e;return{content:t.content,finishReason:t.finishReason,...e.invalidInputToolCallIds===void 0?{}:{invalidInputToolCallIds:e.invalidInputToolCallIds},providerMetadata:t.providerMetadata,response:{...t.response,messages:[...e.responseMessages]},text:t.text,toolCalls:t.toolCalls,toolResults:e.toolResults===void 0?t.toolResults:[...e.toolResults],usage:t.usage}}function appendMissingToolResultMessages(e){let t=extractToolResultCallIds(e.responseMessages),n=e.append.filter(e=>!t.has(e.toolCallId));return[...e.responseMessages,...n.length>0?[{role:`tool`,content:[...n]}]:[]]}function getInvalidToolCallInputErrors(e){let t=[];for(let n of e.toolCalls){if(n.toolName===FINAL_OUTPUT_TOOL_NAME)continue;let e=getInvalidToolCallInputError({toolCall:n});e!==void 0&&t.push(e)}return t}function extractToolResultCallIds(e){let t=new Set;for(let n of e)if(!(n.role!==`tool`||!Array.isArray(n.content)))for(let e of n.content)e.type===`tool-result`&&t.add(e.toolCallId);return t}async function attemptUnsupportedProviderToolRecovery(e){let t=extractUnsupportedProviderToolTypes(e.error);if(t.length===0)return{outcome:`skipped`};let n=[];for(let e of t){let t=resolveFrameworkToolFromUpstreamType(e);t!==null&&!n.includes(t)&&n.push(t)}if(n.length===0)return{outcome:`skipped`};log.warn(`disabling unsupported provider tool(s); retrying step once`,{disabled:n,sessionId:e.sessionId,turnId:e.turnId,upstreamTypes:t});let r={disabledProviderTools:new Set(n),extraSystemNote:buildDisabledToolNote(n)};try{return{outcome:`recovered`,result:await e.runOneModelCall({...r,suppressStepStartedEmission:!0})}}catch(e){return{outcome:`failed`,error:e,retryCallOptions:r}}}function buildDisabledToolNote(e){let t=e.join(`, `);return`The following ${e.length===1?`tool is`:`tools are`} not available with the current model and has been removed: ${t}. Proceed using the remaining tools or your training knowledge.`}function isEmptyModelResponse(e){return e.toolCalls.length===0&&e.toolResults.length===0&&resolveAssistantStepText(e.response.messages,e.text)===null}function rethrowNoOutputAsEmptyResponse(e){throw isNoOutputGeneratedError(e)?new EmptyModelResponseError({cause:e}):e}const EMPTY_RESPONSE_NUDGE=`Your previous reply was empty and was not delivered. Answer now from the tool results above; do not re-run tools or mention this notice.`;function buildEmptyResponseNudge(e){return e?`${EMPTY_RESPONSE_NUDGE} If the current task explicitly requires conditional delivery and there is nothing to report, reply with exactly ${EMPTY_DELIVERY_SENTINEL}.`:EMPTY_RESPONSE_NUDGE}async function attemptEmptyResponseRecovery(e){if(!(e.error instanceof EmptyModelResponseError))return{outcome:`skipped`};log.warn(`empty model response; reissuing the model call once`,{sessionId:e.sessionId,turnId:e.turnId});try{return{outcome:`recovered`,result:await e.runOneModelCall({...e.retryCallOptions,retryReason:`empty-response`,suppressStepStartedEmission:!0,trailingUserNote:buildEmptyResponseNudge(e.emptyDeliveryEnabled)})}}catch(t){return{outcome:`failed`,error:t,retryCallOptions:e.retryCallOptions}}}async function handleStepResult(e){let{config:t,emit:n,promptMessages:r,result:i,runStep:a}=e,{emissionState:o,session:s}=e,c=resolveAssistantStepText(i.response.messages,i.text),l=i.finishReason!==`tool-calls`&&i.toolCalls.length===0&&hasEmptyDeliverySentinel(c),u=getInvalidToolCallInputErrors({toolCalls:i.toolCalls}),f=new Set([...i.invalidInputToolCallIds??[],...i.toolCalls.filter(isInvalidToolCall).map(e=>e.toolCallId),...u.map(e=>e.toolCallId)]),p=l?[]:appendMissingToolResultMessages({append:u.map(e=>createToolResultMessagePartFromToolError(e)),responseMessages:i.response.messages}),h=l?null:c,g=new Set;for(let e of[...i.content??[],...i.toolResults??[]])(e.type===`tool-result`||e.type===`tool-error`)&&e.providerExecuted===!0&&g.add(e.toolCallId);let _=normalizeProviderToolHistory({messages:p,providerExecutedOutcomeIds:g}),v=_.messages,y={...s,compaction:createNextCompactionConfig(s.compaction,r,i)},b=t.workflow===!0?readWorkflowContinuationSecurity(y):void 0;if(b!==void 0){let e=await getWorkflowSandboxInterrupt(i,b);if(e!==void 0){if(!isWorkflowRuntimeActionInterrupt(e))throw Error(`Unsupported Workflow interrupt kind "${e.payload.kind}".`);return parkOnWorkflowInterrupt({baseSession:y,emissionState:o,interrupt:e,promptMessages:r,responseMessages:v})}}let S=extractToolApprovalInputRequests({content:i.content??[],excludedCallIds:f}),ee=new Set(S.map(e=>e.action.callId)),te=extractQuestionInputRequests({toolCalls:i.toolCalls,excludedCallIds:new Set([...f,...ee])}),C=[...S,...te],w=getAdvertisedTools({session:y,tools:t.tools}),T=(i.toolCalls??[]).filter(e=>!f.has(e.toolCallId)).filter(e=>t.tools.get(e.toolName)?.runtimeAction!==void 0).filter(e=>w.get(e.toolName)?.runtimeAction===void 0?(log.warn(`runtime action tool call blocked because tool is not advertised`,{callId:e.toolCallId,sessionId:y.sessionId,toolName:e.toolName}),!1):!0).map(e=>createRuntimeActionRequestFromToolCall({toolCall:e,tools:w}));if(T.length>0)return{next:null,session:setHarnessEmissionState(setPendingRuntimeActionBatch({actions:T,event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},responseMessages:v,session:{...y,history:[...r]}}),o)};if(C.length>0){let e=setPendingInputBatch({event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},requests:C,responseMessages:v,session:{...y,history:[...r]}});return n&&(await n(createInputRequestedEvent({requests:C,sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId})),t.mode===`conversation`&&(o=await emitTurnEpilogue(n,o,t.mode,e.continuationToken),e=setHarnessEmissionState(e,o))),{next:null,session:e}}let E=findAuthorizationSignalFromToolResults(i.toolResults);if(E){let{challenges:e}=E;if(n)for(let t of e)await n(createAuthorizationRequiredEvent({authorization:t.challenge,name:t.name,description:t.challenge.instructions??`Authorization required for ${t.name}`,webhookUrl:t.hookUrl,sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId}));return{next:null,session:setHarnessEmissionState({...y,history:[...r],state:setPendingAuthorization(y.state,{challenges:e})},o)}}let D=v,k=[...r,...D],j={...y,history:k};return!(j.outputSchema!==void 0&&extractFinalOutput(i)!==void 0)&&(D.at(-1)?.role===`tool`||_.outcomeEndsResponse||hasDeferredStepInput(j))?(n&&(o=advanceStep(o),j=setHarnessEmissionState(j,o)),{next:a,session:j}):t.mode===`task`?finishTaskTurn({emissionState:o,emit:n,history:r,result:i,schema:j.outputSchema,session:j,stepOutput:h}):finishConversationTurn({emissionState:o,emit:n,history:r,result:i,schema:j.outputSchema,session:j})}const OUTPUT_SCHEMA_NOT_FULFILLED={code:`OUTPUT_SCHEMA_NOT_FULFILLED`,message:`The agent could not produce a result matching the requested schema.`};function extractFinalOutput(e){return(e.toolCalls??[]).find(e=>e.toolName===FINAL_OUTPUT_TOOL_NAME&&!isInvalidToolCall(e))?.input}function persistStructuredAssistantTurn(e,t,n){return{...e,history:[...t,{content:JSON.stringify(n),role:`assistant`}],outputSchema:void 0}}async function emitStructuredResult(e,t,n,r,i){return await e(createResultCompletedEvent({result:n,sequence:t.sequence,stepIndex:t.stepIndex,turnId:t.turnId})),emitTurnEpilogue(e,t,r,i)}async function finishTaskTurn(e){let{emit:t,history:n,result:r,schema:i,stepOutput:a}=e,{emissionState:o,session:s}=e;if(i===void 0)return t&&(o=await emitTurnEpilogue(t,o,`task`,s.continuationToken),s=setHarnessEmissionState(s,o)),{next:{done:!0,output:a??``},session:s};let c=extractFinalOutput(r);return c===void 0?(t&&await emitFailedStep(t,o,{...OUTPUT_SCHEMA_NOT_FULFILLED,sessionId:s.sessionId}),{next:{done:!0,isError:!0,output:OUTPUT_SCHEMA_NOT_FULFILLED.message},session:s}):(s=persistStructuredAssistantTurn(s,n,c),t&&(o=await emitStructuredResult(t,o,c,`task`,s.continuationToken),s=setHarnessEmissionState(s,o)),{next:{done:!0,output:c},session:s})}async function finishConversationTurn(e){let{emit:t,history:n,result:r,schema:i}=e,{emissionState:a,session:o}=e;if(i===void 0)return t&&(a=await emitTurnEpilogue(t,a,`conversation`,o.continuationToken),o=setHarnessEmissionState(o,a)),{next:null,session:o};let s=extractFinalOutput(r);return s===void 0?(t&&(a=await emitRecoverableFailedTurn(t,a,{...OUTPUT_SCHEMA_NOT_FULFILLED,continuationToken:o.continuationToken}),o=setHarnessEmissionState(o,a)),{next:null,session:o}):(o=persistStructuredAssistantTurn(o,n,s),t&&(a=await emitStructuredResult(t,a,s,`conversation`,o.continuationToken),o=setHarnessEmissionState(o,a)),{next:null,session:o})}async function continuePendingWorkflowInterrupt(e){let t=getPendingWorkflowInterrupt(e.session.state);if(t===void 0)return null;let n=t.interrupt;if(!isWorkflowRuntimeActionInterrupt(n))throw Error(`Unsupported Workflow interrupt kind "${n.payload.kind}".`);let i=e.emit===void 0?void 0:createWorkflowLifecycle({emit:e.emit,emissionState:e.emissionState,skipReplayed:!0,tools:e.config.tools}),a=getWorkflowContinuationSecurity(e.session),o;try{let t=buildWorkflowHostTools({tools:e.config.tools}),r=e.childResults??[],s=n,c=0;for(;;){o=await continueWorkflowSandboxInterrupt({bridgeRequestLimit:resolveWorkflowSandboxBridgeRequestLimit(e.config.workflowMaxSubagents),continuationSecurity:a,interrupt:s,lifecycle:i,resolution:r[c]?.output,tools:t});let n=await unwrapWorkflowSandboxResult(o,a);if(n.status!==`interrupted`||!isWorkflowRuntimeActionInterrupt(n.interrupt)||c+1>=r.length)break;let l=getWorkflowRuntimeActionInterrupts(n.interrupt)[0];if(l===void 0)throw Error(`Workflow continuation contains no pending runtime-action interrupt.`);c++,s=l}}catch(e){logError(log,`Workflow interrupt continuation failed`,e),o={error:`workflow_continuation_failed`,message:toErrorMessage(e),retryable:!1}}let s=await unwrapWorkflowSandboxResult(o,a),c=s.status===`interrupted`?s.interrupt:s.output,u=replaceWorkflowToolResult([...e.session.history,...t.responseMessages],n.outerToolCallId,c),d=clearPendingWorkflowInterrupt({...e.session,history:u});if(s.status===`interrupted`){if(!isWorkflowRuntimeActionInterrupt(s.interrupt))throw Error(`Unsupported Workflow interrupt kind "${s.interrupt.payload.kind}".`);let t=e.session.history.length,n=u.slice(0,t),r=u.slice(t);return d={...d,history:n},parkOnWorkflowInterrupt({baseSession:d,emissionState:e.emissionState,interrupt:s.interrupt,promptMessages:n,responseMessages:r})}return{next:e.runStep,session:d}}function replaceWorkflowToolResult(e,t,n){if(t===void 0)return[...e];let r=typeof n==`string`?{type:`text`,value:n}:{type:`json`,value:n};return e.map(e=>{if(e.role!==`tool`)return e;let n=e.content.map(e=>e.type!==`tool-result`||e.toolCallId!==t?e:{...e,output:r});return{...e,content:n}})}function parkOnWorkflowInterrupt(e){let t=getWorkflowRuntimeActionInterrupts(e.interrupt)[0];if(t===void 0)throw Error(`Workflow continuation contains no pending runtime-action interrupt.`);let n={...e.baseSession,history:[...e.promptMessages]};return{next:null,session:setHarnessEmissionState(setPendingWorkflowInterrupt({interrupt:t,responseMessages:e.responseMessages,session:n}),e.emissionState)}}function createNextCompactionConfig(e,t,n){let r={recentWindowSize:e.recentWindowSize,threshold:e.threshold};return n.usage?.inputTokens!==void 0&&(r.lastKnownInputTokens=n.usage.inputTokens,r.lastKnownPromptMessageCount=t.length),r}async function maybeCompact(e){let{emit:t,emissionState:n}=e,r=e.messages,i=e.session;if(!shouldCompact(r,i.compaction))return{messages:r,session:i};let a=await resolveCompactionModel({compactionModelReference:i.agent.compactionModelReference,model:e.model,modelReference:i.agent.modelReference,resolveModel:e.resolveModel});if(t&&await t(createCompactionRequestedEvent({modelId:formatLanguageModelGatewayId(a.model),sequence:n.sequence,sessionId:i.sessionId,turnId:n.turnId,usageInputTokens:getInputTokenCount(r,i.compaction)})),r=await compactMessages(r,a.model,i.compaction,a.providerOptions,e.telemetry,buildGatewayAttributionHeaders(a.model,e.runtimeIdentity),e.abortSignal),e.onCompaction)for(let t of e.onCompaction())r.push(t);return t&&await t(createCompactionCompletedEvent({modelId:formatLanguageModelGatewayId(a.model),sequence:n.sequence,sessionId:i.sessionId,turnId:n.turnId})),{messages:r,session:i}}function resolveApprovalKeyFromTools(e){return t=>{let n=e.get(t.action.toolName);if(n?.approvalKey!==void 0)return n.approvalKey(t.action.input)}}async function runModelCallWithRetries(e,t,n){for(let r=1;;r++){throwIfTurnAborted(n);try{return await e(r)}catch(e){if(throwIfTurnAborted(n),r===3||classifyModelCallError(e)!==`retry`)throw e;let i=500*2**(r-1)+Math.floor(Math.random()*250);log.warn(`model call failed transiently — retrying`,{attempt:r,delayMs:i,sessionId:t.sessionId,turnId:t.turnId,error:e}),await new Promise(e=>setTimeout(e,i))}}}function findAuthorizationSignalFromToolResults(e){let t=contextStorage.getStore();if(t!==void 0)for(let n of e??[]){let e=readToolInterrupt(t,n.toolCallId);if(e!==void 0&&isAuthorizationSignal(e))return e}for(let t of e??[])if(isAuthorizationSignal(t.output))return t.output}export{createToolLoopHarness};
|
|
3
|
+
`)};return t!==void 0&&(n.providerOptions=t),n}function buildGatewayAttributionHeaders(e,t){let n=resolveProviderHeaders(e);if(n===void 0)return;let r=t?.agentName??t?.agentId,i=process.env.VERCEL_PROJECT_PRODUCTION_URL||process.env.VERCEL_URL,a=i?`https://${i}`:void 0,o={...n};return r&&(o[`x-title`]=r),a&&(o[`http-referer`]=a),o}async function resolveActiveRuntimeModel(e){if(e.ctx===void 0)return{model:await e.config.resolveModel(e.session.agent.modelReference),session:e.session};let t=e.session.agent.dynamicModelDefaultReference??e.session.agent.modelReference,n=getActiveDynamicModelSelection(e.ctx);return n===null?{model:await e.config.resolveModel(t),session:updateSessionModelReference(e.session,t)}:{model:n.model===void 0?await e.config.resolveModel(n.reference):n.model,session:updateSessionModelReference(e.session,n.reference)}}function updateSessionModelReference(e,t){let n=e.agent.modelReference;return{...e,agent:{...e.agent,modelReference:t},compaction:updateCompactionThresholdForModelReference({compaction:e.compaction,modelReference:t,priorReference:n})}}function updateCompactionThresholdForModelReference(e){if(e.modelReference.contextWindowTokens===void 0||e.priorReference.contextWindowTokens===void 0)return e.compaction;let t=e.compaction.threshold/e.priorReference.contextWindowTokens;return{...e.compaction,threshold:Math.max(1,Math.floor(e.modelReference.contextWindowTokens*t))}}const TURN_TRACE_STATE_KEY=`eve.harness.turnTrace`;function getTurnTraceState(e){return e.state?.[TURN_TRACE_STATE_KEY]}function setTurnTraceState(e,t){let n={traceId:t.traceId,spanId:t.spanId,traceFlags:t.traceFlags};return{...e,state:{...e.state,[TURN_TRACE_STATE_KEY]:n}}}function resolveStepOtelContext(e,t,n){if(t)return trace.setSpan(context.active(),t);if(e){let e=getTurnTraceState(n);if(e){let t=trace.wrapSpanContext({traceId:e.traceId,spanId:e.spanId,traceFlags:e.traceFlags});return trace.setSpan(context.active(),t)}}}function createToolLoopHarness(t){let n=t.handleEvent,c=getInstrumentationConfig();c!==void 0&&ensureOtelIntegration();let d=c===void 0?void 0:trace.getTracer(`eve`),f=t.runtimeIdentity?.agentName;async function runStep(e,t){let n;if(d&&hasStepInput(t)){let t=c?.functionId??f,r={"eve.version":eveVersion,"eve.environment":environment,"eve.session.id":e.sessionId};t&&(r[`ai.telemetry.functionId`]=t),n=d.startSpan(`ai.eve.turn`,{attributes:r})}let r=resolveStepOtelContext(d,n,e),executeStep=()=>executeStepBody(e,t,n);try{return r?await context.with(r,executeStep):await executeStep()}finally{n?.end()}}async function executeStepBody(d,p,m){let h=d;m&&(h=setTurnTraceState(h,m.spanContext()));let v=getHarnessEmissionState(h.state),x=consumeDeferredStepInput({input:p,session:h});h=x.session;let k=await resolvePendingRuntimeActions({emit:n,session:h,stepInput:x.input});if(k.outcome===`unresolved`)return{next:null,session:k.session};h=k.session;let A=getPendingInputRequestIds(h.state),M=convertStaleResponsesToUserMessage({history:k.messages,pendingRequestIds:A,stepInput:dropStaleSessionLimitContinuationResponses({pendingRequestIds:A,stepInput:x.input})}),N=M.stepInput,P=M.kind===`converted`?{...N,message:M.displayMessage}:N,F=resolvePendingInput({history:k.messages,resolveApprovalKey:resolveApprovalKeyFromTools(t.tools),session:h,stepInput:N});if(F.outcome===`unresolved`)return n&&F.deferredMessage===!0&&hasStepInput(p)?(v=await emitTurnPreamble(n,P??{},v,t.runtimeIdentity),v=await emitTurnEpilogue(n,v,t.mode,F.session.continuationToken),{next:null,session:setHarnessEmissionState(F.session,v)}):{next:null,session:F.session};if(n&&F.rejectedActions)for(let e of F.rejectedActions.results)await n(createActionResultEvent({rejected:!0,result:e,sequence:F.rejectedActions.event.sequence,stepIndex:F.rejectedActions.event.stepIndex,turnId:F.rejectedActions.event.turnId}));n&&hasStepInput(p)&&(v=await emitTurnPreamble(n,P??{},v,t.runtimeIdentity),h=setHarnessEmissionState(h,v),m&&m.setAttribute(`eve.turn.id`,v.turnId)),h=F.session;let I=F.messages,L=await applySessionLimitContinuation({config:t,emit:n,emissionState:v,limitContinuation:F.limitContinuation,session:h});if(L.result!==null)return L.result;if(h=L.session,N?.context!==void 0&&F.deferredContext!==!0)for(let e of N.context)I.push({content:e,role:`user`});let R=normalizeUserContent(N?.message);if(R!==void 0&&!F.deferredMessage&&!F.consumedMessage){let e=await stageAttachmentsToSandbox(R);I.push({content:e,role:`user`})}let z=contextStorage.getStore();z!==void 0&&t.dispatchDynamicModelEvent!==void 0&&await t.dispatchDynamicModelEvent({ctx:z,event:createStepStartedEvent({sequence:v.sequence,stepIndex:v.stepIndex,turnId:v.turnId}),fallback:h.agent.dynamicModelDefaultReference??h.agent.modelReference,messages:I});let B=await resolveActiveRuntimeModel({config:t,ctx:z,session:h});h=B.session;let V=B.model,H=detectPromptCachePath(V),U=H.kind===`anthropic-direct`?getAnthropicCacheMarker():void 0,ne=buildGatewayAttributionHeaders(V,t.runtimeIdentity);({messages:I,session:h}=await maybeCompact({abortSignal:t.abortSignal,emit:n,emissionState:v,messages:I,model:V,onCompaction:t.onCompaction,resolveModel:t.resolveModel,runtimeIdentity:t.runtimeIdentity,session:h,telemetry:enrichTelemetry(c,f)??void 0}));let W=getApprovedTools(h),G=h.outputSchema===void 0&&z!==void 0&&isScheduleAppAuth(z.get(AuthKey))&&z.get(ParentSessionKey)===void 0,re=await hydrateSandboxAttachments(I),K=[],q=[];for(let e of re)e.role===`system`?K.push(e):q.push(e);if(z!==void 0){K.push(...buildDynamicInstructionMessages(z));let e=z.get(PendingSkillAnnouncementKey);e!==void 0&&e.length>0&&K.push({role:`system`,content:e})}G&&K.push({role:`system`,content:CONDITIONAL_DELIVERY_INSTRUCTION});let J=q,prepareModelCallInput=e=>{let t=e?[{role:`system`,content:e}]:[],n=h.agent.system?[{role:`system`,content:h.agent.system}]:[],r=K.length>0||t.length>0?[...t,...n,...K]:void 0,i=r!==void 0&&U?applySystemCacheBreakpoint(r,U):r,a=i===void 0?h.agent.system??void 0:mergeSystemInstructions(i);return{instructions:a,telemetryRuntimeContext:buildTelemetryRuntimeContext({eveVersion,authored:c,emissionState:v,environment,modelInput:{instructions:a,messages:J},session:h})}},runSingleModelCall=async e=>{let{instructions:i,telemetryRuntimeContext:a={}}=e.preparedInput??prepareModelCallInput(e.extraSystemNote);e.retryReason&&(a[`eve.retry.reason`]=e.retryReason);let o=e.trailingUserNote?[...J,{role:`user`,content:e.trailingUserNote}]:J,s=getAdvertisedTools({session:h,tools:t.tools}),l=await buildToolSetWithProviderTools({approvedTools:W,capabilities:t.capabilities,disabledProviderTools:e.disabledProviderTools,modelReference:h.agent.modelReference,tools:s});if(z!==void 0){let n=getAdvertisedTools({session:h,tools:buildDynamicTools(z)}),r=buildToolSetFromDefinitions({approvedTools:W,capabilities:t.capabilities,disabledProviderTools:e.disabledProviderTools,tools:n});for(let[e,t]of Object.entries(r))l[e]=t}h.outputSchema!==void 0&&(l[FINAL_OUTPUT_TOOL_NAME]=buildFinalOutputTool(h.outputSchema));let u=n===void 0?void 0:({tools:e})=>createWorkflowLifecycle({emit:n,emissionState:v,tools:e}),d=t.workflow===!0?{lifecycle:u,maxSubagents:t.workflowMaxSubagents}:void 0,p=await getAdvertisedTools({modelTools:l,session:h,tools:s,workflow:d});h=p.session;let m=p.modelTools,g=U?applyLastToolCacheBreakpoint(m,U):m,y=buildStepHooks({cachePath:H,emit:n,emissionState:v,emitStepStarted:e.suppressStepStartedEmission!==!0,marker:U,session:h}),b=new ToolLoopAgent({headers:ne,instructions:i,model:V,onToolExecutionEnd:logToolExecutionError,onError(e){summarizeKnownError(e.error)?.tags.includes(`config`)!==!0&&logError(log,`tool-loop stream error`,e.error)},onStepFinish:y.onStepFinish,prepareStep:y.prepareStep,reasoning:h.agent.reasoning,runtimeContext:a,stopWhen:isStepCount(1),telemetry:enrichTelemetry(c,f,a),toolApproval:buildToolApproval(m),tools:g});return(async()=>{if(n){let e=[...t.tools].filter(([e,t])=>t.runtimeAction!==void 0&&s.get(e)===void 0).map(([e])=>e),r=new Set([ASK_QUESTION_TOOL_NAME,FINAL_OUTPUT_TOOL_NAME,...e]),i=await b.stream({abortSignal:t.abortSignal,messages:o}),{emittedActionCallIds:a,handledInlineToolResultCallIds:c,invalidInputToolCallIds:l,inlineAuthorizationResults:u,trailingInlineToolResultParts:d}=await emitStreamContent(n,v,i.fullStream,{excludedActionToolNames:r,tools:t.tools});throwIfTurnAborted(t.abortSignal);let[f,p]=await Promise.all([y.stepResult,i.responseMessages]);if(isEmptyModelResponse(f)&&extractToolResultCallIds(p).size===0&&u.length===0&&d.length===0)throw new EmptyModelResponseError;await emitStepActions(n,v,f,{emittedActionCallIds:a,excludedActionCallIds:l,excludedActionToolNames:r,handledInlineToolResultCallIds:c,tools:s});let m=f.toolResults,h=new Map(m.map(e=>[e.toolCallId,e]));for(let e of u)h.set(e.toolCallId,e);return withAccumulatedResponseMessages({invalidInputToolCallIds:l,responseMessages:appendMissingToolResultMessages({append:d,responseMessages:p}),stepResult:f,toolResults:[...h.values()]})}let e=await b.generate({abortSignal:t.abortSignal,messages:o});throwIfTurnAborted(t.abortSignal);let r=await y.stepResult;if(isEmptyModelResponse(r)&&extractToolResultCallIds(e.responseMessages).size===0)throw new EmptyModelResponseError;return withAccumulatedResponseMessages({responseMessages:e.responseMessages,stepResult:r})})().catch(rethrowNoOutputAsEmptyResponse)},runOneModelCall=async e=>runModelCallWithRetries(t=>runSingleModelCall({...e,preparedInput:t===1?e.preparedInput:void 0,suppressStepStartedEmission:t===1?e.suppressStepStartedEmission:!0}),{sessionId:h.sessionId,turnId:v.turnId},t.abortSignal),ie=prepareModelCallInput();n&&await emitStepStarted(n,v,I);let Y=await continuePendingWorkflowInterrupt({childResults:N?.runtimeActionResults,config:t,emit:n,emissionState:v,runStep,session:h});if(Y!==null)return Y;let X=await enforceSessionTokenLimit({config:t,emit:n,emissionState:v,messages:I,session:h});if(X!==null)return X;let Z;try{Z=await runOneModelCall({preparedInput:ie,suppressStepStartedEmission:!0})}catch(r){throwIfTurnAborted(t.abortSignal);let a=await runModelCallRecoveryPipeline({error:r,stages:[e=>attemptUnsupportedProviderToolRecovery({error:e.error,runOneModelCall,sessionId:h.sessionId,turnId:v.turnId}),e=>attemptEmptyResponseRecovery({emptyDeliveryEnabled:G,error:e.error,retryCallOptions:e.retryCallOptions,runOneModelCall,sessionId:h.sessionId,turnId:v.turnId})]});if(throwIfTurnAborted(t.abortSignal),a.outcome===`recovered`)Z=a.result;else{let r=a.error;if(m&&recordErrorOnSpan(m,r),!n)throw r;let o=extractWorkflowStreamWriteErrorDetails(r);if(o!==null){let t=createErrorId();return log.error(`workflow stream write failed — parking session for retry by the user`,{...o,errorId:t,error:r,sessionId:h.sessionId,turnId:v.turnId}),v=await emitRecoverableFailedTurn(n,v,{code:`WORKFLOW_STREAM_WRITE_FAILED`,continuationToken:h.continuationToken,details:{...o,errorId:t},message:toErrorMessage(r)}),{next:null,session:setHarnessEmissionState(h,v)}}let s=classifyModelCallError(r),c=createErrorId(),u=summarizeKnownError(r),d=u===null?extractUpstreamRejectionMessage(r):null,f=u?.message??d?.message??toErrorMessage(r),p=u?.hint===void 0?f:`${f} ${u.hint}`,g=extractModelCallErrorDetails(r),y=buildModelCallFailureDetails({catalogSummary:u,error:r,errorId:c,modelCallDetails:g,upstreamRejection:d}),b=buildModelCallFailureLogFields({error:r,errorId:c,modelCallDetails:g,recognized:u!==null||d!==null,sessionId:h.sessionId,turnId:v.turnId});if(s===`terminal`)return u===null?log.error(d?.message??`model call failed terminally`,b):log.error(`${u.name}: ${u.message}`,{errorId:c,hint:u.hint,sessionId:h.sessionId,turnId:v.turnId}),await emitFailedStep(n,v,{code:`MODEL_CALL_FAILED`,details:y,message:f,sessionId:h.sessionId}),{next:t.mode===`task`?{done:!0,isError:!0,output:p}:{done:!0,output:``},session:h};if(t.mode===`task`){if(s===`recoverable`&&!(r instanceof EmptyModelResponseError))throw log.warn(d?.message??`model call failed recoverably in task mode — rethrowing for durable step retry`,b),r;return log.error(d?.message??`model call failed; failing the task run`,b),await emitFailedStep(n,v,{code:`MODEL_CALL_FAILED`,details:y,message:f,sessionId:h.sessionId}),{next:{done:!0,isError:!0,output:p},session:h}}return log.error(d?.message??`model call failed — parking session for retry by the user`,b),v=await emitRecoverableFailedTurn(n,v,{code:`MODEL_CALL_FAILED`,continuationToken:h.continuationToken,details:y,message:f}),{next:null,session:setHarnessEmissionState(h,v)}}}let Q=accumulateTurnUsage({previous:getTurnUsageState(h.state),turnId:v.turnId,usage:extractTokenUsageDelta({costUsd:extractGatewayCostUsd(Z.providerMetadata),usage:Z.usage})});h=setTurnUsageState(h,Q);let $;try{$=formatLanguageModelGatewayId(V)}catch{$=void 0}return await setEveAttributes({"$eve.model":$,"$eve.input_tokens":Q.inputTokens,"$eve.output_tokens":Q.outputTokens,"$eve.cache_read_tokens":Q.cacheReadTokens,"$eve.cache_write_tokens":Q.cacheWriteTokens,"$eve.cost_usd":Q.sawCost?Q.costUsd:void 0,"$eve.tool_count":t.tools.size}),handleStepResult({config:t,emit:n,emissionState:v,promptMessages:I,result:Z,runStep,session:h})}return runStep}function extractTokenUsageDelta(e){let t=e.usage;if(!(t===void 0&&e.costUsd===void 0))return{cacheReadTokens:t?.inputTokenDetails?.cacheReadTokens,cacheWriteTokens:t?.inputTokenDetails?.cacheWriteTokens,costUsd:e.costUsd,inputTokens:t?.inputTokens,outputTokens:t?.outputTokens}}function extractGatewayCostUsd(e){let t=readGatewayMetadata(e)?.cost;if(typeof t==`number`&&Number.isFinite(t))return t;if(typeof t==`string`){let e=Number(t);return Number.isFinite(e)?e:void 0}}function readGatewayMetadata(e){let t=e?.gateway;return t&&typeof t==`object`&&!Array.isArray(t)?t:void 0}function buildModelCallFailureDetails(e){let{catalogSummary:t,error:r,errorId:i,modelCallDetails:a,upstreamRejection:o}=e;if(t!==null){let e={errorId:i,message:t.message,name:t.name,semanticErrorId:t.id,...a};return t.hint!==void 0&&(e.hint=t.hint),e}return o===null?{...formatError(r,i),...a}:{errorId:i,message:toErrorMessage(r),name:o.name,...a}}function buildModelCallFailureLogFields(e){let t={errorId:e.errorId,sessionId:e.sessionId,turnId:e.turnId};return e.recognized?{...t,details:e.modelCallDetails}:{...t,error:e.error}}async function runModelCallRecoveryPipeline(e){let t=e.error,n;for(let r of e.stages){let e=await r({error:t,retryCallOptions:n});if(e.outcome===`recovered`)return e;e.outcome===`failed`&&(t=e.error,n=e.retryCallOptions)}return{outcome:`failed`,error:t}}function withAccumulatedResponseMessages(e){let{stepResult:t}=e;return{content:t.content,finishReason:t.finishReason,...e.invalidInputToolCallIds===void 0?{}:{invalidInputToolCallIds:e.invalidInputToolCallIds},providerMetadata:t.providerMetadata,response:{...t.response,messages:[...e.responseMessages]},text:t.text,toolCalls:t.toolCalls,toolResults:e.toolResults===void 0?t.toolResults:[...e.toolResults],usage:t.usage}}function appendMissingToolResultMessages(e){let t=extractToolResultCallIds(e.responseMessages),n=e.append.filter(e=>!t.has(e.toolCallId));return[...e.responseMessages,...n.length>0?[{role:`tool`,content:[...n]}]:[]]}function getInvalidToolCallInputErrors(e){let t=[];for(let n of e.toolCalls){if(n.toolName===FINAL_OUTPUT_TOOL_NAME)continue;let e=getInvalidToolCallInputError({toolCall:n});e!==void 0&&t.push(e)}return t}function extractToolResultCallIds(e){let t=new Set;for(let n of e)if(!(n.role!==`tool`||!Array.isArray(n.content)))for(let e of n.content)e.type===`tool-result`&&t.add(e.toolCallId);return t}async function attemptUnsupportedProviderToolRecovery(e){let t=extractUnsupportedProviderToolTypes(e.error);if(t.length===0)return{outcome:`skipped`};let n=[];for(let e of t){let t=resolveFrameworkToolFromUpstreamType(e);t!==null&&!n.includes(t)&&n.push(t)}if(n.length===0)return{outcome:`skipped`};log.warn(`disabling unsupported provider tool(s); retrying step once`,{disabled:n,sessionId:e.sessionId,turnId:e.turnId,upstreamTypes:t});let r={disabledProviderTools:new Set(n),extraSystemNote:buildDisabledToolNote(n)};try{return{outcome:`recovered`,result:await e.runOneModelCall({...r,suppressStepStartedEmission:!0})}}catch(e){return{outcome:`failed`,error:e,retryCallOptions:r}}}function buildDisabledToolNote(e){let t=e.join(`, `);return`The following ${e.length===1?`tool is`:`tools are`} not available with the current model and has been removed: ${t}. Proceed using the remaining tools or your training knowledge.`}function isEmptyModelResponse(e){return e.toolCalls.length===0&&e.toolResults.length===0&&resolveAssistantStepText(e.response.messages,e.text)===null}function rethrowNoOutputAsEmptyResponse(e){throw isNoOutputGeneratedError(e)?new EmptyModelResponseError({cause:e}):e}const EMPTY_RESPONSE_NUDGE=`Your previous reply was empty and was not delivered. Answer now from the tool results above; do not re-run tools or mention this notice.`;function buildEmptyResponseNudge(e){return e?`${EMPTY_RESPONSE_NUDGE} If the current task explicitly requires conditional delivery and there is nothing to report, reply with exactly ${EMPTY_DELIVERY_SENTINEL}.`:EMPTY_RESPONSE_NUDGE}async function attemptEmptyResponseRecovery(e){if(!(e.error instanceof EmptyModelResponseError))return{outcome:`skipped`};log.warn(`empty model response; reissuing the model call once`,{sessionId:e.sessionId,turnId:e.turnId});try{return{outcome:`recovered`,result:await e.runOneModelCall({...e.retryCallOptions,retryReason:`empty-response`,suppressStepStartedEmission:!0,trailingUserNote:buildEmptyResponseNudge(e.emptyDeliveryEnabled)})}}catch(t){return{outcome:`failed`,error:t,retryCallOptions:e.retryCallOptions}}}async function handleStepResult(e){let{config:t,emit:n,promptMessages:r,result:i,runStep:a}=e,{emissionState:o,session:s}=e,c=resolveAssistantStepText(i.response.messages,i.text),l=i.finishReason!==`tool-calls`&&i.toolCalls.length===0&&hasEmptyDeliverySentinel(c),u=getInvalidToolCallInputErrors({toolCalls:i.toolCalls}),f=new Set([...i.invalidInputToolCallIds??[],...i.toolCalls.filter(isInvalidToolCall).map(e=>e.toolCallId),...u.map(e=>e.toolCallId)]),p=l?[]:appendMissingToolResultMessages({append:u.map(e=>createToolResultMessagePartFromToolError(e)),responseMessages:i.response.messages}),h=l?null:c,g=new Set;for(let e of[...i.content??[],...i.toolResults??[]])(e.type===`tool-result`||e.type===`tool-error`)&&e.providerExecuted===!0&&g.add(e.toolCallId);let _=normalizeProviderToolHistory({messages:p,providerExecutedOutcomeIds:g}),v=_.messages,y={...s,compaction:createNextCompactionConfig(s.compaction,r,i)},b=t.workflow===!0?readWorkflowContinuationSecurity(y):void 0;if(b!==void 0){let e=await getWorkflowSandboxInterrupt(i,b);if(e!==void 0){if(!isWorkflowRuntimeActionInterrupt(e))throw Error(`Unsupported Workflow interrupt kind "${e.payload.kind}".`);return parkOnWorkflowInterrupt({baseSession:y,emissionState:o,interrupt:e,promptMessages:r,responseMessages:v})}}let S=extractToolApprovalInputRequests({content:i.content??[],excludedCallIds:f}),C=new Set(S.map(e=>e.action.callId)),ee=extractQuestionInputRequests({toolCalls:i.toolCalls,excludedCallIds:new Set([...f,...C])}),w=[...S,...ee],T=getAdvertisedTools({session:y,tools:t.tools}),E=(i.toolCalls??[]).filter(e=>!f.has(e.toolCallId)).filter(e=>t.tools.get(e.toolName)?.runtimeAction!==void 0).filter(e=>T.get(e.toolName)?.runtimeAction===void 0?(log.warn(`runtime action tool call blocked because tool is not advertised`,{callId:e.toolCallId,sessionId:y.sessionId,toolName:e.toolName}),!1):!0).map(e=>createRuntimeActionRequestFromToolCall({toolCall:e,tools:T}));if(E.length>0)return{next:null,session:setHarnessEmissionState(setPendingRuntimeActionBatch({actions:E,event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},responseMessages:v,session:{...y,history:[...r]}}),o)};if(w.length>0){let e=setPendingInputBatch({event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},requests:w,responseMessages:v,session:{...y,history:[...r]}});return n&&(await n(createInputRequestedEvent({requests:w,sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId})),t.mode===`conversation`&&(o=await emitTurnEpilogue(n,o,t.mode,e.continuationToken),e=setHarnessEmissionState(e,o))),{next:null,session:e}}let D=findAuthorizationSignalFromToolResults(i.toolResults);if(D){let{challenges:e}=D;if(n)for(let t of e)await n(createAuthorizationRequiredEvent({authorization:t.challenge,name:t.name,description:t.challenge.instructions??`Authorization required for ${t.name}`,webhookUrl:t.hookUrl,sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId}));return{next:null,session:setHarnessEmissionState({...y,history:[...r],state:setPendingAuthorization(y.state,{challenges:e})},o)}}let O=v,te=[...r,...O],j={...y,history:te};return!(j.outputSchema!==void 0&&extractFinalOutput(i)!==void 0)&&(O.at(-1)?.role===`tool`||_.outcomeEndsResponse||hasDeferredStepInput(j))?(n&&(o=advanceStep(o),j=setHarnessEmissionState(j,o)),{next:a,session:j}):t.mode===`task`?finishTaskTurn({emissionState:o,emit:n,history:r,result:i,schema:j.outputSchema,session:j,stepOutput:h}):finishConversationTurn({emissionState:o,emit:n,history:r,result:i,schema:j.outputSchema,session:j})}const OUTPUT_SCHEMA_NOT_FULFILLED={code:`OUTPUT_SCHEMA_NOT_FULFILLED`,message:`The agent could not produce a result matching the requested schema.`};function extractFinalOutput(e){return(e.toolCalls??[]).find(e=>e.toolName===FINAL_OUTPUT_TOOL_NAME&&!isInvalidToolCall(e))?.input}function persistStructuredAssistantTurn(e,t,n){return{...e,history:[...t,{content:JSON.stringify(n),role:`assistant`}],outputSchema:void 0}}async function emitStructuredResult(e,t,n,r,i){return await e(createResultCompletedEvent({result:n,sequence:t.sequence,stepIndex:t.stepIndex,turnId:t.turnId})),emitTurnEpilogue(e,t,r,i)}async function finishTaskTurn(e){let{emit:t,history:n,result:r,schema:i,stepOutput:a}=e,{emissionState:o,session:s}=e;if(i===void 0)return t&&(o=await emitTurnEpilogue(t,o,`task`,s.continuationToken),s=setHarnessEmissionState(s,o)),{next:{done:!0,output:a??``},session:s};let c=extractFinalOutput(r);return c===void 0?(t&&await emitFailedStep(t,o,{...OUTPUT_SCHEMA_NOT_FULFILLED,sessionId:s.sessionId}),{next:{done:!0,isError:!0,output:OUTPUT_SCHEMA_NOT_FULFILLED.message},session:s}):(s=persistStructuredAssistantTurn(s,n,c),t&&(o=await emitStructuredResult(t,o,c,`task`,s.continuationToken),s=setHarnessEmissionState(s,o)),{next:{done:!0,output:c},session:s})}async function finishConversationTurn(e){let{emit:t,history:n,result:r,schema:i}=e,{emissionState:a,session:o}=e;if(i===void 0)return t&&(a=await emitTurnEpilogue(t,a,`conversation`,o.continuationToken),o=setHarnessEmissionState(o,a)),{next:null,session:o};let s=extractFinalOutput(r);return s===void 0?(t&&(a=await emitRecoverableFailedTurn(t,a,{...OUTPUT_SCHEMA_NOT_FULFILLED,continuationToken:o.continuationToken}),o=setHarnessEmissionState(o,a)),{next:null,session:o}):(o=persistStructuredAssistantTurn(o,n,s),t&&(a=await emitStructuredResult(t,a,s,`conversation`,o.continuationToken),o=setHarnessEmissionState(o,a)),{next:null,session:o})}async function continuePendingWorkflowInterrupt(e){let t=getPendingWorkflowInterrupt(e.session.state);if(t===void 0)return null;let n=t.interrupt;if(!isWorkflowRuntimeActionInterrupt(n))throw Error(`Unsupported Workflow interrupt kind "${n.payload.kind}".`);let i=e.emit===void 0?void 0:createWorkflowLifecycle({emit:e.emit,emissionState:e.emissionState,skipReplayed:!0,tools:e.config.tools}),a=getWorkflowContinuationSecurity(e.session),o;try{let t=buildWorkflowHostTools({tools:e.config.tools}),r=e.childResults??[],s=n,c=0;for(;;){o=await continueWorkflowSandboxInterrupt({bridgeRequestLimit:resolveWorkflowSandboxBridgeRequestLimit(e.config.workflowMaxSubagents),continuationSecurity:a,interrupt:s,lifecycle:i,resolution:r[c]?.output,tools:t});let n=await unwrapWorkflowSandboxResult(o,a);if(n.status!==`interrupted`||!isWorkflowRuntimeActionInterrupt(n.interrupt)||c+1>=r.length)break;let l=getWorkflowRuntimeActionInterrupts(n.interrupt)[0];if(l===void 0)throw Error(`Workflow continuation contains no pending runtime-action interrupt.`);c++,s=l}}catch(e){logError(log,`Workflow interrupt continuation failed`,e),o={error:`workflow_continuation_failed`,message:toErrorMessage(e),retryable:!1}}let s=await unwrapWorkflowSandboxResult(o,a),c=s.status===`interrupted`?s.interrupt:s.output,u=replaceWorkflowToolResult([...e.session.history,...t.responseMessages],n.outerToolCallId,c),d=clearPendingWorkflowInterrupt({...e.session,history:u});if(s.status===`interrupted`){if(!isWorkflowRuntimeActionInterrupt(s.interrupt))throw Error(`Unsupported Workflow interrupt kind "${s.interrupt.payload.kind}".`);let t=e.session.history.length,n=u.slice(0,t),r=u.slice(t);return d={...d,history:n},parkOnWorkflowInterrupt({baseSession:d,emissionState:e.emissionState,interrupt:s.interrupt,promptMessages:n,responseMessages:r})}return{next:e.runStep,session:d}}function replaceWorkflowToolResult(e,t,n){if(t===void 0)return[...e];let r=typeof n==`string`?{type:`text`,value:n}:{type:`json`,value:n};return e.map(e=>{if(e.role!==`tool`)return e;let n=e.content.map(e=>e.type!==`tool-result`||e.toolCallId!==t?e:{...e,output:r});return{...e,content:n}})}function parkOnWorkflowInterrupt(e){let t=getWorkflowRuntimeActionInterrupts(e.interrupt)[0];if(t===void 0)throw Error(`Workflow continuation contains no pending runtime-action interrupt.`);let n={...e.baseSession,history:[...e.promptMessages]};return{next:null,session:setHarnessEmissionState(setPendingWorkflowInterrupt({interrupt:t,responseMessages:e.responseMessages,session:n}),e.emissionState)}}function createNextCompactionConfig(e,t,n){let r={recentWindowSize:e.recentWindowSize,threshold:e.threshold};return n.usage?.inputTokens!==void 0&&(r.lastKnownInputTokens=n.usage.inputTokens,r.lastKnownPromptMessageCount=t.length),r}async function maybeCompact(e){let{emit:t,emissionState:n}=e,r=e.messages,i=e.session;if(!shouldCompact(r,i.compaction))return{messages:r,session:i};let a=await resolveCompactionModel({compactionModelReference:i.agent.compactionModelReference,model:e.model,modelReference:i.agent.modelReference,resolveModel:e.resolveModel});if(t&&await t(createCompactionRequestedEvent({modelId:formatLanguageModelGatewayId(a.model),sequence:n.sequence,sessionId:i.sessionId,turnId:n.turnId,usageInputTokens:getInputTokenCount(r,i.compaction)})),r=await compactMessages(r,a.model,i.compaction,a.providerOptions,e.telemetry,buildGatewayAttributionHeaders(a.model,e.runtimeIdentity),e.abortSignal),e.onCompaction)for(let t of e.onCompaction())r.push(t);return t&&await t(createCompactionCompletedEvent({modelId:formatLanguageModelGatewayId(a.model),sequence:n.sequence,sessionId:i.sessionId,turnId:n.turnId})),{messages:r,session:i}}function resolveApprovalKeyFromTools(e){return t=>{let n=e.get(t.action.toolName);if(n?.approvalKey!==void 0)return n.approvalKey(t.action.input)}}async function runModelCallWithRetries(e,t,n){for(let r=1;;r++){throwIfTurnAborted(n);try{return await e(r)}catch(e){if(throwIfTurnAborted(n),r===3||classifyModelCallError(e)!==`retry`)throw e;let i=500*2**(r-1)+Math.floor(Math.random()*250);log.warn(`model call failed transiently — retrying`,{attempt:r,delayMs:i,sessionId:t.sessionId,turnId:t.turnId,error:e}),await new Promise(e=>setTimeout(e,i))}}}function findAuthorizationSignalFromToolResults(e){let t=contextStorage.getStore();if(t!==void 0)for(let n of e??[]){let e=readToolInterrupt(t,n.toolCallId);if(e!==void 0&&isAuthorizationSignal(e))return e}for(let t of e??[])if(isAuthorizationSignal(t.output))return t.output}export{createToolLoopHarness};
|
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
export declare class TurnCancelledError extends Error {
|
|
3
3
|
constructor(message?: string);
|
|
4
4
|
}
|
|
5
|
+
/**
|
|
6
|
+
* A turn cancellation raised when the user declines a session-limit
|
|
7
|
+
* continuation prompt. Carries intent only — the execution layer detects it
|
|
8
|
+
* at the step boundary and cancels the root turn, so a delegated child's
|
|
9
|
+
* decline stops the whole delegation tree. Keeps the harness free of
|
|
10
|
+
* cross-session cancellation authority.
|
|
11
|
+
*/
|
|
12
|
+
export declare class SessionLimitDeclinedError extends TurnCancelledError {
|
|
13
|
+
readonly sessionLimitDeclined = true;
|
|
14
|
+
constructor();
|
|
15
|
+
}
|
|
16
|
+
/** True when the error, or one of its causes, marks a session-limit decline. */
|
|
17
|
+
export declare function isSessionLimitDecline(error: unknown): boolean;
|
|
5
18
|
/** True when the error, or one of its causes, is a {@link TurnCancelledError}. */
|
|
6
19
|
export declare function isTurnCancellation(error: unknown): boolean;
|
|
7
20
|
/** Throws when the turn signal has aborted. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const TURN_CANCELLED_ERROR_NAME=`TurnCancelledError`;var TurnCancelledError=class extends Error{constructor(t=`The turn was cancelled.`){super(t),this.name=TURN_CANCELLED_ERROR_NAME}};function isTurnCancellation(t){let n=t,r=new Set;for(;typeof n==`object`&&n&&!r.has(n);){if(r.add(n),n.name===TURN_CANCELLED_ERROR_NAME)return!0;n=n.cause}return!1}function throwIfTurnAborted(e){if(e?.aborted===!0)throw isTurnCancellation(e.reason)?e.reason:new TurnCancelledError}export{TurnCancelledError,isTurnCancellation,throwIfTurnAborted};
|
|
1
|
+
const TURN_CANCELLED_ERROR_NAME=`TurnCancelledError`;var TurnCancelledError=class extends Error{constructor(t=`The turn was cancelled.`){super(t),this.name=TURN_CANCELLED_ERROR_NAME}},SessionLimitDeclinedError=class extends TurnCancelledError{sessionLimitDeclined=!0;constructor(){super(`The user declined a fresh session token budget.`)}};function isSessionLimitDecline(e){let t=e,n=new Set;for(;typeof t==`object`&&t&&!n.has(t);){if(n.add(t),t.sessionLimitDeclined===!0)return!0;t=t.cause}return!1}function isTurnCancellation(t){let n=t,r=new Set;for(;typeof n==`object`&&n&&!r.has(n);){if(r.add(n),n.name===TURN_CANCELLED_ERROR_NAME)return!0;n=n.cause}return!1}function throwIfTurnAborted(e){if(e?.aborted===!0)throw isTurnCancellation(e.reason)?e.reason:new TurnCancelledError}export{SessionLimitDeclinedError,TurnCancelledError,isSessionLimitDecline,isTurnCancellation,throwIfTurnAborted};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createRequire}from"node:module";import{existsSync,readFileSync,realpathSync}from"node:fs";import{basename,dirname,join}from"node:path";import{EVE_PACKAGE_NAME}from"#internal/package-name.js";import{fileURLToPath}from"node:url";let cachedPackageInfo;const BUNDLED_FALLBACK_PACKAGE_VERSION=`0.
|
|
1
|
+
import{createRequire}from"node:module";import{existsSync,readFileSync,realpathSync}from"node:fs";import{basename,dirname,join}from"node:path";import{EVE_PACKAGE_NAME}from"#internal/package-name.js";import{fileURLToPath}from"node:url";let cachedPackageInfo;const BUNDLED_FALLBACK_PACKAGE_VERSION=`0.27.1`,WORKFLOW_MODULE_ALIASES={"workflow/errors":`src/compiled/@workflow/errors/index.js`,"workflow/internal/private":`src/compiled/@workflow/core/private.js`};function resolveFallbackPackageVersion(){return BUNDLED_FALLBACK_PACKAGE_VERSION.startsWith(`__`)?`0.0.0`:BUNDLED_FALLBACK_PACKAGE_VERSION}const FALLBACK_PACKAGE_INFO={name:EVE_PACKAGE_NAME,version:resolveFallbackPackageVersion()};function resolveCurrentModulePath(){return typeof __filename==`string`?__filename:resolveCurrentModulePathFromStack()}function resolveCurrentModulePathFromStack(){let e=Error.prepareStackTrace;try{Error.prepareStackTrace=(e,t)=>t;let e=Error().stack?.[0]?.getFileName();if(typeof e!=`string`||e.length===0)throw Error(`Failed to resolve the current module path from the stack trace.`);return e.startsWith(`file:`)?fileURLToPath(e):e}finally{Error.prepareStackTrace=e}}const require=createRequire(resolveCurrentModulePath());function isBuildOutputPackageRoot(e){return basename(e)===`dist`&&existsSync(join(dirname(e),`package.json`))}function resolvePackageBuildRoot(){let e=dirname(realpathSync(resolveCurrentModulePath()));for(;;){if(isBuildOutputPackageRoot(e))return e;let t=dirname(e);if(t===e)return null;e=t}}function findNearestPackageRoot(e){let n=e;for(;;){if(existsSync(join(n,`package.json`))&&!isBuildOutputPackageRoot(n))return n;let r=dirname(n);if(r===n)throw Error(`Failed to resolve package root from "${e}".`);n=r}}function resolvePackageRoot(){return findNearestPackageRoot(dirname(realpathSync(resolveCurrentModulePath())))}function tryResolvePackageRoot(){try{return resolvePackageRoot()}catch{return}}function rewriteSourceFilePathForBuild(e){return e.replace(/\.[cm]?tsx?$/,`.js`)}function resolvePackageSourceFilePath(e){let t=resolvePackageBuildRoot();return t===null?join(resolvePackageRoot(),e):join(t,rewriteSourceFilePathForBuild(e))}function resolvePackageSourceDirectoryPath(e){let t=resolvePackageBuildRoot();return join(t===null?resolvePackageRoot():t,e)}function resolvePackageDependencyPath(e){return require.resolve(e)}function resolvePackageCompiledFilePath(e){let t=resolvePackageBuildRoot();return t===null?join(resolvePackageRoot(),`.generated`,`compiled`,e.replace(/^src\/compiled\//,``)):join(t,e)}function normalizeInstalledPackageInfo(e){let t=e;if(!(typeof t.name!=`string`||typeof t.version!=`string`))return{name:t.name,version:t.version}}function tryReadInstalledPackageInfo(e,t){let r=normalizeInstalledPackageInfo(JSON.parse(readFileSync(e,`utf8`)));if(r?.name===t)return r}function resolveInstalledPackageInfo(){if(cachedPackageInfo)return cachedPackageInfo;let e=tryResolvePackageRoot(),t=e===void 0?void 0:tryReadInstalledPackageInfo(join(e,`package.json`),EVE_PACKAGE_NAME);if(t)return cachedPackageInfo=t,cachedPackageInfo;try{let e=tryReadInstalledPackageInfo(require.resolve(`${EVE_PACKAGE_NAME}/package.json`),EVE_PACKAGE_NAME);if(e)return cachedPackageInfo=e,cachedPackageInfo}catch{}return cachedPackageInfo={...FALLBACK_PACKAGE_INFO},cachedPackageInfo}function readWorkflowVersionFromManifest(e){let t=e;for(let e of[t.devDependencies,t.dependencies,t.peerDependencies]){let t=e?.[`@workflow/core`];if(typeof t==`string`&&t.trim().length>0)return t}}function resolveExpectedWorkflowVersion(){let e=tryResolvePackageRoot();if(e!==void 0)try{return readWorkflowVersionFromManifest(JSON.parse(readFileSync(join(e,`package.json`),`utf8`)))}catch{}try{return readWorkflowVersionFromManifest(JSON.parse(readFileSync(require.resolve(`${EVE_PACKAGE_NAME}/package.json`),`utf8`)))}catch{return}}function resolveWorkflowModulePath(e){if(e===`workflow`)return resolvePackageSourceFilePath(`src/internal/workflow/index.ts`);if(e===`workflow/api`||e===`workflow/runtime`)return resolvePackageSourceFilePath(`src/internal/workflow/runtime.ts`);if(e===`workflow/internal/builtins`)return resolvePackageSourceFilePath(`src/internal/workflow/builtins.ts`);let t=WORKFLOW_MODULE_ALIASES[e];return t===void 0?require.resolve(e):resolvePackageCompiledFilePath(t)}export{resolveExpectedWorkflowVersion,resolveInstalledPackageInfo,resolvePackageCompiledFilePath,resolvePackageDependencyPath,resolvePackageRoot,resolvePackageSourceDirectoryPath,resolvePackageSourceFilePath,resolveWorkflowModulePath};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{dirname,join,posix,resolve,sep}from"node:path";import{access,cp,mkdir,readFile}from"node:fs/promises";function isRecord(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}const NEXT_MIDDLEWARE_PATH=`/_middleware`;function resolveMiddlewareFunctionDirectory(e,t){let a=posix.normalize(t.replace(/^\/+/,``));if(a.length===0||a===`.`||a===`..`||a.startsWith(`../`)||a.includes(`\\`)||a.includes(`\0`))throw Error(`Invalid Vercel middlewarePath: ${JSON.stringify(t)}.`);let o=resolve(e,`functions`),s=resolve(o,`${a}.func`);if(!s.startsWith(`${o}${sep}`))throw Error(`Vercel middlewarePath escapes the functions directory: ${t}.`);return s}async function copyHostMiddlewareFunctions(n){let r=
|
|
1
|
+
import{dirname,join,posix,resolve,sep}from"node:path";import{access,cp,mkdir,readFile}from"node:fs/promises";function isRecord(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}const NEXT_MIDDLEWARE_PATH=`/_middleware`;function resolveMiddlewareFunctionDirectory(e,t){let a=posix.normalize(t.replace(/^\/+/,``));if(a.length===0||a===`.`||a===`..`||a.startsWith(`../`)||a.includes(`\\`)||a.includes(`\0`))throw Error(`Invalid Vercel middlewarePath: ${JSON.stringify(t)}.`);let o=resolve(e,`functions`),s=resolve(o,`${a}.func`);if(!s.startsWith(`${o}${sep}`))throw Error(`Vercel middlewarePath escapes the functions directory: ${t}.`);return s}async function copyHostMiddlewareFunctions(n){let r;try{r=await readFile(join(n.hostOutputDirectory,`config.json`),`utf8`)}catch(e){if(e instanceof Error&&`code`in e&&e.code===`ENOENT`)return;throw e}let i=JSON.parse(r);if(!isRecord(i))return;let c=new Set;if(Array.isArray(i.routes))for(let e of i.routes)isRecord(e)&&typeof e.middlewarePath==`string`&&c.add(e.middlewarePath);let l=resolveMiddlewareFunctionDirectory(n.hostOutputDirectory,NEXT_MIDDLEWARE_PATH);try{await access(l),c.add(NEXT_MIDDLEWARE_PATH)}catch(e){if(!(e instanceof Error&&`code`in e&&e.code===`ENOENT`))throw e}for(let t of c){let r=resolveMiddlewareFunctionDirectory(n.hostOutputDirectory,t),i=resolveMiddlewareFunctionDirectory(n.serviceOutputDirectory,t);await mkdir(dirname(i),{recursive:!0}),await cp(r,i,{force:!0,recursive:!0})}}export{copyHostMiddlewareFunctions};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createGetSessionFn}from"#channel/session.js";import{createLogger,logError}from"#internal/logging.js";import{createSendFn}from"#channel/send.js";import{createCrossChannelReceiveFn,toCrossChannelTargets}from"#channel/cross-channel-receive.js";import{DEVELOPMENT_WORKFLOW_SECRET_ENV}from"#internal/workflow/development-world-protocol.js";import{readTrustedDevelopmentClientAddress}from"#internal/nitro/dev-client-address.js";import{createCancelFn}from"#channel/cancel.js";import{attachAgentInfoRouteResponse,attachRouteAgent}from"#internal/nitro/routes/channel-route-context.js";import{resolveNitroChannelRuntimeBundle}from"#internal/nitro/routes/runtime-stack.js";import{readVercelProjectLink}from"#internal/vercel/project-link.js";import{withVercelOidcProjectResolver}from"#runtime/governance/auth/vercel-oidc-project.js";const log=createLogger(`channel.dispatch`);async function dispatchChannelRequest(e,t,r){let i=await resolveNitroChannelRuntimeBundle(r),a=i.channels.find(e=>`${e.method.toUpperCase()} ${e.urlPath}`===t);if(a===void 0)return Response.json({error:`No matching channel for this request.`,ok:!1},{status:404});let o=buildRouteArgs(e,i,a.name,r),s;try{s=await withDevelopmentVercelOidcContext(r,e.req,async()=>{if(a.handler)return await a.handler(e.req,o.args);let t={agent:o.agent,waitUntil:o.args.waitUntil,params:o.args.params,requestIp:o.args.requestIp};return await a.fetch(e.req,t)})}catch(r){let i=logError(log,`channel handler threw`,r,{routeKey:t,channel:a.name});return flushBackgroundTasks(e,o.backgroundTasks,t,a.name),Response.json({error:`Channel handler failed.`,errorId:i,ok:!1},{status:500})}return flushBackgroundTasks(e,o.backgroundTasks,t,a.name),s}async function dispatchChannelWebSocketRequest(e,t,r){let i=await resolveNitroChannelRuntimeBundle(r),a=i.channels.find(e=>`${e.method.toUpperCase()} ${e.urlPath}`===t);if(a===void 0||a.websocket===void 0)return rejectWebSocketUpgrade({error:`No matching websocket channel for this request.`,ok:!1},404);let o=a.websocket,s=buildRouteArgs(e,i,a.name,r);try{let n=await withDevelopmentVercelOidcContext(r,e.req,async()=>await o(e.req,s.args));return flushBackgroundTasks(e,s.backgroundTasks,t,a.name),n}catch(r){let i=logError(log,`channel websocket handler threw`,r,{routeKey:t,channel:a.name});return flushBackgroundTasks(e,s.backgroundTasks,t,a.name),rejectWebSocketUpgrade({error:`Channel websocket handler failed.`,errorId:i,ok:!1},500)}}async function withDevelopmentVercelOidcContext(e,t,n){return e.kind===`development`?await withVercelOidcProjectResolver({request:t,resolveCurrentProject:async()=>{let t=await readVercelProjectLink(e.appRoot);return t===void 0?void 0:{environment:`development`,projectId:t.projectId}}},n):await n()}function buildRouteArgs(t,n,o,s){let c=readVercelRequestId(t.req.headers),l=extractRequestIp(t,s),u=[],d=t.context.params??{},f={};for(let[e,t]of Object.entries(d))f[e]=decodeURIComponent(t);let waitUntil=e=>{u.push(e)},p=n.channels.find(e=>e.name===o)?.adapter??{kind:`channel`},m=createRouteAgent(n.runtime,c);return{agent:m,args:attachRouteAgent(attachAgentInfoRouteResponse({send:createSendFn(n.runtime,p,o,{requestId:c}),cancel:createCancelFn(n.runtime,o),getSession:createGetSessionFn(n.runtime),receive:createCrossChannelReceiveFn(n.runtime,toCrossChannelTargets(n.channels)),params:f,waitUntil,requestIp:l},async()=>{let{handleAgentInfoRequest:e}=await import(`#internal/nitro/routes/info.js`);return await e(s)}),m),backgroundTasks:u}}function createRouteAgent(e,t){return{async cancelTurn(t){return await e.cancelTurn(t)},async deliver(n){let r={...n,requestId:t};return await e.deliver(r)},async getEventStream(t,n){return await e.getEventStream(t,n)},async run(n){let r={...n,requestId:t};return await e.run(r)}}}function readVercelRequestId(e){let t=e.get(`x-vercel-id`)?.trim();return t===``?void 0:t}function rejectWebSocketUpgrade(e,t){return{upgrade(){throw Response.json(e,{status:t})}}}function flushBackgroundTasks(e,t,r,i){t.length!==0&&e.waitUntil(Promise.allSettled(t).then(e=>{for(let t of e)t.status===`rejected`&&logError(log,`channel background task failed`,t.reason,{routeKey:r,channel:i})}))}function extractRequestIp(e,t){if(t.kind===`development`){let t=readTrustedDevelopmentClientAddress(e.req.headers,process.env[DEVELOPMENT_WORKFLOW_SECRET_ENV]);if(t!==void 0)return t}return extractSocketIp(e)}function extractSocketIp(e){let t=e.req.ip;return typeof t==`string`&&t.length>0?t:null}export{dispatchChannelRequest,dispatchChannelWebSocketRequest};
|
|
1
|
+
import{createGetSessionFn}from"#channel/session.js";import{createLogger,logError}from"#internal/logging.js";import{createSendFn}from"#channel/send.js";import{createCrossChannelReceiveFn,toCrossChannelTargets}from"#channel/cross-channel-receive.js";import{DEVELOPMENT_WORKFLOW_SECRET_ENV}from"#internal/workflow/development-world-protocol.js";import{readTrustedDevelopmentClientAddress}from"#internal/nitro/dev-client-address.js";import{createCancelFn}from"#channel/cancel.js";import{createResolveActiveSessionFn}from"#channel/resolve-active-session.js";import{attachAgentInfoRouteResponse,attachRouteAgent}from"#internal/nitro/routes/channel-route-context.js";import{resolveNitroChannelRuntimeBundle}from"#internal/nitro/routes/runtime-stack.js";import{readVercelProjectLink}from"#internal/vercel/project-link.js";import{withVercelOidcProjectResolver}from"#runtime/governance/auth/vercel-oidc-project.js";const log=createLogger(`channel.dispatch`);async function dispatchChannelRequest(e,t,r){let i=await resolveNitroChannelRuntimeBundle(r),a=i.channels.find(e=>`${e.method.toUpperCase()} ${e.urlPath}`===t);if(a===void 0)return Response.json({error:`No matching channel for this request.`,ok:!1},{status:404});let o=buildRouteArgs(e,i,a.name,r),s;try{s=await withDevelopmentVercelOidcContext(r,e.req,async()=>{if(a.handler)return await a.handler(e.req,o.args);let t={agent:o.agent,waitUntil:o.args.waitUntil,params:o.args.params,requestIp:o.args.requestIp};return await a.fetch(e.req,t)})}catch(r){let i=logError(log,`channel handler threw`,r,{routeKey:t,channel:a.name});return flushBackgroundTasks(e,o.backgroundTasks,t,a.name),Response.json({error:`Channel handler failed.`,errorId:i,ok:!1},{status:500})}return flushBackgroundTasks(e,o.backgroundTasks,t,a.name),s}async function dispatchChannelWebSocketRequest(e,t,r){let i=await resolveNitroChannelRuntimeBundle(r),a=i.channels.find(e=>`${e.method.toUpperCase()} ${e.urlPath}`===t);if(a===void 0||a.websocket===void 0)return rejectWebSocketUpgrade({error:`No matching websocket channel for this request.`,ok:!1},404);let o=a.websocket,s=buildRouteArgs(e,i,a.name,r);try{let n=await withDevelopmentVercelOidcContext(r,e.req,async()=>await o(e.req,s.args));return flushBackgroundTasks(e,s.backgroundTasks,t,a.name),n}catch(r){let i=logError(log,`channel websocket handler threw`,r,{routeKey:t,channel:a.name});return flushBackgroundTasks(e,s.backgroundTasks,t,a.name),rejectWebSocketUpgrade({error:`Channel websocket handler failed.`,errorId:i,ok:!1},500)}}async function withDevelopmentVercelOidcContext(e,t,n){return e.kind===`development`?await withVercelOidcProjectResolver({request:t,resolveCurrentProject:async()=>{let t=await readVercelProjectLink(e.appRoot);return t===void 0?void 0:{environment:`development`,projectId:t.projectId}}},n):await n()}function buildRouteArgs(t,n,o,s){let c=readVercelRequestId(t.req.headers),l=extractRequestIp(t,s),u=[],d=t.context.params??{},f={};for(let[e,t]of Object.entries(d))f[e]=decodeURIComponent(t);let waitUntil=e=>{u.push(e)},p=n.channels.find(e=>e.name===o)?.adapter??{kind:`channel`},m=createRouteAgent(n.runtime,c);return{agent:m,args:attachRouteAgent(attachAgentInfoRouteResponse({send:createSendFn(n.runtime,p,o,{requestId:c}),resolveActiveSession:createResolveActiveSessionFn(n.runtime,o),cancel:createCancelFn(n.runtime,o),getSession:createGetSessionFn(n.runtime),receive:createCrossChannelReceiveFn(n.runtime,toCrossChannelTargets(n.channels)),params:f,waitUntil,requestIp:l},async()=>{let{handleAgentInfoRequest:e}=await import(`#internal/nitro/routes/info.js`);return await e(s)}),m),backgroundTasks:u}}function createRouteAgent(e,t){return{async cancelTurn(t){return await e.cancelTurn(t)},async deliver(n){let r={...n,requestId:t};return await e.deliver(r)},async getEventStream(t,n){return await e.getEventStream(t,n)},async run(n){let r={...n,requestId:t};return await e.run(r)}}}function readVercelRequestId(e){let t=e.get(`x-vercel-id`)?.trim();return t===``?void 0:t}function rejectWebSocketUpgrade(e,t){return{upgrade(){throw Response.json(e,{status:t})}}}function flushBackgroundTasks(e,t,r,i){t.length!==0&&e.waitUntil(Promise.allSettled(t).then(e=>{for(let t of e)t.status===`rejected`&&logError(log,`channel background task failed`,t.reason,{routeKey:r,channel:i})}))}function extractRequestIp(e,t){if(t.kind===`development`){let t=readTrustedDevelopmentClientAddress(e.req.headers,process.env[DEVELOPMENT_WORKFLOW_SECRET_ENV]);if(t!==void 0)return t}return extractSocketIp(e)}function extractSocketIp(e){let t=e.req.ip;return typeof t==`string`&&t.length>0?t:null}export{dispatchChannelRequest,dispatchChannelWebSocketRequest};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{basename,dirname,extname,join,relative}from"node:path";import{cp,mkdir,readFile,readdir,realpath,rename,rm,symlink,writeFile}from"node:fs/promises";import{buildSingleRolldownChunk}from"#internal/bundler/nitro-rolldown.js";import{EVE_SHARED_SERVER_FUNCTION_PATH,isEveVercelFunctionPath,normalizeEveVercelRoutes}from"#internal/workflow-bundle/eve-service-route-output.js";const WORKFLOW_STEP_EXTERNAL_PACKAGES=[`@mongodb-js/zstd`,`just-bash`,`microsandbox`,`node-liblzma`],WORKFLOW_BUILDER_DEFERRED_PACKAGES=[`@chat-adapter/slack`,`chat`];function createWorkflowFunctionEnvironment(e){let t={};return isRecord(e)&&Object.assign(t,e),t.NODE_OPTIONS=`--experimental-require-module`,t}function isRecord(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}async function prepareVercelFunctionDirectory(e){await rm(e,{force:!0,recursive:!0}),await mkdir(e,{recursive:!0})}async function resolveNitroFunctionDirectory(e){try{return await realpath(e.sourcePath)}catch{return await realpath(e.fallbackPath)}}async function copyNitroFunctionDirectory(e){let t=await resolveNitroFunctionDirectory({fallbackPath:e.fallbackPath,sourcePath:e.sourcePath});await prepareVercelFunctionDirectory(e.targetPath),await cp(t,e.targetPath,{dereference:!0,recursive:!0})}async function normalizeEveVercelFunctionOutput(e,t={}){let n=join(e,`functions`),i=await prepareSharedEveServerFunction(n);i!==null&&await repointEveFunctionSymlinksInDirectory(n,i),await pruneNonEveFunctionEntries(n,n),await pruneNonEveVercelRoutes(e,t.servicePrefix)}async function prepareSharedEveServerFunction(e){let n=join(e,`__server.func`),i=join(e,EVE_SHARED_SERVER_FUNCTION_PATH),s;try{s=await realpath(n)}catch(e){if(e instanceof Error&&`code`in e&&e.code===`ENOENT`)return null;throw e}let c=`${i}.eve-staging`;return await mkdir(dirname(i),{recursive:!0}),await rm(c,{force:!0,recursive:!0}),await cp(s,c,{dereference:!0,recursive:!0}),await rm(i,{force:!0,recursive:!0}),await rename(c,i),i}async function repointEveFunctionSymlinksInDirectory(e,t,n=e){let a;try{a=await readdir(e,{withFileTypes:!0})}catch(e){if(e instanceof Error&&`code`in e&&e.code===`ENOENT`)return;throw e}await Promise.all(a.map(async a=>{let o=join(e,a.name),s=normalizeVercelOutputPath(relative(n,o));if(a.isSymbolicLink()){a.name.endsWith(`.func`)&&isEveVercelFunctionPath(s)&&await repointFunctionSymlink(o,t);return}a.isDirectory()&&!a.name.endsWith(`.func`)&&await repointEveFunctionSymlinksInDirectory(o,t,n)}))}async function repointFunctionSymlink(e,n){await rm(e,{force:!0,recursive:!0}),await symlink(normalizeVercelOutputPath(relative(dirname(e),n)),e,`dir`)}async function pruneNonEveFunctionEntries(e,t){let n;try{n=await readdir(t,{withFileTypes:!0})}catch(e){if(e instanceof Error&&`code`in e&&e.code===`ENOENT`)return;throw e}await Promise.all(n.map(async n=>{let a=join(t,n.name),o=normalizeVercelOutputPath(relative(e,a));if(n.name.endsWith(`.func`)){isEveVercelFunctionPath(o)||await rm(a,{force:!0,recursive:!0});return}n.isDirectory()&&await pruneNonEveFunctionEntries(e,a)}))}async function pruneNonEveVercelRoutes(e,t){let n=join(e,`config.json`),i;try{i=JSON.parse(await readFile(n,`utf8`))}catch(e){if(e instanceof Error&&`code`in e&&e.code===`ENOENT`)return;throw e}!isRecord(i)||!Array.isArray(i.routes)||(i.routes=normalizeEveVercelRoutes(i.routes,t),await writeFile(n,`${JSON.stringify(i,null,2)}\n`))}function normalizeVercelOutputPath(e){return e.replaceAll(`\\`,`/`)}async function emitBundledWorkflowFunctionDirectory(e){await prepareVercelFunctionDirectory(e.targetPath);let n=await emitBundledWorkflowPluginModules({pluginPaths:e.pluginPaths??[],targetPath:e.targetPath}),i=join(dirname(e.bundlePath),`__eve_workflow_function_entry.js`),a=await buildSingleRolldownChunk(`Vercel workflow function for "${e.bundlePath}"`,{cwd:dirname(e.bundlePath),input:i,platform:`node`,plugins:[createVirtualModulePlugin({id:i,moduleType:`js`,source:createWorkflowFunctionEntrypointSource({bundlePath:e.bundlePath,pluginModulePaths:n})})],output:{comments:!1,format:`cjs`,sourcemap:!1}});await Promise.all([writeFile(join(e.targetPath,`index.js`),a.code),writeFile(join(e.targetPath,`package.json`),`${JSON.stringify({type:`commonjs`},null,2)}\n`),writeFile(join(e.targetPath,`.vc-config.json`),`${JSON.stringify({environment:createWorkflowFunctionEnvironment(),handler:`index.js`,launcherType:`Nodejs`,supportsResponseStreaming:!0},null,2)}\n`)])}async function emitBundledWorkflowPluginModules(e){return await Promise.all(e.pluginPaths.map(async(t,n)=>{let i=await buildSingleRolldownChunk(`workflow plugin for "${t}"`,{input:t,platform:`node`,output:{comments:!1,format:`esm`,sourcemap:!1}}),a=`__eve_workflow_plugin_${n}.mjs`;return await writeFile(join(e.targetPath,a),i.code),`./${a}`}))}function createVirtualModulePlugin(e){return{name:`eve-virtual-module`,resolveId(t){return t===e.id?e.id:void 0},load(t){return t===e.id?{code:e.source,moduleType:e.moduleType}:void 0}}}function toRelativeImportPath(e){let t=relative(e.fromDirectoryPath,e.toFilePath).replaceAll(`\\`,`/`);return t.startsWith(`.`)?t:`./${t}`}function normalizeImportSpecifierPath(e){return e.replaceAll(`\\`,`/`)}function createWorkflowFunctionEntrypointSource(t){let n=t.pluginModulePaths.map(e=>normalizeImportSpecifierPath(e)),r=n.length>0;return[`const { POST } = require(${JSON.stringify(`./${basename(t.bundlePath)}`)});`,...r?[`const workflowPluginModulePaths = ${JSON.stringify(n)};`,``,`let workflowPluginPromise;`,``,`async function loadWorkflowPlugins() {`,` if (workflowPluginPromise == null) {`,` workflowPluginPromise = (async () => {`,` for (const pluginPath of workflowPluginModulePaths) {`,` await import(pluginPath);`,` }`,` })();`,` }`,` return await workflowPluginPromise;`,`}`]:[],``,`const DEFAULT_WORKFLOW_REQUEST_ORIGIN = "https://workflow.invalid";`,``,`function getHeader(headers, name) {`,` if (headers === null || headers === undefined) {`,` return undefined;`,` }`,` if (typeof headers.get === "function") {`,` const value = headers.get(name);`,` return typeof value === "string" && value.length > 0 ? value : undefined;`,` }`,` if (typeof headers !== "object") {`,` return undefined;`,` }`,` const record = headers;`,` const lowerName = name.toLowerCase();`,` for (const [key, value] of Object.entries(record)) {`,` if (key.toLowerCase() !== lowerName || value === undefined) {`,` continue;`,` }`,` if (Array.isArray(value)) {`,` return value.find((item) => typeof item === "string" && item.length > 0);`,` }`,` return typeof value === "string" && value.length > 0 ? value : undefined;`,` }`,` return undefined;`,`}`,``,`function createHeaders(headers) {`,` const normalized = new Headers();`,` if (headers === null || headers === undefined) {`,` return normalized;`,` }`,` if (headers instanceof Headers) {`,` return headers;`,` }`,` if (typeof headers.forEach === "function" && typeof headers.entries === "function") {`,` for (const [key, value] of headers.entries()) {`,` normalized.append(key, value);`,` }`,` return normalized;`,` }`,` for (const [key, value] of Object.entries(headers)) {`,` if (value === undefined) {`,` continue;`,` }`,` if (Array.isArray(value)) {`,` for (const item of value) {`,` normalized.append(key, String(item));`,` }`,` continue;`,` }`,` normalized.set(key, String(value));`,` }`,` return normalized;`,`}`,``,`function toAbsoluteWorkflowUrl(request) {`,` const url = typeof request?.url === "string" ? request.url : "/";`,` if (/^https?:\\/\\//.test(url)) {`,` return url;`,` }`,` const host = getHeader(request?.headers, "x-forwarded-host") ?? getHeader(request?.headers, "host");`,` const protocolHeader = getHeader(request?.headers, "x-forwarded-proto");`,` const protocol = protocolHeader === "http" || protocolHeader === "https" ? protocolHeader : "https";`,` const origin = typeof host === "string" && host.length > 0 ? protocol + "://" + host : DEFAULT_WORKFLOW_REQUEST_ORIGIN;`,` return new URL(url, origin).toString();`,`}`,``,`function normalizeWorkflowRequest(request) {`,` if (request instanceof Request) {`,` if (/^https?:\\/\\//.test(request.url)) {`,` return request;`,` }`,` return new Request(toAbsoluteWorkflowUrl(request), request);`,` }`,` const method = typeof request?.method === "string" ? request.method : "GET";`,` const headers = createHeaders(request?.headers);`,` const init = {`,` headers,`,` method,`,` };`,` if (method !== "GET" && method !== "HEAD") {`,` const body = request?.body ?? (request !== null && typeof request === "object" && typeof request.pipe === "function" ? request : undefined);`,` if (body !== undefined) {`,` init.body = body;`,` init.duplex = "half";`,` }`,` }`,` return new Request(toAbsoluteWorkflowUrl(request), init);`,`}`,``,`module.exports = async function handleWorkflowFunctionRequest(requestContext) {`,` const request =`,` requestContext !== null && typeof requestContext === "object" && "req" in requestContext`,` ? requestContext.req`,` : requestContext;`,...r?[` await loadWorkflowPlugins();`]:[],` return await POST(normalizeWorkflowRequest(request));`,`};`,``].join(`
|
|
1
|
+
import{basename,dirname,extname,join,relative}from"node:path";import{cp,mkdir,readFile,readdir,realpath,rename,rm,symlink,writeFile}from"node:fs/promises";import{buildSingleRolldownChunk}from"#internal/bundler/nitro-rolldown.js";import{EVE_SHARED_SERVER_FUNCTION_PATH,isEveVercelFunctionPath,normalizeEveVercelRoutes}from"#internal/workflow-bundle/eve-service-route-output.js";const WORKFLOW_STEP_EXTERNAL_PACKAGES=[`@mongodb-js/zstd`,`just-bash`,`microsandbox`,`node-liblzma`],WORKFLOW_BUILDER_DEFERRED_PACKAGES=[`@chat-adapter/slack`,`chat`];function createWorkflowFunctionEnvironment(e){let t={};return isRecord(e)&&Object.assign(t,e),t.WORKFLOW_PRECONDITION_GUARD=`1`,t.NODE_OPTIONS=`--experimental-require-module`,t}function isRecord(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}async function prepareVercelFunctionDirectory(e){await rm(e,{force:!0,recursive:!0}),await mkdir(e,{recursive:!0})}async function resolveNitroFunctionDirectory(e){try{return await realpath(e.sourcePath)}catch{return await realpath(e.fallbackPath)}}async function copyNitroFunctionDirectory(e){let t=await resolveNitroFunctionDirectory({fallbackPath:e.fallbackPath,sourcePath:e.sourcePath});await prepareVercelFunctionDirectory(e.targetPath),await cp(t,e.targetPath,{dereference:!0,recursive:!0})}async function normalizeEveVercelFunctionOutput(e,t={}){let n=join(e,`functions`),i=await prepareSharedEveServerFunction(n);i!==null&&await repointEveFunctionSymlinksInDirectory(n,i),await pruneNonEveFunctionEntries(n,n),await pruneNonEveVercelRoutes(e,t.servicePrefix)}async function prepareSharedEveServerFunction(e){let n=join(e,`__server.func`),i=join(e,EVE_SHARED_SERVER_FUNCTION_PATH),s;try{s=await realpath(n)}catch(e){if(e instanceof Error&&`code`in e&&e.code===`ENOENT`)return null;throw e}let c=`${i}.eve-staging`;return await mkdir(dirname(i),{recursive:!0}),await rm(c,{force:!0,recursive:!0}),await cp(s,c,{dereference:!0,recursive:!0}),await rm(i,{force:!0,recursive:!0}),await rename(c,i),i}async function repointEveFunctionSymlinksInDirectory(e,t,n=e){let a;try{a=await readdir(e,{withFileTypes:!0})}catch(e){if(e instanceof Error&&`code`in e&&e.code===`ENOENT`)return;throw e}await Promise.all(a.map(async a=>{let o=join(e,a.name),s=normalizeVercelOutputPath(relative(n,o));if(a.isSymbolicLink()){a.name.endsWith(`.func`)&&isEveVercelFunctionPath(s)&&await repointFunctionSymlink(o,t);return}a.isDirectory()&&!a.name.endsWith(`.func`)&&await repointEveFunctionSymlinksInDirectory(o,t,n)}))}async function repointFunctionSymlink(e,n){await rm(e,{force:!0,recursive:!0}),await symlink(normalizeVercelOutputPath(relative(dirname(e),n)),e,`dir`)}async function pruneNonEveFunctionEntries(e,t){let n;try{n=await readdir(t,{withFileTypes:!0})}catch(e){if(e instanceof Error&&`code`in e&&e.code===`ENOENT`)return;throw e}await Promise.all(n.map(async n=>{let a=join(t,n.name),o=normalizeVercelOutputPath(relative(e,a));if(n.name.endsWith(`.func`)){isEveVercelFunctionPath(o)||await rm(a,{force:!0,recursive:!0});return}n.isDirectory()&&await pruneNonEveFunctionEntries(e,a)}))}async function pruneNonEveVercelRoutes(e,t){let n=join(e,`config.json`),i;try{i=JSON.parse(await readFile(n,`utf8`))}catch(e){if(e instanceof Error&&`code`in e&&e.code===`ENOENT`)return;throw e}!isRecord(i)||!Array.isArray(i.routes)||(i.routes=normalizeEveVercelRoutes(i.routes,t),await writeFile(n,`${JSON.stringify(i,null,2)}\n`))}function normalizeVercelOutputPath(e){return e.replaceAll(`\\`,`/`)}async function emitBundledWorkflowFunctionDirectory(e){await prepareVercelFunctionDirectory(e.targetPath);let n=await emitBundledWorkflowPluginModules({pluginPaths:e.pluginPaths??[],targetPath:e.targetPath}),i=join(dirname(e.bundlePath),`__eve_workflow_function_entry.js`),a=await buildSingleRolldownChunk(`Vercel workflow function for "${e.bundlePath}"`,{cwd:dirname(e.bundlePath),input:i,platform:`node`,plugins:[createVirtualModulePlugin({id:i,moduleType:`js`,source:createWorkflowFunctionEntrypointSource({bundlePath:e.bundlePath,pluginModulePaths:n})})],output:{comments:!1,format:`cjs`,sourcemap:!1}});await Promise.all([writeFile(join(e.targetPath,`index.js`),a.code),writeFile(join(e.targetPath,`package.json`),`${JSON.stringify({type:`commonjs`},null,2)}\n`),writeFile(join(e.targetPath,`.vc-config.json`),`${JSON.stringify({environment:createWorkflowFunctionEnvironment(),handler:`index.js`,launcherType:`Nodejs`,supportsResponseStreaming:!0},null,2)}\n`)])}async function emitBundledWorkflowPluginModules(e){return await Promise.all(e.pluginPaths.map(async(t,n)=>{let i=await buildSingleRolldownChunk(`workflow plugin for "${t}"`,{input:t,platform:`node`,output:{comments:!1,format:`esm`,sourcemap:!1}}),a=`__eve_workflow_plugin_${n}.mjs`;return await writeFile(join(e.targetPath,a),i.code),`./${a}`}))}function createVirtualModulePlugin(e){return{name:`eve-virtual-module`,resolveId(t){return t===e.id?e.id:void 0},load(t){return t===e.id?{code:e.source,moduleType:e.moduleType}:void 0}}}function toRelativeImportPath(e){let t=relative(e.fromDirectoryPath,e.toFilePath).replaceAll(`\\`,`/`);return t.startsWith(`.`)?t:`./${t}`}function normalizeImportSpecifierPath(e){return e.replaceAll(`\\`,`/`)}function createWorkflowFunctionEntrypointSource(t){let n=t.pluginModulePaths.map(e=>normalizeImportSpecifierPath(e)),r=n.length>0;return[`const { POST } = require(${JSON.stringify(`./${basename(t.bundlePath)}`)});`,...r?[`const workflowPluginModulePaths = ${JSON.stringify(n)};`,``,`let workflowPluginPromise;`,``,`async function loadWorkflowPlugins() {`,` if (workflowPluginPromise == null) {`,` workflowPluginPromise = (async () => {`,` for (const pluginPath of workflowPluginModulePaths) {`,` await import(pluginPath);`,` }`,` })();`,` }`,` return await workflowPluginPromise;`,`}`]:[],``,`const DEFAULT_WORKFLOW_REQUEST_ORIGIN = "https://workflow.invalid";`,``,`function getHeader(headers, name) {`,` if (headers === null || headers === undefined) {`,` return undefined;`,` }`,` if (typeof headers.get === "function") {`,` const value = headers.get(name);`,` return typeof value === "string" && value.length > 0 ? value : undefined;`,` }`,` if (typeof headers !== "object") {`,` return undefined;`,` }`,` const record = headers;`,` const lowerName = name.toLowerCase();`,` for (const [key, value] of Object.entries(record)) {`,` if (key.toLowerCase() !== lowerName || value === undefined) {`,` continue;`,` }`,` if (Array.isArray(value)) {`,` return value.find((item) => typeof item === "string" && item.length > 0);`,` }`,` return typeof value === "string" && value.length > 0 ? value : undefined;`,` }`,` return undefined;`,`}`,``,`function createHeaders(headers) {`,` const normalized = new Headers();`,` if (headers === null || headers === undefined) {`,` return normalized;`,` }`,` if (headers instanceof Headers) {`,` return headers;`,` }`,` if (typeof headers.forEach === "function" && typeof headers.entries === "function") {`,` for (const [key, value] of headers.entries()) {`,` normalized.append(key, value);`,` }`,` return normalized;`,` }`,` for (const [key, value] of Object.entries(headers)) {`,` if (value === undefined) {`,` continue;`,` }`,` if (Array.isArray(value)) {`,` for (const item of value) {`,` normalized.append(key, String(item));`,` }`,` continue;`,` }`,` normalized.set(key, String(value));`,` }`,` return normalized;`,`}`,``,`function toAbsoluteWorkflowUrl(request) {`,` const url = typeof request?.url === "string" ? request.url : "/";`,` if (/^https?:\\/\\//.test(url)) {`,` return url;`,` }`,` const host = getHeader(request?.headers, "x-forwarded-host") ?? getHeader(request?.headers, "host");`,` const protocolHeader = getHeader(request?.headers, "x-forwarded-proto");`,` const protocol = protocolHeader === "http" || protocolHeader === "https" ? protocolHeader : "https";`,` const origin = typeof host === "string" && host.length > 0 ? protocol + "://" + host : DEFAULT_WORKFLOW_REQUEST_ORIGIN;`,` return new URL(url, origin).toString();`,`}`,``,`function normalizeWorkflowRequest(request) {`,` if (request instanceof Request) {`,` if (/^https?:\\/\\//.test(request.url)) {`,` return request;`,` }`,` return new Request(toAbsoluteWorkflowUrl(request), request);`,` }`,` const method = typeof request?.method === "string" ? request.method : "GET";`,` const headers = createHeaders(request?.headers);`,` const init = {`,` headers,`,` method,`,` };`,` if (method !== "GET" && method !== "HEAD") {`,` const body = request?.body ?? (request !== null && typeof request === "object" && typeof request.pipe === "function" ? request : undefined);`,` if (body !== undefined) {`,` init.body = body;`,` init.duplex = "half";`,` }`,` }`,` return new Request(toAbsoluteWorkflowUrl(request), init);`,`}`,``,`module.exports = async function handleWorkflowFunctionRequest(requestContext) {`,` const request =`,` requestContext !== null && typeof requestContext === "object" && "req" in requestContext`,` ? requestContext.req`,` : requestContext;`,...r?[` await loadWorkflowPlugins();`]:[],` return await POST(normalizeWorkflowRequest(request));`,`};`,``].join(`
|
|
2
2
|
`)}function createRoutedNitroEntrypoint(e){return[`import nitroHandler from ${JSON.stringify(e.delegateImportPath)};`,``,`function invokeNitroHandler(request, context) {`,` if (typeof nitroHandler === "function") {`,` return nitroHandler(request, context);`,` }`,``,` if (nitroHandler !== null && typeof nitroHandler === "object" && "fetch" in nitroHandler) {`,` const fetch = nitroHandler.fetch;`,` if (typeof fetch === "function") {`,` return fetch.call(nitroHandler, request, context);`,` }`,` }`,``,` throw new TypeError("Expected Nitro handler to export a function or an object with fetch(request, context).");`,`}`,``,`const workflowRoutePath = ${JSON.stringify(e.workflowRoutePath)};`,``,`function rewriteRequestToWorkflowRoute(request) {`,` const sourceUrl = new URL(request.url);`,` const routedUrl = new URL(workflowRoutePath, sourceUrl);`,` routedUrl.search = sourceUrl.search;`,` return new Request(routedUrl, request);`,`}`,``,`export default {`,` fetch(request, context) {`,` return invokeNitroHandler(rewriteRequestToWorkflowRoute(request), context);`,` },`,`};`,``].join(`
|
|
3
3
|
`)}async function readVercelHandlerPath(e){try{let t=JSON.parse(await readFile(join(e,`.vc-config.json`),`utf8`));if(typeof t.handler==`string`&&t.handler.length>0)return t.handler}catch{}return`index.mjs`}async function retargetNitroFunctionDirectoryToWorkflowRoute(e){let i=await readVercelHandlerPath(e.functionDirectoryPath),a=join(e.functionDirectoryPath,i),o=dirname(a),s=extname(i),c=join(o,`__eve_nitro_handler__${s.length>0?s:`.mjs`}`),l=toRelativeImportPath({fromDirectoryPath:o,toFilePath:c});await rename(a,c),await writeFile(a,createRoutedNitroEntrypoint({delegateImportPath:l,workflowRoutePath:e.workflowRoutePath}))}export{WORKFLOW_BUILDER_DEFERRED_PACKAGES,WORKFLOW_STEP_EXTERNAL_PACKAGES,copyNitroFunctionDirectory,createWorkflowFunctionEnvironment,emitBundledWorkflowFunctionDirectory,normalizeEveVercelFunctionOutput,prepareVercelFunctionDirectory,retargetNitroFunctionDirectoryToWorkflowRoute};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{anyType,arrayType,lazyType,literalType,nativeEnumType,nullableType,objectType,recordType,unionType}from"../../../../../../zod@4.4.3/node_modules/zod/v3/types.js";import"../../../../../../zod@4.4.3/node_modules/zod/v3/index.js";import{remap}from"../lib/primitives.js";import{safeParse}from"../lib/schemas.js";import{boolean,literal,nullable,number,optional,string}from"../types/primitives.js";import{smartUnion}from"../types/smartUnion.js";import{ACLAction$inboundSchema}from"./aclaction.js";import{UpdateProjectAliasAssigned$inboundSchema,UpdateProjectAliasError$inboundSchema,UpdateProjectProjectsBranchMatcher$inboundSchema}from"./updateprojectprojectsbranchmatcher.js";const UpdateProjectChecksConclusion={Canceled:`canceled`,Failed:`failed`,Skipped:`skipped`,Succeeded:`succeeded`},UpdateProjectChecksState={Completed:`completed`,Registered:`registered`,Running:`running`},UpdateProjectPlan={Enterprise:`enterprise`,Hobby:`hobby`,Pro:`pro`},UpdateProjectReadyState={Blocked:`BLOCKED`,Building:`BUILDING`,Canceled:`CANCELED`,Error:`ERROR`,Initializing:`INITIALIZING`,Queued:`QUEUED`,Ready:`READY`},UpdateProjectReadySubstate={Promoted:`PROMOTED`,Rolling:`ROLLING`,Staged:`STAGED`},UpdateProjectProjectsResponseType={Lambdas:`LAMBDAS`},UpdateProjectProjectsNodeVersion={TenDotX:`10.x`,TwelveDotX:`12.x`,FourteenDotX:`14.x`,SixteenDotX:`16.x`,EighteenDotX:`18.x`,TwentyDotX:`20.x`,TwentyTwoDotX:`22.x`,TwentyFourDotX:`24.x`,EightDot10DotX:`8.10.x`},UpdateProjectProjectsResponseDeploymentType={All:`all`,AllExceptCustomDomains:`all_except_custom_domains`,Preview:`preview`,ProdDeploymentUrlsAndAllPreviews:`prod_deployment_urls_and_all_previews`},UpdateProjectProjectsFunctionDefaultMemoryType={Performance:`performance`,PerformanceXl:`performance_xl`,Standard:`standard`,StandardLegacy:`standard_legacy`},UpdateProjectProjectsBuildMachineType={Enhanced:`enhanced`,Standard:`standard`,Turbo:`turbo`},UpdateProjectProjectsBuildMachineSelection={Elastic:`elastic`,Fixed:`fixed`},UpdateProjectProjectsBuildMachineElasticReason={BuildTimeoutFailure:`build-timeout-failure`,EnospcFailure:`enospc-failure`,EnterpriseFloor:`enterprise-floor`,HighPeakDisk:`high-peak-disk`,HighPeakMemory:`high-peak-memory`,LongBuildDuration:`long-build-duration`,OomFailure:`oom-failure`,ShortBuildDuration:`short-build-duration`,SustainedHighCpu:`sustained-high-cpu`},UpdateProjectProjectsConfiguration={SkipNamespaceQueue:`SKIP_NAMESPACE_QUEUE`,WaitForNamespaceQueue:`WAIT_FOR_NAMESPACE_QUEUE`},UpdateProjectProjectsResponseFunctionDefaultMemoryType={Performance:`performance`,PerformanceXl:`performance_xl`,Standard:`standard`,StandardLegacy:`standard_legacy`},UpdateProjectProjectsResponseBuildMachineType={Enhanced:`enhanced`,Standard:`standard`,Turbo:`turbo`},UpdateProjectProjectsResponseBuildMachineSelection={Elastic:`elastic`,Fixed:`fixed`},UpdateProjectProjectsResponseBuildMachineElasticReason={BuildTimeoutFailure:`build-timeout-failure`,EnospcFailure:`enospc-failure`,EnterpriseFloor:`enterprise-floor`,HighPeakDisk:`high-peak-disk`,HighPeakMemory:`high-peak-memory`,LongBuildDuration:`long-build-duration`,OomFailure:`oom-failure`,ShortBuildDuration:`short-build-duration`,SustainedHighCpu:`sustained-high-cpu`},UpdateProjectProjectsResponseConfiguration={SkipNamespaceQueue:`SKIP_NAMESPACE_QUEUE`,WaitForNamespaceQueue:`WAIT_FOR_NAMESPACE_QUEUE`},UpdateProjectProjectsResponse200DeploymentType={All:`all`,AllExceptCustomDomains:`all_except_custom_domains`,Preview:`preview`,ProdDeploymentUrlsAndAllPreviews:`prod_deployment_urls_and_all_previews`},UpdateProjectCve55182MigrationAppliedFrom={All:`all`,AllExceptCustomDomains:`all_except_custom_domains`,Preview:`preview`,ProdDeploymentUrlsAndAllPreviews:`prod_deployment_urls_and_all_previews`},UpdateProjectApril2026SecurityIncidentMigrationAppliedFrom={All:`all`,AllExceptCustomDomains:`all_except_custom_domains`,Preview:`preview`,ProdDeploymentUrlsAndAllPreviews:`prod_deployment_urls_and_all_previews`},UpdateProjectProjectsResponse200ApplicationJSONResponseBodyTargetsType={EndsWith:`endsWith`,Equals:`equals`,StartsWith:`startsWith`},UpdateProjectProjectsChecksConclusion={Canceled:`canceled`,Failed:`failed`,Skipped:`skipped`,Succeeded:`succeeded`},UpdateProjectProjectsChecksState={Completed:`completed`,Registered:`registered`,Running:`running`},UpdateProjectProjectsPlan={Enterprise:`enterprise`,Hobby:`hobby`,Pro:`pro`},UpdateProjectProjectsReadyState={Blocked:`BLOCKED`,Building:`BUILDING`,Canceled:`CANCELED`,Error:`ERROR`,Initializing:`INITIALIZING`,Queued:`QUEUED`,Ready:`READY`},UpdateProjectProjectsReadySubstate={Promoted:`PROMOTED`,Rolling:`ROLLING`,Staged:`STAGED`},UpdateProjectProjectsResponse200Type={Lambdas:`LAMBDAS`},UpdateProjectJobStatus={Failed:`failed`,InProgress:`in-progress`,Pending:`pending`,Skipped:`skipped`,Succeeded:`succeeded`},UpdateProjectProjectsResponse200ApplicationJSONType={Promote:`promote`,Rollback:`rollback`},UpdateProjectTrustedIpsProjectsDeploymentType={All:`all`,AllExceptCustomDomains:`all_except_custom_domains`,Preview:`preview`,ProdDeploymentUrlsAndAllPreviews:`prod_deployment_urls_and_all_previews`,Production:`production`},UpdateProjectTrustedIpsDeploymentType={All:`all`,AllExceptCustomDomains:`all_except_custom_domains`,Preview:`preview`,ProdDeploymentUrlsAndAllPreviews:`prod_deployment_urls_and_all_previews`,Production:`production`},UpdateProjectTrustedIpsProtectionMode={Additional:`additional`,Exclusive:`exclusive`},UpdateProjectFromProjectsResponsePreset={AllCustom:`all-custom`},UpdateProjectFromProjectsPreset={AllCustom:`all-custom`},UpdateProjectToProjectsResponse200ApplicationJSONResponseBodyPreset={AllCustom:`all-custom`},UpdateProjectToProjectsResponse200ApplicationJSONPreset={AllCustom:`all-custom`},UpdateProjectToProjectsResponse200Preset={AllCustom:`all-custom`},UpdateProjectToProjectsResponsePreset={AllCustom:`all-custom`},UpdateProjectCreateDeployments={Disabled:`disabled`,Enabled:`enabled`},UpdateProjectProjectsResponse200ApplicationJSONResponseBodySecurityAction={Challenge:`challenge`,Deny:`deny`,Log:`log`},UpdateProjectProjectsResponse200ApplicationJSONResponseBodySecurityManagedRulesAction={Challenge:`challenge`,Deny:`deny`,Log:`log`},UpdateProjectProjectsResponse200ApplicationJSONResponseBodySecurityManagedRulesBotFilterAction={Challenge:`challenge`,Deny:`deny`,Log:`log`},UpdateProjectProjectsResponse200ApplicationJSONAction={Challenge:`challenge`,Deny:`deny`,Log:`log`},UpdateProjectProjectsResponse200ApplicationJSONResponseBodyAction={Challenge:`challenge`,Deny:`deny`,Log:`log`},UpdateProjectLogHeaders2={Wildcard:`*`},UpdateProjectProjectsIssuerMode={Global:`global`,Team:`team`},UpdateProjectSourcesProjectsResponse200Provider={Bitbucket:`bitbucket`,Github:`github`},UpdateProjectEnvironmentsProjectsResponse200Target={Preview:`preview`,Production:`production`},UpdateProjectProjectsSources={Cli:`cli`,DeployHook:`deploy-hook`,Git:`git`,Integration:`integration`,RestApi:`rest-api`,V0:`v0`},UpdateProjectEnvironmentsProjectsResponseTarget={Preview:`preview`,Production:`production`},UpdateProjectFlatRateTier={Advanced:`advanced`,Base:`base`,Critical:`critical`,Standard:`standard`},UpdateProjectKind={Flat:`flat`},UpdateProjectProjectsResponse200Action={Blocked:`blocked`},UpdateProjectBuilds$inboundSchema=objectType({use:string(),src:optional(string()),dest:optional(string())}),UpdateProjectChecksConclusion$inboundSchema=nativeEnumType(UpdateProjectChecksConclusion),UpdateProjectChecksState$inboundSchema=nativeEnumType(UpdateProjectChecksState),UpdateProjectCreator$inboundSchema=objectType({email:string(),githubLogin:optional(string()),gitlabLogin:optional(string()),uid:string(),username:string()}),UpdateProjectOidcTokenClaims$inboundSchema=objectType({iss:string(),sub:string(),scope:string(),aud:string(),owner:string(),owner_id:string(),project:string(),project_id:string(),environment:string(),custom_environment_id:optional(string()),plan:optional(string())}).transform(e=>remap(e,{owner_id:`ownerId`,project_id:`projectId`,custom_environment_id:`customEnvironmentId`})),UpdateProjectPlan$inboundSchema=nativeEnumType(UpdateProjectPlan),UpdateProjectReadyState$inboundSchema=nativeEnumType(UpdateProjectReadyState),UpdateProjectReadySubstate$inboundSchema=nativeEnumType(UpdateProjectReadySubstate),UpdateProjectProjectsResponseType$inboundSchema=nativeEnumType(UpdateProjectProjectsResponseType);objectType({id:string(),alias:optional(arrayType(string())),aliasAssigned:nullableType(UpdateProjectAliasAssigned$inboundSchema).optional(),aliasError:nullableType(UpdateProjectAliasError$inboundSchema).optional(),aliasFinal:nullableType(string()).optional(),automaticAliases:optional(arrayType(string())),branchMatcher:optional(UpdateProjectProjectsBranchMatcher$inboundSchema),buildingAt:optional(number()),builds:optional(arrayType(lazyType(()=>UpdateProjectBuilds$inboundSchema))),checksConclusion:optional(UpdateProjectChecksConclusion$inboundSchema),checksState:optional(UpdateProjectChecksState$inboundSchema),connectBuildsEnabled:optional(boolean()),connectConfigurationId:optional(string()),createdAt:number(),createdIn:string(),creator:nullable(lazyType(()=>UpdateProjectCreator$inboundSchema)),deletedAt:optional(number()),deploymentHostname:string(),forced:optional(boolean()),name:string(),meta:optional(recordType(string())),monorepoManager:nullableType(string()).optional(),oidcTokenClaims:optional(lazyType(()=>UpdateProjectOidcTokenClaims$inboundSchema)),plan:UpdateProjectPlan$inboundSchema,previewCommentsEnabled:optional(boolean()),private:boolean(),readyAt:optional(number()),readyState:UpdateProjectReadyState$inboundSchema,readySubstate:optional(UpdateProjectReadySubstate$inboundSchema),requestedAt:optional(number()),target:nullableType(string()).optional(),teamId:nullableType(string()).optional(),type:UpdateProjectProjectsResponseType$inboundSchema,url:string(),userId:string(),withCache:optional(boolean())});const UpdateProjectLinkProjectsResponse200ApplicationJSONResponseBodyDeployHooks$inboundSchema=objectType({createdAt:optional(number()),id:string(),name:string(),ref:string(),url:string()}),UpdateProjectLink6$inboundSchema=objectType({org:string(),repo:string(),type:literal(`vercel`),createdAt:optional(number()),deployHooks:arrayType(lazyType(()=>UpdateProjectLinkProjectsResponse200ApplicationJSONResponseBodyDeployHooks$inboundSchema)),gitCredentialId:string(),updatedAt:optional(number()),sourceless:optional(boolean()),productionBranch:string()}),UpdateProjectLinkProjectsResponse200ApplicationJSONDeployHooks$inboundSchema=objectType({createdAt:optional(number()),id:string(),name:string(),ref:string(),url:string()}),UpdateProjectLink5$inboundSchema=objectType({name:string(),slug:string(),owner:string(),type:literal(`bitbucket`),uuid:string(),workspaceUuid:string(),createdAt:optional(number()),deployHooks:arrayType(lazyType(()=>UpdateProjectLinkProjectsResponse200ApplicationJSONDeployHooks$inboundSchema)),gitCredentialId:string(),updatedAt:optional(number()),sourceless:optional(boolean()),productionBranch:string()}),UpdateProjectLinkProjectsResponse200DeployHooks$inboundSchema=objectType({createdAt:optional(number()),id:string(),name:string(),ref:string(),url:string()}),UpdateProjectLink4$inboundSchema=objectType({projectId:string(),projectName:string(),projectNameWithNamespace:string(),projectNamespace:string(),projectOwnerId:optional(number()),projectUrl:string(),type:literal(`gitlab`),createdAt:optional(number()),deployHooks:arrayType(lazyType(()=>UpdateProjectLinkProjectsResponse200DeployHooks$inboundSchema)),gitCredentialId:string(),updatedAt:optional(number()),sourceless:optional(boolean()),productionBranch:string()}),UpdateProjectLinkProjectsResponseDeployHooks$inboundSchema=objectType({createdAt:optional(number()),id:string(),name:string(),ref:string(),url:string()}),UpdateProjectLink3$inboundSchema=objectType({org:string(),repoOwnerId:optional(number()),repo:optional(string()),repoId:optional(number()),type:literal(`github-custom-host`),host:string(),createdAt:optional(number()),deployHooks:arrayType(lazyType(()=>UpdateProjectLinkProjectsResponseDeployHooks$inboundSchema)),gitCredentialId:string(),updatedAt:optional(number()),sourceless:optional(boolean()),productionBranch:string()}),UpdateProjectLinkProjectsDeployHooks$inboundSchema=objectType({createdAt:optional(number()),id:string(),name:string(),ref:string(),url:string()}),UpdateProjectLink2$inboundSchema=objectType({type:literal(`github-limited`),repo:optional(string()),repoId:optional(number()),createdAt:optional(number()),updatedAt:optional(number()),org:string(),repoOwnerId:optional(number()),deployHooks:arrayType(lazyType(()=>UpdateProjectLinkProjectsDeployHooks$inboundSchema)),gitCredentialId:string(),sourceless:optional(boolean()),productionBranch:string()}),UpdateProjectLinkDeployHooks$inboundSchema=objectType({createdAt:optional(number()),id:string(),name:string(),ref:string(),url:string()}),UpdateProjectLink1$inboundSchema=objectType({org:string(),repoOwnerId:optional(number()),repo:optional(string()),repoId:optional(number()),type:literal(`github`),createdAt:optional(number()),deployHooks:arrayType(lazyType(()=>UpdateProjectLinkDeployHooks$inboundSchema)),gitCredentialId:string(),updatedAt:optional(number()),sourceless:optional(boolean()),productionBranch:string()});unionType([lazyType(()=>UpdateProjectLink1$inboundSchema),lazyType(()=>UpdateProjectLink2$inboundSchema),lazyType(()=>UpdateProjectLink3$inboundSchema),lazyType(()=>UpdateProjectLink4$inboundSchema),lazyType(()=>UpdateProjectLink5$inboundSchema),lazyType(()=>UpdateProjectLink6$inboundSchema)]);const UpdateProjectMicrofrontends3$inboundSchema=objectType({updatedAt:number(),groupIds:arrayType(anyType()),enabled:literal(!1),freeProjectForLegacyLimits:optional(boolean())}),UpdateProjectMicrofrontends2$inboundSchema=objectType({isDefaultApp:optional(literal(!1)),routeObservabilityToThisProject:optional(boolean()),doNotRouteWithMicrofrontendsRouting:optional(boolean()),updatedAt:number(),groupIds:arrayType(string()),enabled:literal(!0),defaultRoute:optional(string()),freeProjectForLegacyLimits:optional(boolean())}),UpdateProjectMicrofrontends1$inboundSchema=objectType({isDefaultApp:literal(!0),updatedAt:number(),groupIds:arrayType(string()),enabled:literal(!0),defaultRoute:optional(string()),freeProjectForLegacyLimits:optional(boolean())});smartUnion([lazyType(()=>UpdateProjectMicrofrontends1$inboundSchema),lazyType(()=>UpdateProjectMicrofrontends2$inboundSchema),lazyType(()=>UpdateProjectMicrofrontends3$inboundSchema)]),nativeEnumType(UpdateProjectProjectsNodeVersion);const UpdateProjectProjectsPaths$inboundSchema=objectType({value:string()});objectType({paths:arrayType(lazyType(()=>UpdateProjectProjectsPaths$inboundSchema))}),objectType({}),objectType({deploymentType:nativeEnumType(UpdateProjectProjectsResponseDeploymentType),connectorId:string()});const UpdateProjectSandboxUrls$inboundSchema=objectType({inheritDeploymentProtection:optional(boolean())});objectType({sandboxUrls:optional(lazyType(()=>UpdateProjectSandboxUrls$inboundSchema))});const UpdateProjectProjectsFunctionDefaultMemoryType$inboundSchema=nativeEnumType(UpdateProjectProjectsFunctionDefaultMemoryType),UpdateProjectProjectsBuildMachineType$inboundSchema=nativeEnumType(UpdateProjectProjectsBuildMachineType),UpdateProjectProjectsBuildMachineSelection$inboundSchema=nativeEnumType(UpdateProjectProjectsBuildMachineSelection),UpdateProjectProjectsBuildMachineElasticReason$inboundSchema=nativeEnumType(UpdateProjectProjectsBuildMachineElasticReason),UpdateProjectProjectsBuildQueue$inboundSchema=objectType({configuration:optional(nativeEnumType(UpdateProjectProjectsConfiguration))});objectType({elasticConcurrencyEnabled:optional(boolean()),fluid:optional(boolean()),functionDefaultRegions:arrayType(string()),functionDefaultTimeout:optional(number()),functionDefaultMemoryType:optional(UpdateProjectProjectsFunctionDefaultMemoryType$inboundSchema),functionZeroConfigFailover:optional(boolean()),buildMachineType:optional(UpdateProjectProjectsBuildMachineType$inboundSchema),buildMachineSelection:optional(UpdateProjectProjectsBuildMachineSelection$inboundSchema),buildMachineElasticLastUpdated:optional(number()),buildMachineElasticReason:optional(UpdateProjectProjectsBuildMachineElasticReason$inboundSchema),isNSNBDisabled:optional(boolean()),buildQueue:optional(lazyType(()=>UpdateProjectProjectsBuildQueue$inboundSchema)),enableFunctionsBeta:optional(boolean())}),objectType({userId:string(),username:string(),description:string(),createdAt:number()});const UpdateProjectStages$inboundSchema=objectType({targetPercentage:number(),requireApproval:optional(boolean()),duration:optional(number()),linearShift:optional(boolean())});objectType({target:string(),stages:nullableType(arrayType(lazyType(()=>UpdateProjectStages$inboundSchema))).optional(),canaryResponseHeader:optional(boolean())});const UpdateProjectProjectsResponseFunctionDefaultMemoryType$inboundSchema=nativeEnumType(UpdateProjectProjectsResponseFunctionDefaultMemoryType),UpdateProjectProjectsResponseBuildMachineType$inboundSchema=nativeEnumType(UpdateProjectProjectsResponseBuildMachineType),UpdateProjectProjectsResponseBuildMachineSelection$inboundSchema=nativeEnumType(UpdateProjectProjectsResponseBuildMachineSelection),UpdateProjectProjectsResponseBuildMachineElasticReason$inboundSchema=nativeEnumType(UpdateProjectProjectsResponseBuildMachineElasticReason),UpdateProjectProjectsResponseBuildQueue$inboundSchema=objectType({configuration:optional(nativeEnumType(UpdateProjectProjectsResponseConfiguration))});objectType({elasticConcurrencyEnabled:optional(boolean()),fluid:optional(boolean()),functionDefaultRegions:arrayType(string()),functionDefaultTimeout:optional(number()),functionDefaultMemoryType:optional(UpdateProjectProjectsResponseFunctionDefaultMemoryType$inboundSchema),functionZeroConfigFailover:optional(boolean()),buildMachineType:optional(UpdateProjectProjectsResponseBuildMachineType$inboundSchema),buildMachineSelection:optional(UpdateProjectProjectsResponseBuildMachineSelection$inboundSchema),buildMachineElasticLastUpdated:optional(number()),buildMachineElasticReason:optional(UpdateProjectProjectsResponseBuildMachineElasticReason$inboundSchema),isNSNBDisabled:optional(boolean()),buildQueue:optional(lazyType(()=>UpdateProjectProjectsResponseBuildQueue$inboundSchema)),enableFunctionsBeta:optional(boolean())}),objectType({builds:boolean(),enabled:boolean(),regions:arrayType(string())});const UpdateProjectProjectsResponse200DeploymentType$inboundSchema=nativeEnumType(UpdateProjectProjectsResponse200DeploymentType),UpdateProjectCve55182MigrationAppliedFrom$inboundSchema=nativeEnumType(UpdateProjectCve55182MigrationAppliedFrom),UpdateProjectApril2026SecurityIncidentMigrationAppliedFrom$inboundSchema=nativeEnumType(UpdateProjectApril2026SecurityIncidentMigrationAppliedFrom);objectType({deploymentType:UpdateProjectProjectsResponse200DeploymentType$inboundSchema,cve55182MigrationAppliedFrom:nullableType(UpdateProjectCve55182MigrationAppliedFrom$inboundSchema).optional(),april2026SecurityIncidentMigrationAppliedFrom:nullableType(UpdateProjectApril2026SecurityIncidentMigrationAppliedFrom$inboundSchema).optional()}),smartUnion([number(),boolean()]);const UpdateProjectProjectsAliasError$inboundSchema=objectType({code:string(),message:string()}),UpdateProjectProjectsResponseBranchMatcher$inboundSchema=objectType({type:nativeEnumType(UpdateProjectProjectsResponse200ApplicationJSONResponseBodyTargetsType),pattern:string()}),UpdateProjectProjectsBuilds$inboundSchema=objectType({use:string(),src:optional(string()),dest:optional(string())}),UpdateProjectProjectsChecksConclusion$inboundSchema=nativeEnumType(UpdateProjectProjectsChecksConclusion),UpdateProjectProjectsChecksState$inboundSchema=nativeEnumType(UpdateProjectProjectsChecksState),UpdateProjectProjectsCreator$inboundSchema=objectType({email:string(),githubLogin:optional(string()),gitlabLogin:optional(string()),uid:string(),username:string()}),UpdateProjectProjectsOidcTokenClaims$inboundSchema=objectType({iss:string(),sub:string(),scope:string(),aud:string(),owner:string(),owner_id:string(),project:string(),project_id:string(),environment:string(),custom_environment_id:optional(string()),plan:optional(string())}).transform(e=>remap(e,{owner_id:`ownerId`,project_id:`projectId`,custom_environment_id:`customEnvironmentId`})),UpdateProjectProjectsPlan$inboundSchema=nativeEnumType(UpdateProjectProjectsPlan),UpdateProjectProjectsReadyState$inboundSchema=nativeEnumType(UpdateProjectProjectsReadyState),UpdateProjectProjectsReadySubstate$inboundSchema=nativeEnumType(UpdateProjectProjectsReadySubstate),UpdateProjectProjectsResponse200Type$inboundSchema=nativeEnumType(UpdateProjectProjectsResponse200Type);objectType({id:string(),alias:optional(arrayType(string())),aliasAssigned:nullableType(smartUnion([number(),boolean()])).optional(),aliasError:nullableType(lazyType(()=>UpdateProjectProjectsAliasError$inboundSchema)).optional(),aliasFinal:nullableType(string()).optional(),automaticAliases:optional(arrayType(string())),branchMatcher:optional(lazyType(()=>UpdateProjectProjectsResponseBranchMatcher$inboundSchema)),buildingAt:optional(number()),builds:optional(arrayType(lazyType(()=>UpdateProjectProjectsBuilds$inboundSchema))),checksConclusion:optional(UpdateProjectProjectsChecksConclusion$inboundSchema),checksState:optional(UpdateProjectProjectsChecksState$inboundSchema),connectBuildsEnabled:optional(boolean()),connectConfigurationId:optional(string()),createdAt:number(),createdIn:string(),creator:nullable(lazyType(()=>UpdateProjectProjectsCreator$inboundSchema)),deletedAt:optional(number()),deploymentHostname:string(),forced:optional(boolean()),name:string(),meta:optional(recordType(string())),monorepoManager:nullableType(string()).optional(),oidcTokenClaims:optional(lazyType(()=>UpdateProjectProjectsOidcTokenClaims$inboundSchema)),plan:UpdateProjectProjectsPlan$inboundSchema,previewCommentsEnabled:optional(boolean()),private:boolean(),readyAt:optional(number()),readyState:UpdateProjectProjectsReadyState$inboundSchema,readySubstate:optional(UpdateProjectProjectsReadySubstate$inboundSchema),requestedAt:optional(number()),target:nullableType(string()).optional(),teamId:nullableType(string()).optional(),type:UpdateProjectProjectsResponse200Type$inboundSchema,url:string(),userId:string(),withCache:optional(boolean())}),objectType({oauth2Connection:optional(arrayType(ACLAction$inboundSchema)),user:optional(arrayType(ACLAction$inboundSchema)),userConnection:optional(arrayType(ACLAction$inboundSchema)),userMfaConfiguration:optional(arrayType(ACLAction$inboundSchema)),userPreference:optional(arrayType(ACLAction$inboundSchema)),userSudo:optional(arrayType(ACLAction$inboundSchema)),webAuthn:optional(arrayType(ACLAction$inboundSchema)),accessGroup:optional(arrayType(ACLAction$inboundSchema)),agent:optional(arrayType(ACLAction$inboundSchema)),aiGatewayApiKey:optional(arrayType(ACLAction$inboundSchema)),aiGatewayApiKeyOwnedBySelf:optional(arrayType(ACLAction$inboundSchema)),aiGatewayCredits:optional(arrayType(ACLAction$inboundSchema)),aiGatewayPrivateModels:optional(arrayType(ACLAction$inboundSchema)),aiGatewayRules:optional(arrayType(ACLAction$inboundSchema)),aiGatewaySettings:optional(arrayType(ACLAction$inboundSchema)),aiGatewayUsage:optional(arrayType(ACLAction$inboundSchema)),alerts:optional(arrayType(ACLAction$inboundSchema)),alertRules:optional(arrayType(ACLAction$inboundSchema)),aliasGlobal:optional(arrayType(ACLAction$inboundSchema)),analyticsSampling:optional(arrayType(ACLAction$inboundSchema)),analyticsUsage:optional(arrayType(ACLAction$inboundSchema)),apiKey:optional(arrayType(ACLAction$inboundSchema)),apiKeyAiGateway:optional(arrayType(ACLAction$inboundSchema)),apiKeyOwnedBySelf:optional(arrayType(ACLAction$inboundSchema)),oauth2Application:optional(arrayType(ACLAction$inboundSchema)),vercelAppInstallation:optional(arrayType(ACLAction$inboundSchema)),vercelAppInstallationRequest:optional(arrayType(ACLAction$inboundSchema)),auditLog:optional(arrayType(ACLAction$inboundSchema)),billingAddress:optional(arrayType(ACLAction$inboundSchema)),billingInformation:optional(arrayType(ACLAction$inboundSchema)),billingInvoice:optional(arrayType(ACLAction$inboundSchema)),billingInvoiceEmailRecipient:optional(arrayType(ACLAction$inboundSchema)),billingInvoiceLanguage:optional(arrayType(ACLAction$inboundSchema)),billingPlan:optional(arrayType(ACLAction$inboundSchema)),billingPurchaseOrder:optional(arrayType(ACLAction$inboundSchema)),billingRefund:optional(arrayType(ACLAction$inboundSchema)),billingTaxId:optional(arrayType(ACLAction$inboundSchema)),blob:optional(arrayType(ACLAction$inboundSchema)),blobStoreTokenSet:optional(arrayType(ACLAction$inboundSchema)),budget:optional(arrayType(ACLAction$inboundSchema)),cacheArtifact:optional(arrayType(ACLAction$inboundSchema)),cacheArtifactUsageEvent:optional(arrayType(ACLAction$inboundSchema)),codeChecks:optional(arrayType(ACLAction$inboundSchema)),codeOwners:optional(arrayType(ACLAction$inboundSchema)),ciInvocations:optional(arrayType(ACLAction$inboundSchema)),ciLogs:optional(arrayType(ACLAction$inboundSchema)),concurrentBuilds:optional(arrayType(ACLAction$inboundSchema)),connect:optional(arrayType(ACLAction$inboundSchema)),connectConfiguration:optional(arrayType(ACLAction$inboundSchema)),connexClient:optional(arrayType(ACLAction$inboundSchema)),connexClientProject:optional(arrayType(ACLAction$inboundSchema)),connexToken:optional(arrayType(ACLAction$inboundSchema)),buildMachineDefault:optional(arrayType(ACLAction$inboundSchema)),dataCacheBillingSettings:optional(arrayType(ACLAction$inboundSchema)),defaultDeploymentProtection:optional(arrayType(ACLAction$inboundSchema)),deploymentPolicy:optional(arrayType(ACLAction$inboundSchema)),domain:optional(arrayType(ACLAction$inboundSchema)),domainAcceptDelegation:optional(arrayType(ACLAction$inboundSchema)),domainAuthCodes:optional(arrayType(ACLAction$inboundSchema)),domainCertificate:optional(arrayType(ACLAction$inboundSchema)),domainCheckConfig:optional(arrayType(ACLAction$inboundSchema)),domainMove:optional(arrayType(ACLAction$inboundSchema)),domainPurchase:optional(arrayType(ACLAction$inboundSchema)),domainRecord:optional(arrayType(ACLAction$inboundSchema)),domainTransferIn:optional(arrayType(ACLAction$inboundSchema)),drain:optional(arrayType(ACLAction$inboundSchema)),edgeConfig:optional(arrayType(ACLAction$inboundSchema)),edgeConfigItem:optional(arrayType(ACLAction$inboundSchema)),edgeConfigSchema:optional(arrayType(ACLAction$inboundSchema)),edgeConfigToken:optional(arrayType(ACLAction$inboundSchema)),endpointVerification:optional(arrayType(ACLAction$inboundSchema)),event:optional(arrayType(ACLAction$inboundSchema)),fileUpload:optional(arrayType(ACLAction$inboundSchema)),flagsExplorerSubscription:optional(arrayType(ACLAction$inboundSchema)),gitRepository:optional(arrayType(ACLAction$inboundSchema)),imageOptimizationNewPrice:optional(arrayType(ACLAction$inboundSchema)),integration:optional(arrayType(ACLAction$inboundSchema)),integrationAccount:optional(arrayType(ACLAction$inboundSchema)),integrationConfiguration:optional(arrayType(ACLAction$inboundSchema)),integrationConfigurationProjects:optional(arrayType(ACLAction$inboundSchema)),integrationConfigurationRole:optional(arrayType(ACLAction$inboundSchema)),integrationConfigurationTransfer:optional(arrayType(ACLAction$inboundSchema)),integrationDeploymentAction:optional(arrayType(ACLAction$inboundSchema)),integrationEvent:optional(arrayType(ACLAction$inboundSchema)),integrationLog:optional(arrayType(ACLAction$inboundSchema)),integrationResource:optional(arrayType(ACLAction$inboundSchema)),integrationResourceData:optional(arrayType(ACLAction$inboundSchema)),integrationResourceReplCommand:optional(arrayType(ACLAction$inboundSchema)),integrationResourceSecrets:optional(arrayType(ACLAction$inboundSchema)),integrationSSOSession:optional(arrayType(ACLAction$inboundSchema)),integrationStrict:optional(arrayType(ACLAction$inboundSchema)),integrationStoreTokenSet:optional(arrayType(ACLAction$inboundSchema)),integrationVercelConfigurationOverride:optional(arrayType(ACLAction$inboundSchema)),integrationPullRequest:optional(arrayType(ACLAction$inboundSchema)),ipBlocking:optional(arrayType(ACLAction$inboundSchema)),jobGlobal:optional(arrayType(ACLAction$inboundSchema)),kmsIssuer:optional(arrayType(ACLAction$inboundSchema)),kmsProjectGrant:optional(arrayType(ACLAction$inboundSchema)),logDrain:optional(arrayType(ACLAction$inboundSchema)),marketplaceBillingData:optional(arrayType(ACLAction$inboundSchema)),marketplaceExperimentationEdgeConfigData:optional(arrayType(ACLAction$inboundSchema)),marketplaceExperimentationItem:optional(arrayType(ACLAction$inboundSchema)),marketplaceInstallationMember:optional(arrayType(ACLAction$inboundSchema)),marketplaceInvoice:optional(arrayType(ACLAction$inboundSchema)),marketplaceSettings:optional(arrayType(ACLAction$inboundSchema)),Monitoring:optional(arrayType(ACLAction$inboundSchema)),monitoringAlert:optional(arrayType(ACLAction$inboundSchema)),monitoringChart:optional(arrayType(ACLAction$inboundSchema)),monitoringQuery:optional(arrayType(ACLAction$inboundSchema)),monitoringSettings:optional(arrayType(ACLAction$inboundSchema)),notificationCustomerBudget:optional(arrayType(ACLAction$inboundSchema)),notificationDeploymentFailed:optional(arrayType(ACLAction$inboundSchema)),notificationDomainConfiguration:optional(arrayType(ACLAction$inboundSchema)),notificationDomainExpire:optional(arrayType(ACLAction$inboundSchema)),notificationDomainMoved:optional(arrayType(ACLAction$inboundSchema)),notificationDomainPurchase:optional(arrayType(ACLAction$inboundSchema)),notificationDomainRenewal:optional(arrayType(ACLAction$inboundSchema)),notificationDomainTransfer:optional(arrayType(ACLAction$inboundSchema)),notificationDomainUnverified:optional(arrayType(ACLAction$inboundSchema)),NotificationMonitoringAlert:optional(arrayType(ACLAction$inboundSchema)),notificationPaymentFailed:optional(arrayType(ACLAction$inboundSchema)),notificationPreferences:optional(arrayType(ACLAction$inboundSchema)),notificationStatementOfReasons:optional(arrayType(ACLAction$inboundSchema)),notificationUsageAlert:optional(arrayType(ACLAction$inboundSchema)),oidcFederationPolicy:optional(arrayType(ACLAction$inboundSchema)),observabilityConfiguration:optional(arrayType(ACLAction$inboundSchema)),observabilityFunnel:optional(arrayType(ACLAction$inboundSchema)),observabilityNotebook:optional(arrayType(ACLAction$inboundSchema)),openTelemetryEndpoint:optional(arrayType(ACLAction$inboundSchema)),ownEvent:optional(arrayType(ACLAction$inboundSchema)),organization:optional(arrayType(ACLAction$inboundSchema)),organizationDomain:optional(arrayType(ACLAction$inboundSchema)),organizationTeam:optional(arrayType(ACLAction$inboundSchema)),passwordProtectionInvoiceItem:optional(arrayType(ACLAction$inboundSchema)),paymentMethod:optional(arrayType(ACLAction$inboundSchema)),permissions:optional(arrayType(ACLAction$inboundSchema)),postgres:optional(arrayType(ACLAction$inboundSchema)),postgresStoreTokenSet:optional(arrayType(ACLAction$inboundSchema)),previewDeploymentSuffix:optional(arrayType(ACLAction$inboundSchema)),privateCloudAccount:optional(arrayType(ACLAction$inboundSchema)),projectTransferIn:optional(arrayType(ACLAction$inboundSchema)),proTrialOnboarding:optional(arrayType(ACLAction$inboundSchema)),rateLimit:optional(arrayType(ACLAction$inboundSchema)),redis:optional(arrayType(ACLAction$inboundSchema)),redisStoreTokenSet:optional(arrayType(ACLAction$inboundSchema)),remoteCaching:optional(arrayType(ACLAction$inboundSchema)),repository:optional(arrayType(ACLAction$inboundSchema)),samlConfig:optional(arrayType(ACLAction$inboundSchema)),secret:optional(arrayType(ACLAction$inboundSchema)),securityConfig:optional(arrayType(ACLAction$inboundSchema)),sensitiveEnvironmentVariablePolicy:optional(arrayType(ACLAction$inboundSchema)),sharedEnvVars:optional(arrayType(ACLAction$inboundSchema)),sharedEnvVarsProduction:optional(arrayType(ACLAction$inboundSchema)),space:optional(arrayType(ACLAction$inboundSchema)),spaceRun:optional(arrayType(ACLAction$inboundSchema)),storeIsLocked:optional(arrayType(ACLAction$inboundSchema)),storeTokenSetSensitive:optional(arrayType(ACLAction$inboundSchema)),storeTransfer:optional(arrayType(ACLAction$inboundSchema)),supportCase:optional(arrayType(ACLAction$inboundSchema)),supportCaseComment:optional(arrayType(ACLAction$inboundSchema)),team:optional(arrayType(ACLAction$inboundSchema)),teamAccessRequest:optional(arrayType(ACLAction$inboundSchema)),teamFellowMembership:optional(arrayType(ACLAction$inboundSchema)),teamGitExclusivity:optional(arrayType(ACLAction$inboundSchema)),teamInvite:optional(arrayType(ACLAction$inboundSchema)),teamInviteCode:optional(arrayType(ACLAction$inboundSchema)),teamInviteLink:optional(arrayType(ACLAction$inboundSchema)),teamJoin:optional(arrayType(ACLAction$inboundSchema)),teamMemberMfaStatus:optional(arrayType(ACLAction$inboundSchema)),teamMicrofrontends:optional(arrayType(ACLAction$inboundSchema)),teamOwnMembership:optional(arrayType(ACLAction$inboundSchema)),teamOwnMembershipDisconnectSAML:optional(arrayType(ACLAction$inboundSchema)),teamSudo:optional(arrayType(ACLAction$inboundSchema)),teamTokenInvalidation:optional(arrayType(ACLAction$inboundSchema)),token:optional(arrayType(ACLAction$inboundSchema)),toolbarComment:optional(arrayType(ACLAction$inboundSchema)),usage:optional(arrayType(ACLAction$inboundSchema)),usageCycle:optional(arrayType(ACLAction$inboundSchema)),vcrRepository:optional(arrayType(ACLAction$inboundSchema)),vercelRun:optional(arrayType(ACLAction$inboundSchema)),vpcPeeringConnection:optional(arrayType(ACLAction$inboundSchema)),webAnalyticsPlan:optional(arrayType(ACLAction$inboundSchema)),webhook:optional(arrayType(ACLAction$inboundSchema)),"webhook-event":optional(arrayType(ACLAction$inboundSchema)),aliasProject:optional(arrayType(ACLAction$inboundSchema)),aliasProtectionBypass:optional(arrayType(ACLAction$inboundSchema)),bulkRedirects:optional(arrayType(ACLAction$inboundSchema)),buildMachine:optional(arrayType(ACLAction$inboundSchema)),connectConfigurationLink:optional(arrayType(ACLAction$inboundSchema)),dataCacheNamespace:optional(arrayType(ACLAction$inboundSchema)),deployment:optional(arrayType(ACLAction$inboundSchema)),deploymentBuildLogs:optional(arrayType(ACLAction$inboundSchema)),deploymentCheck:optional(arrayType(ACLAction$inboundSchema)),deploymentCheckPreview:optional(arrayType(ACLAction$inboundSchema)),deploymentCheckReRunFromProductionBranch:optional(arrayType(ACLAction$inboundSchema)),deploymentProductionGit:optional(arrayType(ACLAction$inboundSchema)),deploymentV0:optional(arrayType(ACLAction$inboundSchema)),deploymentPreview:optional(arrayType(ACLAction$inboundSchema)),deploymentPrivate:optional(arrayType(ACLAction$inboundSchema)),deploymentPromote:optional(arrayType(ACLAction$inboundSchema)),deploymentRollback:optional(arrayType(ACLAction$inboundSchema)),edgeCacheNamespace:optional(arrayType(ACLAction$inboundSchema)),environments:optional(arrayType(ACLAction$inboundSchema)),job:optional(arrayType(ACLAction$inboundSchema)),logs:optional(arrayType(ACLAction$inboundSchema)),logsPreset:optional(arrayType(ACLAction$inboundSchema)),observabilityData:optional(arrayType(ACLAction$inboundSchema)),onDemandBuild:optional(arrayType(ACLAction$inboundSchema)),onDemandConcurrency:optional(arrayType(ACLAction$inboundSchema)),optionsAllowlist:optional(arrayType(ACLAction$inboundSchema)),passwordProtection:optional(arrayType(ACLAction$inboundSchema)),privateLinkEndpoint:optional(arrayType(ACLAction$inboundSchema)),productionAliasProtectionBypass:optional(arrayType(ACLAction$inboundSchema)),project:optional(arrayType(ACLAction$inboundSchema)),projectAccessGroup:optional(arrayType(ACLAction$inboundSchema)),projectAnalyticsSampling:optional(arrayType(ACLAction$inboundSchema)),projectAnalyticsUsage:optional(arrayType(ACLAction$inboundSchema)),projectCheck:optional(arrayType(ACLAction$inboundSchema)),projectCheckRun:optional(arrayType(ACLAction$inboundSchema)),projectDeploymentExpiration:optional(arrayType(ACLAction$inboundSchema)),projectDeploymentHook:optional(arrayType(ACLAction$inboundSchema)),projectDeploymentProtectionStrict:optional(arrayType(ACLAction$inboundSchema)),projectDomain:optional(arrayType(ACLAction$inboundSchema)),projectDomainCheckConfig:optional(arrayType(ACLAction$inboundSchema)),projectDomainMove:optional(arrayType(ACLAction$inboundSchema)),projectEvent:optional(arrayType(ACLAction$inboundSchema)),projectEnvVars:optional(arrayType(ACLAction$inboundSchema)),projectEnvVarsProduction:optional(arrayType(ACLAction$inboundSchema)),projectEnvVarsUnownedByIntegration:optional(arrayType(ACLAction$inboundSchema)),projectFlags:optional(arrayType(ACLAction$inboundSchema)),projectFlagsProduction:optional(arrayType(ACLAction$inboundSchema)),projectFlagsSdkKey:optional(arrayType(ACLAction$inboundSchema)),projectFromV0:optional(arrayType(ACLAction$inboundSchema)),projectId:optional(arrayType(ACLAction$inboundSchema)),projectIntegrationConfiguration:optional(arrayType(ACLAction$inboundSchema)),projectLink:optional(arrayType(ACLAction$inboundSchema)),projectMember:optional(arrayType(ACLAction$inboundSchema)),projectMonitoring:optional(arrayType(ACLAction$inboundSchema)),projectOIDCToken:optional(arrayType(ACLAction$inboundSchema)),projectPermissions:optional(arrayType(ACLAction$inboundSchema)),projectProductionBranch:optional(arrayType(ACLAction$inboundSchema)),projectProtectionBypass:optional(arrayType(ACLAction$inboundSchema)),projectRollingRelease:optional(arrayType(ACLAction$inboundSchema)),projectRoutes:optional(arrayType(ACLAction$inboundSchema)),projectSupportCase:optional(arrayType(ACLAction$inboundSchema)),projectSupportCaseComment:optional(arrayType(ACLAction$inboundSchema)),projectTier:optional(arrayType(ACLAction$inboundSchema)),projectTransfer:optional(arrayType(ACLAction$inboundSchema)),projectTransferOut:optional(arrayType(ACLAction$inboundSchema)),projectUsage:optional(arrayType(ACLAction$inboundSchema)),pageIntegrity:optional(arrayType(ACLAction$inboundSchema)),seawallConfig:optional(arrayType(ACLAction$inboundSchema)),securityPlusConfiguration:optional(arrayType(ACLAction$inboundSchema)),shareableLinkStrict:optional(arrayType(ACLAction$inboundSchema)),sharedEnvVarConnection:optional(arrayType(ACLAction$inboundSchema)),skewProtection:optional(arrayType(ACLAction$inboundSchema)),analytics:optional(arrayType(ACLAction$inboundSchema)),trustedIps:optional(arrayType(ACLAction$inboundSchema)),trustedSources:optional(arrayType(ACLAction$inboundSchema)),v0Chat:optional(arrayType(ACLAction$inboundSchema)),webAnalytics:optional(arrayType(ACLAction$inboundSchema))}).transform(e=>remap(e,{Monitoring:`monitoring`,NotificationMonitoringAlert:`notificationMonitoringAlert`,"webhook-event":`webhookEvent`,projectFlagsSdkKey:`projectFlagsSDKKey`})),objectType({});const UpdateProjectJobStatus$inboundSchema=nativeEnumType(UpdateProjectJobStatus),UpdateProjectProjectsResponse200ApplicationJSONType$inboundSchema=nativeEnumType(UpdateProjectProjectsResponse200ApplicationJSONType);objectType({fromDeploymentId:nullable(string()),toDeploymentId:string(),fromRollingReleaseId:optional(string()),jobStatus:UpdateProjectJobStatus$inboundSchema,requestedAt:number(),type:UpdateProjectProjectsResponse200ApplicationJSONType$inboundSchema});const UpdateProjectProtectionBypass2$inboundSchema=objectType({createdAt:number(),createdBy:string(),scope:literal(`automation-bypass`),isEnvVar:optional(boolean()),note:optional(string())}),UpdateProjectProtectionBypass1$inboundSchema=objectType({createdAt:number(),createdBy:string(),scope:literal(`integration-automation-bypass`),integrationId:string(),configurationId:string()});unionType([lazyType(()=>UpdateProjectProtectionBypass1$inboundSchema),lazyType(()=>UpdateProjectProtectionBypass2$inboundSchema)]);const UpdateProjectTrustedIps2$inboundSchema=objectType({deploymentType:nativeEnumType(UpdateProjectTrustedIpsProjectsDeploymentType)}),UpdateProjectTrustedIpsDeploymentType$inboundSchema=nativeEnumType(UpdateProjectTrustedIpsDeploymentType),UpdateProjectTrustedIpsAddresses$inboundSchema=objectType({value:string(),note:optional(string())}),UpdateProjectTrustedIpsProtectionMode$inboundSchema=nativeEnumType(UpdateProjectTrustedIpsProtectionMode),UpdateProjectTrustedIps1$inboundSchema=objectType({deploymentType:UpdateProjectTrustedIpsDeploymentType$inboundSchema,addresses:arrayType(lazyType(()=>UpdateProjectTrustedIpsAddresses$inboundSchema)),protectionMode:UpdateProjectTrustedIpsProtectionMode$inboundSchema});smartUnion([lazyType(()=>UpdateProjectTrustedIps1$inboundSchema),lazyType(()=>UpdateProjectTrustedIps2$inboundSchema)]);const UpdateProjectFromProjectsResponsePreset$inboundSchema=nativeEnumType(UpdateProjectFromProjectsResponsePreset),UpdateProjectFrom2$inboundSchema=objectType({slugs:optional(arrayType(string())),preset:UpdateProjectFromProjectsResponsePreset$inboundSchema}),UpdateProjectFromProjectsPreset$inboundSchema=nativeEnumType(UpdateProjectFromProjectsPreset),UpdateProjectFrom1$inboundSchema=objectType({slugs:arrayType(string()),preset:optional(UpdateProjectFromProjectsPreset$inboundSchema)});smartUnion([lazyType(()=>UpdateProjectFrom1$inboundSchema),lazyType(()=>UpdateProjectFrom2$inboundSchema)]);const UpdateProjectToProjectsResponse200ApplicationJSONResponseBodyPreset$inboundSchema=nativeEnumType(UpdateProjectToProjectsResponse200ApplicationJSONResponseBodyPreset),UpdateProjectToProjectsResponse2$inboundSchema=objectType({slugs:optional(arrayType(string())),preset:UpdateProjectToProjectsResponse200ApplicationJSONResponseBodyPreset$inboundSchema}),UpdateProjectToProjectsResponse200ApplicationJSONPreset$inboundSchema=nativeEnumType(UpdateProjectToProjectsResponse200ApplicationJSONPreset),UpdateProjectToProjectsResponse1$inboundSchema=objectType({slugs:arrayType(string()),preset:optional(UpdateProjectToProjectsResponse200ApplicationJSONPreset$inboundSchema)});smartUnion([lazyType(()=>UpdateProjectToProjectsResponse1$inboundSchema),lazyType(()=>UpdateProjectToProjectsResponse2$inboundSchema)]);const UpdateProjectCustomAllow$inboundSchema=objectType({from:smartUnion([lazyType(()=>UpdateProjectFrom1$inboundSchema),lazyType(()=>UpdateProjectFrom2$inboundSchema)]),to:smartUnion([lazyType(()=>UpdateProjectToProjectsResponse1$inboundSchema),lazyType(()=>UpdateProjectToProjectsResponse2$inboundSchema)])}),UpdateProjectProjectsProjects$inboundSchema=objectType({label:optional(string()),customAllow:optional(arrayType(lazyType(()=>UpdateProjectCustomAllow$inboundSchema)))}),UpdateProjectToProjectsResponse200Preset$inboundSchema=nativeEnumType(UpdateProjectToProjectsResponse200Preset),UpdateProjectToProjects2$inboundSchema=objectType({slugs:optional(arrayType(string())),preset:UpdateProjectToProjectsResponse200Preset$inboundSchema}),UpdateProjectToProjectsResponsePreset$inboundSchema=nativeEnumType(UpdateProjectToProjectsResponsePreset),UpdateProjectToProjects1$inboundSchema=objectType({slugs:arrayType(string()),preset:optional(UpdateProjectToProjectsResponsePreset$inboundSchema)});smartUnion([lazyType(()=>UpdateProjectToProjects1$inboundSchema),lazyType(()=>UpdateProjectToProjects2$inboundSchema)]);const UpdateProjectOidcProviders$inboundSchema=objectType({to:smartUnion([lazyType(()=>UpdateProjectToProjects1$inboundSchema),lazyType(()=>UpdateProjectToProjects2$inboundSchema)]),label:optional(string()),claims:recordType(arrayType(string()))}),UpdateProjectTrustedSources$inboundSchema=objectType({projects:optional(recordType(lazyType(()=>UpdateProjectProjectsProjects$inboundSchema))),oidcProviders:optional(recordType(arrayType(lazyType(()=>UpdateProjectOidcProviders$inboundSchema))))});function updateProjectTrustedSourcesFromJSON(e){return safeParse(e,e=>UpdateProjectTrustedSources$inboundSchema.parse(JSON.parse(e)),`Failed to parse 'UpdateProjectTrustedSources' from JSON`)}objectType({onPullRequest:boolean(),onCommit:boolean()});const UpdateProjectCreateDeployments$inboundSchema=nativeEnumType(UpdateProjectCreateDeployments),UpdateProjectConsolidatedGitCommitStatus$inboundSchema=objectType({enabled:boolean(),propagateFailures:boolean()});objectType({createDeployments:UpdateProjectCreateDeployments$inboundSchema,disableRepositoryDispatchEvents:optional(boolean()),requireVerifiedCommits:optional(boolean()),gitCommitStatus:optional(boolean()),consolidatedGitCommitStatus:optional(lazyType(()=>UpdateProjectConsolidatedGitCommitStatus$inboundSchema))}),objectType({id:string(),disabledAt:optional(number()),canceledAt:optional(number()),enabledAt:optional(number()),hasData:optional(literal(!0))});const UpdateProjectProjectsResponse200ApplicationJSONResponseBodySecurityAction$inboundSchema=nativeEnumType(UpdateProjectProjectsResponse200ApplicationJSONResponseBodySecurityAction),UpdateProjectVercelRuleset$inboundSchema=objectType({active:boolean(),action:optional(UpdateProjectProjectsResponse200ApplicationJSONResponseBodySecurityAction$inboundSchema)}),UpdateProjectProjectsResponse200ApplicationJSONResponseBodySecurityManagedRulesAction$inboundSchema=nativeEnumType(UpdateProjectProjectsResponse200ApplicationJSONResponseBodySecurityManagedRulesAction),UpdateProjectTrafficSources$inboundSchema=objectType({active:boolean(),action:optional(UpdateProjectProjectsResponse200ApplicationJSONResponseBodySecurityManagedRulesAction$inboundSchema)}),UpdateProjectProjectsResponse200ApplicationJSONResponseBodySecurityManagedRulesBotFilterAction$inboundSchema=nativeEnumType(UpdateProjectProjectsResponse200ApplicationJSONResponseBodySecurityManagedRulesBotFilterAction),UpdateProjectBotFilter$inboundSchema=objectType({active:boolean(),action:optional(UpdateProjectProjectsResponse200ApplicationJSONResponseBodySecurityManagedRulesBotFilterAction$inboundSchema)}),UpdateProjectProjectsResponse200ApplicationJSONAction$inboundSchema=nativeEnumType(UpdateProjectProjectsResponse200ApplicationJSONAction),UpdateProjectAiBots$inboundSchema=objectType({active:boolean(),action:optional(UpdateProjectProjectsResponse200ApplicationJSONAction$inboundSchema)}),UpdateProjectProjectsResponse200ApplicationJSONResponseBodyAction$inboundSchema=nativeEnumType(UpdateProjectProjectsResponse200ApplicationJSONResponseBodyAction),UpdateProjectOwasp$inboundSchema=objectType({active:boolean(),action:optional(UpdateProjectProjectsResponse200ApplicationJSONResponseBodyAction$inboundSchema)}),UpdateProjectManagedRules$inboundSchema=objectType({vercel_ruleset:lazyType(()=>UpdateProjectVercelRuleset$inboundSchema),traffic_sources:lazyType(()=>UpdateProjectTrafficSources$inboundSchema),bot_filter:lazyType(()=>UpdateProjectBotFilter$inboundSchema),ai_bots:lazyType(()=>UpdateProjectAiBots$inboundSchema),owasp:lazyType(()=>UpdateProjectOwasp$inboundSchema)}).transform(e=>remap(e,{vercel_ruleset:`vercelRuleset`,traffic_sources:`trafficSources`,bot_filter:`botFilter`,ai_bots:`aiBots`})),UpdateProjectLogHeaders2$inboundSchema=nativeEnumType(UpdateProjectLogHeaders2);smartUnion([arrayType(string()),UpdateProjectLogHeaders2$inboundSchema]);const UpdateProjectSecurityPlusMetadata$inboundSchema=objectType({updatedAt:number(),firstEnabledAt:optional(number())});objectType({attackModeEnabled:optional(boolean()),attackModeUpdatedAt:optional(number()),firewallEnabled:optional(boolean()),firewallUpdatedAt:optional(number()),attackModeActiveUntil:nullableType(number()).optional(),firewallConfigVersion:optional(number()),firewallSeawallEnabled:optional(boolean()),ja3Enabled:optional(boolean()),ja4Enabled:optional(boolean()),firewallBypassIps:optional(arrayType(string())),managedRules:nullableType(lazyType(()=>UpdateProjectManagedRules$inboundSchema)).optional(),botIdEnabled:optional(boolean()),log_headers:optional(smartUnion([arrayType(string()),UpdateProjectLogHeaders2$inboundSchema])),securityPlus:optional(boolean()),securityPlusMetadata:optional(lazyType(()=>UpdateProjectSecurityPlusMetadata$inboundSchema)),pageIntegrityEnabled:optional(boolean())}).transform(e=>remap(e,{log_headers:`logHeaders`}));const UpdateProjectProjectsIssuerMode$inboundSchema=nativeEnumType(UpdateProjectProjectsIssuerMode);objectType({enabled:optional(boolean()),issuerMode:optional(UpdateProjectProjectsIssuerMode$inboundSchema)});const UpdateProjectSourcesProjects2$inboundSchema=objectType({provider:literal(`gitlab`),namespace:string(),project:optional(string())}),UpdateProjectSourcesProjects1$inboundSchema=objectType({provider:nativeEnumType(UpdateProjectSourcesProjectsResponse200Provider),org:string(),repo:optional(string())});unionType([lazyType(()=>UpdateProjectSourcesProjects1$inboundSchema).and(objectType({provider:literalType(`bitbucket`)})),lazyType(()=>UpdateProjectSourcesProjects1$inboundSchema).and(objectType({provider:literalType(`github`)})),lazyType(()=>UpdateProjectSourcesProjects2$inboundSchema)]);const UpdateProjectEnvironmentsProjectsResponse2002$inboundSchema=objectType({type:literal(`custom`),environmentId:string()}),UpdateProjectEnvironmentsProjectsResponse200Target$inboundSchema=nativeEnumType(UpdateProjectEnvironmentsProjectsResponse200Target),UpdateProjectEnvironmentsProjectsResponse2001$inboundSchema=objectType({type:literal(`system`),target:UpdateProjectEnvironmentsProjectsResponse200Target$inboundSchema});unionType([lazyType(()=>UpdateProjectEnvironmentsProjectsResponse2001$inboundSchema),lazyType(()=>UpdateProjectEnvironmentsProjectsResponse2002$inboundSchema)]);const UpdateProjectGitSources$inboundSchema=objectType({sources:arrayType(unionType([lazyType(()=>UpdateProjectSourcesProjects1$inboundSchema).and(objectType({provider:literalType(`bitbucket`)})),lazyType(()=>UpdateProjectSourcesProjects1$inboundSchema).and(objectType({provider:literalType(`github`)})),lazyType(()=>UpdateProjectSourcesProjects2$inboundSchema)])),enabled:boolean(),environments:arrayType(unionType([lazyType(()=>UpdateProjectEnvironmentsProjectsResponse2001$inboundSchema),lazyType(()=>UpdateProjectEnvironmentsProjectsResponse2002$inboundSchema)]))}),UpdateProjectProjectsSources$inboundSchema=nativeEnumType(UpdateProjectProjectsSources),UpdateProjectEnvironmentsProjectsResponse2$inboundSchema=objectType({type:literal(`custom`),environmentId:string()}),UpdateProjectEnvironmentsProjectsResponseTarget$inboundSchema=nativeEnumType(UpdateProjectEnvironmentsProjectsResponseTarget),UpdateProjectEnvironmentsProjectsResponse1$inboundSchema=objectType({type:literal(`system`),target:UpdateProjectEnvironmentsProjectsResponseTarget$inboundSchema});unionType([lazyType(()=>UpdateProjectEnvironmentsProjectsResponse1$inboundSchema),lazyType(()=>UpdateProjectEnvironmentsProjectsResponse2$inboundSchema)]);const UpdateProjectDeploymentSources$inboundSchema=objectType({sources:arrayType(UpdateProjectProjectsSources$inboundSchema),enabled:boolean(),environments:arrayType(unionType([lazyType(()=>UpdateProjectEnvironmentsProjectsResponse1$inboundSchema),lazyType(()=>UpdateProjectEnvironmentsProjectsResponse2$inboundSchema)]))});objectType({gitSources:nullableType(arrayType(lazyType(()=>UpdateProjectGitSources$inboundSchema))).optional(),deploymentSources:nullableType(arrayType(lazyType(()=>UpdateProjectDeploymentSources$inboundSchema))).optional()}),nativeEnumType(UpdateProjectFlatRateTier),objectType({kind:nativeEnumType(UpdateProjectKind),exceededAllowanceUntil:optional(number()),bypassThrottleUntil:optional(number()),throttled:optional(boolean())}),objectType({webAnalytics:optional(boolean())}),objectType({scanner:string(),reason:string(),by:string(),byId:string(),at:number()}),objectType({action:nativeEnumType(UpdateProjectProjectsResponse200Action),reason:string(),statusCode:number(),createdAt:number(),caseId:optional(string()),actor:optional(string()),comment:optional(string()),ineligibleForAppeal:optional(boolean()),isCascading:optional(boolean())});export{updateProjectTrustedSourcesFromJSON};
|