eve 0.45.0 → 0.45.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 +9 -0
- package/dist/src/chunks/{use-eve-agent-OtHRoxIS.js → use-eve-agent-BH7Z6SDu.js} +13 -1
- package/dist/src/chunks/{use-eve-agent-C46Kan_I.js → use-eve-agent-DI2j5XK8.js} +13 -1
- package/dist/src/cli/commands/integration-connect.d.ts +2 -0
- package/dist/src/cli/commands/integration-connect.js +1 -1
- package/dist/src/cli/commands/register-integration-commands.js +1 -1
- package/dist/src/client/agent-info-schema.d.ts +191 -2
- package/dist/src/client/agent-info-schema.js +1 -1
- package/dist/src/client/types.d.ts +1 -1
- package/dist/src/compiler/extension-compatibility.d.ts +4 -4
- package/dist/src/compiler/extension-compatibility.js +1 -1
- package/dist/src/compiler/load-binding-namespace.js +1 -1
- package/dist/src/compiler/manifest.d.ts +10 -0
- package/dist/src/compiler/manifest.js +1 -1
- package/dist/src/compiler/module-map.js +1 -1
- package/dist/src/compiler/normalize-helpers.d.ts +2 -1
- package/dist/src/compiler/normalize-manifest.js +1 -1
- package/dist/src/compiler/normalize-memory.d.ts +5 -0
- package/dist/src/compiler/normalize-memory.js +1 -0
- package/dist/src/compiler/normalize-tool.js +1 -1
- package/dist/src/compiler/project-sources.d.ts +3 -4
- package/dist/src/compiler/project-sources.js +1 -1
- package/dist/src/compiler/source-graph.d.ts +2 -0
- package/dist/src/compiler/source-graph.js +1 -1
- package/dist/src/compiler/validate-artifact.js +1 -1
- package/dist/src/context/dynamic-tool-lifecycle.d.ts +8 -1
- package/dist/src/context/dynamic-tool-lifecycle.js +1 -1
- package/dist/src/context/keys.d.ts +25 -0
- package/dist/src/context/keys.js +1 -1
- package/dist/src/context/memory-event-lifecycle.d.ts +13 -0
- package/dist/src/context/memory-event-lifecycle.js +1 -0
- package/dist/src/context/memory-lifecycle.d.ts +52 -0
- package/dist/src/context/memory-lifecycle.js +1 -0
- package/dist/src/context/memory-tools.d.ts +12 -0
- package/dist/src/context/memory-tools.js +1 -0
- package/dist/src/discover/discover-agent.js +1 -1
- package/dist/src/discover/discover-subagent.js +1 -1
- package/dist/src/discover/extensions.d.ts +6 -0
- package/dist/src/discover/extensions.js +1 -1
- package/dist/src/discover/filesystem.d.ts +2 -2
- package/dist/src/discover/filesystem.js +1 -1
- package/dist/src/discover/manifest.d.ts +6 -1
- package/dist/src/discover/manifest.js +1 -1
- package/dist/src/discover/memory.d.ts +14 -0
- package/dist/src/discover/memory.js +1 -0
- package/dist/src/discover/project.js +1 -1
- package/dist/src/evals/cli/eval.js +1 -1
- package/dist/src/evals/target.js +1 -1
- package/dist/src/execution/history-view.d.ts +2 -2
- package/dist/src/execution/history-view.js +1 -1
- package/dist/src/execution/tools/connection-search.js +2 -2
- package/dist/src/execution/workflow-steps.d.ts +1 -3
- package/dist/src/execution/workflow-steps.js +1 -1
- package/dist/src/framework/sources/modules/memory-wrapper.d.ts +2 -0
- package/dist/src/framework/sources/modules/memory-wrapper.js +1 -0
- package/dist/src/framework/sources/registry.d.ts +1 -0
- package/dist/src/framework/sources/registry.js +1 -1
- package/dist/src/harness/emission.d.ts +1 -1
- package/dist/src/harness/emission.js +1 -1
- package/dist/src/harness/tool-loop.js +2 -2
- package/dist/src/harness/tools.js +1 -1
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/internal/authored-definition/memory.d.ts +2 -0
- package/dist/src/internal/authored-definition/memory.js +1 -0
- package/dist/src/internal/authored-definition/schema-backed.d.ts +1 -0
- package/dist/src/internal/authored-definition/schema-backed.js +1 -1
- package/dist/src/internal/authored-module-map-loader.js +1 -1
- package/dist/src/internal/dynamic-tool-rebind.d.ts +3 -0
- package/dist/src/internal/dynamic-tool-rebind.js +1 -0
- package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.d.ts +1 -1
- package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.js +1 -1
- package/dist/src/internal/nitro/routes/index.js +1 -0
- package/dist/src/internal/programmatic-source-loader.d.ts +1 -0
- package/dist/src/internal/programmatic-source-loader.js +1 -1
- package/dist/src/public/memory/index.d.ts +117 -0
- package/dist/src/public/memory/index.js +1 -0
- package/dist/src/public/memory/scope.d.ts +2 -0
- package/dist/src/public/memory/scope.js +1 -0
- package/dist/src/runtime/resolve-agent.js +1 -1
- package/dist/src/runtime/resolve-dynamic-tool.d.ts +1 -0
- package/dist/src/runtime/resolve-dynamic-tool.js +1 -1
- package/dist/src/runtime/resolve-memory.d.ts +4 -0
- package/dist/src/runtime/resolve-memory.js +1 -0
- package/dist/src/runtime/types.d.ts +7 -0
- package/dist/src/setup/connection-connector.d.ts +2 -0
- package/dist/src/setup/connection-connector.js +1 -1
- package/dist/src/setup/scaffold/create/project.js +1 -1
- package/dist/src/setup/scaffold/create/web-template.d.ts +2 -0
- package/dist/src/setup/scaffold/create/web-template.js +28 -0
- package/dist/src/shared/memory-definition.d.ts +2 -0
- package/dist/src/shared/memory-definition.js +1 -0
- package/dist/src/shared/memory-state.d.ts +55 -0
- package/dist/src/shared/memory-state.js +1 -0
- package/dist/src/svelte/index.js +1 -1
- package/dist/src/svelte/use-eve-agent.js +1 -1
- package/dist/src/vue/index.js +1 -1
- package/dist/src/vue/use-eve-agent.js +1 -1
- package/docs/channels/eve.mdx +1 -1
- package/docs/concepts/context-control.md +7 -0
- package/docs/concepts/default-harness.md +8 -0
- package/docs/concepts/sessions-runs-and-streaming.md +3 -3
- package/docs/concepts/state.md +8 -1
- package/docs/extensions.md +6 -2
- package/docs/guides/client/overview.mdx +2 -2
- package/docs/guides/dynamic-capabilities.md +3 -2
- package/docs/memory.md +255 -0
- package/docs/meta.json +1 -0
- package/docs/patterns/multi-tenant-memory.md +108 -136
- package/package.json +11 -1
|
@@ -53,7 +53,7 @@ export declare function advanceStep(state: HarnessEmissionState): HarnessEmissio
|
|
|
53
53
|
* Emits `turn.completed` and either `session.waiting` or `session.completed`.
|
|
54
54
|
* Returns updated emission state with an incremented sequence.
|
|
55
55
|
*/
|
|
56
|
-
export declare function emitTurnEpilogue(emitFn: HarnessEmitFn, state: HarnessEmissionState, mode: RunMode): Promise<HarnessEmissionState>;
|
|
56
|
+
export declare function emitTurnEpilogue(emitFn: HarnessEmitFn, state: HarnessEmissionState, mode: RunMode, messages?: readonly import("ai").ModelMessage[]): Promise<HarnessEmissionState>;
|
|
57
57
|
/**
|
|
58
58
|
* Maps an AI SDK finish reason string to the eve-owned
|
|
59
59
|
* {@link AssistantStepFinishReason} union. Unknown values become `"other"`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createActionPartialEvent,createActionResultEvent,createActionsRequestedEvent,createMessageAppendedEvent,createMessageCompletedEvent,createMessageReceivedEvent,createReasoningAppendedEvent,createReasoningCompletedEvent,createSessionCompletedEvent,createSessionFailedEvent,createSessionStartedEvent,createSessionWaitingEvent,createStepFailedEvent,createStepStartedEvent,createTurnCompletedEvent,createTurnFailedEvent,createTurnStartedEvent}from"#protocol/message.js";import{createRuntimeActionRequestFromToolCall}from"#harness/runtime-actions.js";import{hasEmptyDeliverySentinel}from"#shared/empty-delivery.js";import{createRuntimeToolResultFromStepResult,createRuntimeToolResultFromToolError,createToolResultMessagePartFromToolError}from"#harness/action-result-helpers.js";import{createInvalidToolCallInputError,isInvalidToolCall,resolveProviderToolCallRequest}from"#harness/tool-call-input-errors.js";import{createProviderStreamActionBatch}from"#harness/stream-actions.js";import{normalizeModelStreamError}from"#harness/model-call-error.js";import{createOrderedStreamEmitter}from"#harness/ordered-stream-emitter.js";import{interruptStreamOnFailure}from"#harness/interruptible-stream.js";import{isInlineAuthorizationToolResult}from"#harness/inline-tool-authorization.js";import{getHarnessEmissionState,isHarnessBetweenTurns,setHarnessEmissionState}from"#harness/emission-state.js";async function emitTurnPreamble(e,t,n,r,i){let o=`turn_${n.sequence}`;return n.sessionStarted||await e(createSessionStartedEvent({runtime:r,trace:i})),await e(createTurnStartedEvent({sequence:n.sequence,trace:i,turnId:o})),t.message!==void 0&&await e(createMessageReceivedEvent({message:t.message,sequence:n.sequence,turnId:o})),{sessionStarted:!0,sequence:n.sequence,stepIndex:0,turnId:o}}async function emitStepStarted(e,t,n,r){await e(createStepStartedEvent({modelId:n,sequence:t.sequence,stepIndex:t.stepIndex,turnId:t.turnId}),r)}async function emitStepAndTurnFailed(e,t,n){await e(createStepFailedEvent({...n,sequence:t.sequence,stepIndex:t.stepIndex,turnId:t.turnId})),await e(createTurnFailedEvent({...n,sequence:t.sequence,turnId:t.turnId}))}async function emitFailedStep(e,t,n){await emitStepAndTurnFailed(e,t,n),await e(createSessionFailedEvent(n))}async function emitRecoverableFailedTurn(e,t,n){return await emitStepAndTurnFailed(e,t,n),await e(createSessionWaitingEvent()),{sessionStarted:t.sessionStarted,sequence:t.sequence+1,stepIndex:0,turnId:``}}function advanceStep(e){return{...e,stepIndex:e.stepIndex+1}}async function emitTurnEpilogue(e,t,n){return await e(createTurnCompletedEvent({sequence:t.sequence,turnId:t.turnId})),n===`conversation`?await e(createSessionWaitingEvent()):await e(createSessionCompletedEvent()),{sessionStarted:t.sessionStarted,sequence:t.sequence+1,stepIndex:0,turnId:``}}function normalizeAssistantStepFinishReason(e){switch(e){case`content-filter`:case`error`:case`length`:case`stop`:case`tool-calls`:return e;default:return`other`}}async function emitStreamContent(e,t,n,r){let i=createOrderedStreamEmitter(e),a=createProviderStreamActionBatch({emitFn:i.emit,state:t});try{return await consumeStreamContent(i.emit,t,interruptStreamOnFailure(n,i.failureSignal),a,r)}finally{try{await a.cancel()}finally{await i.closeAndDrain()}}}async function consumeStreamContent(a,s,c,l,u){let d=``,f=``,p=`stop`,m,h=new Set,g=new Set,_=new Set,v=new Set,y=new Set,b=new Set,x=[],S=[],flushCurrentMessage=async()=>{f.length!==0&&(await a(createMessageCompletedEvent({finishReason:`tool-calls`,message:f,sequence:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId})),f=``)},emitActionRequest=async e=>{g.has(e.callId)||(f.trim().length>0&&await flushCurrentMessage(),g.add(e.callId),await a(createActionsRequestedEvent({actions:[e],sequence:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId})))},collectProviderToolCall=async e=>{if(v.has(e.toolCallId)||(v.add(e.toolCallId),g.has(e.toolCallId)))return;g.add(e.toolCallId),f.trim().length>0&&await flushCurrentMessage();let t=resolveProviderToolCallRequest(e);if(t.toolError!==void 0){b.add(e.toolCallId),await emitActionResult(createRuntimeToolResultFromToolError(t.toolError)),y.add(e.toolCallId),S.push(createToolResultMessagePartFromToolError(t.toolError));return}l.observe(t.request)},emitActionResult=async e=>{_.has(e.callId)||(_.add(e.callId),await a(createActionResultEvent({result:e,sequence:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId})))},emitActionPartial=async t=>{await a(createActionPartialEvent({result:t,sequence:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId}))},emitToolCall=async e=>{if(isInvalidToolCall(e)){b.add(e.toolCallId);return}if(!(u===void 0||u.excludedActionToolNames.has(e.toolName)))try{await emitActionRequest(createRuntimeActionRequestFromToolCall({toolCall:e,tools:u.tools}))}catch(t){if(t instanceof TypeError){let n=createInvalidToolCallInputError({error:t,toolCall:e});b.add(e.toolCallId),f.trim().length>0&&await flushCurrentMessage(),await emitActionResult(createRuntimeToolResultFromToolError(n)),y.add(e.toolCallId),S.push(createToolResultMessagePartFromToolError(n));return}throw t}};for await(let e of c)if(m===void 0)switch(e.type){case`reasoning-delta`:await l.flush(),d+=e.text,await a(createReasoningAppendedEvent({reasoningDelta:e.text,reasoningSoFar:d,sequence:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId}));break;case`text-delta`:await l.flush(),d.trim().length>0&&(await a(createReasoningCompletedEvent({reasoning:d,sequence:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId})),d=``),f+=e.text,await a(createMessageAppendedEvent({messageDelta:e.text,messageSoFar:f,sequence:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId}));break;case`tool-call`:{let t=e;h.add(t.toolCallId),t.providerExecuted===!0?await collectProviderToolCall(t):(await l.flush(),await emitToolCall(t));break}case`tool-result`:{let t=e;if(t.preliminary===!0){t.providerExecuted!==!0&&await emitActionPartial(createRuntimeToolResultFromStepResult(t));break}if(t.providerExecuted===!0){await collectProviderToolCall({input:`input`in t?t.input:void 0,toolCallId:t.toolCallId,toolName:t.toolName}),await l.flush(),await emitActionResult(createRuntimeToolResultFromStepResult(t));break}if(h.has(e.toolCallId)){if(isInlineAuthorizationToolResult(t))break;g.has(e.toolCallId)&&(await emitActionResult(createRuntimeToolResultFromStepResult(t)),y.add(e.toolCallId));break}if(await l.flush(),await flushCurrentMessage(),isInlineAuthorizationToolResult(t)){y.add(e.toolCallId),x.push(t);break}await emitActionResult(createRuntimeToolResultFromStepResult(t)),y.add(e.toolCallId);break}case`tool-error`:{let t=e;t.providerExecuted===!0?(await collectProviderToolCall(t),await l.flush(),await emitActionResult(createRuntimeToolResultFromToolError(t))):g.has(t.toolCallId)&&(await emitActionResult(createRuntimeToolResultFromToolError(t)),y.add(t.toolCallId),S.push(createToolResultMessagePartFromToolError(t)));break}case`finish-step`:p=normalizeAssistantStepFinishReason(e.finishReason),await l.flush();break;case`error`:m=normalizeModelStreamError(e.error);break;case`abort`:throw new DOMException(e.reason??`The model stream was aborted.`,`AbortError`);default:break}if(await l.flush(),m!==void 0)throw m;return d.trim().length>0&&await a(createReasoningCompletedEvent({reasoning:d,sequence:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId})),p!==`tool-calls`&&hasEmptyDeliverySentinel(f)?await a(createMessageCompletedEvent({finishReason:p,message:null,sequence:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId})):f.trim().length>0&&await a(createMessageCompletedEvent({finishReason:p,message:f,sequence:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId})),{emittedActionCallIds:g,handledInlineToolResultCallIds:y,invalidInputToolCallIds:b,inlineAuthorizationResults:x,trailingInlineToolResultParts:S}}export{advanceStep,emitFailedStep,emitRecoverableFailedTurn,emitStepStarted,emitStreamContent,emitTurnEpilogue,emitTurnPreamble,getHarnessEmissionState,isHarnessBetweenTurns,normalizeAssistantStepFinishReason,setHarnessEmissionState};
|
|
1
|
+
import{createActionPartialEvent,createActionResultEvent,createActionsRequestedEvent,createMessageAppendedEvent,createMessageCompletedEvent,createMessageReceivedEvent,createReasoningAppendedEvent,createReasoningCompletedEvent,createSessionCompletedEvent,createSessionFailedEvent,createSessionStartedEvent,createSessionWaitingEvent,createStepFailedEvent,createStepStartedEvent,createTurnCompletedEvent,createTurnFailedEvent,createTurnStartedEvent}from"#protocol/message.js";import{createRuntimeActionRequestFromToolCall}from"#harness/runtime-actions.js";import{hasEmptyDeliverySentinel}from"#shared/empty-delivery.js";import{createRuntimeToolResultFromStepResult,createRuntimeToolResultFromToolError,createToolResultMessagePartFromToolError}from"#harness/action-result-helpers.js";import{createInvalidToolCallInputError,isInvalidToolCall,resolveProviderToolCallRequest}from"#harness/tool-call-input-errors.js";import{createProviderStreamActionBatch}from"#harness/stream-actions.js";import{normalizeModelStreamError}from"#harness/model-call-error.js";import{createOrderedStreamEmitter}from"#harness/ordered-stream-emitter.js";import{interruptStreamOnFailure}from"#harness/interruptible-stream.js";import{isInlineAuthorizationToolResult}from"#harness/inline-tool-authorization.js";import{getHarnessEmissionState,isHarnessBetweenTurns,setHarnessEmissionState}from"#harness/emission-state.js";async function emitTurnPreamble(e,t,n,r,i){let o=`turn_${n.sequence}`;return n.sessionStarted||await e(createSessionStartedEvent({runtime:r,trace:i})),await e(createTurnStartedEvent({sequence:n.sequence,trace:i,turnId:o})),t.message!==void 0&&await e(createMessageReceivedEvent({message:t.message,sequence:n.sequence,turnId:o})),{sessionStarted:!0,sequence:n.sequence,stepIndex:0,turnId:o}}async function emitStepStarted(e,t,n,r){await e(createStepStartedEvent({modelId:n,sequence:t.sequence,stepIndex:t.stepIndex,turnId:t.turnId}),r)}async function emitStepAndTurnFailed(e,t,n){await e(createStepFailedEvent({...n,sequence:t.sequence,stepIndex:t.stepIndex,turnId:t.turnId})),await e(createTurnFailedEvent({...n,sequence:t.sequence,turnId:t.turnId}))}async function emitFailedStep(e,t,n){await emitStepAndTurnFailed(e,t,n),await e(createSessionFailedEvent(n))}async function emitRecoverableFailedTurn(e,t,n){return await emitStepAndTurnFailed(e,t,n),await e(createSessionWaitingEvent()),{sessionStarted:t.sessionStarted,sequence:t.sequence+1,stepIndex:0,turnId:``}}function advanceStep(e){return{...e,stepIndex:e.stepIndex+1}}async function emitTurnEpilogue(e,t,n,r){return await e(createTurnCompletedEvent({sequence:t.sequence,turnId:t.turnId}),r),n===`conversation`?await e(createSessionWaitingEvent()):await e(createSessionCompletedEvent()),{sessionStarted:t.sessionStarted,sequence:t.sequence+1,stepIndex:0,turnId:``}}function normalizeAssistantStepFinishReason(e){switch(e){case`content-filter`:case`error`:case`length`:case`stop`:case`tool-calls`:return e;default:return`other`}}async function emitStreamContent(e,t,n,r){let i=createOrderedStreamEmitter(e),a=createProviderStreamActionBatch({emitFn:i.emit,state:t});try{return await consumeStreamContent(i.emit,t,interruptStreamOnFailure(n,i.failureSignal),a,r)}finally{try{await a.cancel()}finally{await i.closeAndDrain()}}}async function consumeStreamContent(a,s,c,l,u){let d=``,f=``,p=`stop`,m,h=new Set,g=new Set,_=new Set,v=new Set,y=new Set,b=new Set,x=[],S=[],flushCurrentMessage=async()=>{f.length!==0&&(await a(createMessageCompletedEvent({finishReason:`tool-calls`,message:f,sequence:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId})),f=``)},emitActionRequest=async e=>{g.has(e.callId)||(f.trim().length>0&&await flushCurrentMessage(),g.add(e.callId),await a(createActionsRequestedEvent({actions:[e],sequence:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId})))},collectProviderToolCall=async e=>{if(v.has(e.toolCallId)||(v.add(e.toolCallId),g.has(e.toolCallId)))return;g.add(e.toolCallId),f.trim().length>0&&await flushCurrentMessage();let t=resolveProviderToolCallRequest(e);if(t.toolError!==void 0){b.add(e.toolCallId),await emitActionResult(createRuntimeToolResultFromToolError(t.toolError)),y.add(e.toolCallId),S.push(createToolResultMessagePartFromToolError(t.toolError));return}l.observe(t.request)},emitActionResult=async e=>{_.has(e.callId)||(_.add(e.callId),await a(createActionResultEvent({result:e,sequence:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId})))},emitActionPartial=async t=>{await a(createActionPartialEvent({result:t,sequence:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId}))},emitToolCall=async e=>{if(isInvalidToolCall(e)){b.add(e.toolCallId);return}if(!(u===void 0||u.excludedActionToolNames.has(e.toolName)))try{await emitActionRequest(createRuntimeActionRequestFromToolCall({toolCall:e,tools:u.tools}))}catch(t){if(t instanceof TypeError){let n=createInvalidToolCallInputError({error:t,toolCall:e});b.add(e.toolCallId),f.trim().length>0&&await flushCurrentMessage(),await emitActionResult(createRuntimeToolResultFromToolError(n)),y.add(e.toolCallId),S.push(createToolResultMessagePartFromToolError(n));return}throw t}};for await(let e of c)if(m===void 0)switch(e.type){case`reasoning-delta`:await l.flush(),d+=e.text,await a(createReasoningAppendedEvent({reasoningDelta:e.text,reasoningSoFar:d,sequence:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId}));break;case`text-delta`:await l.flush(),d.trim().length>0&&(await a(createReasoningCompletedEvent({reasoning:d,sequence:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId})),d=``),f+=e.text,await a(createMessageAppendedEvent({messageDelta:e.text,messageSoFar:f,sequence:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId}));break;case`tool-call`:{let t=e;h.add(t.toolCallId),t.providerExecuted===!0?await collectProviderToolCall(t):(await l.flush(),await emitToolCall(t));break}case`tool-result`:{let t=e;if(t.preliminary===!0){t.providerExecuted!==!0&&await emitActionPartial(createRuntimeToolResultFromStepResult(t));break}if(t.providerExecuted===!0){await collectProviderToolCall({input:`input`in t?t.input:void 0,toolCallId:t.toolCallId,toolName:t.toolName}),await l.flush(),await emitActionResult(createRuntimeToolResultFromStepResult(t));break}if(h.has(e.toolCallId)){if(isInlineAuthorizationToolResult(t))break;g.has(e.toolCallId)&&(await emitActionResult(createRuntimeToolResultFromStepResult(t)),y.add(e.toolCallId));break}if(await l.flush(),await flushCurrentMessage(),isInlineAuthorizationToolResult(t)){y.add(e.toolCallId),x.push(t);break}await emitActionResult(createRuntimeToolResultFromStepResult(t)),y.add(e.toolCallId);break}case`tool-error`:{let t=e;t.providerExecuted===!0?(await collectProviderToolCall(t),await l.flush(),await emitActionResult(createRuntimeToolResultFromToolError(t))):g.has(t.toolCallId)&&(await emitActionResult(createRuntimeToolResultFromToolError(t)),y.add(t.toolCallId),S.push(createToolResultMessagePartFromToolError(t)));break}case`finish-step`:p=normalizeAssistantStepFinishReason(e.finishReason),await l.flush();break;case`error`:m=normalizeModelStreamError(e.error);break;case`abort`:throw new DOMException(e.reason??`The model stream was aborted.`,`AbortError`);default:break}if(await l.flush(),m!==void 0)throw m;return d.trim().length>0&&await a(createReasoningCompletedEvent({reasoning:d,sequence:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId})),p!==`tool-calls`&&hasEmptyDeliverySentinel(f)?await a(createMessageCompletedEvent({finishReason:p,message:null,sequence:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId})):f.trim().length>0&&await a(createMessageCompletedEvent({finishReason:p,message:f,sequence:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId})),{emittedActionCallIds:g,handledInlineToolResultCallIds:y,invalidInputToolCallIds:b,inlineAuthorizationResults:x,trailingInlineToolResultParts:S}}export{advanceStep,emitFailedStep,emitRecoverableFailedTurn,emitStepStarted,emitStreamContent,emitTurnEpilogue,emitTurnPreamble,getHarnessEmissionState,isHarnessBetweenTurns,normalizeAssistantStepFinishReason,setHarnessEmissionState};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{createErrorId,createLogger,formatError,logError,recordErrorOnSpan}from"#internal/logging.js";import{normalizeChannelAudience}from"#shared/channel-audience.js";import{isScheduleAppAuth}from"#channel/schedule-auth.js";import{AuthKey,ChannelInstrumentationKey,ParentSessionKey,ParentTraceContextKey,SessionCallbackKey,SessionTraceSeedKey,TurnTaskDeliveryKey,TurnTaskStateKey}from"#context/keys.js";import{resolveInstalledPackageInfo}from"#internal/application/package.js";import{toErrorMessage}from"#shared/errors.js";import{createActionResultEvent,createApprovalCandidateEvent,createApprovalSettledEvent,createAuthorizationCompletedEvent,createAuthorizationRequiredEvent,createCompactionCompletedEvent,createCompactionRequestedEvent,createContextClearedEvent,createInputRequestedEvent,createInputResolvedEvent,createMessageCompletedEvent,createResultCompletedEvent,createSessionWaitingEvent,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{ChannelKey}from"#runtime/sessions/runtime-context-keys.js";import{buildDynamicTools,buildResponseAuthorizationTools}from"#context/build-dynamic-tools.js";import{advanceStep,emitFailedStep,emitRecoverableFailedTurn,emitStepStarted,emitStreamContent,emitTurnEpilogue,emitTurnPreamble,getHarnessEmissionState,setHarnessEmissionState}from"#harness/emission.js";import{ToolLoopAgent,isStepCount}from"ai";import{resolveAgentsAnnouncement}from"#harness/handles/prompt.js";import{renderPendingApprovalsSnippet}from"#harness/hitl/approval-prompt.js";import{getAgentHandleStore}from"#harness/handles/store.js";import{readTaskIdFromInboxToken}from"#tasks/task-inbox-token.js";import{buildDynamicSubagentTools}from"#context/dynamic-subagent-lifecycle.js";import{TASK_UPDATE_TOOL_NAME}from"#tools/framework/task-contract.js";import{normalizeModelMessages,normalizeUserContent,resolveAssistantStepText}from"#harness/messages.js";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{instrumentationHooksForAudience,shouldCaptureInstrumentationContent}from"#harness/instrumentation/content-policy.js";import{createHistoryViewPreparer}from"#shared/history-view.js";import{getActiveDynamicModelSelection,isDynamicModelSelectionError}from"#context/dynamic-model-lifecycle.js";import{getInstrumentationRuntime}from"#harness/instrumentation/runtime.js";import{ASK_QUESTION_TOOL_NAME}from"#harness/request-input-tool.js";import{getSupersededAuthorizationChallenges,isAuthorizationSignal,setPendingAuthorization}from"#harness/authorization.js";import{appendPendingInputBatch,consumeDeferredStepInput,getApprovedTools,getPendingInputRequestIds,hasDeferredStepInput,hasPendingApprovalBatch,hasStepInput,resolvePendingInput}from"#harness/input-requests.js";import{activeTurnId}from"#harness/active-turn-id.js";import{createInstrumentationHandleEvent,publishInputResolutions}from"#harness/instrumentation/native-events.js";import{accumulateTurnUsage,getTurnUsageState,setTurnUsageState}from"#harness/turn-tag-state.js";import{context,trace}from"#compiled/@opentelemetry/api/index.js";import{throwIfTurnAborted}from"#harness/turn-cancellation.js";import{createBackgroundToolCallBatch}from"#harness/background-tools.js";import{buildDynamicInstructionMessages,drainDynamicInstructionUserMessages,prepareDynamicInstructionPreamble}from"#context/dynamic-instruction-lifecycle.js";import{PendingSkillAnnouncementKey}from"#context/dynamic-skill-lifecycle.js";import{TASK_DELIVERY_INITIATING_INSTRUCTION,TASK_DELIVERY_PENDING_INSTRUCTION,TASK_DELIVERY_SETTLED_INSTRUCTION}from"#tasks/delivery-context.js";import{hydrateSandboxAttachments,stageAttachmentsToSandbox}from"#harness/attachment-staging.js";import{resolveParentLineage}from"#harness/parent-lineage.js";import{prepareTurnTraceContext}from"#harness/prepare-trace-context.js";import{getWorkflowContinuationSecurity,readWorkflowContinuationSecurity}from"#harness/workflow-continuation-security.js";import{buildWorkflowHostTools,resolveWorkflowSandboxBridgeRequestLimit}from"#harness/workflow-sandbox.js";import{attemptIdempotencyKey}from"#harness/instrumentation/lifecycle.js";import{getApprovalAuditState,markApprovalCandidateHistoryEventEmitted,markApprovalCandidatePendingEventEmitted,markApprovalSettlementEventEmitted}from"#harness/approval-candidates.js";import{queueDeferredStepInput}from"#harness/pending-input-batches.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{extractQuestionInputRequests,extractToolApprovalInputRequests}from"#harness/input-extraction.js";import{applyLastToolCacheBreakpoint,applySystemCacheBreakpoint,detectPromptCachePath,getAnthropicCacheMarker}from"#harness/prompt-cache.js";import{mergeProviderSafetyIdentifier}from"#harness/provider-safety.js";import{requireSessionModelReference}from"#harness/types.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{coordinateApprovalDelivery,shouldPrepareApprovalPolicyTools}from"#harness/approval-delivery-coordinator.js";import{buildTelemetryRuntimeContext}from"#harness/instrumentation/runtime-context.js";import{createAiSdkHookBridge}from"#harness/ai-sdk-hook-bridge.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,getRegisteredTelemetryIntegrations}from"#harness/ai-sdk-telemetry.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"#harness/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,r,i){if(e===void 0&&i===void 0)return;let a={};for(let e of Object.keys(r??{}))a[e]=!0;return{functionId:e?.functionId??n,includeRuntimeContext:a,integrations:i===void 0?void 0:[i,...getRegisteredTelemetryIntegrations()],isEnabled:!0,recordInputs:shouldCaptureInstrumentationContent(t)&&(e?.recordInputs??!1),recordOutputs:shouldCaptureInstrumentationContent(t)&&(e?.recordOutputs??!1)}}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(`
|
|
1
|
+
import{createErrorId,createLogger,formatError,logError,recordErrorOnSpan}from"#internal/logging.js";import{normalizeChannelAudience}from"#shared/channel-audience.js";import{isScheduleAppAuth}from"#channel/schedule-auth.js";import{AuthKey,ChannelInstrumentationKey,ParentSessionKey,ParentTraceContextKey,SessionCallbackKey,SessionTraceSeedKey,TurnTaskDeliveryKey,TurnTaskStateKey}from"#context/keys.js";import{resolveInstalledPackageInfo}from"#internal/application/package.js";import{toErrorMessage}from"#shared/errors.js";import{createActionResultEvent,createApprovalCandidateEvent,createApprovalSettledEvent,createAuthorizationCompletedEvent,createAuthorizationRequiredEvent,createCompactionCompletedEvent,createCompactionRequestedEvent,createContextClearedEvent,createInputRequestedEvent,createInputResolvedEvent,createMessageCompletedEvent,createResultCompletedEvent,createSessionWaitingEvent,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{ChannelKey}from"#runtime/sessions/runtime-context-keys.js";import{buildDynamicTools,buildResponseAuthorizationTools}from"#context/build-dynamic-tools.js";import{drainMemoryCommit,prepareMemoryCompaction,prepareMemoryPreamble}from"#context/memory-lifecycle.js";import{canonicalizeMemoryRecords,clearMemorySessionState,shouldCanonicalizeMemory}from"#shared/memory-state.js";import{advanceStep,emitFailedStep,emitRecoverableFailedTurn,emitStepStarted,emitStreamContent,emitTurnEpilogue,emitTurnPreamble,getHarnessEmissionState,setHarnessEmissionState}from"#harness/emission.js";import{ToolLoopAgent,isStepCount}from"ai";import{resolveAgentsAnnouncement}from"#harness/handles/prompt.js";import{renderPendingApprovalsSnippet}from"#harness/hitl/approval-prompt.js";import{getAgentHandleStore}from"#harness/handles/store.js";import{readTaskIdFromInboxToken}from"#tasks/task-inbox-token.js";import{buildDynamicSubagentTools}from"#context/dynamic-subagent-lifecycle.js";import{TASK_UPDATE_TOOL_NAME}from"#tools/framework/task-contract.js";import{normalizeModelMessages,normalizeUserContent,resolveAssistantStepText}from"#harness/messages.js";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{instrumentationHooksForAudience,shouldCaptureInstrumentationContent}from"#harness/instrumentation/content-policy.js";import{createHistoryViewPreparer}from"#shared/history-view.js";import{getActiveDynamicModelSelection,isDynamicModelSelectionError}from"#context/dynamic-model-lifecycle.js";import{getInstrumentationRuntime}from"#harness/instrumentation/runtime.js";import{ASK_QUESTION_TOOL_NAME}from"#harness/request-input-tool.js";import{getSupersededAuthorizationChallenges,isAuthorizationSignal,setPendingAuthorization}from"#harness/authorization.js";import{appendPendingInputBatch,consumeDeferredStepInput,getApprovedTools,getPendingInputRequestIds,hasDeferredStepInput,hasPendingApprovalBatch,hasStepInput,resolvePendingInput}from"#harness/input-requests.js";import{activeTurnId}from"#harness/active-turn-id.js";import{createInstrumentationHandleEvent,publishInputResolutions}from"#harness/instrumentation/native-events.js";import{accumulateTurnUsage,getTurnUsageState,setTurnUsageState}from"#harness/turn-tag-state.js";import{context,trace}from"#compiled/@opentelemetry/api/index.js";import{throwIfTurnAborted}from"#harness/turn-cancellation.js";import{createBackgroundToolCallBatch}from"#harness/background-tools.js";import{buildDynamicInstructionMessages,drainDynamicInstructionUserMessages,prepareDynamicInstructionPreamble}from"#context/dynamic-instruction-lifecycle.js";import{PendingSkillAnnouncementKey}from"#context/dynamic-skill-lifecycle.js";import{TASK_DELIVERY_INITIATING_INSTRUCTION,TASK_DELIVERY_PENDING_INSTRUCTION,TASK_DELIVERY_SETTLED_INSTRUCTION}from"#tasks/delivery-context.js";import{hydrateSandboxAttachments,stageAttachmentsToSandbox}from"#harness/attachment-staging.js";import{resolveParentLineage}from"#harness/parent-lineage.js";import{prepareTurnTraceContext}from"#harness/prepare-trace-context.js";import{getWorkflowContinuationSecurity,readWorkflowContinuationSecurity}from"#harness/workflow-continuation-security.js";import{buildWorkflowHostTools,resolveWorkflowSandboxBridgeRequestLimit}from"#harness/workflow-sandbox.js";import{attemptIdempotencyKey}from"#harness/instrumentation/lifecycle.js";import{getApprovalAuditState,markApprovalCandidateHistoryEventEmitted,markApprovalCandidatePendingEventEmitted,markApprovalSettlementEventEmitted}from"#harness/approval-candidates.js";import{queueDeferredStepInput}from"#harness/pending-input-batches.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{extractQuestionInputRequests,extractToolApprovalInputRequests}from"#harness/input-extraction.js";import{applyLastToolCacheBreakpoint,applySystemCacheBreakpoint,detectPromptCachePath,getAnthropicCacheMarker}from"#harness/prompt-cache.js";import{mergeProviderSafetyIdentifier}from"#harness/provider-safety.js";import{requireSessionModelReference}from"#harness/types.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{coordinateApprovalDelivery,shouldPrepareApprovalPolicyTools}from"#harness/approval-delivery-coordinator.js";import{buildTelemetryRuntimeContext}from"#harness/instrumentation/runtime-context.js";import{createAiSdkHookBridge}from"#harness/ai-sdk-hook-bridge.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,getRegisteredTelemetryIntegrations}from"#harness/ai-sdk-telemetry.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"#harness/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,r,i){if(e===void 0&&i===void 0)return;let a={};for(let e of Object.keys(r??{}))a[e]=!0;return{functionId:e?.functionId??n,includeRuntimeContext:a,integrations:i===void 0?void 0:[i,...getRegisteredTelemetryIntegrations()],isEnabled:!0,recordInputs:shouldCaptureInstrumentationContent(t)&&(e?.recordInputs??!1),recordOutputs:shouldCaptureInstrumentationContent(t)&&(e?.recordOutputs??!1)}}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){let t=e.session.agent.modelReference;if(t===void 0)throw Error(`Dynamic model selection is unavailable outside an eve runtime context.`);return{model:await e.config.resolveModel(t),session:e.session}}let t=getActiveDynamicModelSelection(e.ctx);if(t===null){let t=e.session.agent.modelReference;if(e.session.agent.dynamicModel===!0||t===void 0)throw Error(`Dynamic model selection is required before model-dependent work begins. Add a matching resolver handler that returns a concrete model.`);return{model:await e.config.resolveModel(t),session:e.session}}return{model:t.model===void 0?await e.config.resolveModel(t.reference):t.model,session:updateSessionModelReference(e.session,t.reference)}}function updateSessionModelReference(e,t){return{...e,agent:{...e.agent,modelReference:t},compaction:updateCompactionThresholdForModelReference({compaction:e.compaction,modelReference:t})}}function updateCompactionThresholdForModelReference(e){return e.modelReference.contextWindowTokens===void 0?e.compaction:{...e.compaction,threshold:Math.max(1,Math.floor(e.modelReference.contextWindowTokens*(e.compaction.thresholdPercent??.9)))}}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({isRemote:!0,traceId:e.traceId,spanId:e.spanId,traceFlags:e.traceFlags});return trace.setSpan(context.active(),t)}}}function buildHarnessToolsWithDynamicSubagents(e,t){let n=new Map(e);if(t===void 0)return n;for(let e of buildDynamicSubagentTools(t)){if(n.has(e.name))throw Error(`Dynamic subagent "${e.name}" collides with another runtime-visible tool name.`);n.set(e.name,e)}return n}function createToolLoopHarness(t){let n=t.handleEvent,h=getInstrumentationRuntime(),b=h?.otelSettings,te=getInstrumentationConfig(),ne=h?.runtimeContextResolvers;b!==void 0&&ensureOtelIntegration();let S=b===void 0?void 0:trace.getTracer(`eve`),C=t.runtimeIdentity?.agentName;async function runStep(e,t){let n;if(S&&hasStepInput(t)){let t=b?.functionId??C,r={"eve.version":eveVersion,"eve.environment":environment,"eve.session.id":e.sessionId};t&&(r[`ai.telemetry.functionId`]=t),n=S.startSpan(`ai.eve.turn`,{attributes:r})}let r=resolveStepOtelContext(S,n,e),executeStep=()=>executeStepBody(e,t,n);try{return r?await context.with(r,executeStep):await executeStep()}finally{n?.end()}}async function executeStepBody(h,S,w){let E=h,ce=createHistoryViewPreparer({previous:t.historyView,projector:t.historyProjector});ce(E.history,E.state);let projectHistory=(e,t)=>ce(e,t).messages;w&&(E=setTurnTraceState(E,w.spanContext()));let D=getHarnessEmissionState(E.state),O=contextStorage.getStore(),k=O?.get(ChannelInstrumentationKey),A=normalizeChannelAudience(k?.metadata.audience),j=instrumentationHooksForAudience(t.instrumentation?.hooks,A),M=O?.get(ParentSessionKey),le=O?.get(ChannelKey),ue=O?.get(SessionCallbackKey),de=M!==void 0||ue!==void 0,N=(ue?.taskId!==void 0||readTaskIdFromInboxToken(String(le?.state?.parentContinuationToken??``))!==void 0)&&t.tools.has(TASK_UPDATE_TOOL_NAME),fe=resolveParentLineage(M,le),pe=O?.get(ParentTraceContextKey),me=O?.get(SessionTraceSeedKey),he,P=createInstrumentationHandleEvent({agentName:t.runtimeIdentity?.agentName,channelAudience:A,channelKind:k?.kind,getAttemptScope:()=>he,handleEvent:n,hooks:j,parentLineage:fe,parentTraceContext:pe,rootSessionId:M?.rootSessionId,sessionId:E.sessionId,turnId:activeTurnId(D)}),failModelSelection=async(n,r)=>{if(throwIfTurnAborted(t.abortSignal),w&&recordErrorOnSpan(w,n),!P)throw n;let a=createErrorId(),o=toErrorMessage(n);return log.error(`model selection failed terminally`,{error:n,errorId:a,sessionId:E.sessionId,turnId:r.turnId}),await emitFailedStep(P,r,{code:`MODEL_SELECTION_FAILED`,details:{errorId:a},message:o,sessionId:E.sessionId}),{next:t.mode===`task`||de?{done:!0,isError:!0,output:o}:{done:!0,output:``},session:E}},preparePreambleTrace=async()=>{let e=w?.spanContext(),n=e!==void 0&&isValidSpanContext(e)?{spanId:e.spanId,traceFlags:e.traceFlags,traceId:e.traceId}:void 0;return await prepareTurnTraceContext({agentName:t.runtimeIdentity?.agentName,channelAudience:A,channelType:k?.channelType,instrumentation:t.instrumentation,parentLineage:fe,parentTraceContext:pe,rootSessionId:M?.rootSessionId??E.rootSessionId??E.sessionId,sequence:D.sequence,sessionId:E.sessionId,sessionStarted:D.sessionStarted,traceContext:n,traceSeed:me,turnId:`turn_${D.sequence}`})};if(t.clearOnly===!0)return E={...E,compaction:{recentWindowSize:E.compaction.recentWindowSize,threshold:E.compaction.threshold,thresholdPercent:E.compaction.thresholdPercent},history:[]},await P?.(createContextClearedEvent({sequence:D.sequence,sessionId:E.sessionId,turnId:activeTurnId(D)})),await P?.(createSessionWaitingEvent()),{next:null,session:E};if(t.compactOnly===!0){if(E.history.length>0)try{let e=contextStorage.getStore(),n=await resolveActiveRuntimeModel({config:t,ctx:e,session:E});E=n.session;let r=await maybeCompact({abortSignal:t.abortSignal,auth:e?.get(AuthKey)??null,emit:P,emissionState:{...D,turnId:activeTurnId(D)},force:!0,messages:[...projectHistory(E.history,E.state)],model:n.model,onCompaction:t.onCompaction,resolveModel:t.resolveModel,runtimeIdentity:t.runtimeIdentity,session:E,telemetry:enrichTelemetry(b,A,C)??void 0});E={...r.session,compaction:{recentWindowSize:r.session.compaction.recentWindowSize,threshold:r.session.compaction.threshold,thresholdPercent:r.session.compaction.thresholdPercent},history:r.messages}}catch(e){logError(log,`manual session compaction failed`,e,{sessionId:E.sessionId})}return await P?.(createSessionWaitingEvent()),{next:null,session:E}}let F=consumeDeferredStepInput({input:S,preferCurrentInput:t.mode!==`conversation`&&S!==void 0&&hasPendingApprovalBatch(E),session:E});E=F.session;let I=await resolvePendingRuntimeActions({emit:P,session:E,stepInput:F.input});if(I.outcome===`unresolved`)return{next:null,session:I.session};E=I.session;let ge=getPendingInputRequestIds(E.state),L=convertStaleResponsesToUserMessage({history:I.messages,pendingRequestIds:ge,stepInput:dropStaleSessionLimitContinuationResponses({pendingRequestIds:ge,stepInput:F.input})}),R=L.stepInput,_e=L.kind===`converted`?{...R,message:L.displayMessage}:R,ve=contextStorage.getStore();ve!==void 0&&t.resolveStepDynamicTools!==void 0&&shouldPrepareApprovalPolicyTools({session:E,stepInput:R})&&await t.resolveStepDynamicTools({ctx:ve,event:createStepStartedEvent({modelId:E.agent.modelReference?.id??`dynamic`,sequence:D.sequence,stepIndex:D.stepIndex,turnId:D.turnId}),messages:projectHistory(I.messages,E.state)});let z=await coordinateApprovalDelivery({session:E,stepInput:R,tools:buildResponseAuthorizationTools({authoredTools:t.tools,context:ve})});if(E=z.session,P){for(let e of z.feedback)await P(createMessageCompletedEvent({message:e,sequence:D.sequence,stepIndex:D.stepIndex,turnId:D.turnId}));let e=getApprovalAuditState(E.state);for(let t of e.activeCandidates.filter(e=>e.pendingEventEmitted!==!0))await P(createApprovalCandidateEvent({candidateId:t.candidateId,outcome:`pending`,requestId:t.requestId,responderPrincipalId:t.responder.principalId,sequence:D.sequence,stepIndex:D.stepIndex,turnId:D.turnId})),E={...E,state:markApprovalCandidatePendingEventEmitted({candidateId:t.candidateId,state:E.state})};for(let t of e.candidateHistory.filter(e=>e.eventEmitted!==!0&&e.status!==`allowed`))await P(createApprovalCandidateEvent({candidateId:t.candidateId,outcome:t.status,requestId:t.requestId,responderPrincipalId:t.responder.principalId,reason:t.reason,sequence:D.sequence,stepIndex:D.stepIndex,turnId:D.turnId})),E={...E,state:markApprovalCandidateHistoryEventEmitted({candidateId:t.candidateId,state:E.state})};for(let t of e.settlements.filter(e=>e.eventEmitted!==!0))await P(createApprovalSettledEvent({outcome:t.outcome===`allowed`?`approved`:`cancelled`,requestId:t.requestId,responderPrincipalId:t.actor.principalId,sequence:D.sequence,stepIndex:D.stepIndex,turnId:D.turnId})),E={...E,state:markApprovalSettlementEventEmitted({requestId:t.requestId,state:E.state})}}if(z.kind===`park`)return{next:null,session:E};if(z.kind===`continue-coordination`)return{next:runStep,session:z.stepInput===void 0?E:queueDeferredStepInput(E,z.stepInput)};if(z.challenges.length>0){if(P)for(let e of z.challenges)await P(createAuthorizationRequiredEvent({authorization:e.challenge,candidateId:e.candidateId,description:e.challenge.instructions??`Authorization required for ${e.name}`,name:e.name,sequence:D.sequence,stepIndex:D.stepIndex,turnId:D.turnId,webhookUrl:e.hookUrl}));let e=z.stepInput===void 0?E:queueDeferredStepInput(E,z.stepInput);return{next:null,session:{...e,state:setPendingAuthorization(e.state,{challenges:z.challenges})}}}let B=resolvePendingInput({deferMessagesWhileApprovalsPending:t.mode!==`conversation`,history:I.messages,resolveApprovalKey:resolveApprovalKeyFromTools(t.tools),session:E,stepInput:z.stepInput});if(B.outcome===`unresolved`){let e=I.outcome===`resolved`?{...B.session,history:[...I.messages]}:B.session;if(P&&t.mode===`conversation`&&B.deferredMessage===!0&&hasStepInput(S)){O!==void 0&&prepareDynamicInstructionPreamble(O,projectHistory(e.history,e.state));let n=[];try{let e=await preparePreambleTrace();D=await emitTurnPreamble(P,_e??{},D,t.runtimeIdentity,e)}catch(t){if(n=O===void 0?[]:drainDynamicInstructionUserMessages(O),e={...e,history:[...e.history,...n]},E=e,!isDynamicModelSelectionError(t))throw t;return failModelSelection(t,{sessionStarted:!0,sequence:D.sequence,stepIndex:0,turnId:`turn_${D.sequence}`})}return n=O===void 0?[]:drainDynamicInstructionUserMessages(O),e={...e,history:[...e.history,...n]},D=await emitTurnEpilogue(P,D,t.mode),{next:null,session:setHarnessEmissionState(e,D)}}return I.outcome===`resolved`?(P&&t.mode===`conversation`&&(D=await emitTurnEpilogue(P,D,t.mode),e=setHarnessEmissionState(e,D)),{next:null,session:e}):{next:null,session:B.session}}if(B.resolvedInputs!==void 0)for(let e of B.resolvedInputs)j!==void 0&&await publishInputResolutions({batch:e,hooks:j,sessionId:E.sessionId}),P&&await P(createInputResolvedEvent({resolutions:e.inputs.map(e=>{let t={kind:e.request.kind,outcome:e.outcome,requestId:e.request.requestId};return e.response===void 0?t:{...t,response:e.response}}),sequence:e.event.sequence,stepIndex:e.event.stepIndex,turnId:e.event.turnId}));if(P&&B.rejectedActions)for(let e of B.rejectedActions)for(let t of e.results)await P(createActionResultEvent({rejected:!0,result:t,sequence:e.event.sequence,stepIndex:e.event.stepIndex,turnId:e.event.turnId}));let V=[];if(P&&hasStepInput(S)){O!==void 0&&prepareDynamicInstructionPreamble(O,projectHistory(B.session.history,B.session.state));try{let e=await preparePreambleTrace();D=await emitTurnPreamble(P,_e??{},D,t.runtimeIdentity,e)}catch(e){if(V=O===void 0?[]:drainDynamicInstructionUserMessages(O),E={...B.session,history:[...B.session.history,...V]},!isDynamicModelSelectionError(e))throw e;return failModelSelection(e,{sessionStarted:!0,sequence:D.sequence,stepIndex:0,turnId:`turn_${D.sequence}`})}V=O===void 0?[]:drainDynamicInstructionUserMessages(O),w&&w.setAttribute(`eve.turn.id`,D.turnId)}let ye=B.session.history.length;E=setHarnessEmissionState({...B.session,history:[...B.session.history,...V]},D);let H=[...B.messages.slice(0,ye),...V,...B.messages.slice(ye)],U=await applySessionLimitContinuation({config:t,emit:P,emissionState:D,limitContinuation:B.limitContinuation,session:E});if(U.result!==null)return U.result;E=U.session;let W=getAgentHandleStore(E.state);if(W!==void 0&&!hasUnansweredToolCall(H)&&W.handles.some(e=>e.phase===`addressed`)!==!0){let e=resolveAgentsAnnouncement({messages:projectHistory(H,E.state),store:W});e!==void 0&&H.push({content:e,role:`user`})}if(R?.context!==void 0&&B.deferredContext!==!0)for(let e of R.context)H.push({content:e,role:`user`});let be=normalizeUserContent(R?.message);if(be!==void 0&&!B.deferredMessage&&!B.consumedMessage){let e=await stageAttachmentsToSandbox(be);H.push({content:e,role:`user`})}let G=projectHistory(H,E.state),K=O,q;try{K!==void 0&&t.dispatchDynamicModelEvent!==void 0&&await t.dispatchDynamicModelEvent({ctx:K,event:{data:{sequence:D.sequence,stepIndex:D.stepIndex,turnId:D.turnId},type:`step.started`},messages:G}),q=await resolveActiveRuntimeModel({config:t,ctx:K,session:E})}catch(e){return failModelSelection(e,D)}E=q.session;let J=q.model,xe=detectPromptCachePath(J),Y=xe.kind===`anthropic-direct`?getAnthropicCacheMarker():void 0,Se=buildGatewayAttributionHeaders(J,t.runtimeIdentity),Ce=await maybeCompact({abortSignal:t.abortSignal,auth:K?.get(AuthKey)??null,emit:P,emissionState:D,messages:[...G],model:J,onCompaction:t.onCompaction,resolveModel:t.resolveModel,runtimeIdentity:t.runtimeIdentity,session:E,telemetry:enrichTelemetry(b,A,C)??void 0});E=Ce.session,Ce.compacted&&(H=Ce.messages),G=normalizeModelMessages(projectHistory(H,E.state)),P&&await emitStepStarted(P,D,requireSessionModelReference(E).id,G);let we=getApprovedTools(E),X=K?.get(TurnTaskDeliveryKey),Te=E.outputSchema!==void 0||K===void 0||K.get(ParentSessionKey)!==void 0?void 0:X===`pending`?TASK_DELIVERY_PENDING_INSTRUCTION:X===`settled`?TASK_DELIVERY_SETTLED_INSTRUCTION:isScheduleAppAuth(K.get(AuthKey))?CONDITIONAL_DELIVERY_INSTRUCTION:X===`initiating`?TASK_DELIVERY_INITIATING_INSTRUCTION:void 0,Ee=Te!==void 0&&X!==`initiating`,De=await hydrateSandboxAttachments(G),Z=[],Oe=[];for(let e of De)e.role===`system`?Z.push(e):Oe.push(e);if(K!==void 0){Z.push(...buildDynamicInstructionMessages(K));let e=K.get(PendingSkillAnnouncementKey);e!==void 0&&e.length>0&&Z.push({role:`system`,content:e});let t=K.get(TurnTaskStateKey);t!==void 0&&Z.push({role:`system`,content:t})}Te!==void 0&&Z.push({role:`system`,content:Te});let ke=Oe,prepareModelCallInput=e=>{let t=e?[{role:`system`,content:e}]:[],n=E.agent.system?[{role:`system`,content:E.agent.system}]:[],r=Z.length>0||t.length>0?[...t,...n,...Z]:void 0,i=r!==void 0&&Y?applySystemCacheBreakpoint(r,Y):r,a=i===void 0?E.agent.system??void 0:mergeSystemInstructions(i);return{instructions:a,telemetryRuntimeContext:buildTelemetryRuntimeContext({eveVersion,authored:te,emissionState:D,environment,modelInput:{instructions:a,messages:ke},providerResolvers:ne,session:E})}},Ae=t.tools,runSingleModelCall=async e=>{let{instructions:n,telemetryRuntimeContext:i={}}=e.preparedInput??prepareModelCallInput(e.extraSystemNote);e.retryReason&&(i[`eve.retry.reason`]=e.retryReason);let a=e.trailingUserNote?[...ke,{role:`user`,content:e.trailingUserNote}]:ke,o=buildHarnessToolsWithDynamicSubagents(t.tools,K),c=createBackgroundToolCallBatch(),l=getAdvertisedTools({delegatedCaller:N,session:E,tools:o});Ae=l;let u=await buildToolSetWithProviderTools({approvedTools:we,backgroundBatch:c,capabilities:t.capabilities,disabledProviderTools:e.disabledProviderTools,modelReference:requireSessionModelReference(E),tools:l,webSearchProvider:t.webSearchProvider});if(K!==void 0){let n=getAdvertisedTools({delegatedCaller:N,session:E,tools:buildDynamicTools(K)}),r=buildToolSetFromDefinitions({approvedTools:we,backgroundBatch:c,capabilities:t.capabilities,disabledProviderTools:e.disabledProviderTools,tools:n});for(let[e,t]of Object.entries(r)){if(l.get(e)?.runtimeAction!==void 0)throw Error(`Dynamic tool "${e}" collides with a runtime-visible subagent.`);u[e]=t}}E.outputSchema!==void 0&&(u[FINAL_OUTPUT_TOOL_NAME]=buildFinalOutputTool(E.outputSchema));let d=P===void 0?void 0:({tools:e})=>createWorkflowLifecycle({emit:P,emissionState:D,tools:e}),f=t.workflow===!0?{lifecycle:d,maxSubagents:t.workflowMaxSubagents}:void 0,p=await getAdvertisedTools({delegatedCaller:N,modelTools:u,session:E,tools:l,workflow:f});E=p.session;let m=p.modelTools,h=Y?applyLastToolCacheBreakpoint(m,Y):m,g=activeTurnId(D),_=j===void 0?void 0:{attemptId:`${E.sessionId}:${g}:${D.stepIndex}:${e.attemptIndex}`,attemptIndex:e.attemptIndex,channelAudience:A,functionId:b?.functionId??C,rootSessionId:M?.rootSessionId??E.sessionId,sessionId:E.sessionId,stepIndex:D.stepIndex,turnId:g};he=_;let v=_===void 0||j===void 0?void 0:createAiSdkHookBridge(_,j,t.instrumentation?.runInContext,i),y=buildStepHooks({auth:K?.get(AuthKey)??null,cachePath:xe,emit:P,emissionState:D,emitStepStarted:e.suppressStepStartedEmission!==!0,marker:Y,session:E}),ee=new ToolLoopAgent({headers:Se,instructions:n,model:J,onLanguageModelCallEnd(e){for(let t of e.content)t.type!==`tool-call`||t.providerExecuted===!0||isInvalidToolCall(t)||c.register({callId:t.toolCallId,input:t.input,toolName:t.toolName})},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:E.agent.reasoning,runtimeContext:i,stopWhen:isStepCount(1),telemetry:enrichTelemetry(b,A,C,i,v),toolApproval:buildToolApproval(m),tools:h}),executeModelCall=async()=>{if(P){let e=[...t.tools].filter(([e,t])=>t.runtimeAction!==void 0&&l.get(e)===void 0).map(([e])=>e),n=new Set([ASK_QUESTION_TOOL_NAME,FINAL_OUTPUT_TOOL_NAME,...e]),r=await ee.stream({abortSignal:t.abortSignal,messages:a}),{emittedActionCallIds:i,handledInlineToolResultCallIds:o,invalidInputToolCallIds:s,inlineAuthorizationResults:c,trailingInlineToolResultParts:u}=await emitStreamContent(P,D,r.fullStream,{excludedActionToolNames:n,tools:l});throwIfTurnAborted(t.abortSignal);let[d,f]=await Promise.all([y.stepResult,r.responseMessages]);if(isEmptyModelResponse(d)&&extractToolResultCallIds(f).size===0&&c.length===0&&u.length===0)throw new EmptyModelResponseError;await emitStepActions(P,D,d,{emittedActionCallIds:i,excludedActionCallIds:s,excludedActionToolNames:n,handledInlineToolResultCallIds:o,tools:l});let p=d.toolResults,m=new Map(p.map(e=>[e.toolCallId,e]));for(let e of c)m.set(e.toolCallId,e);return withAccumulatedResponseMessages({invalidInputToolCallIds:s,responseMessages:appendMissingToolResultMessages({append:u,responseMessages:f}),stepResult:d,toolResults:[...m.values()]})}let e=await ee.generate({abortSignal:t.abortSignal,messages:a});throwIfTurnAborted(t.abortSignal);let n=await y.stepResult;if(isEmptyModelResponse(n)&&extractToolResultCallIds(e.responseMessages).size===0)throw new EmptyModelResponseError;return withAccumulatedResponseMessages({responseMessages:e.responseMessages,stepResult:n})};try{let e=await executeModelCall();return _!==void 0&&await j?.publish({idempotencyKey:attemptIdempotencyKey(_),scope:_,type:`step.attempt.completed`}),e}catch(e){return _!==void 0&&await j?.publish({error:e,idempotencyKey:attemptIdempotencyKey(_),scope:_,type:`step.attempt.failed`}),rethrowNoOutputAsEmptyResponse(e)}},je=0,runOneModelCall=async e=>runModelCallWithRetries(t=>runSingleModelCall({...e,attemptIndex:je++,preparedInput:t===1?e.preparedInput:void 0,suppressStepStartedEmission:t!==1||e.suppressStepStartedEmission}),{sessionId:E.sessionId,turnId:D.turnId},t.abortSignal),Me=prepareModelCallInput(),Ne=await continuePendingWorkflowInterrupt({childResults:R?.runtimeActionResults,config:t,emit:P,emissionState:D,runStep,session:E,tools:buildHarnessToolsWithDynamicSubagents(t.tools,K)});if(Ne!==null)return Ne;let Pe=await enforceSessionTokenLimit({config:t,emit:P,emissionState:D,messages:G,session:E});if(Pe!==null)return Pe;let Q;try{Q=await runOneModelCall({preparedInput:Me,suppressStepStartedEmission:!0})}catch(n){throwIfTurnAborted(t.abortSignal);let r=await runModelCallRecoveryPipeline({error:n,stages:[e=>attemptUnsupportedProviderToolRecovery({error:e.error,runOneModelCall,sessionId:E.sessionId,turnId:D.turnId}),e=>attemptEmptyResponseRecovery({emptyDeliveryEnabled:Ee,error:e.error,retryCallOptions:e.retryCallOptions,runOneModelCall,sessionId:E.sessionId,turnId:D.turnId})]});if(throwIfTurnAborted(t.abortSignal),r.outcome===`recovered`)Q=r.result;else{let n=r.error;if(w&&recordErrorOnSpan(w,n),!P)throw n;let a=extractWorkflowStreamWriteErrorDetails(n);if(a!==null){let t=createErrorId();return log.error(`workflow stream write failed — parking session for retry by the user`,{...a,errorId:t,error:n,sessionId:E.sessionId,turnId:D.turnId}),D=await emitRecoverableFailedTurn(P,D,{code:`WORKFLOW_STREAM_WRITE_FAILED`,continuationToken:E.continuationToken,details:{...a,errorId:t},message:toErrorMessage(n)}),{next:null,session:setHarnessEmissionState(E,D)}}let o=classifyModelCallError(n),s=createErrorId(),c=summarizeKnownError(n),l=c===null?extractUpstreamRejectionMessage(n):null,u=c?.message??l?.message??toErrorMessage(n),d=c?.hint===void 0?u:`${u} ${c.hint}`,f=extractModelCallErrorDetails(n),p=buildModelCallFailureDetails({catalogSummary:c,error:n,errorId:s,modelCallDetails:f,upstreamRejection:l}),m=buildModelCallFailureLogFields({error:n,errorId:s,modelCallDetails:f,recognized:c!==null||l!==null,sessionId:E.sessionId,turnId:D.turnId});if(o===`terminal`)return c===null?log.error(l?.message??`model call failed terminally`,m):log.error(`${c.name}: ${c.message}`,{errorId:s,hint:c.hint,sessionId:E.sessionId,turnId:D.turnId}),await emitFailedStep(P,D,{code:`MODEL_CALL_FAILED`,details:p,message:u,sessionId:E.sessionId}),{next:t.mode===`task`||de?{done:!0,isError:!0,output:d}:{done:!0,output:``},session:E};if(t.mode===`task`){if(o===`recoverable`&&!(n instanceof EmptyModelResponseError))throw log.warn(l?.message??`model call failed recoverably in task mode — rethrowing for durable step retry`,m),n;return log.error(l?.message??`model call failed; failing the task run`,m),await emitFailedStep(P,D,{code:`MODEL_CALL_FAILED`,details:p,message:u,sessionId:E.sessionId}),{next:{done:!0,isError:!0,output:d},session:E}}log.error(l?.message??`model call failed — parking session for retry by the user`,m),D=await emitRecoverableFailedTurn(P,D,{code:`MODEL_CALL_FAILED`,continuationToken:E.continuationToken,details:p,message:u});let h={isError:!0,output:d};return E={...E,outputSchema:void 0},{next:null,session:setHarnessEmissionState(E,D),settledTurn:h}}}let $=accumulateTurnUsage({previous:getTurnUsageState(E.state),turnId:D.turnId,usage:extractTokenUsageDelta({costUsd:extractGatewayCostUsd(Q.providerMetadata),usage:Q.usage})});E=setTurnUsageState(E,$);let Fe;try{Fe=formatLanguageModelGatewayId(J)}catch{Fe=void 0}return await setEveAttributes({"$eve.model":Fe,"$eve.input_tokens":$.inputTokens,"$eve.output_tokens":$.outputTokens,"$eve.cache_read_tokens":$.cacheReadTokens,"$eve.cache_write_tokens":$.cacheWriteTokens,"$eve.cost_usd":$.sawCost?$.costUsd:void 0,"$eve.tool_count":t.tools.size}),handleStepResult({config:t,emit:P,emissionState:D,delegatedCaller:N,modelPromptMessageCount:G.length,promptMessages:H,result:Q,runStep,session:E,runtimeActionTools:Ae})}return runStep}function isValidSpanContext(e){return/^[0-9a-f]{32}$/u.test(e.traceId)&&e.traceId!==`00000000000000000000000000000000`&&/^[0-9a-f]{16}$/u.test(e.spanId)&&e.spanId!==`0000000000000000`}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(Array.isArray(n.content))for(let e of n.content)typeof e==`object`&&e&&e.type===`tool-result`&&t.add(e.toolCallId);return t}function hasUnansweredToolCall(e){let t=new Set,n=new Set;for(let r of e)if(Array.isArray(r.content))for(let e of r.content)typeof e!=`object`||!e||(e.type===`tool-call`&&t.add(e.toolCallId),e.type===`tool-result`&&n.add(e.toolCallId));for(let e of t)if(!n.has(e))return!0;return!1}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}),d=new Set([...i.invalidInputToolCallIds??[],...i.toolCalls.filter(isInvalidToolCall).map(e=>e.toolCallId),...u.map(e=>e.toolCallId)]),f=l?[]:appendMissingToolResultMessages({append:u.map(e=>createToolResultMessagePartFromToolError(e)),responseMessages:i.response.messages}),p=l?null:c,m=new Set;for(let e of[...i.content??[],...i.toolResults??[]])(e.type===`tool-result`||e.type===`tool-error`)&&e.providerExecuted===!0&&m.add(e.toolCallId);let h=normalizeProviderToolHistory({messages:f,providerExecutedOutcomeIds:m}),g=h.messages,_={...s,compaction:createNextCompactionConfig(s.compaction,e.modelPromptMessageCount,i)},v=t.workflow===!0?readWorkflowContinuationSecurity(_):void 0;if(v!==void 0){let e=await getWorkflowSandboxInterrupt(i,v);if(e!==void 0){if(!isWorkflowRuntimeActionInterrupt(e))throw Error(`Unsupported Workflow interrupt kind "${e.payload.kind}".`);return parkOnWorkflowInterrupt({baseSession:_,emissionState:o,interrupt:e,promptMessages:r,responseMessages:g})}}let y=extractToolApprovalInputRequests({content:i.content??[],excludedCallIds:d}),te=new Set(y.map(e=>e.action.callId)),ne=extractQuestionInputRequests({toolCalls:i.toolCalls,excludedCallIds:new Set([...d,...te])}),x=[...y,...ne],re=renderPendingApprovalsSnippet(y),ie=[...r,...re===void 0?[]:[{content:re,role:`user`}]],C=getAdvertisedTools({delegatedCaller:e.delegatedCaller,session:_,tools:e.runtimeActionTools}),ae=(i.toolCalls??[]).filter(e=>!d.has(e.toolCallId)).filter(t=>e.runtimeActionTools.get(t.toolName)?.runtimeAction!==void 0).filter(e=>C.get(e.toolName)?.runtimeAction===void 0?(log.warn(`runtime action tool call blocked because tool is not advertised`,{callId:e.toolCallId,sessionId:_.sessionId,toolName:e.toolName}),!1):!0).map(e=>createRuntimeActionRequestFromToolCall({toolCall:e,tools:C}));if(ae.length>0){if(x.length===0)return{next:null,session:setHarnessEmissionState(setPendingRuntimeActionBatch({actions:ae,event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},responseMessages:g,session:{..._,history:[...r]}}),advanceStep(o))};let e=setPendingRuntimeActionBatch({actions:ae,event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},responseMessages:g,session:{..._,history:ie}});return e=appendPendingInputBatch({event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},requests:x,responseMessages:[],session:e}),n&&await n(createInputRequestedEvent({requests:x,sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId})),{next:null,session:setHarnessEmissionState(e,advanceStep(o))}}if(x.length>0){let e=buildResponseAuthorizationTools({authoredTools:t.tools,context:contextStorage.getStore()}),r=appendPendingInputBatch({event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},requests:x,responseAuthRequiredRequestIds:y.filter(t=>{let n=e.get(t.action.toolName)?.approval;return n!==void 0&&typeof n!=`function`&&n.response!==void 0}).map(e=>e.requestId),responseMessages:g,session:{..._,history:ie}});return n&&(await n(createInputRequestedEvent({requests:x,sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId})),t.mode===`conversation`&&(o=await emitTurnEpilogue(n,o,t.mode),r=setHarnessEmissionState(r,o))),{next:hasDeferredStepInput(r)?a:null,session:r}}let oe=findAuthorizationSignalFromToolResults(i.toolResults);if(oe){let{challenges:e}=oe;if(n){for(let t of getSupersededAuthorizationChallenges(_.state,e))await n(createAuthorizationCompletedEvent({attemptId:t.attemptId,authorization:t.challenge,name:t.name,outcome:`failed`,reason:`Superseded by a newer authorization attempt.`,sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId}));for(let t of e)await n(createAuthorizationRequiredEvent({attemptId:t.attemptId,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}));t.mode===`conversation`&&(o=await emitTurnEpilogue(n,o,t.mode))}return{next:null,session:setHarnessEmissionState({..._,history:[...r],state:setPendingAuthorization(_.state,{challenges:e})},o)}}let se=g,w=[...r,...se],T={..._,history:w};return!(T.outputSchema!==void 0&&extractFinalOutput(i)!==void 0)&&(se.at(-1)?.role===`tool`||h.outcomeEndsResponse||hasDeferredStepInput(T))?(n&&(o=advanceStep(o),T=setHarnessEmissionState(T,o)),{next:a,session:T}):t.mode===`task`?finishTaskTurn({emissionState:o,emit:n,history:r,result:i,schema:T.outputSchema,session:T,stepOutput:p}):finishConversationTurn({emissionState:o,emit:n,history:r,result:i,schema:T.outputSchema,session:T,stepOutput:p})}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){return await e(createResultCompletedEvent({result:n,sequence:t.sequence,stepIndex:t.stepIndex,turnId:t.turnId})),emitTurnEpilogue(e,t,r)}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=setHarnessEmissionState(s,o)),{next:{done:!0,output:a??``},session:s};let c=extractFinalOutput(r);return c===void 0?(s={...s,outputSchema: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=setHarnessEmissionState(s,o)),{next:{done:!0,output:c},session:s})}async function finishConversationTurn(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,`conversation`),s=setHarnessEmissionState(s,o)),{next:null,session:s,settledTurn:{output:a??``}};let c=extractFinalOutput(r);if(c===void 0){s={...s,outputSchema:void 0},t&&(o=await emitRecoverableFailedTurn(t,o,{...OUTPUT_SCHEMA_NOT_FULFILLED,continuationToken:s.continuationToken}),s=setHarnessEmissionState(s,o));let e={isError:!0,output:OUTPUT_SCHEMA_NOT_FULFILLED.message};return{next:null,session:s,settledTurn:e}}return s=persistStructuredAssistantTurn(s,n,c),t&&(o=await emitStructuredResult(t,o,c,`conversation`),s=setHarnessEmissionState(s,o)),{next:null,session:s,settledTurn:{output:c}}}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.tools}),a=getWorkflowContinuationSecurity(e.session),o;try{let t=buildWorkflowHostTools({tools:e.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,l=replaceWorkflowToolResult([...e.session.history,...t.responseMessages],n.outerToolCallId,c),u=clearPendingWorkflowInterrupt({...e.session,history:l});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=l.slice(0,t),r=l.slice(t);return u={...u,history:n},parkOnWorkflowInterrupt({baseSession:u,emissionState:e.emissionState,interrupt:s.interrupt,promptMessages:n,responseMessages:r})}return{next:e.runStep,session:u}}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,thresholdPercent:e.thresholdPercent};return n.usage?.inputTokens!==void 0&&(r.lastKnownInputTokens=n.usage.inputTokens,r.lastKnownPromptMessageCount=t),r}async function maybeCompact(e){let{emit:t,emissionState:n}=e,r=e.messages,i=e.session;if(e.force!==!0&&!shouldCompact(r,i.compaction))return{compacted:!1,messages:r,session:i};let a=await resolveCompactionModel({compactionModelReference:i.agent.compactionModelReference,model:e.model,modelReference:requireSessionModelReference(i),resolveModel:e.resolveModel}),o=mergeProviderSafetyIdentifier(i.agent.compactionModelReference??requireSessionModelReference(i),a.providerOptions,e.auth);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,o,e.telemetry,buildGatewayAttributionHeaders(a.model,e.runtimeIdentity),e.abortSignal,e.force===!0),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})),{compacted:!0,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{appendMissingToolResultMessages,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){let t=e.session.agent.modelReference;if(t===void 0)throw Error(`Dynamic model selection is unavailable outside an eve runtime context.`);return{model:await e.config.resolveModel(t),session:e.session}}let t=getActiveDynamicModelSelection(e.ctx);if(t===null){let t=e.session.agent.modelReference;if(e.session.agent.dynamicModel===!0||t===void 0)throw Error(`Dynamic model selection is required before model-dependent work begins. Add a matching resolver handler that returns a concrete model.`);return{model:await e.config.resolveModel(t),session:e.session}}return{model:t.model===void 0?await e.config.resolveModel(t.reference):t.model,session:updateSessionModelReference(e.session,t.reference)}}function updateSessionModelReference(e,t){return{...e,agent:{...e.agent,modelReference:t},compaction:updateCompactionThresholdForModelReference({compaction:e.compaction,modelReference:t})}}function updateCompactionThresholdForModelReference(e){return e.modelReference.contextWindowTokens===void 0?e.compaction:{...e.compaction,threshold:Math.max(1,Math.floor(e.modelReference.contextWindowTokens*(e.compaction.thresholdPercent??.9)))}}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({isRemote:!0,traceId:e.traceId,spanId:e.spanId,traceFlags:e.traceFlags});return trace.setSpan(context.active(),t)}}}function buildHarnessToolsWithDynamicSubagents(e,t){let n=new Map(e);if(t===void 0)return n;for(let e of buildDynamicSubagentTools(t)){if(n.has(e.name))throw Error(`Dynamic subagent "${e.name}" collides with another runtime-visible tool name.`);n.set(e.name,e)}return n}function createToolLoopHarness(t){let n=t.handleEvent,h=getInstrumentationRuntime(),b=h?.otelSettings,te=getInstrumentationConfig(),ne=h?.runtimeContextResolvers;b!==void 0&&ensureOtelIntegration();let S=b===void 0?void 0:trace.getTracer(`eve`),C=t.runtimeIdentity?.agentName;async function runStep(e,t){let n;if(S&&hasStepInput(t)){let t=b?.functionId??C,r={"eve.version":eveVersion,"eve.environment":environment,"eve.session.id":e.sessionId};t&&(r[`ai.telemetry.functionId`]=t),n=S.startSpan(`ai.eve.turn`,{attributes:r})}let r=resolveStepOtelContext(S,n,e),executeStep=()=>executeStepBody(e,t,n);try{return r?await context.with(r,executeStep):await executeStep()}finally{n?.end()}}async function executeStepBody(h,S,w){let E=h,ce=createHistoryViewPreparer({previous:t.historyView,projector:t.historyProjector});ce(E.history,E.state);let projectHistory=(e,t)=>ce(e,t).messages;w&&(E=setTurnTraceState(E,w.spanContext()));let D=getHarnessEmissionState(E.state),O=contextStorage.getStore(),k=O?.get(ChannelInstrumentationKey),A=normalizeChannelAudience(k?.metadata.audience),j=instrumentationHooksForAudience(t.instrumentation?.hooks,A),M=O?.get(ParentSessionKey),le=O?.get(ChannelKey),ue=O?.get(SessionCallbackKey),de=M!==void 0||ue!==void 0,N=(ue?.taskId!==void 0||readTaskIdFromInboxToken(String(le?.state?.parentContinuationToken??``))!==void 0)&&t.tools.has(TASK_UPDATE_TOOL_NAME),fe=resolveParentLineage(M,le),pe=O?.get(ParentTraceContextKey),me=O?.get(SessionTraceSeedKey),he,P=createInstrumentationHandleEvent({agentName:t.runtimeIdentity?.agentName,channelAudience:A,channelKind:k?.kind,getAttemptScope:()=>he,handleEvent:n,hooks:j,parentLineage:fe,parentTraceContext:pe,rootSessionId:M?.rootSessionId,sessionId:E.sessionId,turnId:activeTurnId(D)}),failModelSelection=async(n,r)=>{if(throwIfTurnAborted(t.abortSignal),w&&recordErrorOnSpan(w,n),!P)throw n;let a=createErrorId(),o=toErrorMessage(n);return log.error(`model selection failed terminally`,{error:n,errorId:a,sessionId:E.sessionId,turnId:r.turnId}),await emitFailedStep(P,r,{code:`MODEL_SELECTION_FAILED`,details:{errorId:a},message:o,sessionId:E.sessionId}),{next:t.mode===`task`||de?{done:!0,isError:!0,output:o}:{done:!0,output:``},session:E}},preparePreambleTrace=async()=>{let e=w?.spanContext(),n=e!==void 0&&isValidSpanContext(e)?{spanId:e.spanId,traceFlags:e.traceFlags,traceId:e.traceId}:void 0;return await prepareTurnTraceContext({agentName:t.runtimeIdentity?.agentName,channelAudience:A,channelType:k?.channelType,instrumentation:t.instrumentation,parentLineage:fe,parentTraceContext:pe,rootSessionId:M?.rootSessionId??E.rootSessionId??E.sessionId,sequence:D.sequence,sessionId:E.sessionId,sessionStarted:D.sessionStarted,traceContext:n,traceSeed:me,turnId:`turn_${D.sequence}`})};if(t.clearOnly===!0)return E={...E,compaction:{recentWindowSize:E.compaction.recentWindowSize,threshold:E.compaction.threshold,thresholdPercent:E.compaction.thresholdPercent},history:[],state:clearMemorySessionState(E.state)},await P?.(createContextClearedEvent({sequence:D.sequence,sessionId:E.sessionId,turnId:activeTurnId(D)})),await P?.(createSessionWaitingEvent()),{next:null,session:E};if(t.compactOnly===!0){if(E.history.length>0)try{let e=contextStorage.getStore(),n=await resolveActiveRuntimeModel({config:t,ctx:e,session:E});E=n.session;let r=await maybeCompact({abortSignal:t.abortSignal,auth:e?.get(AuthKey)??null,emit:P,emissionState:{...D,turnId:activeTurnId(D)},force:!0,historyProjector:t.historyProjector,messages:[...E.history],model:n.model,onCompaction:t.onCompaction,resolveModel:t.resolveModel,runtimeIdentity:t.runtimeIdentity,session:E,telemetry:enrichTelemetry(b,A,C)??void 0});E={...r.session,compaction:{recentWindowSize:r.session.compaction.recentWindowSize,threshold:r.session.compaction.threshold,thresholdPercent:r.session.compaction.thresholdPercent},history:r.messages}}catch(e){logError(log,`manual session compaction failed`,e,{sessionId:E.sessionId})}return await P?.(createSessionWaitingEvent()),{next:null,session:E}}let F=consumeDeferredStepInput({input:S,preferCurrentInput:t.mode!==`conversation`&&S!==void 0&&hasPendingApprovalBatch(E),session:E});E=F.session;let I=await resolvePendingRuntimeActions({emit:P,session:E,stepInput:F.input});if(I.outcome===`unresolved`)return{next:null,session:I.session};E=I.session;let ge=getPendingInputRequestIds(E.state),L=convertStaleResponsesToUserMessage({history:I.messages,pendingRequestIds:ge,stepInput:dropStaleSessionLimitContinuationResponses({pendingRequestIds:ge,stepInput:F.input})}),R=L.stepInput,_e=L.kind===`converted`?{...R,message:L.displayMessage}:R,z=contextStorage.getStore();z!==void 0&&t.resolveStepDynamicTools!==void 0&&shouldPrepareApprovalPolicyTools({session:E,stepInput:R})&&await t.resolveStepDynamicTools({ctx:z,event:createStepStartedEvent({modelId:E.agent.modelReference?.id??`dynamic`,sequence:D.sequence,stepIndex:D.stepIndex,turnId:D.turnId}),messages:projectHistory(I.messages,E.state)});let B=await coordinateApprovalDelivery({session:E,stepInput:R,tools:buildResponseAuthorizationTools({authoredTools:t.tools,context:z})});if(E=B.session,P){for(let e of B.feedback)await P(createMessageCompletedEvent({message:e,sequence:D.sequence,stepIndex:D.stepIndex,turnId:D.turnId}));let e=getApprovalAuditState(E.state);for(let t of e.activeCandidates.filter(e=>e.pendingEventEmitted!==!0))await P(createApprovalCandidateEvent({candidateId:t.candidateId,outcome:`pending`,requestId:t.requestId,responderPrincipalId:t.responder.principalId,sequence:D.sequence,stepIndex:D.stepIndex,turnId:D.turnId})),E={...E,state:markApprovalCandidatePendingEventEmitted({candidateId:t.candidateId,state:E.state})};for(let t of e.candidateHistory.filter(e=>e.eventEmitted!==!0&&e.status!==`allowed`))await P(createApprovalCandidateEvent({candidateId:t.candidateId,outcome:t.status,requestId:t.requestId,responderPrincipalId:t.responder.principalId,reason:t.reason,sequence:D.sequence,stepIndex:D.stepIndex,turnId:D.turnId})),E={...E,state:markApprovalCandidateHistoryEventEmitted({candidateId:t.candidateId,state:E.state})};for(let t of e.settlements.filter(e=>e.eventEmitted!==!0))await P(createApprovalSettledEvent({outcome:t.outcome===`allowed`?`approved`:`cancelled`,requestId:t.requestId,responderPrincipalId:t.actor.principalId,sequence:D.sequence,stepIndex:D.stepIndex,turnId:D.turnId})),E={...E,state:markApprovalSettlementEventEmitted({requestId:t.requestId,state:E.state})}}if(B.kind===`park`)return{next:null,session:E};if(B.kind===`continue-coordination`)return{next:runStep,session:B.stepInput===void 0?E:queueDeferredStepInput(E,B.stepInput)};if(B.challenges.length>0){if(P)for(let e of B.challenges)await P(createAuthorizationRequiredEvent({authorization:e.challenge,candidateId:e.candidateId,description:e.challenge.instructions??`Authorization required for ${e.name}`,name:e.name,sequence:D.sequence,stepIndex:D.stepIndex,turnId:D.turnId,webhookUrl:e.hookUrl}));let e=B.stepInput===void 0?E:queueDeferredStepInput(E,B.stepInput);return{next:null,session:{...e,state:setPendingAuthorization(e.state,{challenges:B.challenges})}}}let V=resolvePendingInput({deferMessagesWhileApprovalsPending:t.mode!==`conversation`,history:I.messages,resolveApprovalKey:resolveApprovalKeyFromTools(t.tools),session:E,stepInput:B.stepInput});if(V.outcome===`unresolved`){let e=I.outcome===`resolved`?{...V.session,history:[...I.messages]}:V.session;if(P&&t.mode===`conversation`&&V.deferredMessage===!0&&hasStepInput(S)){O!==void 0&&prepareDynamicInstructionPreamble(O,projectHistory(e.history,e.state));let n=[];try{let e=await preparePreambleTrace();D=await emitTurnPreamble(P,_e??{},D,t.runtimeIdentity,e)}catch(t){if(n=O===void 0?[]:drainDynamicInstructionUserMessages(O),e={...e,history:[...e.history,...n]},E=e,!isDynamicModelSelectionError(t))throw t;return failModelSelection(t,{sessionStarted:!0,sequence:D.sequence,stepIndex:0,turnId:`turn_${D.sequence}`})}return n=O===void 0?[]:drainDynamicInstructionUserMessages(O),e={...e,history:[...e.history,...n]},D=await emitTurnEpilogue(P,D,t.mode),{next:null,session:setHarnessEmissionState(e,D)}}return I.outcome===`resolved`?(P&&t.mode===`conversation`&&(D=await emitTurnEpilogue(P,D,t.mode),e=setHarnessEmissionState(e,D)),{next:null,session:e}):{next:null,session:V.session}}if(V.resolvedInputs!==void 0)for(let e of V.resolvedInputs)j!==void 0&&await publishInputResolutions({batch:e,hooks:j,sessionId:E.sessionId}),P&&await P(createInputResolvedEvent({resolutions:e.inputs.map(e=>{let t={kind:e.request.kind,outcome:e.outcome,requestId:e.request.requestId};return e.response===void 0?t:{...t,response:e.response}}),sequence:e.event.sequence,stepIndex:e.event.stepIndex,turnId:e.event.turnId}));if(P&&V.rejectedActions)for(let e of V.rejectedActions)for(let t of e.results)await P(createActionResultEvent({rejected:!0,result:t,sequence:e.event.sequence,stepIndex:e.event.stepIndex,turnId:e.event.turnId}));let H=[];if(R?.context!==void 0&&V.deferredContext!==!0)for(let e of R.context)H.push({content:e,role:`user`});let ve=normalizeUserContent(R?.message),ye=ve!==void 0&&!V.deferredMessage&&!V.consumedMessage?await stageAttachmentsToSandbox(ve):void 0;ye!==void 0&&H.push({content:ye,role:`user`});let U=[],W;if(P&&hasStepInput(S)){O!==void 0&&(prepareDynamicInstructionPreamble(O,projectHistory(V.session.history,V.session.state)),prepareMemoryPreamble(O,{history:V.messages,input:H,state:V.session.state}));try{let e=await preparePreambleTrace();D=await emitTurnPreamble(P,_e??{},D,t.runtimeIdentity,e)}catch(e){if(U=O===void 0?[]:drainDynamicInstructionUserMessages(O),W=O===void 0?void 0:drainMemoryCommit(O),E={...V.session,history:[...W?.history??V.session.history,...U],state:W?.state??V.session.state},!isDynamicModelSelectionError(e))throw e;return failModelSelection(e,{sessionStarted:!0,sequence:D.sequence,stepIndex:0,turnId:`turn_${D.sequence}`})}U=O===void 0?[]:drainDynamicInstructionUserMessages(O),W=O===void 0?void 0:drainMemoryCommit(O),w&&w.setAttribute(`eve.turn.id`,D.turnId)}let be=W?.history??V.session.history,xe=V.session.history.length;E=setHarnessEmissionState({...V.session,history:[...be,...U],state:W?.state??V.session.state},D);let G=[...W?.history??V.messages.slice(0,xe),...U,...W===void 0?V.messages.slice(xe):[]],Se=await applySessionLimitContinuation({config:t,emit:P,emissionState:D,limitContinuation:V.limitContinuation,session:E});if(Se.result!==null)return Se.result;E=Se.session;let Ce=getAgentHandleStore(E.state);if(Ce!==void 0&&!hasUnansweredToolCall(G)&&Ce.handles.some(e=>e.phase===`addressed`)!==!0){let e=resolveAgentsAnnouncement({messages:projectHistory(G,E.state),store:Ce});e!==void 0&&G.push({content:e,role:`user`})}G=[...G,...H];let K=projectHistory(G,E.state),q=O,we;try{q!==void 0&&t.dispatchDynamicModelEvent!==void 0&&await t.dispatchDynamicModelEvent({ctx:q,event:{data:{sequence:D.sequence,stepIndex:D.stepIndex,turnId:D.turnId},type:`step.started`},messages:K}),we=await resolveActiveRuntimeModel({config:t,ctx:q,session:E})}catch(e){return failModelSelection(e,D)}E=we.session;let J=we.model,Te=detectPromptCachePath(J),Y=Te.kind===`anthropic-direct`?getAnthropicCacheMarker():void 0,Ee=buildGatewayAttributionHeaders(J,t.runtimeIdentity),De=await maybeCompact({abortSignal:t.abortSignal,auth:q?.get(AuthKey)??null,emit:P,emissionState:D,historyProjector:t.historyProjector,messages:[...G],model:J,onCompaction:t.onCompaction,resolveModel:t.resolveModel,runtimeIdentity:t.runtimeIdentity,session:E,telemetry:enrichTelemetry(b,A,C)??void 0});E=De.session,De.compacted&&(G=De.messages),K=normalizeModelMessages(projectHistory(G,E.state)),P&&await emitStepStarted(P,D,requireSessionModelReference(E).id,K);let Oe=getApprovedTools(E),X=q?.get(TurnTaskDeliveryKey),ke=E.outputSchema!==void 0||q===void 0||q.get(ParentSessionKey)!==void 0?void 0:X===`pending`?TASK_DELIVERY_PENDING_INSTRUCTION:X===`settled`?TASK_DELIVERY_SETTLED_INSTRUCTION:isScheduleAppAuth(q.get(AuthKey))?CONDITIONAL_DELIVERY_INSTRUCTION:X===`initiating`?TASK_DELIVERY_INITIATING_INSTRUCTION:void 0,Ae=ke!==void 0&&X!==`initiating`,je=await hydrateSandboxAttachments(K),Z=[],Me=[];for(let e of je)e.role===`system`?Z.push(e):Me.push(e);if(q!==void 0){Z.push(...buildDynamicInstructionMessages(q));let e=q.get(PendingSkillAnnouncementKey);e!==void 0&&e.length>0&&Z.push({role:`system`,content:e});let t=q.get(TurnTaskStateKey);t!==void 0&&Z.push({role:`system`,content:t})}ke!==void 0&&Z.push({role:`system`,content:ke});let Ne=Me,prepareModelCallInput=e=>{let t=e?[{role:`system`,content:e}]:[],n=E.agent.system?[{role:`system`,content:E.agent.system}]:[],r=Z.length>0||t.length>0?[...t,...n,...Z]:void 0,i=r!==void 0&&Y?applySystemCacheBreakpoint(r,Y):r,a=i===void 0?E.agent.system??void 0:mergeSystemInstructions(i);return{instructions:a,telemetryRuntimeContext:buildTelemetryRuntimeContext({eveVersion,authored:te,emissionState:D,environment,modelInput:{instructions:a,messages:Ne},providerResolvers:ne,session:E})}},Pe=t.tools,runSingleModelCall=async e=>{let{instructions:n,telemetryRuntimeContext:i={}}=e.preparedInput??prepareModelCallInput(e.extraSystemNote);e.retryReason&&(i[`eve.retry.reason`]=e.retryReason);let a=e.trailingUserNote?[...Ne,{role:`user`,content:e.trailingUserNote}]:Ne,o=buildHarnessToolsWithDynamicSubagents(t.tools,q),c=createBackgroundToolCallBatch(),l=getAdvertisedTools({delegatedCaller:N,session:E,tools:o});Pe=l;let u=await buildToolSetWithProviderTools({approvedTools:Oe,backgroundBatch:c,capabilities:t.capabilities,disabledProviderTools:e.disabledProviderTools,modelReference:requireSessionModelReference(E),tools:l,webSearchProvider:t.webSearchProvider});if(q!==void 0){let n=getAdvertisedTools({delegatedCaller:N,session:E,tools:buildDynamicTools(q)}),r=buildToolSetFromDefinitions({approvedTools:Oe,backgroundBatch:c,capabilities:t.capabilities,disabledProviderTools:e.disabledProviderTools,tools:n});for(let[e,t]of Object.entries(r)){if(l.get(e)?.runtimeAction!==void 0)throw Error(`Dynamic tool "${e}" collides with a runtime-visible subagent.`);u[e]=t}}E.outputSchema!==void 0&&(u[FINAL_OUTPUT_TOOL_NAME]=buildFinalOutputTool(E.outputSchema));let d=P===void 0?void 0:({tools:e})=>createWorkflowLifecycle({emit:P,emissionState:D,tools:e}),f=t.workflow===!0?{lifecycle:d,maxSubagents:t.workflowMaxSubagents}:void 0,p=await getAdvertisedTools({delegatedCaller:N,modelTools:u,session:E,tools:l,workflow:f});E=p.session;let m=p.modelTools,h=Y?applyLastToolCacheBreakpoint(m,Y):m,g=activeTurnId(D),_=j===void 0?void 0:{attemptId:`${E.sessionId}:${g}:${D.stepIndex}:${e.attemptIndex}`,attemptIndex:e.attemptIndex,channelAudience:A,functionId:b?.functionId??C,rootSessionId:M?.rootSessionId??E.sessionId,sessionId:E.sessionId,stepIndex:D.stepIndex,turnId:g};he=_;let v=_===void 0||j===void 0?void 0:createAiSdkHookBridge(_,j,t.instrumentation?.runInContext,i),y=buildStepHooks({auth:q?.get(AuthKey)??null,cachePath:Te,emit:P,emissionState:D,emitStepStarted:e.suppressStepStartedEmission!==!0,marker:Y,session:E}),ee=new ToolLoopAgent({headers:Ee,instructions:n,model:J,onLanguageModelCallEnd(e){for(let t of e.content)t.type!==`tool-call`||t.providerExecuted===!0||isInvalidToolCall(t)||c.register({callId:t.toolCallId,input:t.input,toolName:t.toolName})},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:E.agent.reasoning,runtimeContext:i,stopWhen:isStepCount(1),telemetry:enrichTelemetry(b,A,C,i,v),toolApproval:buildToolApproval(m),tools:h}),executeModelCall=async()=>{if(P){let e=[...t.tools].filter(([e,t])=>t.runtimeAction!==void 0&&l.get(e)===void 0).map(([e])=>e),n=new Set([ASK_QUESTION_TOOL_NAME,FINAL_OUTPUT_TOOL_NAME,...e]),r=await ee.stream({abortSignal:t.abortSignal,messages:a}),{emittedActionCallIds:i,handledInlineToolResultCallIds:o,invalidInputToolCallIds:s,inlineAuthorizationResults:c,trailingInlineToolResultParts:u}=await emitStreamContent(P,D,r.fullStream,{excludedActionToolNames:n,tools:l});throwIfTurnAborted(t.abortSignal);let[d,f]=await Promise.all([y.stepResult,r.responseMessages]);if(isEmptyModelResponse(d)&&extractToolResultCallIds(f).size===0&&c.length===0&&u.length===0)throw new EmptyModelResponseError;await emitStepActions(P,D,d,{emittedActionCallIds:i,excludedActionCallIds:s,excludedActionToolNames:n,handledInlineToolResultCallIds:o,tools:l});let p=d.toolResults,m=new Map(p.map(e=>[e.toolCallId,e]));for(let e of c)m.set(e.toolCallId,e);return withAccumulatedResponseMessages({invalidInputToolCallIds:s,responseMessages:appendMissingToolResultMessages({append:u,responseMessages:f}),stepResult:d,toolResults:[...m.values()]})}let e=await ee.generate({abortSignal:t.abortSignal,messages:a});throwIfTurnAborted(t.abortSignal);let n=await y.stepResult;if(isEmptyModelResponse(n)&&extractToolResultCallIds(e.responseMessages).size===0)throw new EmptyModelResponseError;return withAccumulatedResponseMessages({responseMessages:e.responseMessages,stepResult:n})};try{let e=await executeModelCall();return _!==void 0&&await j?.publish({idempotencyKey:attemptIdempotencyKey(_),scope:_,type:`step.attempt.completed`}),e}catch(e){return _!==void 0&&await j?.publish({error:e,idempotencyKey:attemptIdempotencyKey(_),scope:_,type:`step.attempt.failed`}),rethrowNoOutputAsEmptyResponse(e)}},Fe=0,runOneModelCall=async e=>runModelCallWithRetries(t=>runSingleModelCall({...e,attemptIndex:Fe++,preparedInput:t===1?e.preparedInput:void 0,suppressStepStartedEmission:t!==1||e.suppressStepStartedEmission}),{sessionId:E.sessionId,turnId:D.turnId},t.abortSignal),Ie=prepareModelCallInput(),Le=await continuePendingWorkflowInterrupt({childResults:R?.runtimeActionResults,config:t,emit:P,emissionState:D,runStep,session:E,tools:buildHarnessToolsWithDynamicSubagents(t.tools,q)});if(Le!==null)return Le;let Re=await enforceSessionTokenLimit({config:t,emit:P,emissionState:D,messages:K,session:E});if(Re!==null)return Re;let Q;try{Q=await runOneModelCall({preparedInput:Ie,suppressStepStartedEmission:!0})}catch(n){throwIfTurnAborted(t.abortSignal);let r=await runModelCallRecoveryPipeline({error:n,stages:[e=>attemptUnsupportedProviderToolRecovery({error:e.error,runOneModelCall,sessionId:E.sessionId,turnId:D.turnId}),e=>attemptEmptyResponseRecovery({emptyDeliveryEnabled:Ae,error:e.error,retryCallOptions:e.retryCallOptions,runOneModelCall,sessionId:E.sessionId,turnId:D.turnId})]});if(throwIfTurnAborted(t.abortSignal),r.outcome===`recovered`)Q=r.result;else{let n=r.error;if(w&&recordErrorOnSpan(w,n),!P)throw n;let a=extractWorkflowStreamWriteErrorDetails(n);if(a!==null){let t=createErrorId();return log.error(`workflow stream write failed — parking session for retry by the user`,{...a,errorId:t,error:n,sessionId:E.sessionId,turnId:D.turnId}),D=await emitRecoverableFailedTurn(P,D,{code:`WORKFLOW_STREAM_WRITE_FAILED`,continuationToken:E.continuationToken,details:{...a,errorId:t},message:toErrorMessage(n)}),{next:null,session:setHarnessEmissionState(E,D)}}let o=classifyModelCallError(n),s=createErrorId(),c=summarizeKnownError(n),l=c===null?extractUpstreamRejectionMessage(n):null,u=c?.message??l?.message??toErrorMessage(n),d=c?.hint===void 0?u:`${u} ${c.hint}`,f=extractModelCallErrorDetails(n),p=buildModelCallFailureDetails({catalogSummary:c,error:n,errorId:s,modelCallDetails:f,upstreamRejection:l}),m=buildModelCallFailureLogFields({error:n,errorId:s,modelCallDetails:f,recognized:c!==null||l!==null,sessionId:E.sessionId,turnId:D.turnId});if(o===`terminal`)return c===null?log.error(l?.message??`model call failed terminally`,m):log.error(`${c.name}: ${c.message}`,{errorId:s,hint:c.hint,sessionId:E.sessionId,turnId:D.turnId}),await emitFailedStep(P,D,{code:`MODEL_CALL_FAILED`,details:p,message:u,sessionId:E.sessionId}),{next:t.mode===`task`||de?{done:!0,isError:!0,output:d}:{done:!0,output:``},session:E};if(t.mode===`task`){if(o===`recoverable`&&!(n instanceof EmptyModelResponseError))throw log.warn(l?.message??`model call failed recoverably in task mode — rethrowing for durable step retry`,m),n;return log.error(l?.message??`model call failed; failing the task run`,m),await emitFailedStep(P,D,{code:`MODEL_CALL_FAILED`,details:p,message:u,sessionId:E.sessionId}),{next:{done:!0,isError:!0,output:d},session:E}}log.error(l?.message??`model call failed — parking session for retry by the user`,m),D=await emitRecoverableFailedTurn(P,D,{code:`MODEL_CALL_FAILED`,continuationToken:E.continuationToken,details:p,message:u});let h={isError:!0,output:d};return E={...E,outputSchema:void 0},{next:null,session:setHarnessEmissionState(E,D),settledTurn:h}}}let $=accumulateTurnUsage({previous:getTurnUsageState(E.state),turnId:D.turnId,usage:extractTokenUsageDelta({costUsd:extractGatewayCostUsd(Q.providerMetadata),usage:Q.usage})});E=setTurnUsageState(E,$);let ze;try{ze=formatLanguageModelGatewayId(J)}catch{ze=void 0}return await setEveAttributes({"$eve.model":ze,"$eve.input_tokens":$.inputTokens,"$eve.output_tokens":$.outputTokens,"$eve.cache_read_tokens":$.cacheReadTokens,"$eve.cache_write_tokens":$.cacheWriteTokens,"$eve.cost_usd":$.sawCost?$.costUsd:void 0,"$eve.tool_count":t.tools.size}),handleStepResult({config:t,emit:P,emissionState:D,delegatedCaller:N,modelPromptMessageCount:K.length,promptMessages:G,result:Q,runStep,session:E,runtimeActionTools:Pe})}return runStep}function isValidSpanContext(e){return/^[0-9a-f]{32}$/u.test(e.traceId)&&e.traceId!==`00000000000000000000000000000000`&&/^[0-9a-f]{16}$/u.test(e.spanId)&&e.spanId!==`0000000000000000`}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(Array.isArray(n.content))for(let e of n.content)typeof e==`object`&&e&&e.type===`tool-result`&&t.add(e.toolCallId);return t}function hasUnansweredToolCall(e){let t=new Set,n=new Set;for(let r of e)if(Array.isArray(r.content))for(let e of r.content)typeof e!=`object`||!e||(e.type===`tool-call`&&t.add(e.toolCallId),e.type===`tool-result`&&n.add(e.toolCallId));for(let e of t)if(!n.has(e))return!0;return!1}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}),d=new Set([...i.invalidInputToolCallIds??[],...i.toolCalls.filter(isInvalidToolCall).map(e=>e.toolCallId),...u.map(e=>e.toolCallId)]),f=l?[]:appendMissingToolResultMessages({append:u.map(e=>createToolResultMessagePartFromToolError(e)),responseMessages:i.response.messages}),p=l?null:c,m=new Set;for(let e of[...i.content??[],...i.toolResults??[]])(e.type===`tool-result`||e.type===`tool-error`)&&e.providerExecuted===!0&&m.add(e.toolCallId);let h=normalizeProviderToolHistory({messages:f,providerExecutedOutcomeIds:m}),g=h.messages,_={...s,compaction:createNextCompactionConfig(s.compaction,e.modelPromptMessageCount,i)},v=t.workflow===!0?readWorkflowContinuationSecurity(_):void 0;if(v!==void 0){let e=await getWorkflowSandboxInterrupt(i,v);if(e!==void 0){if(!isWorkflowRuntimeActionInterrupt(e))throw Error(`Unsupported Workflow interrupt kind "${e.payload.kind}".`);return parkOnWorkflowInterrupt({baseSession:_,emissionState:o,interrupt:e,promptMessages:r,responseMessages:g})}}let y=extractToolApprovalInputRequests({content:i.content??[],excludedCallIds:d}),te=new Set(y.map(e=>e.action.callId)),ne=extractQuestionInputRequests({toolCalls:i.toolCalls,excludedCallIds:new Set([...d,...te])}),x=[...y,...ne],re=renderPendingApprovalsSnippet(y),ie=[...r,...re===void 0?[]:[{content:re,role:`user`}]],C=getAdvertisedTools({delegatedCaller:e.delegatedCaller,session:_,tools:e.runtimeActionTools}),ae=(i.toolCalls??[]).filter(e=>!d.has(e.toolCallId)).filter(t=>e.runtimeActionTools.get(t.toolName)?.runtimeAction!==void 0).filter(e=>C.get(e.toolName)?.runtimeAction===void 0?(log.warn(`runtime action tool call blocked because tool is not advertised`,{callId:e.toolCallId,sessionId:_.sessionId,toolName:e.toolName}),!1):!0).map(e=>createRuntimeActionRequestFromToolCall({toolCall:e,tools:C}));if(ae.length>0){if(x.length===0)return{next:null,session:setHarnessEmissionState(setPendingRuntimeActionBatch({actions:ae,event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},responseMessages:g,session:{..._,history:[...r]}}),advanceStep(o))};let e=setPendingRuntimeActionBatch({actions:ae,event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},responseMessages:g,session:{..._,history:ie}});return e=appendPendingInputBatch({event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},requests:x,responseMessages:[],session:e}),n&&await n(createInputRequestedEvent({requests:x,sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId})),{next:null,session:setHarnessEmissionState(e,advanceStep(o))}}if(x.length>0){let e=buildResponseAuthorizationTools({authoredTools:t.tools,context:contextStorage.getStore()}),r=appendPendingInputBatch({event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},requests:x,responseAuthRequiredRequestIds:y.filter(t=>{let n=e.get(t.action.toolName)?.approval;return n!==void 0&&typeof n!=`function`&&n.response!==void 0}).map(e=>e.requestId),responseMessages:g,session:{..._,history:ie}});return n&&(await n(createInputRequestedEvent({requests:x,sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId})),t.mode===`conversation`&&(o=await emitTurnEpilogue(n,o,t.mode),r=setHarnessEmissionState(r,o))),{next:hasDeferredStepInput(r)?a:null,session:r}}let oe=findAuthorizationSignalFromToolResults(i.toolResults);if(oe){let{challenges:e}=oe;if(n){for(let t of getSupersededAuthorizationChallenges(_.state,e))await n(createAuthorizationCompletedEvent({attemptId:t.attemptId,authorization:t.challenge,name:t.name,outcome:`failed`,reason:`Superseded by a newer authorization attempt.`,sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId}));for(let t of e)await n(createAuthorizationRequiredEvent({attemptId:t.attemptId,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}));t.mode===`conversation`&&(o=await emitTurnEpilogue(n,o,t.mode))}return{next:null,session:setHarnessEmissionState({..._,history:[...r],state:setPendingAuthorization(_.state,{challenges:e})},o)}}let se=g,w=[...r,...se],T={..._,history:w};return!(T.outputSchema!==void 0&&extractFinalOutput(i)!==void 0)&&(se.at(-1)?.role===`tool`||h.outcomeEndsResponse||hasDeferredStepInput(T))?(n&&(o=advanceStep(o),T=setHarnessEmissionState(T,o)),{next:a,session:T}):t.mode===`task`?finishTaskTurn({emissionState:o,emit:n,history:r,result:i,schema:T.outputSchema,session:T,stepOutput:p}):finishConversationTurn({emissionState:o,emit:n,history:r,result:i,schema:T.outputSchema,session:T,stepOutput:p})}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.history),s=setHarnessEmissionState(s,o)),{next:{done:!0,output:a??``},session:s};let c=extractFinalOutput(r);return c===void 0?(s={...s,outputSchema: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.history),s=setHarnessEmissionState(s,o)),{next:{done:!0,output:c},session:s})}async function finishConversationTurn(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,`conversation`,s.history),s=setHarnessEmissionState(s,o)),{next:null,session:s,settledTurn:{output:a??``}};let c=extractFinalOutput(r);if(c===void 0){s={...s,outputSchema:void 0},t&&(o=await emitRecoverableFailedTurn(t,o,{...OUTPUT_SCHEMA_NOT_FULFILLED,continuationToken:s.continuationToken}),s=setHarnessEmissionState(s,o));let e={isError:!0,output:OUTPUT_SCHEMA_NOT_FULFILLED.message};return{next:null,session:s,settledTurn:e}}return s=persistStructuredAssistantTurn(s,n,c),t&&(o=await emitStructuredResult(t,o,c,`conversation`,s.history),s=setHarnessEmissionState(s,o)),{next:null,session:s,settledTurn:{output:c}}}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.tools}),a=getWorkflowContinuationSecurity(e.session),o;try{let t=buildWorkflowHostTools({tools:e.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,l=replaceWorkflowToolResult([...e.session.history,...t.responseMessages],n.outerToolCallId,c),u=clearPendingWorkflowInterrupt({...e.session,history:l});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=l.slice(0,t),r=l.slice(t);return u={...u,history:n},parkOnWorkflowInterrupt({baseSession:u,emissionState:e.emissionState,interrupt:s.interrupt,promptMessages:n,responseMessages:r})}return{next:e.runStep,session:u}}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,thresholdPercent:e.thresholdPercent};return n.usage?.inputTokens!==void 0&&(r.lastKnownInputTokens=n.usage.inputTokens,r.lastKnownPromptMessageCount=t),r}async function maybeCompact(e){let{emit:t,emissionState:n}=e,r=e.messages,i=e.session,a=e.historyProjector?.({messages:r,state:i.state})??r,o=e.force===!0||shouldCompact(a,i.compaction),s=shouldCanonicalizeMemory(r);if(!o&&!s)return{compacted:!1,messages:r,session:i};let c=await resolveCompactionModel({compactionModelReference:i.agent.compactionModelReference,model:e.model,modelReference:requireSessionModelReference(i),resolveModel:e.resolveModel}),l=mergeProviderSafetyIdentifier(i.agent.compactionModelReference??requireSessionModelReference(i),c.providerOptions,e.auth);if(t){let e=contextStorage.getStore();e!==void 0&&prepareMemoryCompaction(e,{history:r,state:i.state}),await t(createCompactionRequestedEvent({modelId:formatLanguageModelGatewayId(c.model),sequence:n.sequence,sessionId:i.sessionId,turnId:n.turnId,usageInputTokens:getInputTokenCount(a,i.compaction)}),a)}let u=canonicalizeMemoryRecords(r),d=e.historyProjector?.({messages:u.ordinary,state:i.state})??u.ordinary,f=o?await compactMessages([...d],c.model,i.compaction,l,e.telemetry,buildGatewayAttributionHeaders(c.model,e.runtimeIdentity),e.abortSignal,e.force===!0):[...d];if(r=[...u.memory,...f],e.onCompaction)for(let t of e.onCompaction())r.push(t);if(t){let a=contextStorage.getStore();if(a!==void 0&&prepareMemoryCompaction(a,{history:r,state:i.state}),await t(createCompactionCompletedEvent({modelId:formatLanguageModelGatewayId(c.model),sequence:n.sequence,sessionId:i.sessionId,turnId:n.turnId}),e.historyProjector?.({messages:r,state:i.state})??r),a!==void 0){let e=drainMemoryCommit(a);e!==void 0&&(r=[...e.history],i={...i,state:e.state})}}return{compacted:!0,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{appendMissingToolResultMessages,createToolLoopHarness};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{isObject}from"#shared/guards.js";import{loadContext}from"#context/container.js";import{buildCallbackContext}from"#context/build-callback-context.js";import{tool}from"ai";import{ASK_QUESTION_TOOL_NAME}from"#harness/request-input-tool.js";import{authorizationPendingModelText,isAuthorizationPendingModelOutput,isAuthorizationSignal,modelFacingAuthorizationOutput}from"#harness/authorization.js";import{createBackgroundToolCallBatch,executeBackgroundToolCall}from"#harness/background-tools.js";import{isAsyncIterable}from"#shared/async-iterable.js";import{
|
|
1
|
+
import{isObject}from"#shared/guards.js";import{loadContext}from"#context/container.js";import{buildCallbackContext}from"#context/build-callback-context.js";import{resolveApprovalPolicy}from"#approval/definition.js";import{tool}from"ai";import{ASK_QUESTION_TOOL_NAME}from"#harness/request-input-tool.js";import{authorizationPendingModelText,isAuthorizationPendingModelOutput,isAuthorizationSignal,modelFacingAuthorizationOutput}from"#harness/authorization.js";import{createBackgroundToolCallBatch,executeBackgroundToolCall}from"#harness/background-tools.js";import{isAsyncIterable}from"#shared/async-iterable.js";import{stashToolInterrupt}from"#harness/tool-interrupts.js";import{WEB_SEARCH_TOOL_NAME}from"#harness/provider-tool-schemas.js";import{resolveWebSearchBackend,resolveWebSearchProviderTool}from"#harness/provider-tools.js";import{normalizeToolJsonOutput,normalizeToolModelOutput}from"#harness/tool-model-output.js";const toolApprovals=new WeakMap;function buildToolSet(e){let t={},n=e.backgroundBatch??createBackgroundToolCallBatch(),r=e.capabilities?.requestInput===!0,c=e.disabledProviderTools;for(let l of e.tools.values()){if(l.name===ASK_QUESTION_TOOL_NAME&&!r||c?.has(l.name))continue;n.setTool(l.name,l.execution===`background`&&l.execute!==void 0?l:void 0);let u=l.toModelOutput,d=buildApprovalFn(l,e),f=tool({description:l.description,execute:wrapToolExecute(l,n),inputSchema:l.inputSchema,...l.execution===`background`?{onInputAvailable:({input:e,toolCallId:t})=>{if(l.execute===void 0)throw Error(`Background tool "${l.name}" has no execute function.`);n.register({callId:t,input:e,toolName:l.name})}}:{},outputSchema:l.outputSchema,...l.execute===void 0?u===void 0?{}:{toModelOutput:async({output:e,toolCallId:t})=>normalizeToolModelOutput({output:await u(e),toolCallId:t,toolName:l.name})}:{toModelOutput:async({output:e,toolCallId:t})=>isAuthorizationPendingModelOutput(e)?{type:`text`,value:authorizationPendingModelText(e.connections)}:u===void 0?typeof e==`string`?{type:`text`,value:e}:normalizeToolModelOutput({output:{type:`json`,value:e??null},toolCallId:t,toolName:l.name}):normalizeToolModelOutput({output:await u(e),toolCallId:t,toolName:l.name})}});t[l.name]=f,l.approval!==void 0&&toolApprovals.set(f,d)}return t}function buildToolSetFromDefinitions(e){let t=new Map;for(let n of e.tools)t.has(n.name)||t.set(n.name,n);return buildToolSet({approvedTools:e.approvedTools,backgroundBatch:e.backgroundBatch,capabilities:e.capabilities,disabledProviderTools:e.disabledProviderTools,tools:t})}function wrapToolExecute(e,t=createBackgroundToolCallBatch()){let n=e.execute;if(n!==void 0)return(r,i)=>{let a;try{a=e.execution===`background`?executeBackgroundToolCall({batch:t,definition:e,options:i,toolInput:r}):n(r,i)}catch(e){return Promise.reject(e)}return isAsyncIterable(a)?normalizeToolExecuteIterable(a,e.name,i):Promise.resolve(a).then(t=>normalizeToolExecuteOutput(t,e.name,i))}}async function*normalizeToolExecuteIterable(e,t,n){for await(let r of e)yield normalizeToolExecuteOutput(r,t,n)}function normalizeToolExecuteOutput(e,n,r){return isAuthorizationSignal(e)?(stashToolInterrupt(loadContext(),r.toolCallId,e),modelFacingAuthorizationOutput(e)):normalizeToolJsonOutput({boundary:`execute`,output:e,toolCallId:r.toolCallId,toolName:n})}async function buildToolSetWithProviderTools(e){let t=e.disabledProviderTools,n={...buildToolSet({approvedTools:e.approvedTools,backgroundBatch:e.backgroundBatch,capabilities:e.capabilities,disabledProviderTools:t,tools:e.tools})};if(!t?.has(WEB_SEARCH_TOOL_NAME)){let t=e.tools.get(WEB_SEARCH_TOOL_NAME);if(t!==void 0&&t.execute===void 0){let t=resolveWebSearchBackend(e.modelReference,e.webSearchProvider);t===null?delete n[WEB_SEARCH_TOOL_NAME]:n[WEB_SEARCH_TOOL_NAME]=await resolveWebSearchProviderTool(t)}}return n}function buildApprovalFn(t,i){return async(a,o)=>{if(t.approval===void 0)return;let s=isObject(a)?a:void 0,c=await resolveApprovalPolicy(t.approval)({...buildCallbackContext(),approvedTools:i.approvedTools??new Set,callId:o,toolInput:s,toolName:t.name});return typeof c==`boolean`?c?`user-approval`:`not-applicable`:c}}function buildToolApproval(e){return async({toolCall:t})=>{let n=e[t.toolName];return n===void 0?void 0:await toolApprovals.get(n)?.(t.input,t.toolCallId)}}export{buildToolApproval,buildToolSet,buildToolSetFromDefinitions,buildToolSetWithProviderTools,wrapToolExecute};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createRequire}from"node:module";import{basename,dirname,join}from"node:path";import{existsSync,readFileSync,realpathSync}from"node:fs";import{fileURLToPath}from"node:url";import{EVE_PACKAGE_NAME}from"#internal/package-name.js";let cachedPackageInfo,cachedPackageLocation;const BUNDLED_FALLBACK_PACKAGE_VERSION=`0.45.
|
|
1
|
+
import{createRequire}from"node:module";import{basename,dirname,join}from"node:path";import{existsSync,readFileSync,realpathSync}from"node:fs";import{fileURLToPath}from"node:url";import{EVE_PACKAGE_NAME}from"#internal/package-name.js";let cachedPackageInfo,cachedPackageLocation;const BUNDLED_FALLBACK_PACKAGE_VERSION=`0.45.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 tryResolveVerifiedPackageRoot(e){try{let t=realpathSync.native(e);return tryReadInstalledPackageInfo(t,EVE_PACKAGE_NAME)===void 0?void 0:dirname(t)}catch{return}}function findNearestVerifiedPackageRoot(e){let t=e;for(;;){let e=tryResolveVerifiedPackageRoot(join(t,`package.json`));if(e!==void 0)return e;let i=dirname(t);if(i===t)return;t=i}}function tryResolveDirectBuildLocation(e){let i=dirname(e);for(;;){if(basename(i)===`dist`){let e=tryResolveVerifiedPackageRoot(join(dirname(i),`package.json`));if(e!==void 0)return{packageBuildRoot:i,packageRoot:e}}let e=dirname(i);if(e===i)return;i=e}}function isSourceCheckout(e){return existsSync(join(e,`src`,`internal`,`application`,`package.ts`))}function tryCreatePackageLocation(e){if(isSourceCheckout(e))return{packageBuildRoot:null,packageRoot:e};let t=join(e,`dist`);if(existsSync(t))return{packageBuildRoot:t,packageRoot:e}}function resolveSelfPackageJsonPath(t){return createRequire(t).resolve(`${EVE_PACKAGE_NAME}/package.json`)}function resolvePackageLocationFromModulePath(e,t=resolveSelfPackageJsonPath){let r=realpathSync.native(e),i=tryResolveDirectBuildLocation(r);if(i!==void 0)return i;let a=findNearestVerifiedPackageRoot(dirname(r));if(a!==void 0&&isSourceCheckout(a))return{packageBuildRoot:null,packageRoot:a};try{let e=tryResolveVerifiedPackageRoot(t(r)),n=e===void 0?void 0:tryCreatePackageLocation(e);if(n!==void 0)return n}catch{}let o=a===void 0?void 0:tryCreatePackageLocation(a);if(o!==void 0)return o;throw Error(`Failed to resolve the eve package root from "${e}".`)}function resolvePackageLocation(){return cachedPackageLocation??=resolvePackageLocationFromModulePath(resolveCurrentModulePath()),cachedPackageLocation}function resolvePackageBuildRoot(){return resolvePackageLocation().packageBuildRoot}function resolvePackageRoot(){return resolvePackageLocation().packageRoot}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 n=normalizeInstalledPackageInfo(JSON.parse(readFileSync(e,`utf8`)));if(n?.name===t)return n}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,resolvePackageLocationFromModulePath,resolvePackageRoot,resolvePackageSourceDirectoryPath,resolvePackageSourceFilePath,resolveWorkflowModulePath};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{expectObjectRecord,expectOnlyKnownKeys}from"#internal/authored-module.js";import{isMemoryDefinition}from"#shared/memory-definition.js";function normalizeMemoryDefinition(n,r){if(!isMemoryDefinition(n))throw Error(r);let i=expectObjectRecord(n,r);if(expectOnlyKnownKeys(i,[`description`,`namespace`,`provider`,`scope`,`visibility`],r),i.description!==void 0&&(typeof i.description!=`string`||i.description.trim().length===0))throw Error(`${r} "description" must be a non-empty string when provided.`);if(i.namespace!==void 0&&i.namespace!==null&&typeof i.namespace!=`string`&&typeof i.namespace!=`function`)throw Error(`${r} "namespace" must be a string, null, or resolver.`);if(i.scope!==null&&typeof i.scope!=`string`&&typeof i.scope!=`function`)throw Error(`${r} "scope" must be a string, null, or resolver.`);let a=expectObjectRecord(i.provider,`${r} "provider" must be an object.`);expectOnlyKnownKeys(a,[`recall`,`capture`,`tools`],`${r} "provider"`);let o=expectObjectRecord(a.recall,`${r} "provider.recall" must be an object.`);if(expectOnlyKnownKeys(o,[`turn.started`,`compaction.completed`],`${r} "provider.recall"`),typeof o[`turn.started`]!=`function`)throw Error(`${r} provider.recall["turn.started"] must be a function.`);if(o[`compaction.completed`]!==void 0&&typeof o[`compaction.completed`]!=`function`)throw Error(`${r} provider.recall["compaction.completed"] must be a function when provided.`);if(a.capture!==void 0){let t=expectObjectRecord(a.capture,`${r} "provider.capture" must be an object when provided.`);expectOnlyKnownKeys(t,[`compaction.requested`,`turn.completed`],`${r} "provider.capture"`);for(let e of[`compaction.requested`,`turn.completed`])if(t[e]!==void 0&&typeof t[e]!=`function`)throw Error(`${r} provider.capture[${JSON.stringify(e)}] must be a function when provided.`)}if(a.tools!==void 0&&typeof a.tools!=`function`)throw Error(`${r} "provider.tools" must be a function when provided.`);if(i.visibility!==void 0&&![`scope`,`session`].includes(String(i.visibility)))throw Error(`${r} "visibility" must be "scope" or "session".`);return n}export{normalizeMemoryDefinition};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{expectFunction,expectObjectRecord,expectOnlyKnownKeys,expectPositiveInteger,expectString}from"#internal/authored-module.js";import{serializeInputSchema,serializeOutputSchema}from"#tools/schema.js";import{isDisabledToolSentinel}from"#tools/definition.js";import{assertResolverOnlyDynamicSentinel,isDynamicSentinel}from"#dynamic/definition.js";import{normalizeApproval}from"#internal/authored-definition/approval.js";import{isExperimentalWorkflowToolDefinition}from"#tools/workflow.js";import{isWebSearchToolDefinition}from"#tools/provided/web-search.js";function normalizeToolDefinition(n,r){if(isDynamicSentinel(n))return assertResolverOnlyDynamicSentinel(n,r),{kind:`dynamic-tool`,eventNames:Object.keys(n.events)};if(isDisabledToolSentinel(n))return{kind:`disabled`};if(isExperimentalWorkflowToolDefinition(n)){let e=expectObjectRecord(n,r);return expectOnlyKnownKeys(e,[`kind`,`maxSubagents`],r),{kind:`workflow-tool`,maxSubagents:e.maxSubagents===void 0?void 0:expectPositiveInteger(e.maxSubagents,r)}}if(isWebSearchToolDefinition(n)){let e=expectObjectRecord(n,r);expectOnlyKnownKeys(e,[`kind`,`provider`],r);let t=expectString(e.provider,r);if(t!==`exa`&&t!==`parallel`)throw Error(`${r} Expected "provider" to be one of: exa, parallel.`);return{kind:`web-search-tool`,provider:t}}let i=expectObjectRecord(n,r);expectOnlyKnownKeys(i,[`auth`,`description`,`execute`,`execution`,`inputSchema`,`approval`,`outputSchema`,`toModelOutput`],r);let a=i.inputSchema===void 0?null:serializeInputSchema(i.inputSchema),o=serializeOutputSchema(i.outputSchema),s={description:expectString(i.description,r),execute:expectFunction(i.execute,r),hasApproval:i.approval!==void 0,hasModelOutputProjection:i.toModelOutput!==void 0,inputSchema:a};if(i.execution!==void 0){let e=expectString(i.execution,r);if(e!==`background`)throw Error(`${r} Expected "execution" to be "background".`);s.execution=e}return o!==void 0&&(s.outputSchema=o),i.approval!==void 0&&normalizeApproval(i.approval,r),i.toModelOutput!==void 0&&expectFunction(i.toModelOutput,r),i.auth!==void 0&&expectFunction(expectObjectRecord(i.auth,r).getToken,r),{kind:`tool`,definition:s}}export{normalizeToolDefinition};
|
|
1
|
+
import{expectFunction,expectObjectRecord,expectOnlyKnownKeys,expectPositiveInteger,expectString}from"#internal/authored-module.js";import{serializeInputSchema,serializeOutputSchema}from"#tools/schema.js";import{isDisabledToolSentinel}from"#tools/definition.js";import{assertResolverOnlyDynamicSentinel,isDynamicSentinel}from"#dynamic/definition.js";import{shouldRebindDynamicCallbacks}from"#internal/dynamic-tool-rebind.js";import{normalizeApproval}from"#internal/authored-definition/approval.js";import{isExperimentalWorkflowToolDefinition}from"#tools/workflow.js";import{isWebSearchToolDefinition}from"#tools/provided/web-search.js";function normalizeToolDefinition(n,r){if(isDynamicSentinel(n))return assertResolverOnlyDynamicSentinel(n,r),{kind:`dynamic-tool`,eventNames:Object.keys(n.events),rebindMissingCallbacks:shouldRebindDynamicCallbacks(n)};if(isDisabledToolSentinel(n))return{kind:`disabled`};if(isExperimentalWorkflowToolDefinition(n)){let e=expectObjectRecord(n,r);return expectOnlyKnownKeys(e,[`kind`,`maxSubagents`],r),{kind:`workflow-tool`,maxSubagents:e.maxSubagents===void 0?void 0:expectPositiveInteger(e.maxSubagents,r)}}if(isWebSearchToolDefinition(n)){let e=expectObjectRecord(n,r);expectOnlyKnownKeys(e,[`kind`,`provider`],r);let t=expectString(e.provider,r);if(t!==`exa`&&t!==`parallel`)throw Error(`${r} Expected "provider" to be one of: exa, parallel.`);return{kind:`web-search-tool`,provider:t}}let i=expectObjectRecord(n,r);expectOnlyKnownKeys(i,[`auth`,`description`,`execute`,`execution`,`inputSchema`,`approval`,`outputSchema`,`toModelOutput`],r);let a=i.inputSchema===void 0?null:serializeInputSchema(i.inputSchema),o=serializeOutputSchema(i.outputSchema),s={description:expectString(i.description,r),execute:expectFunction(i.execute,r),hasApproval:i.approval!==void 0,hasModelOutputProjection:i.toModelOutput!==void 0,inputSchema:a};if(i.execution!==void 0){let e=expectString(i.execution,r);if(e!==`background`)throw Error(`${r} Expected "execution" to be "background".`);s.execution=e}return o!==void 0&&(s.outputSchema=o),i.approval!==void 0&&normalizeApproval(i.approval,r),i.toModelOutput!==void 0&&expectFunction(i.toModelOutput,r),i.auth!==void 0&&expectFunction(expectObjectRecord(i.auth,r).getToken,r),{kind:`tool`,definition:s}}export{normalizeToolDefinition};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{join}from"node:path";import{pathToFileURL}from"node:url";import{ROOT_COMPILED_AGENT_NODE_ID}from"#compiler/manifest.js";import{collectModuleBindingsForManifest,compiledModuleMapSchema,resolveCompiledModuleExtensionScopeNamespace}from"#compiler/module-map.js";import{loadFrameworkProgrammaticModule}from"#framework/sources/registry.js";import{formatValidationError}from"#runtime/validation.js";import{loadAuthoredModuleNamespace}from"#internal/authored-module-loader.js";import{loadCompiledManifest}from"#runtime/loaders/manifest.js";import{readMaterializedAuthoredModuleIndex}from"#internal/materialized-authored-modules.js";const EXT_CONFIG_SCOPE=Symbol.for(`eve.ext-config-scope`);async function loadCompiledModuleMapFromAuthoredSource(e){return await hydrateCompiledModuleMapFromManifest(await loadCompiledManifest({compiledArtifactsSource:e.compiledArtifactsSource}),e.compiledArtifactsSource.appRoot)}async function hydrateCompiledModuleMapFromManifest(e,t){let r=await readMaterializedAuthoredModuleIndex(t);if(r!==void 0)return await loadMaterializedCompiledModuleMap({moduleMapPath:r.moduleMap,runtimeAppRoot:t});let i={},a=[{manifest:e,nodeId:ROOT_COMPILED_AGENT_NODE_ID},...[...e.subagents].sort((e,t)=>e.nodeId.localeCompare(t.nodeId)).map(e=>({manifest:e.agent,nodeId:e.nodeId}))];for(let e of a)i[e.nodeId]={modules:await hydrateCompiledNodeScope(e.manifest)};return{nodes:i}}async function hydrateCompiledNodeScope(e){let t=new Map(e.extensionMounts.map(e=>[e.mountSourceId,e.packageNamespace])),n=globalThis,i={};for(let{binding:s,sourceId:c}of collectModuleBindingsForManifest(e)){let e=t.get(c);e!==void 0&&(n[EXT_CONFIG_SCOPE]=e);try{i[c]=s.backing.kind===`programmatic`?await loadFrameworkProgrammaticModule(s.backing,Object.fromEntries(Object.entries(s.backing.dependencies??{}).map(([e,t])=>[e,i[t]]))):await loadAuthoredModuleNamespace(s.backing.sourcePath,{externalDependencies:s.backing.externalDependencies,extensionScopeNamespace:resolveCompiledModuleExtensionScopeNamespace(s)})}finally{e!==void 0&&(n[EXT_CONFIG_SCOPE]=void 0)}}return i}async function loadMaterializedCompiledModuleMap(n){let r=join(n.runtimeAppRoot,`.eve`,`compile`,n.moduleMapPath),a=await import(`${pathToFileURL(r).href}?generation=${encodeURIComponent(n.moduleMapPath)}`),o=compiledModuleMapSchema.safeParse(a.moduleMap??a.default);if(!o.success)throw Error(`Expected materialized authored module map "${r}" to export a valid compiled eve module map. ${formatValidationError(o.error)}`);return o.data}export{loadCompiledModuleMapFromAuthoredSource};
|
|
1
|
+
import{join}from"node:path";import{pathToFileURL}from"node:url";import{ROOT_COMPILED_AGENT_NODE_ID}from"#compiler/manifest.js";import{collectModuleBindingsForManifest,compiledModuleMapSchema,resolveCompiledModuleExtensionScopeNamespace}from"#compiler/module-map.js";import{memoizeModuleNamespaceFactories}from"#compiler/source-graph.js";import{loadFrameworkProgrammaticModule}from"#framework/sources/registry.js";import{formatValidationError}from"#runtime/validation.js";import{loadAuthoredModuleNamespace}from"#internal/authored-module-loader.js";import{loadCompiledManifest}from"#runtime/loaders/manifest.js";import{readMaterializedAuthoredModuleIndex}from"#internal/materialized-authored-modules.js";const EXT_CONFIG_SCOPE=Symbol.for(`eve.ext-config-scope`);async function loadCompiledModuleMapFromAuthoredSource(e){return await hydrateCompiledModuleMapFromManifest(await loadCompiledManifest({compiledArtifactsSource:e.compiledArtifactsSource}),e.compiledArtifactsSource.appRoot)}async function hydrateCompiledModuleMapFromManifest(e,t){let r=await readMaterializedAuthoredModuleIndex(t);if(r!==void 0)return await loadMaterializedCompiledModuleMap({moduleMapPath:r.moduleMap,runtimeAppRoot:t});let i={},a=[{manifest:e,nodeId:ROOT_COMPILED_AGENT_NODE_ID},...[...e.subagents].sort((e,t)=>e.nodeId.localeCompare(t.nodeId)).map(e=>({manifest:e.agent,nodeId:e.nodeId}))];for(let e of a)i[e.nodeId]={modules:await hydrateCompiledNodeScope(e.manifest)};return{nodes:i}}async function hydrateCompiledNodeScope(e){let t=new Map(e.extensionMounts.map(e=>[e.mountSourceId,e.packageNamespace])),n=globalThis,i={};for(let{binding:s,sourceId:c}of collectModuleBindingsForManifest(e)){let e=t.get(c);e!==void 0&&(n[EXT_CONFIG_SCOPE]=e);try{i[c]=s.backing.kind===`programmatic`?await loadFrameworkProgrammaticModule(s.backing,Object.fromEntries(Object.entries(s.backing.dependencies??{}).map(([e,t])=>[e,i[t]]))):memoizeModuleNamespaceFactories(await loadAuthoredModuleNamespace(s.backing.sourcePath,{externalDependencies:s.backing.externalDependencies,extensionScopeNamespace:resolveCompiledModuleExtensionScopeNamespace(s)}))}finally{e!==void 0&&(n[EXT_CONFIG_SCOPE]=void 0)}}return i}async function loadMaterializedCompiledModuleMap(n){let r=join(n.runtimeAppRoot,`.eve`,`compile`,n.moduleMapPath),a=await import(`${pathToFileURL(r).href}?generation=${encodeURIComponent(n.moduleMapPath)}`),o=compiledModuleMapSchema.safeParse(a.moduleMap??a.default);if(!o.success)throw Error(`Expected materialized authored module map "${r}" to export a valid compiled eve module map. ${formatValidationError(o.error)}`);return o.data}export{loadCompiledModuleMapFromAuthoredSource};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const REBIND_MISSING_CALLBACKS=Symbol.for(`eve:dynamic-rebind-missing-callbacks`);function markDynamicCallbackRebind(e){return Object.defineProperty(e,REBIND_MISSING_CALLBACKS,{value:!0}),e}function shouldRebindDynamicCallbacks(e){return Reflect.get(e,REBIND_MISSING_CALLBACKS)===!0}export{markDynamicCallbackRebind,shouldRebindDynamicCallbacks};
|
|
@@ -3,7 +3,7 @@ import type { AgentInfoManifestData } from "#internal/nitro/routes/agent-info/lo
|
|
|
3
3
|
import { type GatewayCredentialPresence } from "#internal/resolve-model-endpoint-status.js";
|
|
4
4
|
import type { ChatGptAuthState } from "#public/models/openai/chatgpt/token-broker.js";
|
|
5
5
|
export type AgentInfoResponse = AgentInfoResult;
|
|
6
|
-
/** Projects
|
|
6
|
+
/** Projects v4 exclusively from the effective compiled graph. */
|
|
7
7
|
export declare function buildAgentInfoResponse(data: AgentInfoManifestData, input: {
|
|
8
8
|
readonly mode: AgentInfoResponse["mode"];
|
|
9
9
|
readonly gatewayCredentials: GatewayCredentialPresence;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{resolveModelEndpointStatus}from"#internal/resolve-model-endpoint-status.js";import{ROOT_COMPILED_AGENT_NODE_ID}from"#compiler/manifest.js";import{WORKFLOW_TOOL_NAME}from"#shared/workflow-sandbox.js";function toChatGptEndpoint(e){if(e===void 0)return;let t={state:e.kind};return e.kind===`ready`&&e.accountLabel!==void 0?{...t,accountLabel:e.accountLabel}:t}function buildAgentInfoResponse(r,i){let{manifest:a}=r,o=toModuleSource(a,a.config.source);if(o.binding===void 0)throw Error(`Compiled config source "${a.config.source.sourceId}" has no binding.`);let s=collectCompositionDiagnostics(a),c=collectRemoteAgents(a);return{agent:{agentRoot:a.agentRoot,appRoot:a.appRoot,config:{...o,binding:o.binding},description:a.config.description,model:a.config.dynamicModel===void 0?{contextWindowTokens:a.config.model.contextWindowTokens,endpoint:resolveModelEndpointStatus(a.config.model.routing,i.gatewayCredentials,toChatGptEndpoint(i.chatgptAuth)),id:a.config.model.id,providerOptions:a.config.model.providerOptions,reasoning:a.config.reasoning,routing:a.config.model.routing,source:a.config.model.source===void 0?void 0:toModuleSource(a,a.config.model.source)}:{reasoning:a.config.reasoning,routing:{kind:`dynamic`,resolver:renderDynamicResolver(a,{...a.config.dynamicModel,slug:`model`})}},name:a.config.name,nodeId:ROOT_COMPILED_AGENT_NODE_ID,outputSchema:a.config.outputSchema},capabilities:{devRoutes:i.mode===`development`},channels:{routes:a.channelRoutes.effective.map(e=>({...toModuleSource(a,e),adapterKind:e.adapterKind,method:e.method,name:e.name,urlPath:e.urlPath})),shadowed:[...a.channelRoutes.shadowed]},composition:s,connections:a.connections.map(e=>({...toModuleSource(a,e),connectionName:e.connectionName,description:e.description,hasApproval:!1,hasAuthorization:e.vercelConnect!==void 0,hasHeaders:!1,protocol:e.protocol,url:e.url})),diagnostics:{discoveryErrors:a.diagnosticsSummary.errors,discoveryWarnings:a.diagnosticsSummary.warnings},hooks:a.hooks.map(e=>({...toModuleSource(a,e),eventNames:[...e.eventNames],slug:e.slug})),instructions:{dynamic:a.dynamicInstructions.map(e=>renderDynamicResolver(a,e)),static:a.instructions.map(e=>({...toOwnedSource(a,e),content:e.content,name:e.name,role:e.role}))},instrumentation:a.instrumentation===void 0?void 0:toModuleSource(a,a.instrumentation),kernelEffects:projectPreparedKernelEffects(a),kind:`eve-agent-info`,mode:i.mode,remoteAgents:{entries:c,total:c.length},sandbox:{...toModuleSource(a,a.sandbox),backendKind:a.sandbox.backendName,description:a.sandbox.description,hasBootstrap:!1,hasOnSession:!1,revalidationKey:a.sandbox.revalidationKey,sourceHash:a.sandbox.sourceHash},schedules:a.schedules.map(e=>({...toOwnedSource(a,e),cron:e.cron,hasRun:e.hasRun,markdown:e.markdown,name:e.name})),skills:{dynamic:a.dynamicSkills.map(e=>renderDynamicResolver(a,e)),static:a.skills.map(e=>({...toOwnedSource(a,e),description:e.description,license:e.license,markdown:e.markdown,metadata:e.metadata,name:e.name}))},subagents:{local:a.subagents.map(e=>{let t={...toOwnedSource(a,e),description:e.description,entryPath:e.entryPath,name:e.name,nodeId:e.nodeId,parentNodeId:e.parentNodeId,rootPath:e.rootPath,summary:summarizeNode(e.agent)};return e.configResolver===void 0?t:{...t,configResolver:renderDynamicResolver(e.agent,{...e.configResolver,slug:`config`})}}),total:a.subagents.length},tools:{dynamic:a.dynamicTools.map(e=>renderDynamicResolver(a,e)),static:a.tools.map(e=>({...toModuleSource(a,e),description:e.description,hasAuth:!1,hasExecute:e.hasExecute,hasModelOutputProjection:e.hasModelOutputProjection,hasOutputSchema:e.outputSchema!==void 0,inputSchema:e.inputSchema,name:e.name,outputSchema:e.outputSchema,requiresApproval:e.requiresApproval}))},version:
|
|
1
|
+
import{resolveModelEndpointStatus}from"#internal/resolve-model-endpoint-status.js";import{ROOT_COMPILED_AGENT_NODE_ID}from"#compiler/manifest.js";import{WORKFLOW_TOOL_NAME}from"#shared/workflow-sandbox.js";function toChatGptEndpoint(e){if(e===void 0)return;let t={state:e.kind};return e.kind===`ready`&&e.accountLabel!==void 0?{...t,accountLabel:e.accountLabel}:t}function buildAgentInfoResponse(r,i){let{manifest:a}=r,o=toModuleSource(a,a.config.source);if(o.binding===void 0)throw Error(`Compiled config source "${a.config.source.sourceId}" has no binding.`);let s=collectCompositionDiagnostics(a),c=collectRemoteAgents(a);return{agent:{agentRoot:a.agentRoot,appRoot:a.appRoot,config:{...o,binding:o.binding},description:a.config.description,model:a.config.dynamicModel===void 0?{contextWindowTokens:a.config.model.contextWindowTokens,endpoint:resolveModelEndpointStatus(a.config.model.routing,i.gatewayCredentials,toChatGptEndpoint(i.chatgptAuth)),id:a.config.model.id,providerOptions:a.config.model.providerOptions,reasoning:a.config.reasoning,routing:a.config.model.routing,source:a.config.model.source===void 0?void 0:toModuleSource(a,a.config.model.source)}:{reasoning:a.config.reasoning,routing:{kind:`dynamic`,resolver:renderDynamicResolver(a,{...a.config.dynamicModel,slug:`model`})}},name:a.config.name,nodeId:ROOT_COMPILED_AGENT_NODE_ID,outputSchema:a.config.outputSchema},capabilities:{devRoutes:i.mode===`development`},channels:{routes:a.channelRoutes.effective.map(e=>({...toModuleSource(a,e),adapterKind:e.adapterKind,method:e.method,name:e.name,urlPath:e.urlPath})),shadowed:[...a.channelRoutes.shadowed]},composition:s,connections:a.connections.map(e=>({...toModuleSource(a,e),connectionName:e.connectionName,description:e.description,hasApproval:!1,hasAuthorization:e.vercelConnect!==void 0,hasHeaders:!1,protocol:e.protocol,url:e.url})),diagnostics:{discoveryErrors:a.diagnosticsSummary.errors,discoveryWarnings:a.diagnosticsSummary.warnings},hooks:a.hooks.map(e=>({...toModuleSource(a,e),eventNames:[...e.eventNames],slug:e.slug})),instructions:{dynamic:a.dynamicInstructions.map(e=>renderDynamicResolver(a,e)),static:a.instructions.map(e=>({...toOwnedSource(a,e),content:e.content,name:e.name,role:e.role}))},instrumentation:a.instrumentation===void 0?void 0:toModuleSource(a,a.instrumentation),kernelEffects:projectPreparedKernelEffects(a),kind:`eve-agent-info`,memories:a.memories.map(e=>({...toModuleSource(a,e),description:e.description,slot:e.slot,visibility:e.visibility})),mode:i.mode,remoteAgents:{entries:c,total:c.length},sandbox:{...toModuleSource(a,a.sandbox),backendKind:a.sandbox.backendName,description:a.sandbox.description,hasBootstrap:!1,hasOnSession:!1,revalidationKey:a.sandbox.revalidationKey,sourceHash:a.sandbox.sourceHash},schedules:a.schedules.map(e=>({...toOwnedSource(a,e),cron:e.cron,hasRun:e.hasRun,markdown:e.markdown,name:e.name})),skills:{dynamic:a.dynamicSkills.map(e=>renderDynamicResolver(a,e)),static:a.skills.map(e=>({...toOwnedSource(a,e),description:e.description,license:e.license,markdown:e.markdown,metadata:e.metadata,name:e.name}))},subagents:{local:a.subagents.map(e=>{let t={...toOwnedSource(a,e),description:e.description,entryPath:e.entryPath,name:e.name,nodeId:e.nodeId,parentNodeId:e.parentNodeId,rootPath:e.rootPath,summary:summarizeNode(e.agent)};return e.configResolver===void 0?t:{...t,configResolver:renderDynamicResolver(e.agent,{...e.configResolver,slug:`config`})}}),total:a.subagents.length},tools:{dynamic:a.dynamicTools.map(e=>renderDynamicResolver(a,e)),static:a.tools.map(e=>({...toModuleSource(a,e),description:e.description,hasAuth:!1,hasExecute:e.hasExecute,hasModelOutputProjection:e.hasModelOutputProjection,hasOutputSchema:e.outputSchema!==void 0,inputSchema:e.inputSchema,name:e.name,outputSchema:e.outputSchema,requiresApproval:e.requiresApproval}))},version:4,workflow:a.workflowTool===void 0?{enabled:!1,toolName:WORKFLOW_TOOL_NAME}:{enabled:!0,source:toModuleSource(a,a.workflowTool),toolName:WORKFLOW_TOOL_NAME},workspace:{resourceRoot:a.workspaceResourceRoot,rootEntries:[...a.workspaceResourceRoot.rootEntries]}}}function toModuleSource(e,t){let n=e.bindings[t.sourceId];if(n===void 0)throw Error(`Compiled source "${t.sourceId}" has no binding.`);return sourceProjection(t,n.owner,n)}function toOwnedSource(e,t){let n=e.bindings[t.sourceId],r=n?.owner??t.owner;if(r===void 0)throw Error(`Compiled source "${t.sourceId}" has no owner.`);return sourceProjection(t,r,n)}function sourceProjection(e,t,n){let r={logicalPath:e.logicalPath,owner:t,sourceId:e.sourceId,sourceKind:toAgentInfoSourceKind(e.sourceKind)};return n!==void 0&&e.exportName!==void 0?{...r,binding:n,exportName:e.exportName}:n===void 0?e.exportName===void 0?r:{...r,exportName:e.exportName}:{...r,binding:n}}function toAgentInfoSourceKind(e){switch(e){case`markdown`:case`module`:case`skill-package`:return e;default:throw Error(`Unsupported compiled source kind "${e}".`)}}function renderDynamicResolver(e,t){return{...toModuleSource(e,t),eventNames:[...t.eventNames],slug:t.slug}}function summarizeNode(e){return{channels:e.channelRoutes.effective.length,connections:e.connections.length,hooks:e.hooks.length,instructions:e.instructions.length,memories:e.memories.length,schedules:e.schedules.length,skills:e.skills.length,tools:e.tools.length}}function collectRemoteAgents(e){return[e,...e.subagents.map(e=>e.agent)].flatMap(e=>e.remoteAgents.map(e=>({...sourceProjection(e,e.owner,e.binding),description:e.description,name:e.name,nodeId:e.nodeId,parentNodeId:e.parentNodeId,url:e.url})))}function collectCompositionDiagnostics(e){let t=[e,...e.subagents.map(e=>e.agent)].flatMap(e=>e.sourceComposition.entries).map(e=>{let t={kind:e.kind,logicalPath:e.source.logicalPath,owner:e.source.owner,sourceId:e.source.sourceId};return e.kind===`shadowed`?{...t,winnerSourceId:e.winnerSourceId}:t});return{disabled:t.filter(e=>e.kind===`disabled`),shadowed:t.filter(e=>e.kind===`shadowed`)}}const KERNEL_EFFECT_BY_SLOT={"tools/agent":{action:`subagent-call`,audience:[`root-session`],kind:`dispatch`},"tools/ask_question":{audience:[`requires-request-input`],kind:`request-input`},"tools/task_cancel":{action:`task-cancel`,audience:[`root-session`],kind:`dispatch`},"tools/task_update":{action:`task-update`,audience:[`delegated-task-child`],kind:`dispatch`},"tools/web_search":{audience:[],kind:`provider-tool`}};function projectPreparedKernelEffects(e){return e.tools.flatMap(t=>{let n=e.bindings[t.sourceId],i=t.logicalPath.replace(/\.(?:[cm]?[jt]sx?)$/,``),a=KERNEL_EFFECT_BY_SLOT[i],o=i===`tools/web_search`&&e.webSearchProvider!==void 0;return n?.owner.kind!==`framework`&&!o||a===void 0?[]:[{...a,sourceId:t.sourceId}]})}export{buildAgentInfoResponse};
|
|
@@ -5,6 +5,7 @@ const DEPLOYMENT_URL_PLACEHOLDER=`{{DEPLOYMENT_URL}}`,AGENT_NAME_PLACEHOLDER=`{{
|
|
|
5
5
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
6
6
|
<meta name="robots" content="noindex">
|
|
7
7
|
<meta name="referrer" content="no-referrer">
|
|
8
|
+
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 102 102'%3E%3Cpath fill='%23000' d='M0 0h102v102H0z'/%3E%3Cpath fill='%23fff' d='M49.28 66.94 75.03 34.96h-6.89L47.91 60.11l-5.49 6.83h6.86ZM0 34.96h42.4v5.11H0zm0 13.32h27.66v5.11H0zm0 13.54h27.66v5.11H0zm69.63-26.86H102v5.11H69.63zm4.71 13.32H102v5.11H74.34zm0 13.54H102v5.11H74.34z'/%3E%3C/svg%3E" type="image/svg+xml">
|
|
8
9
|
<title>eve</title>
|
|
9
10
|
<style>
|
|
10
11
|
:root {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{loadFrameworkProgrammaticModule}from"#framework/sources/registry.js";export{loadFrameworkProgrammaticModule};
|
|
1
|
+
import{memoizeModuleNamespaceFactories}from"#compiler/source-graph.js";import{loadFrameworkProgrammaticModule}from"#framework/sources/registry.js";export{loadFrameworkProgrammaticModule,memoizeModuleNamespaceFactories};
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import type { ModelMessage } from "ai";
|
|
2
|
+
import type { SessionAuth } from "#context/keys.js";
|
|
3
|
+
import type { Approval } from "#public/definitions/approval.js";
|
|
4
|
+
import type { SessionContext } from "#public/definitions/callback-context.js";
|
|
5
|
+
import type { ExactDefinition } from "#public/definitions/exact.js";
|
|
6
|
+
import type { DynamicResolveContext } from "#dynamic/definition.js";
|
|
7
|
+
import { MEMORY_DEFINITION_BRAND } from "#shared/memory-definition.js";
|
|
8
|
+
import type { ToolContext, ToolModelOutput } from "#tools/definition.js";
|
|
9
|
+
export interface MemoryNamespaceContext {
|
|
10
|
+
readonly appRoot: string;
|
|
11
|
+
readonly node: string;
|
|
12
|
+
readonly slot: string;
|
|
13
|
+
}
|
|
14
|
+
export type MemoryNamespaceDefinition = string | null | ((context: MemoryNamespaceContext) => string | null | Promise<string | null>);
|
|
15
|
+
export type MemoryScopeResolverResult = string | readonly string[] | null;
|
|
16
|
+
export interface MemoryScopeContext {
|
|
17
|
+
readonly abortSignal: AbortSignal;
|
|
18
|
+
readonly session: {
|
|
19
|
+
readonly id: string;
|
|
20
|
+
readonly auth: SessionAuth;
|
|
21
|
+
};
|
|
22
|
+
readonly channel: {
|
|
23
|
+
readonly kind?: string;
|
|
24
|
+
readonly continuationToken?: string;
|
|
25
|
+
readonly metadata?: Readonly<Record<string, unknown>>;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export type MemoryScopeDefinition = string | null | ((context: MemoryScopeContext) => MemoryScopeResolverResult | Promise<MemoryScopeResolverResult>);
|
|
29
|
+
export interface MemoryScope {
|
|
30
|
+
readonly key: string;
|
|
31
|
+
readonly namespace: string;
|
|
32
|
+
readonly value: string | readonly string[];
|
|
33
|
+
}
|
|
34
|
+
export interface MemoryRecallMessage {
|
|
35
|
+
readonly content: string;
|
|
36
|
+
readonly id?: string;
|
|
37
|
+
}
|
|
38
|
+
export type MemoryRecallResult = {
|
|
39
|
+
readonly messages: readonly MemoryRecallMessage[];
|
|
40
|
+
} | null | undefined;
|
|
41
|
+
export interface MemoryTurnContext {
|
|
42
|
+
readonly id: string;
|
|
43
|
+
readonly input: readonly ModelMessage[];
|
|
44
|
+
readonly sequence: number;
|
|
45
|
+
}
|
|
46
|
+
export interface MemoryOperationContext extends SessionContext {
|
|
47
|
+
readonly abortSignal: AbortSignal;
|
|
48
|
+
readonly messages: readonly ModelMessage[];
|
|
49
|
+
readonly operationId: string;
|
|
50
|
+
readonly memory: {
|
|
51
|
+
readonly scope: MemoryScope;
|
|
52
|
+
readonly slot: string;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export interface MemoryTurnStartedContext extends MemoryOperationContext {
|
|
56
|
+
readonly turn: MemoryTurnContext;
|
|
57
|
+
}
|
|
58
|
+
export interface MemoryCompactionCompletedContext extends MemoryOperationContext {
|
|
59
|
+
readonly turn: MemoryTurnContext | null;
|
|
60
|
+
readonly compaction: {
|
|
61
|
+
readonly modelId: string;
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
export interface MemoryCompactionRequestedContext extends MemoryOperationContext {
|
|
65
|
+
readonly turn: MemoryTurnContext | null;
|
|
66
|
+
readonly compaction: {
|
|
67
|
+
readonly modelId: string;
|
|
68
|
+
readonly usageInputTokens: number | null;
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
export interface MemoryTurnCompletedContext extends MemoryOperationContext {
|
|
72
|
+
readonly turn: MemoryTurnContext;
|
|
73
|
+
}
|
|
74
|
+
export type MemoryRecallHandler<TContext extends MemoryOperationContext> = (context: TContext) => MemoryRecallResult | Promise<MemoryRecallResult>;
|
|
75
|
+
export type MemoryCaptureHandler<TContext extends MemoryOperationContext> = (context: TContext) => void | Promise<void>;
|
|
76
|
+
export interface MemoryToolsContext extends DynamicResolveContext {
|
|
77
|
+
readonly memory: {
|
|
78
|
+
readonly scope: MemoryScope;
|
|
79
|
+
readonly slot: string;
|
|
80
|
+
};
|
|
81
|
+
readonly turn: MemoryTurnContext;
|
|
82
|
+
}
|
|
83
|
+
export interface MemoryToolDefinition {
|
|
84
|
+
readonly approval?: Approval<never>;
|
|
85
|
+
readonly description: string;
|
|
86
|
+
readonly execution?: never;
|
|
87
|
+
execute(input: never, context: ToolContext): unknown | Promise<unknown> | AsyncIterable<unknown>;
|
|
88
|
+
readonly inputSchema: unknown;
|
|
89
|
+
readonly outputSchema?: unknown;
|
|
90
|
+
readonly toModelOutput?: (output: never) => ToolModelOutput | Promise<ToolModelOutput>;
|
|
91
|
+
}
|
|
92
|
+
export type MemoryToolSet = Readonly<Record<string, MemoryToolDefinition>>;
|
|
93
|
+
export interface MemoryProvider {
|
|
94
|
+
readonly recall: {
|
|
95
|
+
readonly "turn.started": MemoryRecallHandler<MemoryTurnStartedContext>;
|
|
96
|
+
readonly "compaction.completed"?: MemoryRecallHandler<MemoryCompactionCompletedContext>;
|
|
97
|
+
};
|
|
98
|
+
readonly capture?: {
|
|
99
|
+
readonly "compaction.requested"?: MemoryCaptureHandler<MemoryCompactionRequestedContext>;
|
|
100
|
+
readonly "turn.completed"?: MemoryCaptureHandler<MemoryTurnCompletedContext>;
|
|
101
|
+
};
|
|
102
|
+
readonly tools?: (context: MemoryToolsContext) => Promise<MemoryToolSet | null>;
|
|
103
|
+
}
|
|
104
|
+
export type MemoryVisibility = "scope" | "session";
|
|
105
|
+
export interface MemoryDefinition {
|
|
106
|
+
readonly description?: string;
|
|
107
|
+
readonly namespace?: MemoryNamespaceDefinition;
|
|
108
|
+
readonly provider: MemoryProvider;
|
|
109
|
+
readonly scope: MemoryScopeDefinition;
|
|
110
|
+
readonly visibility?: MemoryVisibility;
|
|
111
|
+
}
|
|
112
|
+
export type DefinedMemory<T extends MemoryDefinition = MemoryDefinition> = T & {
|
|
113
|
+
readonly [MEMORY_DEFINITION_BRAND]: true;
|
|
114
|
+
};
|
|
115
|
+
export declare function defineMemoryProvider<const T extends MemoryProvider>(provider: ExactDefinition<T, MemoryProvider>): T;
|
|
116
|
+
export declare function defineMemory<const T extends MemoryDefinition>(definition: ExactDefinition<T, MemoryDefinition>): DefinedMemory<T>;
|
|
117
|
+
export declare function defaultNamespace(context: MemoryNamespaceContext): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createHash}from"node:crypto";import{resolveVercelProjectIdFromEnvironment}from"#shared/vercel-project.js";import{MEMORY_DEFINITION_BRAND}from"#shared/memory-definition.js";function defineMemoryProvider(e){return e}function defineMemory(e){return Object.assign(e,{[MEMORY_DEFINITION_BRAND]:!0}),e}function defaultNamespace(t){let n=resolveVercelProjectIdFromEnvironment();if(n===void 0)return JSON.stringify([`eve-memory-default-namespace-v1`,`local`,createHash(`sha256`).update(t.appRoot).digest(`base64url`),t.node,t.slot]);let r=process.env.VERCEL_TARGET_ENV?.trim()||process.env.VERCEL_ENV?.trim()||`production`,i=r===`preview`?process.env.VERCEL_GIT_COMMIT_REF?.trim()||process.env.VERCEL_DEPLOYMENT_ID?.trim()||process.env.VERCEL_URL?.trim()||`unknown-preview`:null;return JSON.stringify([`eve-memory-default-namespace-v1`,`vercel`,n,r,i,t.node,t.slot])}export{defaultNamespace,defineMemory,defineMemoryProvider};
|