eve 0.52.1 → 0.52.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/src/chunks/{use-eve-agent-CxkGSusZ.js → use-eve-agent-1NAM6ftx.js} +19 -9
  3. package/dist/src/chunks/{use-eve-agent-Crmh_YB-.js → use-eve-agent-BEjdhhhK.js} +19 -9
  4. package/dist/src/cli/dev/tui/subagent-pump.js +1 -1
  5. package/dist/src/client/eve-agent-store.js +1 -1
  6. package/dist/src/client/ndjson.js +1 -1
  7. package/dist/src/compiled/.vendor-stamp.json +1 -1
  8. package/dist/src/compiler/default-tool-policy.d.ts +6 -0
  9. package/dist/src/compiler/default-tool-policy.js +1 -0
  10. package/dist/src/compiler/extension-compatibility.d.ts +6 -6
  11. package/dist/src/compiler/extension-compatibility.js +1 -1
  12. package/dist/src/compiler/manifest.js +1 -1
  13. package/dist/src/compiler/normalize-agent-config.js +1 -1
  14. package/dist/src/compiler/normalize-manifest.js +1 -1
  15. package/dist/src/context/build-dynamic-tools.js +1 -1
  16. package/dist/src/context/dynamic-tool-lifecycle.js +1 -1
  17. package/dist/src/evals/cli/eval.js +1 -1
  18. package/dist/src/execution/tools/sleep-workflow.js +1 -1
  19. package/dist/src/execution/workflow-steps.js +1 -1
  20. package/dist/src/execution/workflow-webhook-route.js +1 -1
  21. package/dist/src/framework/sources/registry.js +1 -1
  22. package/dist/src/harness/approval-delivery-coordinator.js +1 -1
  23. package/dist/src/harness/compaction-prompt.d.ts +1 -0
  24. package/dist/src/harness/compaction-prompt.js +1 -1
  25. package/dist/src/harness/compaction.js +1 -1
  26. package/dist/src/harness/tool-loop.js +2 -2
  27. package/dist/src/internal/application/package.js +1 -1
  28. package/dist/src/internal/authored-definition/core.js +1 -1
  29. package/dist/src/internal/authored-definition/schema-backed.js +1 -1
  30. package/dist/src/internal/node-esm-compat-banner.d.ts +19 -6
  31. package/dist/src/internal/node-esm-compat-banner.js +2 -2
  32. package/dist/src/internal/workflow-bundle/dynamic-tool-transform.js +1 -1
  33. package/dist/src/internal/workflow-bundle/workflow-core-shim.js +1 -1
  34. package/dist/src/public/channels/slack/connections.d.ts +2 -2
  35. package/dist/src/public/channels/slack/connections.js +1 -1
  36. package/dist/src/public/memory/file/backends/default.js +1 -1
  37. package/dist/src/public/tools/agent.d.ts +1 -0
  38. package/dist/src/public/tools/agent.js +1 -0
  39. package/dist/src/public/tools/ask-question.d.ts +1 -0
  40. package/dist/src/public/tools/ask-question.js +1 -0
  41. package/dist/src/public/tools/connection-search.d.ts +1 -0
  42. package/dist/src/public/tools/connection-search.js +1 -0
  43. package/dist/src/public/tools/task-cancel.d.ts +1 -0
  44. package/dist/src/public/tools/task-cancel.js +1 -0
  45. package/dist/src/public/tools/task-update.d.ts +1 -0
  46. package/dist/src/public/tools/task-update.js +1 -0
  47. package/dist/src/runtime/connections/openapi-schema.js +1 -1
  48. package/dist/src/runtime/resolve-agent.js +1 -1
  49. package/dist/src/runtime/resolve-tool.js +1 -1
  50. package/dist/src/runtime/subagents/dynamic-agent-config.js +1 -1
  51. package/dist/src/setup/integrations/file-memory/vercel.d.ts +2 -2
  52. package/dist/src/setup/integrations/file-memory/vercel.js +1 -1
  53. package/dist/src/setup/scaffold/create/project.js +1 -1
  54. package/dist/src/shared/agent-definition.d.ts +7 -0
  55. package/dist/src/svelte/index.js +1 -1
  56. package/dist/src/svelte/use-eve-agent.js +1 -1
  57. package/dist/src/tools/definition.d.ts +8 -0
  58. package/dist/src/tools/definition.js +1 -1
  59. package/dist/src/tools/durable-callbacks.d.ts +4 -1
  60. package/dist/src/tools/durable-callbacks.js +1 -1
  61. package/dist/src/tools/dynamic.d.ts +2 -0
  62. package/dist/src/vue/index.js +1 -1
  63. package/dist/src/vue/use-eve-agent.js +1 -1
  64. package/docs/channels/slack.mdx +2 -0
  65. package/docs/concepts/built-in-tools.md +397 -68
  66. package/docs/connections/openapi.mdx +4 -0
  67. package/docs/evals/running.mdx +2 -0
  68. package/docs/guides/client/streaming.mdx +7 -1
  69. package/docs/guides/dynamic-capabilities.md +1 -1
  70. package/docs/guides/frontend/overview.mdx +1 -1
  71. package/docs/memory/custom-provider.md +4 -1
  72. package/docs/memory/file.md +25 -12
  73. package/docs/tools/workflows.mdx +3 -1
  74. package/package.json +32 -7
@@ -1,4 +1,4 @@
1
1
  import{randomUUID}from"node:crypto";import{readFile}from"node:fs/promises";import{loadDevelopmentEnvironmentFiles}from"#cli/dev/environment.js";import{basename,join}from"node:path";import{createDevelopmentServer}from"#internal/nitro/host.js";import{EVE_EVALUATION_ENV_FLAG,EVE_EVALUATION_RUN_ID_ENV}from"#internal/application/dev-environment.js";import{shutdownActiveSandboxHandles}from"#execution/sandbox/active-handles.js";import{createEvalClient}from"#evals/cli/eval-client.js";import{filterEvalsByTags}from"#evals/cli/filter.js";import{discoverAndImportEvals,discoverEvalConfig,findMisplacedEvalDirs}from"#evals/runner/discover.js";import{runEvals}from"#evals/runner/run-evals.js";import{Console}from"#evals/runner/reporters/console.js";import{JUnit}from"#evals/runner/reporters/junit.js";import{resolveEvalTargetHandle}from"#evals/target.js";async function runEvalCommand(e,t,n,r=process.cwd()){await loadDevelopmentEnvironmentFiles(r);let i=e.length>0?e:void 0,a=await discoverAndImportEvals(r,i);if(a.length===0){let e=await findMisplacedEvalDirs(r);e.length>0?n.error(`No evals found under evals/, but eval files are present inside agent/:
2
2
  `+e.map(e=>` - ${e}`).join(`
3
3
  `)+`
4
- eve eval only scans the top-level evals/ directory (a sibling of agent/). Move these files there.`):i?n.error(`No evals found matching: ${i.join(`, `)}`):n.error(`No evals found. Create files under evals/ with the *.eval.ts extension.`),process.exitCode=2;return}let o=t.tag??[],s=t.excludeTag??[],c=filterEvalsByTags({evaluations:a,includeTags:o,excludeTags:[]});if(c.length===0){n.error(`No evals matched the provided tags (${o.join(`, `)}).`),process.exitCode=2;return}let l=filterEvalsByTags({evaluations:c,includeTags:[],excludeTags:s});if(t.list===!0){printEvalList(l,t.json===!0,n);return}if(l.length===0){n.log(`All ${c.length} matching evals are excluded by tags (${s.join(`, `)}); nothing to run.`);return}let u,d;try{u=parsePositiveInteger(t.maxConcurrency,`--max-concurrency`),d=parseNonNegativeInteger(t.timeout,`--timeout`)}catch(e){n.error(e instanceof Error?e.message:String(e)),process.exitCode=2;return}let f;try{f=await discoverEvalConfig(r)}catch(e){n.error(e instanceof Error?e.message:String(e)),process.exitCode=2;return}let p,m,h;try{if(t.url)h=await createEvalClient({kind:`remote`,url:t.url},{workspaceRoot:r}),m=await resolveEvalTargetHandle({client:h,expectedAgentName:await readExpectedAgentName(r),kind:`remote`,url:t.url});else{process.env[EVE_EVALUATION_ENV_FLAG]=`1`,process.env[EVE_EVALUATION_RUN_ID_ENV]=randomUUID(),p=createDevelopmentServer(r,{host:`127.0.0.1`,port:0});let e=await p.start();h=await createEvalClient({kind:`local`,url:e.url}),m=await resolveEvalTargetHandle({client:h,expectedAgentName:await readExpectedAgentName(r),kind:`local`,url:e.url})}let e=t.json===!0?[]:[Console()];t.junit!==void 0&&e.push(JUnit({filePath:t.junit}));let i=await runEvals({evaluations:l,config:f,target:m,client:h,appRoot:r,reporters:e,includeEvalReporters:t.skipReport!==!0,maxConcurrency:u,timeoutMs:d,onEvalLog:t.verbose===!0?(e,t)=>n.log(`[${e}] ${t}`):void 0});t.json&&n.log(JSON.stringify(i,null,2));let a=i.failed>0,o=t.strict===!0&&i.scored>0;(a||o)&&(process.exitCode=1)}finally{p&&(await p.close(),await shutdownActiveSandboxHandles({log:e=>n.error(e)}))}let g=typeof process.exitCode==`number`?process.exitCode:0;process.exit(g)}function parsePositiveInteger(e,t){if(e===void 0)return;let n=Number(e);if(!Number.isInteger(n)||n<1)throw Error(`${t} must be a positive integer; got "${e}".`);return n}function parseNonNegativeInteger(e,t){if(e===void 0)return;let n=Number(e);if(!Number.isInteger(n)||n<0)throw Error(`${t} must be a non-negative integer; got "${e}".`);return n}function printEvalList(e,t,n){if(t){let t=e.map(e=>({id:e.id,description:e.description,tags:e.tags}));n.log(JSON.stringify(t,null,2));return}for(let t of e){let e=t.description===void 0?``:` — ${t.description}`,r=t.tags!==void 0&&t.tags.length>0?` [${t.tags.join(`, `)}]`:``;n.log(`${t.id}${r}${e}`)}}async function readExpectedAgentName(e){try{let t=JSON.parse(await readFile(join(e,`package.json`),`utf8`));return typeof t.name==`string`&&t.name.length>0?t.name:basename(e)}catch{return basename(e)}}export{runEvalCommand};
4
+ eve eval only scans the top-level evals/ directory (a sibling of agent/). Move these files there.`):i?n.error(`No evals found matching: ${i.join(`, `)}`):n.error(`No evals found. Create files under evals/ with the *.eval.ts extension.`),process.exitCode=2;return}let o=t.tag??[],s=t.excludeTag??[],c=filterEvalsByTags({evaluations:a,includeTags:o,excludeTags:[]});if(c.length===0){n.error(`No evals matched the provided tags (${o.join(`, `)}).`),process.exitCode=2;return}let l=filterEvalsByTags({evaluations:c,includeTags:[],excludeTags:s});if(t.list===!0){printEvalList(l,t.json===!0,n);return}if(l.length===0){n.log(`All ${c.length} matching evals are excluded by tags (${s.join(`, `)}); nothing to run.`);return}let u,d;try{u=parsePositiveInteger(t.maxConcurrency,`--max-concurrency`),d=parseNonNegativeInteger(t.timeout,`--timeout`)}catch(e){n.error(e instanceof Error?e.message:String(e)),process.exitCode=2;return}let f;try{f=await discoverEvalConfig(r)}catch(e){n.error(e instanceof Error?e.message:String(e)),process.exitCode=2;return}let p,m,h;try{if(t.url)h=await createEvalClient({kind:`remote`,url:t.url},{workspaceRoot:r}),m=await resolveEvalTargetHandle({client:h,expectedAgentName:await readExpectedAgentName(r),kind:`remote`,url:t.url});else{process.env[EVE_EVALUATION_ENV_FLAG]=`1`,process.env[EVE_EVALUATION_RUN_ID_ENV]=randomUUID(),p=createDevelopmentServer(r,{host:`127.0.0.1`,port:0});let e=await p.start();h=await createEvalClient({kind:`local`,url:e.url}),m=await resolveEvalTargetHandle({client:h,expectedAgentName:await readExpectedAgentName(r),kind:`local`,url:e.url})}let e=t.json===!0?[]:[Console()];t.junit!==void 0&&e.push(JUnit({filePath:t.junit}));let i=await runEvals({evaluations:l,config:f,target:m,client:h,appRoot:r,reporters:e,includeEvalReporters:t.skipReport!==!0,maxConcurrency:u,timeoutMs:d,onEvalLog:t.verbose===!0?(e,t)=>n.log(`[${e}] ${t}`):void 0});t.json&&n.log(JSON.stringify(i,null,2));let a=i.failed>0,o=t.strict===!0&&i.scored>0;(a||o)&&(process.exitCode=1)}finally{p&&(await p.close(),await shutdownActiveSandboxHandles({log:e=>n.error(e)}))}let g=typeof process.exitCode==`number`?process.exitCode:0;await flushStandardStreams(),process.exit(g)}async function flushStandardStreams(){await Promise.all([flushStream(process.stdout),flushStream(process.stderr)])}async function flushStream(e){await new Promise(t=>{let n=!1,settle=()=>{n||(n=!0,setImmediate(()=>{e.off(`error`,settle),t()}))};e.once(`error`,settle);try{e.write(``,settle)}catch{settle()}})}function parsePositiveInteger(e,t){if(e===void 0)return;let n=Number(e);if(!Number.isInteger(n)||n<1)throw Error(`${t} must be a positive integer; got "${e}".`);return n}function parseNonNegativeInteger(e,t){if(e===void 0)return;let n=Number(e);if(!Number.isInteger(n)||n<0)throw Error(`${t} must be a non-negative integer; got "${e}".`);return n}function printEvalList(e,t,n){if(t){let t=e.map(e=>({id:e.id,description:e.description,tags:e.tags}));n.log(JSON.stringify(t,null,2));return}for(let t of e){let e=t.description===void 0?``:` — ${t.description}`,r=t.tags!==void 0&&t.tags.length>0?` [${t.tags.join(`, `)}]`:``;n.log(`${t.id}${r}${e}`)}}async function readExpectedAgentName(e){try{let t=JSON.parse(await readFile(join(e,`package.json`),`utf8`));return typeof t.name==`string`&&t.name.length>0?t.name:basename(e)}catch{return basename(e)}}export{runEvalCommand};
@@ -1 +1 @@
1
- import{sleep}from"#compiled/@workflow/core/index.js";async function executeSleepTool(e){"use workflow";return await sleep(Math.ceil(e.seconds*1e3)),{waitedSeconds:e.seconds}}executeSleepTool.workflowId=`workflow//eve@0.52.1//executeSleepTool`;export{executeSleepTool};
1
+ import{sleep}from"#compiled/@workflow/core/index.js";async function executeSleepTool(e){"use workflow";return await sleep(Math.ceil(e.seconds*1e3)),{waitedSeconds:e.seconds}}executeSleepTool.workflowId=`workflow//eve@0.52.2//executeSleepTool`;export{executeSleepTool};
@@ -1 +1 @@
1
- import{callAdapterEventHandler,defaultDeliverResult}from"#channel/adapter.js";import{contextStorage}from"#context/container.js";import{AuthKey,CapabilitiesKey,HandleEventKey,ModeKey,SessionDynamicSubagentRuntimeRevisionKey,SessionDynamicToolRuntimeRevisionKey,TurnTaskDeliveryKey,TurnTaskStateKey}from"#context/keys.js";import{createAuthorizationCompletedEvent,createSessionStartedEvent,createTurnStartedEvent,encodeMessageStreamEvent,stampMessageStreamEvent}from"#protocol/message.js";import{BundleKey,ChannelKey}from"#runtime/sessions/runtime-context-keys.js";import{emitTurnPreamble,getHarnessEmissionState,isHarnessBetweenTurns,setHarnessEmissionState}from"#harness/emission.js";import{createWorkflowRuntime}from"#execution/workflow-runtime.js";import{deserializeContext,serializeContext}from"#context/serialize.js";import{createDurableSessionState,readDurableSession}from"#execution/durable-session-store.js";import{dispatchDynamicSubagentEvent,refreshDynamicSessionSubagentsForRuntimeRevision}from"#context/dynamic-subagent-lifecycle.js";import{resolveEffectiveAgentRuntime}from"#execution/effective-agent-config.js";import{hydrateDurableSession,refreshSessionFromTurnAgent}from"#execution/session.js";import{coalesceTurnInputs}from"#harness/messages.js";import{buildAdapterContext}from"#channel/adapter-context.js";import{activeTurnId}from"#harness/active-turn-id.js";import{preserveSerializedAgentTraceState}from"#tracing/agent-trace-context-store.js";import{getPendingWorkflowInterrupt}from"#harness/workflow-interrupt-state.js";import{getWorkflowTaskCallIds,isWorkflowTaskInterrupt}from"#harness/workflow-task-state.js";import{TASK_UPDATE_SESSION_INSTRUCTION}from"#tools/framework/task-update.js";import{deferMismatchedInlineTurnStep}from"#execution/accepted-delivery-deployment.js";import{isTurnCancellation,throwIfTurnAborted}from"#harness/turn-cancellation.js";import{dispatchDynamicModelEvent}from"#context/dynamic-model-lifecycle.js";import{dispatchDynamicToolEvent,rebindMissingCompiledDynamicToolCallbacks,refreshDynamicSessionToolsForRuntimeRevision}from"#context/dynamic-tool-lifecycle.js";import{CallbackBaseUrlKey,PendingAuthorizationResultKey,clearPendingAuthorization,getPendingAuthorization}from"#harness/authorization.js";import{hasPendingInputBatch}from"#harness/input-requests.js";import{setChannelContext}from"#execution/channel-context.js";import{dispatchStreamEventHooks}from"#context/hook-lifecycle.js";import{observeSessionActivity}from"#execution/session-activity-projection.js";import{reconcileSessionContinuationToken}from"#execution/reconcile-session-continuation-token.js";import{bindSessionInstrumentation}from"#instrumentation/runtime.js";import{getTurnUsageState,takeSessionUsageDelta,toUsage}from"#harness/turn-tag-state.js";import{resolveWorkflowCallbackBaseUrl}from"#execution/workflow-callback-url.js";import{preserveSerializedSessionDynamicModelSelection}from"#context/serialized-dynamic-model-selection.js";import{dispatchDynamicInstructionEvent,drainDynamicInstructionUserMessages,prepareDynamicInstructionPreamble}from"#context/dynamic-instruction-lifecycle.js";import{dispatchDynamicSkillEvent}from"#context/dynamic-skill-lifecycle.js";import{dispatchMemoryLifecycleEvent}from"#context/memory-event-lifecycle.js";import{preserveSerializedInstrumentationState}from"#instrumentation/state.js";import{RuntimeActionSettlementTimesKey}from"#harness/runtime-action-settlement-state.js";import{matchAuthorizationCallbacks}from"#execution/authorization-callback-match.js";import{derivePendingState}from"#execution/pending-turn-state.js";import{forwardTaskEventToSessionCallback}from"#execution/task-event-callback.js";import{resolveEffectiveOutputSchema}from"#execution/effective-output-schema.js";import{buildRuntimeIdentity,createExecutionNodeStep}from"#execution/node-step.js";import{resolveInitiatingTaskContext,resolveTaskDeliveryContext}from"#tasks/delivery-context.js";import{readRetainedBackgroundToolResult,runBackgroundStep}from"#execution/tasks/parent/tool-execution.js";import{prepareWorkflowPreambleTrace}from"#execution/workflow-trace-context.js";import{createExecutionHistoryView}from"#execution/history-view.js";import{resolveRuntimeCompiledArtifactsVersionedCacheKey}from"#runtime/cache-key.js";import{bindDynamicConnections}from"#execution/dynamic-connections.js";import{preserveCancelledTurnMessage}from"#execution/cancelled-turn-message.js";function channelDeliveryErrorCode(e){if(typeof e==`object`&&e&&`code`in e){let t=e.code;if(typeof t==`string`&&t.length>0)return t}return`CHANNEL_DELIVERY_FAILED`}async function turnStep(e){"use step";let t=deferMismatchedInlineTurnStep(e);if(t!==void 0)return t;let n=e,r=await readDurableSession(n.sessionState),i=await deserializeContext(n.serializedContext);e.input?.kind===`deliver`&&(i.set(TurnTaskDeliveryKey,`none`),i.delete(TurnTaskStateKey));let a=i.require(ChannelKey),o=i.require(BundleKey),s=resolveEffectiveAgentRuntime(o,i),c=r.taskId!==void 0&&s.turnAgent.tools.some(e=>e.kind===`authored-tool`&&e.behavior?.handling?.kind===`dispatch`&&e.behavior.handling.target.kind===`task-update`);try{let{getWorkflowMetadata:e}=await import(`#compiled/@workflow/core/index.js`),t=e();typeof t.url==`string`&&i.set(CallbackBaseUrlKey,resolveWorkflowCallbackBaseUrl(t.url))}catch{}let l=getPendingAuthorization(r.state),u;if(l&&n.input?.kind===`deliver`){let{matches:e,remainingPayloads:t}=matchAuthorizationCallbacks(l,n.input.payloads);if(n={...n,input:{...n.input,payloads:t}},e.length>0){let a=e.map(e=>e.result);i.set(PendingAuthorizationResultKey,a),r={...r,state:clearPendingAuthorization(r.state,a.map(e=>e.attemptId??e.name))},u=e,t.length===0&&(n={...n,input:void 0})}}n.input?.kind===`deliver`&&n.input.auth!==void 0&&i.set(AuthKey,n.input.auth??null);let d=hydrateDurableSession({compactionOverrides:{thresholdPercent:s.thresholdPercent},durable:r,turnAgent:s.turnAgent}),f=createExecutionHistoryView(d),p=bindSessionInstrumentation({agentName:s.turnAgent.id,ctx:i,rootSessionId:d.rootSessionId??d.sessionId,sessionId:d.sessionId}),m=getHarnessEmissionState(d.state);e.input?.kind===`deliver`&&await contextStorage.run(i,()=>p?.instrumentChannelDelivery({agentName:o.turnAgent.id,ctx:i,delivery:e.input,rootSessionId:d.rootSessionId??d.sessionId,sequence:m.sequence,sessionId:d.sessionId,turnId:activeTurnId(m)}));let failChannelDeliveries=async e=>{await contextStorage.run(i,()=>p?.instrumentChannelDelivery({ctx:i,error:e,errorCode:channelDeliveryErrorCode(e),includeTurn:!1,outcome:`failed`})),await p?.flush()},h=buildAdapterContext(a,i),g;if(n.input?.kind===`deliver`){let e=[];try{for(let t of n.input.payloads){let n=a.deliver?await a.deliver(t,h):defaultDeliverResult(t);n!=null&&e.push(n)}}catch(e){throw await failChannelDeliveries(e),e}g=e.length===0?void 0:e.reduce(coalesceTurnInputs)}else n.input?.kind===`runtime-action-result`&&(n.input.acceptedAtMsByCallId!==void 0&&i.set(RuntimeActionSettlementTimesKey,n.input.acceptedAtMsByCallId),g={runtimeActionResults:n.input.results});if(g!==void 0&&e.input?.kind===`deliver`&&e.input.taskDeliveryId!==void 0){let t=resolveTaskDeliveryContext({state:r.state,taskDeliveryId:e.input.taskDeliveryId});t!==void 0&&(i.set(TurnTaskDeliveryKey,t.phase),g={...g,context:[...g.context??[],t.context]})}if(i.get(TurnTaskDeliveryKey)===`none`){let e=resolveInitiatingTaskContext({state:r.state,turnId:activeTurnId(m)});e!==void 0&&(i.set(TurnTaskDeliveryKey,e.phase),i.set(TurnTaskStateKey,e.context))}if(n.input?.kind===`deliver`){let e={...a,state:{...h.state}};setChannelContext(i,e)}if(n.input?.kind===`deliver`&&g===void 0){await contextStorage.run(i,()=>p?.instrumentChannelDelivery({ctx:i,includeTurn:!1,outcome:`completed`})),await p?.flush();let e=reconcileSessionContinuationToken(i,d),t=serializeContext(i),r=e===d?n.sessionState:createDurableSessionState({session:e});return{action:`park`,...derivePendingState(e),serializedContext:t,sessionState:r}}let _=o.hookRegistry,v=bindDynamicConnections(i,o.resolvedAgent),y=o.resolvedAgent.dynamicInstructionsResolvers??[],b=o.resolvedAgent.dynamicSkillResolvers??[],x=o.subagentRegistry.dynamicResolvers??[],S=o.resolvedAgent.dynamicToolResolvers??[],C={...o.graph.root,turnAgent:s.turnAgent},w=buildRuntimeIdentity(C);try{let e=process.env.VERCEL_DEPLOYMENT_ID?.trim(),t=e?`deployment:${e}`:await resolveRuntimeCompiledArtifactsVersionedCacheKey(o.compiledArtifactsSource);if(!m.sessionStarted)i.set(SessionDynamicSubagentRuntimeRevisionKey,t),i.set(SessionDynamicToolRuntimeRevisionKey,t);else{let e=createSessionStartedEvent({runtime:w});await Promise.all([refreshDynamicSessionSubagentsForRuntimeRevision({ctx:i,resolvers:x,event:e,messages:f.initial.messages,runtimeRevision:t}),refreshDynamicSessionToolsForRuntimeRevision({ctx:i,resolvers:S,event:e,messages:f.initial.messages,runtimeRevision:t})]),await rebindMissingCompiledDynamicToolCallbacks({ctx:i,event:createTurnStartedEvent({sequence:m.sequence,turnId:activeTurnId(m)}),messages:f.initial.messages,resolvers:S})}}catch(e){throw await failChannelDeliveries(e),e}let T=n.parentWritable.getWriter(),emit=async e=>{let t=await callAdapterEventHandler(a,e,h);setChannelContext(i,{...a,state:{...h.state}});let n=stampMessageStreamEvent(t);return await T.write(encodeMessageStreamEvent(n)),n},handleEvent=async(e,t)=>{let r=await forwardTaskEventToSessionCallback(i,e)?stampMessageStreamEvent(e):await emit(e),a=await dispatchMemoryLifecycleEvent({abortSignal:n.abortSignal,appRoot:C.agent?.metadata?.appRoot??``,ctx:i,event:e,memories:C.agent?.memories??[],messages:t,nodeId:o.nodeId??`__root__`});observeSessionActivity({ctx:i,event:r,sessionId:d.sessionId}),await dispatchStreamEventHooks({ctx:i,registry:_,event:r}),r.type!==`step.started`&&await dispatchDynamicModelEvent({ctx:i,dynamicModel:s.turnAgent.dynamicModel,event:r,messages:a,scope:{moduleMap:o.moduleMap,nodeId:o.nodeId}}),await v.dispatch(r),await dispatchDynamicSubagentEvent({ctx:i,resolvers:x,event:r,messages:a}),await dispatchDynamicToolEvent({ctx:i,resolvers:S,event:r,messages:a}),await dispatchDynamicSkillEvent({ctx:i,resolvers:b,event:r,messages:a}),await dispatchDynamicInstructionEvent({ctx:i,resolvers:y,event:r,messages:a})},E=i.require(ModeKey),D;try{throwIfTurnAborted(n.abortSignal),D=await runBackgroundStep(i,d,async e=>{i.setVirtualContext(HandleEventKey,handleEvent);let t=resolveEffectiveOutputSchema({agentOutputSchema:s.turnAgent.outputSchema,input:g,mode:E,session:e});if(await v.rehydrate(m,w,isHarnessBetweenTurns(t)),u){let e=getHarnessEmissionState(t.state);if(isHarnessBetweenTurns(t)){prepareDynamicInstructionPreamble(i,f.messages(t));let n=[],r=await prepareWorkflowPreambleTrace({emissionState:e,instrumentation:p});try{e=await emitTurnPreamble(handleEvent,{},e,w,r)}finally{n=drainDynamicInstructionUserMessages(i),t={...t,history:[...t.history,...n]}}t=setHarnessEmissionState(t,e)}for(let{authorization:t,result:n}of u){let r=l?.challenges.find(e=>e.attemptId===n.attemptId)?.candidateId;await handleEvent(createAuthorizationCompletedEvent({attemptId:n.attemptId,authorization:t,candidateId:r,name:n.name,outcome:`authorized`,sequence:e.sequence,stepIndex:e.stepIndex,turnId:e.turnId}))}}let r=i.get(CapabilitiesKey);return(async(e,t)=>{let i=refreshSessionFromTurnAgent({compactionOverrides:{thresholdPercent:s.thresholdPercent},session:e,systemPromptAdditions:c?[TASK_UPDATE_SESSION_INSTRUCTION]:void 0,turnAgent:s.turnAgent}),a=i;return createExecutionNodeStep({abortSignal:n.abortSignal,capabilities:r,clearOnly:n.input?.kind===`clear`,compactOnly:n.input?.kind===`compact`,createRuntime:createWorkflowRuntime,handleEvent,historyProjector:f.projector,historyView:f.prepare(a),instrumentation:p,mode:E,modelResolutionScope:{moduleMap:o.moduleMap,nodeId:o.nodeId},node:C,workflowMaxSubagents:i.workflowMaxSubagents})(a,t)})(t,g)})}catch(e){if(!isTurnCancellation(e))throw await failChannelDeliveries(e),e;T.releaseLock();let t=serializeContext(i),r=readRetainedBackgroundToolResult(i),a=await contextStorage.run(i,()=>preserveCancelledTurnMessage(r?.backgroundTaskSession??d,g));return{action:`cancelled`,...r===void 0?{}:{backgroundTaskState:createDurableSessionState({session:a}),backgroundTasks:r.backgroundTasks},serializedContext:preserveSerializedInstrumentationState(preserveSerializedAgentTraceState(preserveSerializedSessionDynamicModelSelection(n.serializedContext,t),t),t),sessionState:createDurableSessionState({session:a})}}let O=reconcileSessionContinuationToken(i,D.session),k=serializeContext(i);D={...D,session:O};let A=createDurableSessionState({session:D.session}),j=D.backgroundTasks===void 0||D.backgroundTaskSession===void 0?{}:{backgroundTaskState:createDurableSessionState({session:D.backgroundTaskSession}),backgroundTasks:D.backgroundTasks};if(D.next!==null&&typeof D.next==`object`&&`done`in D.next){if(E===`task`&&hasPendingInputBatch(D.session.state))throw T.releaseLock(),Error(`Task mode cannot complete while input requests remain pending.`);await T.close();let e=getTurnUsageState(D.session.state)?.session;return{action:`done`,...j,output:D.next.output,isError:D.next.isError,serializedContext:k,sessionState:A,usage:e===void 0?void 0:toUsage(e),usageDelta:takeSessionUsageDelta(D.session).delta}}if(D.next===null){T.releaseLock();let e=getPendingWorkflowInterrupt(D.session.state);if(e!==void 0&&isWorkflowTaskInterrupt(e.interrupt))return{action:`dispatch-workflow-tasks`,...j,pendingTaskCallIds:getWorkflowTaskCallIds(e.interrupt),serializedContext:k,sessionState:A};let t=derivePendingState(D.session);if(D.settledTurn!==void 0){let{delta:e,session:n}=takeSessionUsageDelta(D.session);return{action:`park`,...j,...t,serializedContext:k,sessionState:createDurableSessionState({session:n}),settled:{output:D.settledTurn.output,isError:D.settledTurn.isError,usage:e}}}return{action:`park`,...j,...t,serializedContext:k,sessionState:A}}return T.releaseLock(),{action:`continue`,...j,serializedContext:k,sessionState:A}}export{turnStep};
1
+ import{callAdapterEventHandler,defaultDeliverResult}from"#channel/adapter.js";import{contextStorage}from"#context/container.js";import{AuthKey,CapabilitiesKey,HandleEventKey,ModeKey,SessionDynamicSubagentRuntimeRevisionKey,SessionDynamicToolRuntimeRevisionKey,TurnTaskDeliveryKey,TurnTaskStateKey}from"#context/keys.js";import{createAuthorizationCompletedEvent,createSessionStartedEvent,createTurnStartedEvent,encodeMessageStreamEvent,stampMessageStreamEvent}from"#protocol/message.js";import{BundleKey,ChannelKey}from"#runtime/sessions/runtime-context-keys.js";import{emitTurnPreamble,getHarnessEmissionState,isHarnessBetweenTurns,setHarnessEmissionState}from"#harness/emission.js";import{createWorkflowRuntime}from"#execution/workflow-runtime.js";import{deserializeContext,serializeContext}from"#context/serialize.js";import{createDurableSessionState,readDurableSession}from"#execution/durable-session-store.js";import{dispatchDynamicSubagentEvent,refreshDynamicSessionSubagentsForRuntimeRevision}from"#context/dynamic-subagent-lifecycle.js";import{resolveEffectiveAgentRuntime}from"#execution/effective-agent-config.js";import{hydrateDurableSession,refreshSessionFromTurnAgent}from"#execution/session.js";import{coalesceTurnInputs}from"#harness/messages.js";import{buildAdapterContext}from"#channel/adapter-context.js";import{activeTurnId}from"#harness/active-turn-id.js";import{preserveSerializedAgentTraceState}from"#tracing/agent-trace-context-store.js";import{getPendingWorkflowInterrupt}from"#harness/workflow-interrupt-state.js";import{getWorkflowTaskCallIds,isWorkflowTaskInterrupt}from"#harness/workflow-task-state.js";import{TASK_UPDATE_SESSION_INSTRUCTION}from"#tools/framework/task-update.js";import{deferMismatchedInlineTurnStep}from"#execution/accepted-delivery-deployment.js";import{isTurnCancellation,throwIfTurnAborted}from"#harness/turn-cancellation.js";import{dispatchDynamicModelEvent}from"#context/dynamic-model-lifecycle.js";import{dispatchDynamicToolEvent,rebindMissingCompiledDynamicToolCallbacks,refreshDynamicSessionToolsForRuntimeRevision}from"#context/dynamic-tool-lifecycle.js";import{CallbackBaseUrlKey,PendingAuthorizationResultKey,clearPendingAuthorization,getPendingAuthorization}from"#harness/authorization.js";import{hasPendingInputBatch}from"#harness/input-requests.js";import{setChannelContext}from"#execution/channel-context.js";import{dispatchStreamEventHooks}from"#context/hook-lifecycle.js";import{observeSessionActivity}from"#execution/session-activity-projection.js";import{reconcileSessionContinuationToken}from"#execution/reconcile-session-continuation-token.js";import{bindSessionInstrumentation}from"#instrumentation/runtime.js";import{getTurnUsageState,takeSessionUsageDelta,toUsage}from"#harness/turn-tag-state.js";import{resolveWorkflowCallbackBaseUrl}from"#execution/workflow-callback-url.js";import{preserveSerializedSessionDynamicModelSelection}from"#context/serialized-dynamic-model-selection.js";import{dispatchDynamicInstructionEvent,drainDynamicInstructionUserMessages,prepareDynamicInstructionPreamble}from"#context/dynamic-instruction-lifecycle.js";import{dispatchDynamicSkillEvent}from"#context/dynamic-skill-lifecycle.js";import{dispatchMemoryLifecycleEvent}from"#context/memory-event-lifecycle.js";import{preserveSerializedInstrumentationState}from"#instrumentation/state.js";import{RuntimeActionSettlementTimesKey}from"#harness/runtime-action-settlement-state.js";import{matchAuthorizationCallbacks}from"#execution/authorization-callback-match.js";import{derivePendingState}from"#execution/pending-turn-state.js";import{forwardTaskEventToSessionCallback}from"#execution/task-event-callback.js";import{resolveEffectiveOutputSchema}from"#execution/effective-output-schema.js";import{buildRuntimeIdentity,createExecutionNodeStep}from"#execution/node-step.js";import{resolveInitiatingTaskContext,resolveTaskDeliveryContext}from"#tasks/delivery-context.js";import{readRetainedBackgroundToolResult,runBackgroundStep}from"#execution/tasks/parent/tool-execution.js";import{prepareWorkflowPreambleTrace}from"#execution/workflow-trace-context.js";import{createExecutionHistoryView}from"#execution/history-view.js";import{resolveRuntimeCompiledArtifactsVersionedCacheKey}from"#runtime/cache-key.js";import{bindDynamicConnections}from"#execution/dynamic-connections.js";import{preserveCancelledTurnMessage}from"#execution/cancelled-turn-message.js";function channelDeliveryErrorCode(e){if(typeof e==`object`&&e&&`code`in e){let t=e.code;if(typeof t==`string`&&t.length>0)return t}return`CHANNEL_DELIVERY_FAILED`}async function turnStep(e){"use step";let t=deferMismatchedInlineTurnStep(e);if(t!==void 0)return t;let n=e,r=await readDurableSession(n.sessionState),i=await deserializeContext(n.serializedContext);e.input?.kind===`deliver`&&(i.set(TurnTaskDeliveryKey,`none`),i.delete(TurnTaskStateKey));let a=i.require(ChannelKey),o=i.require(BundleKey),s=resolveEffectiveAgentRuntime(o,i),c=r.taskId!==void 0&&s.turnAgent.tools.some(e=>e.kind===`authored-tool`&&e.behavior?.handling?.kind===`dispatch`&&e.behavior.handling.target.kind===`task-update`);try{let{getWorkflowMetadata:e}=await import(`#compiled/@workflow/core/index.js`),t=e();typeof t.url==`string`&&i.set(CallbackBaseUrlKey,resolveWorkflowCallbackBaseUrl(t.url))}catch{}let l=getPendingAuthorization(r.state),u;if(l&&n.input?.kind===`deliver`){let{matches:e,remainingPayloads:t}=matchAuthorizationCallbacks(l,n.input.payloads);if(n={...n,input:{...n.input,payloads:t}},e.length>0){let a=e.map(e=>e.result);i.set(PendingAuthorizationResultKey,a),r={...r,state:clearPendingAuthorization(r.state,a.map(e=>e.attemptId??e.name))},u=e,t.length===0&&(n={...n,input:void 0})}}n.input?.kind===`deliver`&&n.input.auth!==void 0&&i.set(AuthKey,n.input.auth??null);let d=hydrateDurableSession({compactionOverrides:{thresholdPercent:s.thresholdPercent},durable:r,turnAgent:s.turnAgent}),f=createExecutionHistoryView(d),p=bindSessionInstrumentation({agentName:s.turnAgent.id,ctx:i,rootSessionId:d.rootSessionId??d.sessionId,sessionId:d.sessionId}),m=getHarnessEmissionState(d.state);e.input?.kind===`deliver`&&await contextStorage.run(i,()=>p?.instrumentChannelDelivery({agentName:o.turnAgent.id,ctx:i,delivery:e.input,rootSessionId:d.rootSessionId??d.sessionId,sequence:m.sequence,sessionId:d.sessionId,turnId:activeTurnId(m)}));let failChannelDeliveries=async e=>{await contextStorage.run(i,()=>p?.instrumentChannelDelivery({ctx:i,error:e,errorCode:channelDeliveryErrorCode(e),includeTurn:!1,outcome:`failed`})),await p?.flush()},h=buildAdapterContext(a,i),g;if(n.input?.kind===`deliver`){let e=[];try{for(let t of n.input.payloads){let n=a.deliver?await a.deliver(t,h):defaultDeliverResult(t);n!=null&&e.push(n)}}catch(e){throw await failChannelDeliveries(e),e}g=e.length===0?void 0:e.reduce(coalesceTurnInputs)}else n.input?.kind===`runtime-action-result`&&(n.input.acceptedAtMsByCallId!==void 0&&i.set(RuntimeActionSettlementTimesKey,n.input.acceptedAtMsByCallId),g={runtimeActionResults:n.input.results});if(g!==void 0&&e.input?.kind===`deliver`&&e.input.taskDeliveryId!==void 0){let t=resolveTaskDeliveryContext({state:r.state,taskDeliveryId:e.input.taskDeliveryId});t!==void 0&&(i.set(TurnTaskDeliveryKey,t.phase),g={...g,context:[...g.context??[],t.context]})}if(i.get(TurnTaskDeliveryKey)===`none`){let e=resolveInitiatingTaskContext({state:r.state,turnId:activeTurnId(m)});e!==void 0&&(i.set(TurnTaskDeliveryKey,e.phase),i.set(TurnTaskStateKey,e.context))}if(n.input?.kind===`deliver`){let e={...a,state:{...h.state}};setChannelContext(i,e)}if(n.input?.kind===`deliver`&&g===void 0){await contextStorage.run(i,()=>p?.instrumentChannelDelivery({ctx:i,includeTurn:!1,outcome:`completed`})),await p?.flush();let e=reconcileSessionContinuationToken(i,d),t=serializeContext(i),r=e===d?n.sessionState:createDurableSessionState({session:e});return{action:`park`,...derivePendingState(e),serializedContext:t,sessionState:r}}let _=o.hookRegistry,v=bindDynamicConnections(i,o.resolvedAgent),y=o.resolvedAgent.dynamicInstructionsResolvers??[],b=o.resolvedAgent.dynamicSkillResolvers??[],x=o.subagentRegistry.dynamicResolvers??[],S=o.resolvedAgent.dynamicToolResolvers??[],C={...o.graph.root,turnAgent:s.turnAgent},w=buildRuntimeIdentity(C);try{let e=process.env.VERCEL_DEPLOYMENT_ID?.trim(),t=e?`deployment:${e}`:await resolveRuntimeCompiledArtifactsVersionedCacheKey(o.compiledArtifactsSource);if(!m.sessionStarted)i.set(SessionDynamicSubagentRuntimeRevisionKey,t),i.set(SessionDynamicToolRuntimeRevisionKey,t);else{let e=createSessionStartedEvent({runtime:w});await Promise.all([refreshDynamicSessionSubagentsForRuntimeRevision({ctx:i,resolvers:x,event:e,messages:f.initial.messages,runtimeRevision:t}),refreshDynamicSessionToolsForRuntimeRevision({ctx:i,resolvers:S,event:e,messages:f.initial.messages,runtimeRevision:t})]),await rebindMissingCompiledDynamicToolCallbacks({ctx:i,event:createTurnStartedEvent({sequence:m.sequence,turnId:activeTurnId(m)}),messages:f.initial.messages,resolvers:S})}}catch(e){throw await failChannelDeliveries(e),e}let T=n.parentWritable.getWriter(),emit=async e=>{let t=await callAdapterEventHandler(a,e,h);setChannelContext(i,{...a,state:{...h.state}});let n=stampMessageStreamEvent(t);return await T.write(encodeMessageStreamEvent(n)),n},handleEvent=async(e,t)=>{let r=await forwardTaskEventToSessionCallback(i,e)?stampMessageStreamEvent(e):await emit(e),a=await dispatchMemoryLifecycleEvent({abortSignal:n.abortSignal,appRoot:C.agent?.metadata?.appRoot??``,ctx:i,event:e,memories:C.agent?.memories??[],messages:t,nodeId:o.nodeId??`__root__`});observeSessionActivity({ctx:i,event:r,sessionId:d.sessionId}),await dispatchStreamEventHooks({ctx:i,registry:_,event:r}),r.type!==`step.started`&&await dispatchDynamicModelEvent({ctx:i,dynamicModel:s.turnAgent.dynamicModel,event:r,messages:a,scope:{moduleMap:o.moduleMap,nodeId:o.nodeId}}),await v.dispatch(r),await dispatchDynamicSubagentEvent({ctx:i,resolvers:x,event:r,messages:a}),await dispatchDynamicToolEvent({ctx:i,resolvers:S,event:r,messages:a}),await dispatchDynamicSkillEvent({ctx:i,resolvers:b,event:r,messages:a}),await dispatchDynamicInstructionEvent({ctx:i,resolvers:y,event:r,messages:a})},E=i.require(ModeKey),D;try{throwIfTurnAborted(n.abortSignal),D=await runBackgroundStep(i,d,async e=>{i.setVirtualContext(HandleEventKey,handleEvent);let t=resolveEffectiveOutputSchema({agentOutputSchema:s.turnAgent.outputSchema,input:g,mode:E,session:e});if(await v.rehydrate(m,w,isHarnessBetweenTurns(t)),u){let e=getHarnessEmissionState(t.state);if(isHarnessBetweenTurns(t)){prepareDynamicInstructionPreamble(i,f.messages(t));let n=[],r=await prepareWorkflowPreambleTrace({emissionState:e,instrumentation:p});try{e=await emitTurnPreamble(handleEvent,{},e,w,r)}finally{n=drainDynamicInstructionUserMessages(i),t={...t,history:[...t.history,...n]}}t=setHarnessEmissionState(t,e)}for(let{authorization:t,result:n}of u){let r=l?.challenges.find(e=>e.attemptId===n.attemptId)?.candidateId;await handleEvent(createAuthorizationCompletedEvent({attemptId:n.attemptId,authorization:t,candidateId:r,name:n.name,outcome:`authorized`,sequence:e.sequence,stepIndex:e.stepIndex,turnId:e.turnId}))}}let r=i.get(CapabilitiesKey);return(async(e,t)=>{let i=refreshSessionFromTurnAgent({compactionOverrides:{thresholdPercent:s.thresholdPercent},session:e,systemPromptAdditions:c?[TASK_UPDATE_SESSION_INSTRUCTION]:void 0,turnAgent:s.turnAgent}),a=i;return createExecutionNodeStep({abortSignal:n.abortSignal,capabilities:r,clearOnly:n.input?.kind===`clear`,compactOnly:n.input?.kind===`compact`,createRuntime:createWorkflowRuntime,handleEvent,historyProjector:f.projector,historyView:f.prepare(a),instrumentation:p,mode:E,modelResolutionScope:{moduleMap:o.moduleMap,nodeId:o.nodeId},node:C,workflowMaxSubagents:i.workflowMaxSubagents})(a,t)})(t,g)})}catch(e){if(!isTurnCancellation(e)&&n.abortSignal?.aborted!==!0)throw await failChannelDeliveries(e),e;T.releaseLock();let t=serializeContext(i),r=readRetainedBackgroundToolResult(i),a=await contextStorage.run(i,()=>preserveCancelledTurnMessage(r?.backgroundTaskSession??d,g));return{action:`cancelled`,...r===void 0?{}:{backgroundTaskState:createDurableSessionState({session:a}),backgroundTasks:r.backgroundTasks},serializedContext:preserveSerializedInstrumentationState(preserveSerializedAgentTraceState(preserveSerializedSessionDynamicModelSelection(n.serializedContext,t),t),t),sessionState:createDurableSessionState({session:a})}}let O=reconcileSessionContinuationToken(i,D.session),k=serializeContext(i);D={...D,session:O};let A=createDurableSessionState({session:D.session}),j=D.backgroundTasks===void 0||D.backgroundTaskSession===void 0?{}:{backgroundTaskState:createDurableSessionState({session:D.backgroundTaskSession}),backgroundTasks:D.backgroundTasks};if(D.next!==null&&typeof D.next==`object`&&`done`in D.next){if(E===`task`&&hasPendingInputBatch(D.session.state))throw T.releaseLock(),Error(`Task mode cannot complete while input requests remain pending.`);await T.close();let e=getTurnUsageState(D.session.state)?.session;return{action:`done`,...j,output:D.next.output,isError:D.next.isError,serializedContext:k,sessionState:A,usage:e===void 0?void 0:toUsage(e),usageDelta:takeSessionUsageDelta(D.session).delta}}if(D.next===null){T.releaseLock();let e=getPendingWorkflowInterrupt(D.session.state);if(e!==void 0&&isWorkflowTaskInterrupt(e.interrupt))return{action:`dispatch-workflow-tasks`,...j,pendingTaskCallIds:getWorkflowTaskCallIds(e.interrupt),serializedContext:k,sessionState:A};let t=derivePendingState(D.session);if(D.settledTurn!==void 0){let{delta:e,session:n}=takeSessionUsageDelta(D.session);return{action:`park`,...j,...t,serializedContext:k,sessionState:createDurableSessionState({session:n}),settled:{output:D.settledTurn.output,isError:D.settledTurn.isError,usage:e}}}return{action:`park`,...j,...t,serializedContext:k,sessionState:A}}return T.releaseLock(),{action:`continue`,...j,serializedContext:k,sessionState:A}}export{turnStep};
@@ -1 +1 @@
1
- import{walkCauseChain}from"#shared/errors.js";import{resumeWebhook}from"#internal/workflow/runtime.js";import{HookNotFoundError}from"#compiled/@workflow/errors/index.js";const WORKFLOW_WEBHOOK_ROUTE_PATTERN=`/.well-known/workflow/v1/webhook/:token`;async function handleWorkflowWebhookRequest(e,t){let n=t.params.token;if(typeof n!=`string`||n.length===0)return Response.json({error:`Missing webhook token.`,ok:!1},{status:400});try{return await resumeWebhook(n,e)}catch(e){for(let t of walkCauseChain(e))if(HookNotFoundError.is(t))return Response.json({error:`Webhook not pending.`,ok:!1},{status:404});throw e}}export{WORKFLOW_WEBHOOK_ROUTE_PATTERN,handleWorkflowWebhookRequest};
1
+ import{walkCauseChain}from"#shared/errors.js";import{resumeWebhook}from"#internal/workflow/runtime.js";import{HookNotFoundError}from"#compiled/@workflow/errors/index.js";const WORKFLOW_WEBHOOK_ROUTE_PATTERN=`/.well-known/workflow/v1/webhook/:token`;async function handleWorkflowWebhookRequest(e,t){let n=t.params.token;if(typeof n!=`string`||n.length===0)return Response.json({error:`Missing webhook token.`,ok:!1},{status:400});try{let t=new Request(e.url,{method:e.method,headers:new Headers(e.headers),body:e.body,signal:e.signal,duplex:`half`});return await resumeWebhook(n,t)}catch(e){for(let t of walkCauseChain(e))if(HookNotFoundError.is(t))return Response.json({error:`Webhook not pending.`,ok:!1},{status:404});throw e}}export{WORKFLOW_WEBHOOK_ROUTE_PATTERN,handleWorkflowWebhookRequest};
@@ -1 +1 @@
1
- import{resolveInstalledPackageInfo}from"#internal/application/package.js";import{createAgentSourceRegistry,defineProgrammaticAgentSource,loadProgrammaticModuleNamespace,memoizeModuleNamespaceFactories}from"#compiler/source-graph.js";const revision=`eve@${resolveInstalledPackageInfo().version}:compiled-manifest-v46`,localDefaults=defineProgrammaticAgentSource({id:`eve:defaults`,revision,modules:[{logicalPath:`agent.ts`,loadNamespace:()=>import(`#framework/sources/modules/agent.js`)},{logicalPath:`sandbox.ts`,semanticRevision:`eve:default-sandbox:v1`,loadNamespace:()=>import(`#framework/sources/modules/sandbox.js`)},{logicalPath:`tools/bash.ts`,loadNamespace:()=>import(`#tools/provided/bash.js`)},{logicalPath:`tools/read_file.ts`,loadNamespace:()=>import(`#tools/provided/read-file.js`)},{logicalPath:`tools/write_file.ts`,loadNamespace:()=>import(`#tools/provided/write-file.js`)},{logicalPath:`tools/todo.ts`,loadNamespace:()=>import(`#tools/provided/todo.js`)},{logicalPath:`tools/web_fetch.ts`,loadNamespace:()=>import(`#tools/provided/web-fetch.js`)},{logicalPath:`tools/load_skill.ts`,loadNamespace:()=>import(`#tools/provided/load-skill.js`)},{logicalPath:`tools/connection_search.ts`,loadNamespace:()=>import(`#tools/framework/connection-search.js`)},{logicalPath:`tools/ask_question.ts`,loadNamespace:()=>import(`#tools/framework/ask-question.js`)},{logicalPath:`tools/task_update.ts`,loadNamespace:()=>import(`#tools/framework/task-update.js`)},{logicalPath:`tools/task_cancel.ts`,loadNamespace:()=>import(`#tools/framework/task-cancel.js`)},{logicalPath:`tools/web_search.ts`,loadNamespace:()=>import(`#tools/provided/web-search.js`)}]}),rootDefaults=defineProgrammaticAgentSource({id:`eve:root-defaults`,revision,modules:[{logicalPath:`tools/agent.ts`,loadNamespace:()=>import(`#tools/framework/agent.js`)},{logicalPath:`channels/eve.ts`,loadNamespace:()=>import(`#framework/sources/modules/eve-channel.js`)},{logicalPath:`channels/home.ts`,loadNamespace:()=>import(`#framework/sources/modules/home-channel.js`)}]}),memoryWrapperTemplateSource=defineProgrammaticAgentSource({id:`eve:memory-wrapper`,revision,modules:[{logicalPath:`tools/memory-wrapper.ts`,loadNamespace:async e=>{let{loadMemoryWrapperNamespace:t}=await import(`#framework/sources/modules/memory-wrapper.js`);return await t(e)}}]}),frameworkAgentSourceRegistry=createAgentSourceRegistry([{applyTo:`all-local-nodes`,source:localDefaults},{applyTo:`root`,source:rootDefaults}],{templates:[memoryWrapperTemplateSource]}),memoryWrapperTemplate=frameworkAgentSourceRegistry.templates.get(memoryWrapperTemplateSource.id);async function loadFrameworkProgrammaticModule(e,t){return memoizeModuleNamespaceFactories(await loadProgrammaticModuleNamespace({backing:e,dependencyNamespaces:t,registries:[frameworkAgentSourceRegistry]}))}export{frameworkAgentSourceRegistry,loadFrameworkProgrammaticModule,memoryWrapperTemplate};
1
+ import{resolveInstalledPackageInfo}from"#internal/application/package.js";import{createAgentSourceRegistry,defineProgrammaticAgentSource,loadProgrammaticModuleNamespace,memoizeModuleNamespaceFactories}from"#compiler/source-graph.js";const revision=`eve@${resolveInstalledPackageInfo().version}:compiled-manifest-v47`,localDefaults=defineProgrammaticAgentSource({id:`eve:defaults`,revision,modules:[{logicalPath:`agent.ts`,loadNamespace:()=>import(`#framework/sources/modules/agent.js`)},{logicalPath:`sandbox.ts`,semanticRevision:`eve:default-sandbox:v1`,loadNamespace:()=>import(`#framework/sources/modules/sandbox.js`)},{logicalPath:`tools/bash.ts`,loadNamespace:()=>import(`#tools/provided/bash.js`)},{logicalPath:`tools/read_file.ts`,loadNamespace:()=>import(`#tools/provided/read-file.js`)},{logicalPath:`tools/write_file.ts`,loadNamespace:()=>import(`#tools/provided/write-file.js`)},{logicalPath:`tools/todo.ts`,loadNamespace:()=>import(`#tools/provided/todo.js`)},{logicalPath:`tools/web_fetch.ts`,loadNamespace:()=>import(`#tools/provided/web-fetch.js`)},{logicalPath:`tools/load_skill.ts`,loadNamespace:()=>import(`#tools/provided/load-skill.js`)},{logicalPath:`tools/connection_search.ts`,loadNamespace:()=>import(`#tools/framework/connection-search.js`)},{logicalPath:`tools/ask_question.ts`,loadNamespace:()=>import(`#tools/framework/ask-question.js`)},{logicalPath:`tools/task_update.ts`,loadNamespace:()=>import(`#tools/framework/task-update.js`)},{logicalPath:`tools/task_cancel.ts`,loadNamespace:()=>import(`#tools/framework/task-cancel.js`)},{logicalPath:`tools/web_search.ts`,loadNamespace:()=>import(`#tools/provided/web-search.js`)}]}),rootDefaults=defineProgrammaticAgentSource({id:`eve:root-defaults`,revision,modules:[{logicalPath:`tools/agent.ts`,loadNamespace:()=>import(`#tools/framework/agent.js`)},{logicalPath:`channels/eve.ts`,loadNamespace:()=>import(`#framework/sources/modules/eve-channel.js`)},{logicalPath:`channels/home.ts`,loadNamespace:()=>import(`#framework/sources/modules/home-channel.js`)}]}),memoryWrapperTemplateSource=defineProgrammaticAgentSource({id:`eve:memory-wrapper`,revision,modules:[{logicalPath:`tools/memory-wrapper.ts`,loadNamespace:async e=>{let{loadMemoryWrapperNamespace:t}=await import(`#framework/sources/modules/memory-wrapper.js`);return await t(e)}}]}),frameworkAgentSourceRegistry=createAgentSourceRegistry([{applyTo:`all-local-nodes`,source:localDefaults},{applyTo:`root`,source:rootDefaults}],{templates:[memoryWrapperTemplateSource]}),memoryWrapperTemplate=frameworkAgentSourceRegistry.templates.get(memoryWrapperTemplateSource.id);async function loadFrameworkProgrammaticModule(e,t){return memoizeModuleNamespaceFactories(await loadProgrammaticModuleNamespace({backing:e,dependencyNamespaces:t,registries:[frameworkAgentSourceRegistry]}))}export{frameworkAgentSourceRegistry,loadFrameworkProgrammaticModule,memoryWrapperTemplate};
@@ -1 +1 @@
1
- import{contextStorage}from"#context/container.js";import{AuthKey,SessionKey}from"#context/keys.js";import{buildCallbackContext}from"#context/build-callback-context.js";import{buildApprovalResponseAuth,handleApprovalResponsePolicyError}from"#execution/tool-auth.js";import{clearPendingAuthorization,getAuthorizationResult,getPendingAuthorization,isAuthorizationSignal}from"#harness/authorization.js";import{createApprovalCandidate,expireApprovalCandidates,finishApprovalCandidate,getActiveApprovalCandidate,getApprovalAuditState,markApprovalCandidateAuthorizationRequired,settleAllowedCandidate,settleDirectApprovalResponse}from"#harness/approval-candidates.js";import{isApprovalRequest}from"#harness/input-request-class.js";import{getPendingInputBatches}from"#harness/pending-input-batches.js";const UNAUTHENTICATED_APPROVAL_FEEDBACK=`Authentication is required to respond to this approval.`;function shouldPrepareApprovalPolicyTools(e){let t=getPendingInputBatches(e.session.state),n=[...(e.stepInput?.attributedInputResponses??[]).map(({response:e})=>e),...e.stepInput?.inputResponses??[]];if(t.some(e=>e.requests.some(e=>isApprovalRequest(e)&&n.some(t=>t.requestId===e.requestId))))return!1;let r=e.now??Date.now();return getApprovalAuditState(e.session.state).activeCandidates.some(e=>e.expiresAt>r&&(e.status===`pending`||(e.authorizationChallenges?.some(e=>getAuthorizationResult(e.name)!==void 0)??!1)))}function shouldPrepareApprovalReplayTools(e){if(shouldPrepareApprovalPolicyTools(e))return!0;let t=new Set([...(e.stepInput?.attributedInputResponses??[]).map(({response:e})=>e),...e.stepInput?.inputResponses??[]].filter(e=>e.optionId===`approve`).map(e=>e.requestId));return getPendingInputBatches(e.session.state).some(e=>e.requests.some(e=>isApprovalRequest(e)&&t.has(e.requestId)))}async function coordinateApprovalDelivery(e){let t=e.now??Date.now(),n=getApprovalAuditState(e.session.state).activeCandidates.filter(e=>e.expiresAt<=t).flatMap(e=>e.authorizationChallenges?.map(e=>e.name)??[]),r=expireApprovalCandidates({now:t,state:e.session.state}),i={...e.session,state:clearPendingAuthorization(r,n)},a=getApprovalAuditState(i.state),o=getPendingInputBatches(i.state),s=new Set(o.flatMap(e=>e.requests.map(e=>e.requestId))),c=a.settlements.filter(e=>s.has(e.requestId)),l=new Set(a.settlements.map(e=>e.requestId)),u=hasResponseForRequest(e.stepInput,l),d=u?removeConsumedResponses(e.stepInput,l):e.stepInput;if(u&&c.length===0&&!hasMeaningfulInput(d))return deliveryResult(i,d,`park`);if(o.length===0)return deliveryResult(i,d);let f=d,p=new Set(o.flatMap(e=>e.responseAuthRequiredRequestIds??[])),m=o.flatMap(e=>e.requests),h=new Map(m.map(e=>[e.requestId,e])),g=[],_=[],v=new Set,y=!1,b=getApprovalAuditState(i.state).activeCandidates,x=[...f?.attributedInputResponses??[],...(f?.inputResponses??[]).map(e=>({auth:void 0,response:e}))];for(let{auth:e,response:n}of x){let r=h.get(n.requestId);if(r===void 0||!isApprovalRequest(r))continue;if(!p.has(n.requestId)){let r=contextStorage.getStore(),a=e===void 0?r?.get(AuthKey)??r?.get(SessionKey)?.auth.current??null:e;if(a!==null&&(n.optionId===`approve`||n.optionId===`cancel`)){let e=settleDirectApprovalResponse({actor:a,outcome:n.optionId===`approve`?`allowed`:`cancelled`,requestId:n.requestId,settledAt:t,state:i.state});i={...i,state:e.state},y||=e.changed}continue}if(v.add(n.requestId),n.optionId===`cancel`){let r=e===void 0?buildCallbackContext().session.auth.current:e;if(r===null){_.push(UNAUTHENTICATED_APPROVAL_FEEDBACK);continue}let a=settleDirectApprovalResponse({actor:r,outcome:`cancelled`,requestId:n.requestId,settledAt:t,state:i.state});i={...i,state:a.state},y||=a.changed;continue}if(n.optionId!==`approve`)continue;let a=e===void 0?buildCallbackContext().session.auth.current:e;if(a===null){_.push(UNAUTHENTICATED_APPROVAL_FEEDBACK);continue}let o=createApprovalCandidate({candidateIdPrefix:approvalCandidateIdPrefix(r.requestId,a),createdAt:t,expiresAt:t+6e5,requestId:r.requestId,responder:a,state:i.state});i={...i,state:o.state},y||=o.changed}let S=removeConsumedResponses(f,v);if(v.size>0)return deliveryResult(i,S,y?`continue-coordination`:`continue`,[],_);if(y)return deliveryResult(i,S,`continue`,[],_);let C=new Set(getPendingAuthorization(i.state)?.challenges.map(e=>e.name)??[]);for(let n of b){if(n.status===`authorization-required`){let e=n.authorizationChallenges??[];if(!e.some(e=>getAuthorizationResult(e.name)!==void 0)){g.push(...e.filter(e=>!C.has(e.name)));continue}}let r=h.get(n.requestId);if(r===void 0||getActiveApprovalCandidate(i.state,n.candidateId)===void 0)continue;let a=await authorizeCandidate({candidateId:n.candidateId,now:t,request:r,responder:n.responder,session:i,tools:e.tools});i=a.session,y||=a.didCommit,g.push(...a.challenges);let o=getApprovalAuditState(i.state).settlements.find(e=>e.requestId===n.requestId);o!==void 0&&c.push(o)}let w=appendSettledResponses(S,c);return c.length>0?deliveryResult(i,w,`continue`):y?deliveryResult(i,w,`continue-coordination`):deliveryResult(i,w,g.length>0?`authorization-required`:`continue`,g)}async function authorizeCandidate(e){let t={...e.session,state:expireApprovalCandidates({now:e.now,state:e.session.state})};if(getActiveApprovalCandidate(t.state,e.candidateId)===void 0)return{challenges:[],didCommit:!1,session:t};let n=e.tools.get(e.request.action.toolName)?.approval,r=n!==void 0&&typeof n!=`function`?n.response:void 0;if(r===void 0)return failCandidate({...e,reason:`Approval authorization is temporarily unavailable. Please try again.`,session:t});try{let n=buildCallbackContext(),i=await withAuthorizerTimeout(r({auth:buildApprovalResponseAuth({responder:e.responder,scope:e.candidateId}),request:{callId:e.request.action.callId,requestId:e.request.requestId,toolInput:e.request.action.input,toolName:e.request.action.toolName},response:{decision:`approve`},responder:e.responder,session:{id:n.session.id,initiator:n.session.auth.initiator,parent:n.session.parent,turn:n.session.turn}}));if(i.status===`rejected`)return t={...t,state:finishApprovalCandidate({candidateId:e.candidateId,completedAt:e.now,reason:i.reason,state:t.state,status:`rejected`})},{challenges:[],didCommit:!0,session:t};if(i.status!==`allowed`)return failCandidate({...e,session:t});let a=settleAllowedCandidate({candidateId:e.candidateId,settledAt:e.now,state:t.state});return{challenges:[],didCommit:a.changed,session:{...t,state:a.state}}}catch(n){let r=await handleApprovalResponsePolicyError(n).catch(()=>void 0);if(isAuthorizationSignal(r)){let n=r.challenges.map(e=>Date.parse(e.challenge.expiresAt??``)).filter(Number.isFinite).sort((e,t)=>e-t)[0];return t={...t,state:markApprovalCandidateAuthorizationRequired({authorizationChallenges:r.challenges.map(t=>({...t,candidateId:e.candidateId})),candidateId:e.candidateId,expiresAt:n,state:t.state})},{challenges:r.challenges.map(t=>({...t,candidateId:e.candidateId})),didCommit:!0,session:t}}return failCandidate({...e,session:t})}}function failCandidate(e){let t=e.reason??`We couldn’t verify your approval. Please try again.`;return{challenges:[],didCommit:!0,session:{...e.session,state:finishApprovalCandidate({candidateId:e.candidateId,completedAt:e.now,reason:t,state:e.session.state,status:`failed`})}}}function hasResponseForRequest(e,t){return e?.attributedInputResponses?.some(({response:e})=>t.has(e.requestId))===!0||e?.inputResponses?.some(e=>t.has(e.requestId))===!0}function hasMeaningfulInput(e){return e?.message!==void 0||(e?.attributedInputResponses?.length??0)>0||(e?.inputResponses?.length??0)>0||(e?.runtimeActionResults?.length??0)>0}function appendSettledResponses(e,t){return t.length===0?e:{...e,inputResponses:[...e?.inputResponses??[],...t.map(e=>({optionId:e.outcome===`allowed`?`approve`:`cancel`,requestId:e.requestId}))]}}function removeConsumedResponses(e,t){if(e===void 0)return;let n=(e.attributedInputResponses??[]).filter(({response:e})=>!t.has(e.requestId)),r=[...(e.inputResponses??[]).filter(e=>!t.has(e.requestId)),...n.map(({response:e})=>e)];return{...e,attributedInputResponses:void 0,inputResponses:r}}function deliveryResult(e,t,n=`continue`,r=[],i=[]){return{challenges:r,feedback:i,kind:n,session:e,stepInput:t}}function approvalCandidateIdPrefix(e,t){let n=[t.authenticator,t.issuer??``,t.principalType,t.principalId].join(`:`);return`${encodeCandidateIdPart(e)}.${encodeCandidateIdPart(n)}`}function encodeCandidateIdPart(e){return Array.from(e,e=>e.codePointAt(0).toString(36)).join(`-`)}async function withAuthorizerTimeout(e){let t;try{return await Promise.race([Promise.resolve(e),new Promise((e,n)=>{t=setTimeout(()=>n(Error(`Approval response authorizer timed out.`)),1e4)})])}finally{t!==void 0&&clearTimeout(t)}}export{coordinateApprovalDelivery,shouldPrepareApprovalPolicyTools,shouldPrepareApprovalReplayTools};
1
+ import{contextStorage}from"#context/container.js";import{AuthKey,SessionKey}from"#context/keys.js";import{resolveTextToResponses}from"#channel/resolve-text.js";import{buildCallbackContext}from"#context/build-callback-context.js";import{buildApprovalResponseAuth,handleApprovalResponsePolicyError}from"#execution/tool-auth.js";import{clearPendingAuthorization,getAuthorizationResult,getPendingAuthorization,isAuthorizationSignal}from"#harness/authorization.js";import{createApprovalCandidate,expireApprovalCandidates,finishApprovalCandidate,getActiveApprovalCandidate,getApprovalAuditState,markApprovalCandidateAuthorizationRequired,settleAllowedCandidate,settleDirectApprovalResponse}from"#harness/approval-candidates.js";import{isApprovalRequest}from"#harness/input-request-class.js";import{getPendingInputBatches}from"#harness/pending-input-batches.js";const UNAUTHENTICATED_APPROVAL_FEEDBACK=`Authentication is required to respond to this approval.`;function shouldPrepareApprovalPolicyTools(e){let t=getPendingInputBatches(e.session.state),n=[...(e.stepInput?.attributedInputResponses??[]).map(({response:e})=>e),...e.stepInput?.inputResponses??[]];if(t.some(e=>e.requests.some(e=>isApprovalRequest(e)&&n.some(t=>t.requestId===e.requestId))))return!1;let r=e.now??Date.now();return getApprovalAuditState(e.session.state).activeCandidates.some(e=>e.expiresAt>r&&(e.status===`pending`||(e.authorizationChallenges?.some(e=>getAuthorizationResult(e.name)!==void 0)??!1)))}function shouldPrepareApprovalReplayTools(e){if(shouldPrepareApprovalPolicyTools(e))return!0;let t=getPendingInputBatches(e.session.state),n=[...(e.stepInput?.attributedInputResponses??[]).map(({response:e})=>e),...e.stepInput?.inputResponses??[]],r=t.length===1?t[0]:void 0;r!==void 0&&typeof e.stepInput?.message==`string`&&!n.some(e=>r.requests.some(t=>t.requestId===e.requestId))&&n.push(...resolveTextToResponses(e.stepInput.message,r.requests.filter(e=>!r.responseAuthRequiredRequestIds?.includes(e.requestId))));let i=new Set(n.filter(e=>e.optionId===`approve`).map(e=>e.requestId));return t.some(e=>e.requests.some(e=>isApprovalRequest(e)&&i.has(e.requestId)))}async function coordinateApprovalDelivery(e){let t=e.now??Date.now(),n=getApprovalAuditState(e.session.state).activeCandidates.filter(e=>e.expiresAt<=t).flatMap(e=>e.authorizationChallenges?.map(e=>e.name)??[]),r=expireApprovalCandidates({now:t,state:e.session.state}),i={...e.session,state:clearPendingAuthorization(r,n)},a=getApprovalAuditState(i.state),o=getPendingInputBatches(i.state),s=new Set(o.flatMap(e=>e.requests.map(e=>e.requestId))),c=a.settlements.filter(e=>s.has(e.requestId)),l=new Set(a.settlements.map(e=>e.requestId)),u=hasResponseForRequest(e.stepInput,l),d=u?removeConsumedResponses(e.stepInput,l):e.stepInput;if(u&&c.length===0&&!hasMeaningfulInput(d))return deliveryResult(i,d,`park`);if(o.length===0)return deliveryResult(i,d);let f=d,p=new Set(o.flatMap(e=>e.responseAuthRequiredRequestIds??[])),m=o.flatMap(e=>e.requests),h=new Map(m.map(e=>[e.requestId,e])),g=[],_=[],v=new Set,y=!1,b=getApprovalAuditState(i.state).activeCandidates,x=[...f?.attributedInputResponses??[],...(f?.inputResponses??[]).map(e=>({auth:void 0,response:e}))];for(let{auth:e,response:n}of x){let r=h.get(n.requestId);if(r===void 0||!isApprovalRequest(r))continue;if(!p.has(n.requestId)){let r=contextStorage.getStore(),a=e===void 0?r?.get(AuthKey)??r?.get(SessionKey)?.auth.current??null:e;if(a!==null&&(n.optionId===`approve`||n.optionId===`cancel`)){let e=settleDirectApprovalResponse({actor:a,outcome:n.optionId===`approve`?`allowed`:`cancelled`,requestId:n.requestId,settledAt:t,state:i.state});i={...i,state:e.state},y||=e.changed}continue}if(v.add(n.requestId),n.optionId===`cancel`){let r=e===void 0?buildCallbackContext().session.auth.current:e;if(r===null){_.push(UNAUTHENTICATED_APPROVAL_FEEDBACK);continue}let a=settleDirectApprovalResponse({actor:r,outcome:`cancelled`,requestId:n.requestId,settledAt:t,state:i.state});i={...i,state:a.state},y||=a.changed;continue}if(n.optionId!==`approve`)continue;let a=e===void 0?buildCallbackContext().session.auth.current:e;if(a===null){_.push(UNAUTHENTICATED_APPROVAL_FEEDBACK);continue}let o=createApprovalCandidate({candidateIdPrefix:approvalCandidateIdPrefix(r.requestId,a),createdAt:t,expiresAt:t+6e5,requestId:r.requestId,responder:a,state:i.state});i={...i,state:o.state},y||=o.changed}let S=removeConsumedResponses(f,v);if(v.size>0)return deliveryResult(i,S,y?`continue-coordination`:`continue`,[],_);if(y)return deliveryResult(i,S,`continue`,[],_);let C=new Set(getPendingAuthorization(i.state)?.challenges.map(e=>e.name)??[]);for(let n of b){if(n.status===`authorization-required`){let e=n.authorizationChallenges??[];if(!e.some(e=>getAuthorizationResult(e.name)!==void 0)){g.push(...e.filter(e=>!C.has(e.name)));continue}}let r=h.get(n.requestId);if(r===void 0||getActiveApprovalCandidate(i.state,n.candidateId)===void 0)continue;let a=await authorizeCandidate({candidateId:n.candidateId,now:t,request:r,responder:n.responder,session:i,tools:e.tools});i=a.session,y||=a.didCommit,g.push(...a.challenges);let o=getApprovalAuditState(i.state).settlements.find(e=>e.requestId===n.requestId);o!==void 0&&c.push(o)}let w=appendSettledResponses(S,c);return c.length>0?deliveryResult(i,w,`continue`):y?deliveryResult(i,w,`continue-coordination`):deliveryResult(i,w,g.length>0?`authorization-required`:`continue`,g)}async function authorizeCandidate(e){let t={...e.session,state:expireApprovalCandidates({now:e.now,state:e.session.state})};if(getActiveApprovalCandidate(t.state,e.candidateId)===void 0)return{challenges:[],didCommit:!1,session:t};let n=e.tools.get(e.request.action.toolName)?.approval,r=n!==void 0&&typeof n!=`function`?n.response:void 0;if(r===void 0)return failCandidate({...e,reason:`Approval authorization is temporarily unavailable. Please try again.`,session:t});try{let n=buildCallbackContext(),i=await withAuthorizerTimeout(r({auth:buildApprovalResponseAuth({responder:e.responder,scope:e.candidateId}),request:{callId:e.request.action.callId,requestId:e.request.requestId,toolInput:e.request.action.input,toolName:e.request.action.toolName},response:{decision:`approve`},responder:e.responder,session:{id:n.session.id,initiator:n.session.auth.initiator,parent:n.session.parent,turn:n.session.turn}}));if(i.status===`rejected`)return t={...t,state:finishApprovalCandidate({candidateId:e.candidateId,completedAt:e.now,reason:i.reason,state:t.state,status:`rejected`})},{challenges:[],didCommit:!0,session:t};if(i.status!==`allowed`)return failCandidate({...e,session:t});let a=settleAllowedCandidate({candidateId:e.candidateId,settledAt:e.now,state:t.state});return{challenges:[],didCommit:a.changed,session:{...t,state:a.state}}}catch(n){let r=await handleApprovalResponsePolicyError(n).catch(()=>void 0);if(isAuthorizationSignal(r)){let n=r.challenges.map(e=>Date.parse(e.challenge.expiresAt??``)).filter(Number.isFinite).sort((e,t)=>e-t)[0];return t={...t,state:markApprovalCandidateAuthorizationRequired({authorizationChallenges:r.challenges.map(t=>({...t,candidateId:e.candidateId})),candidateId:e.candidateId,expiresAt:n,state:t.state})},{challenges:r.challenges.map(t=>({...t,candidateId:e.candidateId})),didCommit:!0,session:t}}return failCandidate({...e,session:t})}}function failCandidate(e){let t=e.reason??`We couldn’t verify your approval. Please try again.`;return{challenges:[],didCommit:!0,session:{...e.session,state:finishApprovalCandidate({candidateId:e.candidateId,completedAt:e.now,reason:t,state:e.session.state,status:`failed`})}}}function hasResponseForRequest(e,t){return e?.attributedInputResponses?.some(({response:e})=>t.has(e.requestId))===!0||e?.inputResponses?.some(e=>t.has(e.requestId))===!0}function hasMeaningfulInput(e){return e?.message!==void 0||(e?.attributedInputResponses?.length??0)>0||(e?.inputResponses?.length??0)>0||(e?.runtimeActionResults?.length??0)>0}function appendSettledResponses(e,t){return t.length===0?e:{...e,inputResponses:[...e?.inputResponses??[],...t.map(e=>({optionId:e.outcome===`allowed`?`approve`:`cancel`,requestId:e.requestId}))]}}function removeConsumedResponses(e,t){if(e===void 0)return;let n=(e.attributedInputResponses??[]).filter(({response:e})=>!t.has(e.requestId)),r=[...(e.inputResponses??[]).filter(e=>!t.has(e.requestId)),...n.map(({response:e})=>e)];return{...e,attributedInputResponses:void 0,inputResponses:r}}function deliveryResult(e,t,n=`continue`,r=[],i=[]){return{challenges:r,feedback:i,kind:n,session:e,stepInput:t}}function approvalCandidateIdPrefix(e,t){let n=[t.authenticator,t.issuer??``,t.principalType,t.principalId].join(`:`);return`${encodeCandidateIdPart(e)}.${encodeCandidateIdPart(n)}`}function encodeCandidateIdPart(e){return Array.from(e,e=>e.codePointAt(0).toString(36)).join(`-`)}async function withAuthorizerTimeout(e){let t;try{return await Promise.race([Promise.resolve(e),new Promise((e,n)=>{t=setTimeout(()=>n(Error(`Approval response authorizer timed out.`)),1e4)})])}finally{t!==void 0&&clearTimeout(t)}}export{coordinateApprovalDelivery,shouldPrepareApprovalPolicyTools,shouldPrepareApprovalReplayTools};
@@ -39,3 +39,4 @@ export declare const TRANSCRIPT_PAYLOAD_LIMIT = 2000;
39
39
  * the stub matches the one the summarizer transcript renders.
40
40
  */
41
41
  export declare function stubContentOutputFileParts(output: unknown): unknown;
42
+ export declare function sliceUtf16Safe(value: string, limit: number): string;
@@ -23,4 +23,4 @@ Make completed work explicit so the next model does not repeat it. Keep complete
23
23
  Large tool outputs are the main thing to compress: reduce each to the findings the next model needs — what was searched or read, what it established, and the exact identifiers involved — rather than reproducing the output. The next model cannot see the originals, so nothing it would need to act on may be lost.`}function formatCompactionTranscript(e){let t=e.filter(e=>e.content.trim().length>0).map(e=>`### ${e.role}\n${e.content.trim()}`);return t.length===0?`(empty)`:t.join(`
24
24
 
25
25
  `)}function renderCompactionMessageContent(e,t){return typeof e.content==`string`?renderConversationText(e.content,t):e.content.map(e=>renderCompactionContentPart(e,t)).filter(e=>e.length>0).join(`
26
- `).trim()}function renderCompactionContentPart(e,t){switch(e.type){case`text`:return renderConversationText(e.text,t);case`reasoning`:return``;case`file`:return renderAttachedFileStub(e.filename,e.mediaType);case`tool-call`:return renderTranscriptToolCall(e,t);case`tool-result`:return renderTranscriptToolResult(e,t);default:return``}}const TRANSCRIPT_PAYLOAD_LIMIT=2e3;function renderTranscriptToolCall(e,t){return renderToolCall(e,t===void 0?TRANSCRIPT_PAYLOAD_LIMIT:280)}function renderTranscriptToolResult(e,t){let n=t===void 0?TRANSCRIPT_PAYLOAD_LIMIT:280,r=e.isError?`errored`:`returned`,i=renderToolResultOutput(e.output,n);return i?`Tool ${e.toolName} ${r} ${i}`:`Tool ${e.toolName} ${r}`}function renderToolResultOutput(e,t){let n=contentToolOutputParts(e);return n===void 0?renderPayload(e,t):capText(n.map(e=>renderContentToolOutputPart(e,t)).filter(e=>e.length>0).join(` `),t)}function contentToolOutputParts(e){if(typeof e!=`object`||!e)return;let t=e;return t.type===`content`&&Array.isArray(t.value)?t.value:void 0}function stubContentOutputFileParts(e){let t=contentToolOutputParts(e);if(t===void 0)return e;let n=!1,r=t.map(e=>{if(typeof e!=`object`||!e)return e;let t=e;return t.type!==`file`&&t.type!==`media`?e:(n=!0,{text:renderAttachedFileStub(typeof t.filename==`string`?t.filename:void 0,typeof t.mediaType==`string`?t.mediaType:`unknown`),type:`text`})});return n?{type:`content`,value:r}:e}function renderContentToolOutputPart(e,t){if(typeof e!=`object`||!e)return renderPayload(e,t);let n=e;return n.type===`text`&&typeof n.text==`string`?n.text:n.type===`file`||n.type===`media`?renderAttachedFileStub(typeof n.filename==`string`?n.filename:void 0,typeof n.mediaType==`string`?n.mediaType:`unknown`):renderPayload(e,t)}function renderToolCall(e,t){let n=renderPayload(e.input,t);return n?`Called ${e.toolName} with ${n}`:`Called ${e.toolName}`}function renderPayload(e,t){return e===void 0?``:capText(JSON.stringify(e)??``,t)}function renderAttachedFileStub(e,t){return`Attached file ${e??`attachment`} (${t})`}function renderConversationText(e,t){return t===void 0?e.trim():capText(e,t)}function capText(e,t){let n=e.replace(/\s+/g,` `).trim();return n.length<=t?n:`${n.slice(0,t).trimEnd()}…`}export{COMPACTION_CHECKPOINT_MARKER,COMPACTION_PROMPT_ENVELOPE,COMPACTION_RESUMPTION_MESSAGE,TODO_COMPACTION_PRESERVATION_LABEL,TRANSCRIPT_PAYLOAD_LIMIT,createCompactionPrompt,stubContentOutputFileParts};
26
+ `).trim()}function renderCompactionContentPart(e,t){switch(e.type){case`text`:return renderConversationText(e.text,t);case`reasoning`:return``;case`file`:return renderAttachedFileStub(e.filename,e.mediaType);case`tool-call`:return renderTranscriptToolCall(e,t);case`tool-result`:return renderTranscriptToolResult(e,t);default:return``}}const TRANSCRIPT_PAYLOAD_LIMIT=2e3;function renderTranscriptToolCall(e,t){return renderToolCall(e,t===void 0?TRANSCRIPT_PAYLOAD_LIMIT:280)}function renderTranscriptToolResult(e,t){let n=t===void 0?TRANSCRIPT_PAYLOAD_LIMIT:280,r=e.isError?`errored`:`returned`,i=renderToolResultOutput(e.output,n);return i?`Tool ${e.toolName} ${r} ${i}`:`Tool ${e.toolName} ${r}`}function renderToolResultOutput(e,t){let n=contentToolOutputParts(e);return n===void 0?renderPayload(e,t):capText(n.map(e=>renderContentToolOutputPart(e,t)).filter(e=>e.length>0).join(` `),t)}function contentToolOutputParts(e){if(typeof e!=`object`||!e)return;let t=e;return t.type===`content`&&Array.isArray(t.value)?t.value:void 0}function stubContentOutputFileParts(e){let t=contentToolOutputParts(e);if(t===void 0)return e;let n=!1,r=t.map(e=>{if(typeof e!=`object`||!e)return e;let t=e;return t.type!==`file`&&t.type!==`media`?e:(n=!0,{text:renderAttachedFileStub(typeof t.filename==`string`?t.filename:void 0,typeof t.mediaType==`string`?t.mediaType:`unknown`),type:`text`})});return n?{type:`content`,value:r}:e}function renderContentToolOutputPart(e,t){if(typeof e!=`object`||!e)return renderPayload(e,t);let n=e;return n.type===`text`&&typeof n.text==`string`?n.text:n.type===`file`||n.type===`media`?renderAttachedFileStub(typeof n.filename==`string`?n.filename:void 0,typeof n.mediaType==`string`?n.mediaType:`unknown`):renderPayload(e,t)}function renderToolCall(e,t){let n=renderPayload(e.input,t);return n?`Called ${e.toolName} with ${n}`:`Called ${e.toolName}`}function renderPayload(e,t){return e===void 0?``:capText(JSON.stringify(e)??``,t)}function renderAttachedFileStub(e,t){return`Attached file ${e??`attachment`} (${t})`}function renderConversationText(e,t){return t===void 0?e.trim():capText(e,t)}function sliceUtf16Safe(e,t){if(t<=0)return``;if(e.length<=t)return e;let n=t,r=e.charCodeAt(n-1);return r>=55296&&r<=56319&&--n,e.slice(0,n)}function capText(e,t){let n=e.replace(/\s+/g,` `).trim();return n.length<=t?n:`${sliceUtf16Safe(n,t).trimEnd()}…`}export{COMPACTION_CHECKPOINT_MARKER,COMPACTION_PROMPT_ENVELOPE,COMPACTION_RESUMPTION_MESSAGE,TODO_COMPACTION_PRESERVATION_LABEL,TRANSCRIPT_PAYLOAD_LIMIT,createCompactionPrompt,sliceUtf16Safe,stubContentOutputFileParts};
@@ -1 +1 @@
1
- import{generateText}from"ai";import{COMPACTION_CHECKPOINT_MARKER,COMPACTION_PROMPT_ENVELOPE,COMPACTION_RESUMPTION_MESSAGE,TODO_COMPACTION_PRESERVATION_LABEL,TRANSCRIPT_PAYLOAD_LIMIT,createCompactionPrompt,stubContentOutputFileParts}from"#harness/compaction-prompt.js";import{estimateTokens}from"#harness/token-estimate.js";const COMPACTION_PROMPT_OVERHEAD_TOKENS=estimateTokens([{content:COMPACTION_PROMPT_ENVELOPE.system,role:`system`},{content:COMPACTION_PROMPT_ENVELOPE.prompt,role:`user`}]);function getInputTokenCount(e,t){let n=t.lastKnownInputTokens,r=t.lastKnownPromptMessageCount;return n===void 0||r===void 0||!Number.isInteger(r)||r<0||r>e.length?estimateTokens(e):n+estimateTokens(e.slice(r))}function shouldCompact(e,t){return e.length>0&&getInputTokenCount(e,t)+COMPACTION_PROMPT_OVERHEAD_TOKENS>t.threshold}async function resolveCompactionModel(e){let t=e.compactionModelReference??e.modelReference;return{model:t===e.modelReference?e.model:await e.resolveModel(t),providerOptions:t.providerOptions}}const COMPACTION_HEURISTICS=[toolResultCapHeuristic];function toolResultCapHeuristic(e){let t=withResumptionGuard([...e.previousCheckpoint===void 0?[]:[{content:COMPACTION_CHECKPOINT_MARKER,role:`user`},{content:e.previousCheckpoint,role:`assistant`}],...capToolResults(e.older),...e.recent],e.conversation);return evaluateThreshold(t,e.config,`should-compact`).type===`within-limit`?{messages:t,type:`within-limit`}:{type:`insufficient`}}function evaluateThreshold(e,t,n){let r=n===`should-compact`?COMPACTION_PROMPT_OVERHEAD_TOKENS:0,i=estimateTokens(e)+r;return{estimatedTokens:i,type:i<=t.threshold?`within-limit`:`over-limit`}}async function compactMessages(e,t,n,r,i,a,o,s=!1){let{conversation:c,previousCheckpoint:l}=extractPreviousCheckpoint(e),u=selectRecentWindowSize(c,s?{...n,recentWindowSize:1}:n);if(!s){let{older:e,recent:t}=splitMessagesForCompaction(c,u);if(e.length===0&&l===void 0)return keepNonToolResultMessages(t);for(let r of COMPACTION_HEURISTICS){let i=r({config:n,conversation:c,older:e,previousCheckpoint:l,recent:t});if(i.type===`within-limit`)return i.messages}}for(;;){let{older:e,recent:s}=splitMessagesForCompaction(c,u),d=createCompactionPrompt({messages:e,previousCheckpoint:l,transcriptBudgetTokens:n.threshold}),f=await generateText({abortSignal:o,headers:a,model:t,prompt:d.prompt,providerOptions:r,system:d.system,telemetry:i?{...i,functionId:`eve.compaction`}:void 0,temperature:0}),p=[{content:COMPACTION_CHECKPOINT_MARKER,role:`user`},{content:f.text,role:`assistant`}],m=withResumptionGuard([...p,...s],c);if(evaluateThreshold(m,n,`estimate`).type===`within-limit`)return m;let h=withResumptionGuard([...p,...keepNonToolResultMessages(s)],c);if(evaluateThreshold(h,n,`estimate`).type===`within-limit`||u===0)return h;--u}}function capToolResults(e){return e.map(e=>{if(e.role!==`tool`||typeof e.content==`string`)return e;let t=!1,n=e.content.map(e=>{if(e.type!==`tool-result`)return e;let n=stubContentOutputFileParts(e.output),r=JSON.stringify(n)??``;return r.length<=TRANSCRIPT_PAYLOAD_LIMIT?n===e.output?e:(t=!0,{...e,output:n}):(t=!0,{...e,output:{type:`text`,value:`[Truncated by eve: tool result reduced during context compaction. Re-run the tool if you need the full output.]\n\n${r.slice(0,TRANSCRIPT_PAYLOAD_LIMIT)}`}})});return t?{...e,content:n}:e})}function withResumptionGuard(e,t){let n=e.at(-1)?.role;if(n!==void 0&&n!==`assistant`)return e;let r=findLastRealUserMessage(t),i=r!==void 0&&e.some(e=>e.role===`user`&&e.content===r.content);return[...e,r!==void 0&&!i?r:{content:COMPACTION_RESUMPTION_MESSAGE,role:`user`}]}function findLastRealUserMessage(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.role===`user`&&typeof n.content==`string`&&!(n.content===COMPACTION_RESUMPTION_MESSAGE||n.content===COMPACTION_CHECKPOINT_MARKER||n.content.startsWith(TODO_COMPACTION_PRESERVATION_LABEL)))return n}}function extractPreviousCheckpoint(e){let t=e[0],n=e[1];return t?.role!==`user`||t.content!==COMPACTION_CHECKPOINT_MARKER||n?.role!==`assistant`?{conversation:[...e],previousCheckpoint:void 0}:{conversation:e.slice(2),previousCheckpoint:assistantMessageText(n)}}function keepNonToolResultMessages(e){let t=[];for(let n of e)if(n.role!==`tool`){if(n.role===`assistant`){let e=assistantMessageText(n);e.length>0&&t.push({content:e,role:`assistant`});continue}t.push(n)}return t}function assistantMessageText(e){return typeof e.content==`string`?e.content.trim():e.content.filter(e=>e.type===`text`).map(e=>e.text).join(``).trim()}function selectRecentWindowSize(e,t){let n=Math.min(t.recentWindowSize,Math.max(e.length-1,0)),r=resolveCompactionSummaryReserve(t),i=0,a=0;for(let o=e.length-1;o>=0&&i<n;--o){let n=e[o];if(n===void 0)continue;let s=estimateTokens([n]);if(a+s+r>t.threshold)break;a+=s,i+=1}return i}function resolveCompactionSummaryReserve(e){return Math.min(2048,Math.max(64,Math.floor(e.threshold/4)))}function splitMessagesForCompaction(e,t){if(t<=0)return{older:[...e],recent:[]};let n=e.length-t;for(;n<e.length&&e[n]?.role===`tool`;)n+=1;return{older:e.slice(0,n),recent:e.slice(n)}}export{compactMessages,getInputTokenCount,resolveCompactionModel,shouldCompact};
1
+ import{generateText}from"ai";import{COMPACTION_CHECKPOINT_MARKER,COMPACTION_PROMPT_ENVELOPE,COMPACTION_RESUMPTION_MESSAGE,TODO_COMPACTION_PRESERVATION_LABEL,TRANSCRIPT_PAYLOAD_LIMIT,createCompactionPrompt,sliceUtf16Safe,stubContentOutputFileParts}from"#harness/compaction-prompt.js";import{estimateTokens}from"#harness/token-estimate.js";const COMPACTION_PROMPT_OVERHEAD_TOKENS=estimateTokens([{content:COMPACTION_PROMPT_ENVELOPE.system,role:`system`},{content:COMPACTION_PROMPT_ENVELOPE.prompt,role:`user`}]);function getInputTokenCount(e,t){let n=t.lastKnownInputTokens,r=t.lastKnownPromptMessageCount;return n===void 0||r===void 0||!Number.isInteger(r)||r<0||r>e.length?estimateTokens(e):n+estimateTokens(e.slice(r))}function shouldCompact(e,t){return e.length>0&&getInputTokenCount(e,t)+COMPACTION_PROMPT_OVERHEAD_TOKENS>t.threshold}async function resolveCompactionModel(e){let t=e.compactionModelReference??e.modelReference;return{model:t===e.modelReference?e.model:await e.resolveModel(t),providerOptions:t.providerOptions}}const COMPACTION_HEURISTICS=[toolResultCapHeuristic];function toolResultCapHeuristic(e){let t=withResumptionGuard([...e.previousCheckpoint===void 0?[]:[{content:COMPACTION_CHECKPOINT_MARKER,role:`user`},{content:e.previousCheckpoint,role:`assistant`}],...capToolResults(e.older),...e.recent],e.conversation);return evaluateThreshold(t,e.config,`should-compact`).type===`within-limit`?{messages:t,type:`within-limit`}:{type:`insufficient`}}function evaluateThreshold(e,t,n){let r=n===`should-compact`?COMPACTION_PROMPT_OVERHEAD_TOKENS:0,i=estimateTokens(e)+r;return{estimatedTokens:i,type:i<=t.threshold?`within-limit`:`over-limit`}}async function compactMessages(e,t,n,r,i,a,o,s=!1){let{conversation:c,previousCheckpoint:l}=extractPreviousCheckpoint(e),u=selectRecentWindowSize(c,s?{...n,recentWindowSize:1}:n);if(!s){let{older:e,recent:t}=splitMessagesForCompaction(c,u);if(e.length===0&&l===void 0)return keepNonToolResultMessages(t);for(let r of COMPACTION_HEURISTICS){let i=r({config:n,conversation:c,older:e,previousCheckpoint:l,recent:t});if(i.type===`within-limit`)return i.messages}}for(;;){let{older:e,recent:s}=splitMessagesForCompaction(c,u),d=createCompactionPrompt({messages:e,previousCheckpoint:l,transcriptBudgetTokens:n.threshold}),f=await generateText({abortSignal:o,headers:a,model:t,prompt:d.prompt,providerOptions:r,system:d.system,telemetry:i?{...i,functionId:`eve.compaction`}:void 0,temperature:0});if(f.text.trim().length===0)throw Error(`The compaction model returned an empty summary. Finish reason: ${f.finishReason}.`);let p=[{content:COMPACTION_CHECKPOINT_MARKER,role:`user`},{content:f.text,role:`assistant`}],m=withResumptionGuard([...p,...s],c);if(evaluateThreshold(m,n,`estimate`).type===`within-limit`)return m;let h=withResumptionGuard([...p,...keepNonToolResultMessages(s)],c);if(evaluateThreshold(h,n,`estimate`).type===`within-limit`||u===0)return h;--u}}function capToolResults(e){return e.map(e=>{if(e.role!==`tool`||typeof e.content==`string`)return e;let t=!1,n=e.content.map(e=>{if(e.type!==`tool-result`)return e;let n=stubContentOutputFileParts(e.output),r=JSON.stringify(n)??``;return r.length<=TRANSCRIPT_PAYLOAD_LIMIT?n===e.output?e:(t=!0,{...e,output:n}):(t=!0,{...e,output:{type:`text`,value:`[Truncated by eve: tool result reduced during context compaction. Re-run the tool if you need the full output.]\n\n${sliceUtf16Safe(r,TRANSCRIPT_PAYLOAD_LIMIT)}`}})});return t?{...e,content:n}:e})}function withResumptionGuard(e,t){let n=e.at(-1)?.role;if(n!==void 0&&n!==`assistant`)return e;let r=findLastRealUserMessage(t),i=r!==void 0&&e.some(e=>e.role===`user`&&e.content===r.content);return[...e,r!==void 0&&!i?r:{content:COMPACTION_RESUMPTION_MESSAGE,role:`user`}]}function findLastRealUserMessage(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.role===`user`&&typeof n.content==`string`&&!(n.content===COMPACTION_RESUMPTION_MESSAGE||n.content===COMPACTION_CHECKPOINT_MARKER||n.content.startsWith(TODO_COMPACTION_PRESERVATION_LABEL)))return n}}function extractPreviousCheckpoint(e){let t=e[0],n=e[1];return t?.role!==`user`||t.content!==COMPACTION_CHECKPOINT_MARKER||n?.role!==`assistant`?{conversation:[...e],previousCheckpoint:void 0}:{conversation:e.slice(2),previousCheckpoint:assistantMessageText(n)}}function keepNonToolResultMessages(e){let t=[];for(let n of e)if(n.role!==`tool`){if(n.role===`assistant`){let e=assistantMessageText(n);e.length>0&&t.push({content:e,role:`assistant`});continue}t.push(n)}return t}function assistantMessageText(e){return typeof e.content==`string`?e.content.trim():e.content.filter(e=>e.type===`text`).map(e=>e.text).join(``).trim()}function selectRecentWindowSize(e,t){let n=Math.min(t.recentWindowSize,Math.max(e.length-1,0)),r=resolveCompactionSummaryReserve(t),i=0,a=0;for(let o=e.length-1;o>=0&&i<n;--o){let n=e[o];if(n===void 0)continue;let s=estimateTokens([n]);if(a+s+r>t.threshold)break;a+=s,i+=1}return i}function resolveCompactionSummaryReserve(e){return Math.min(2048,Math.max(64,Math.floor(e.threshold/4)))}function splitMessagesForCompaction(e,t){if(t<=0)return{older:[...e],recent:[]};let n=e.length-t;for(;n<e.length&&e[n]?.role===`tool`;)n+=1;return{older:e.slice(0,n),recent:e.slice(n)}}export{compactMessages,getInputTokenCount,resolveCompactionModel,shouldCompact};
@@ -1,3 +1,3 @@
1
- import{readClientContext}from"#internal/client-context.js";import{createErrorId,createLogger,formatError,logError}from"#internal/logging.js";import{contextStorage}from"#context/container.js";import{AuthKey,ParentSessionKey,ScheduleIdKey,SessionCallbackKey,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{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{projectParkedAgentHandles,resolveAgentsAnnouncement}from"#subagents/handles/prompt.js";import{renderPendingApprovalsInstruction,renderPendingApprovalsSnippet}from"#harness/hitl/approval-prompt.js";import{getAgentHandleStore}from"#subagents/handles/store.js";import{buildDynamicSubagentTools}from"#context/dynamic-subagent-lifecycle.js";import{hydrateSandboxAttachments,stageAttachmentsToSandbox}from"#harness/attachment-staging.js";import{normalizeModelMessages,normalizeUserContent,resolveAssistantStepText}from"#harness/messages.js";import{createCoordinationRequestFromToolCall,resolvePendingCoordination,setPendingCoordinationBatch}from"#harness/coordination.js";import{activeTurnId}from"#harness/active-turn-id.js";import{clearPendingWorkflowInterrupt,getPendingWorkflowInterrupt,setPendingWorkflowInterrupt}from"#harness/workflow-interrupt-state.js";import{getWorkflowTaskInterrupts,isWorkflowTaskInterrupt}from"#harness/workflow-task-state.js";import{createHistoryViewPreparer}from"#shared/history-view.js";import{throwIfTurnAborted}from"#harness/turn-cancellation.js";import{getActiveDynamicModelSelection,isDynamicModelSelectionError}from"#context/dynamic-model-lifecycle.js";import{ASK_QUESTION_TOOL_NAME}from"#harness/request-input-tool.js";import{getSupersededAuthorizationChallenges,setPendingAuthorization}from"#harness/authorization.js";import{appendPendingInputBatch,consumeDeferredStepInput,getApprovedTools,getPendingInputRequestIds,hasDeferredStepInput,hasPendingApprovalBatch,hasStepInput,resolvePendingInput}from"#harness/input-requests.js";import{accumulateTurnUsage,getTurnUsageState,setTurnUsageState}from"#harness/turn-tag-state.js";import{BackgroundToolExecutorKey,createBackgroundToolCallBatch}from"#harness/background-tools.js";import{createToolResultMessagePartFromToolError}from"#harness/action-result-helpers.js";import{buildDynamicInstructionMessages,drainDynamicInstructionUserMessages,prepareDynamicInstructionPreamble}from"#context/dynamic-instruction-lifecycle.js";import{PendingSkillAnnouncementKey}from"#context/dynamic-skill-lifecycle.js";import{getWorkflowContinuationSecurity,readWorkflowContinuationSecurity}from"#harness/workflow-continuation-security.js";import{buildWorkflowHostTools,resolveWorkflowSandboxBridgeRequestLimit}from"#harness/workflow-sandbox.js";import{getApprovalAuditState,markApprovalCandidateHistoryEventEmitted,markApprovalCandidatePendingEventEmitted,markApprovalSettlementEventEmitted}from"#harness/approval-candidates.js";import{getPendingInputBatches,queueDeferredStepInput}from"#harness/pending-input-batches.js";import{clearTurnClientContextState,getTurnClientContextState,setTurnClientContextState}from"#harness/turn-client-context.js";import{EMPTY_DELIVERY_SENTINEL,hasEmptyDeliverySentinel}from"#shared/empty-delivery.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{resolveInlineAuthorizationInterrupt}from"#harness/inline-tool-authorization.js";import{createCurrentMessages}from"#harness/current-messages.js";import{extractQuestionInputRequests,extractToolApprovalInputRequests}from"#harness/input-extraction.js";import{applyLastToolCacheBreakpoint,applySystemCacheBreakpoint,detectPromptCachePath,getAnthropicCacheMarker}from"#harness/prompt-cache.js";import{requireSessionModelReference}from"#harness/types.js";import{mergeProviderSafetyIdentifier}from"#harness/provider-safety.js";import{emitWorkflowActionResults,emitWorkflowActionsRequested}from"#harness/workflow-lifecycle.js";import{compactMessages,getInputTokenCount,resolveCompactionModel,shouldCompact}from"#harness/compaction.js";import{applySessionLimitContinuation,enforceSessionUsageLimit}from"#harness/session-limit-enforcement.js";import{setEveAttributes}from"#runtime/attributes/emit.js";import{coordinateApprovalDelivery,shouldPrepareApprovalPolicyTools,shouldPrepareApprovalReplayTools}from"#harness/approval-delivery-coordinator.js";import{convertStaleResponsesToUserMessage,dropStaleSessionLimitContinuationResponses}from"#harness/stale-input-responses.js";import{normalizeProviderToolHistory}from"#harness/provider-tool-history.js";import{resolveDeliveryPolicy}from"#tasks/delivery-policy.js";import{extractWorkflowStreamWriteErrorDetails}from"#harness/workflow-stream-error.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 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{readClientContext}from"#internal/client-context.js";import{createErrorId,createLogger,formatError,logError}from"#internal/logging.js";import{contextStorage}from"#context/container.js";import{AuthKey,ParentSessionKey,ScheduleIdKey,SessionCallbackKey,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{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{projectParkedAgentHandles,resolveAgentsAnnouncement}from"#subagents/handles/prompt.js";import{renderPendingApprovalsInstruction,renderPendingApprovalsSnippet}from"#harness/hitl/approval-prompt.js";import{getAgentHandleStore}from"#subagents/handles/store.js";import{buildDynamicSubagentTools}from"#context/dynamic-subagent-lifecycle.js";import{hydrateSandboxAttachments,stageAttachmentsToSandbox}from"#harness/attachment-staging.js";import{normalizeModelMessages,normalizeUserContent,resolveAssistantStepText}from"#harness/messages.js";import{createCoordinationRequestFromToolCall,resolvePendingCoordination,setPendingCoordinationBatch}from"#harness/coordination.js";import{activeTurnId}from"#harness/active-turn-id.js";import{clearPendingWorkflowInterrupt,getPendingWorkflowInterrupt,setPendingWorkflowInterrupt}from"#harness/workflow-interrupt-state.js";import{getWorkflowTaskInterrupts,isWorkflowTaskInterrupt}from"#harness/workflow-task-state.js";import{createHistoryViewPreparer}from"#shared/history-view.js";import{throwIfTurnAborted}from"#harness/turn-cancellation.js";import{getActiveDynamicModelSelection,isDynamicModelSelectionError}from"#context/dynamic-model-lifecycle.js";import{ASK_QUESTION_TOOL_NAME}from"#harness/request-input-tool.js";import{getSupersededAuthorizationChallenges,setPendingAuthorization}from"#harness/authorization.js";import{appendPendingInputBatch,consumeDeferredStepInput,getApprovedTools,getPendingInputRequestIds,hasDeferredStepInput,hasPendingApprovalBatch,hasStepInput,resolvePendingInput}from"#harness/input-requests.js";import{accumulateTurnUsage,getTurnUsageState,setTurnUsageState}from"#harness/turn-tag-state.js";import{BackgroundToolExecutorKey,createBackgroundToolCallBatch}from"#harness/background-tools.js";import{createToolResultMessagePartFromToolError}from"#harness/action-result-helpers.js";import{buildDynamicInstructionMessages,drainDynamicInstructionUserMessages,prepareDynamicInstructionPreamble}from"#context/dynamic-instruction-lifecycle.js";import{PendingSkillAnnouncementKey}from"#context/dynamic-skill-lifecycle.js";import{getWorkflowContinuationSecurity,readWorkflowContinuationSecurity}from"#harness/workflow-continuation-security.js";import{buildWorkflowHostTools,resolveWorkflowSandboxBridgeRequestLimit}from"#harness/workflow-sandbox.js";import{getApprovalAuditState,markApprovalCandidateHistoryEventEmitted,markApprovalCandidatePendingEventEmitted,markApprovalSettlementEventEmitted}from"#harness/approval-candidates.js";import{getPendingInputBatches,queueDeferredStepInput}from"#harness/pending-input-batches.js";import{clearTurnClientContextState,getTurnClientContextState,setTurnClientContextState}from"#harness/turn-client-context.js";import{EMPTY_DELIVERY_SENTINEL,hasEmptyDeliverySentinel}from"#shared/empty-delivery.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{resolveInlineAuthorizationInterrupt}from"#harness/inline-tool-authorization.js";import{createCurrentMessages}from"#harness/current-messages.js";import{extractQuestionInputRequests,extractToolApprovalInputRequests}from"#harness/input-extraction.js";import{applyLastToolCacheBreakpoint,applySystemCacheBreakpoint,detectPromptCachePath,getAnthropicCacheMarker}from"#harness/prompt-cache.js";import{requireSessionModelReference}from"#harness/types.js";import{mergeProviderSafetyIdentifier}from"#harness/provider-safety.js";import{emitWorkflowActionResults,emitWorkflowActionsRequested}from"#harness/workflow-lifecycle.js";import{compactMessages,getInputTokenCount,resolveCompactionModel,shouldCompact}from"#harness/compaction.js";import{applySessionLimitContinuation,enforceSessionUsageLimit}from"#harness/session-limit-enforcement.js";import{setEveAttributes}from"#runtime/attributes/emit.js";import{coordinateApprovalDelivery,shouldPrepareApprovalReplayTools}from"#harness/approval-delivery-coordinator.js";import{convertStaleResponsesToUserMessage,dropStaleSessionLimitContinuationResponses}from"#harness/stale-input-responses.js";import{normalizeProviderToolHistory}from"#harness/provider-tool-history.js";import{resolveDeliveryPolicy}from"#tasks/delivery-policy.js";import{extractWorkflowStreamWriteErrorDetails}from"#harness/workflow-stream-error.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 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)))}}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(e){let t=e.handleEvent,n=resolveApprovalKeyFromTools(e.tools);async function runStep(t,n){return e.instrumentation?.runStep({environment,eveVersion,hasInput:hasStepInput(n),session:t},e=>executeStepBody(e.session,n,e))??executeStepBody(t,n)}async function executeStepBody(r,i,a){let o=r,s=createHistoryViewPreparer({previous:e.historyView,projector:e.historyProjector});s(o.history,o.state);let projectHistory=(e,t)=>s(e,t).messages,c=getHarnessEmissionState(o.state),l=contextStorage.getStore(),u=l?.get(ParentSessionKey),d=l?.get(SessionCallbackKey),f=u!==void 0||d!==void 0,p,m=a?.createHandleEvent({getAttemptScope:()=>p,handleEvent:t,turnId:activeTurnId(c)})??t,failModelSelection=async(t,n)=>{if(throwIfTurnAborted(e.abortSignal),a?.recordError(t),!m)throw t;let r=createErrorId(),i=toErrorMessage(t);return log.error(`model selection failed terminally`,{error:t,errorId:r,sessionId:o.sessionId,turnId:n.turnId}),await emitFailedStep(m,n,{code:`MODEL_SELECTION_FAILED`,details:{errorId:r},message:i,sessionId:o.sessionId}),{next:e.mode===`task`||f?{done:!0,isError:!0,output:i}:{done:!0,output:``},session:o}},preparePreambleTrace=async()=>await a?.preparePreamble({sequence:c.sequence,sessionStarted:c.sessionStarted,traceContext:a?.traceContext,turnId:`turn_${c.sequence}`});if(e.clearOnly===!0)return o={...o,compaction:{recentWindowSize:o.compaction.recentWindowSize,threshold:o.compaction.threshold,thresholdPercent:o.compaction.thresholdPercent},history:[],state:clearMemorySessionState(o.state)},await m?.(createContextClearedEvent({sequence:c.sequence,sessionId:o.sessionId,turnId:activeTurnId(c)})),await m?.(createSessionWaitingEvent()),{next:null,session:o};if(e.compactOnly===!0){if(o.history.length>0)try{let t=contextStorage.getStore(),n=await resolveActiveRuntimeModel({config:e,ctx:t,session:o});o=n.session;let r=await maybeCompact({abortSignal:e.abortSignal,auth:t?.get(AuthKey)??null,emit:m,emissionState:{...c,turnId:activeTurnId(c)},force:!0,historyProjector:e.historyProjector,messages:[...o.history],model:n.model,onCompaction:e.onCompaction,resolveModel:e.resolveModel,runtimeIdentity:e.runtimeIdentity,session:o,telemetry:a?.telemetry()});o={...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:o.sessionId})}return await m?.(createSessionWaitingEvent()),{next:null,session:o}}let h=consumeDeferredStepInput({input:i,preferCurrentInput:e.mode!==`conversation`&&i!==void 0&&hasPendingApprovalBatch(o),session:o});o=h.session;let g=await resolvePendingCoordination({emit:m,session:o,stepInput:h.input,tools:e.tools});if(g.outcome===`unresolved`)return{next:null,session:g.session};o=g.session;let _=getPendingInputRequestIds(o.state),v=convertStaleResponsesToUserMessage({history:g.messages,pendingRequestIds:_,stepInput:dropStaleSessionLimitContinuationResponses({pendingRequestIds:_,stepInput:h.input}),tools:e.tools}),y=v.stepInput,b=v.kind===`converted`?{...y,message:v.displayMessage}:y,x=contextStorage.getStore();x!==void 0&&e.resolveStepDynamicTools!==void 0&&shouldPrepareApprovalReplayTools({session:o,stepInput:y})&&await e.resolveStepDynamicTools({ctx:x,event:createStepStartedEvent({modelId:o.agent.modelReference?.id??`dynamic`,sequence:c.sequence,stepIndex:c.stepIndex,turnId:c.turnId}),messages:projectHistory(g.messages,o.state)});let S=shouldPrepareApprovalPolicyTools({session:o,stepInput:y})?buildResponseAuthorizationTools({authoredTools:e.tools,context:x}):e.tools,C=await coordinateApprovalDelivery({session:o,stepInput:y,tools:S});if(o=C.session,m){for(let e of C.feedback)await m(createMessageCompletedEvent({message:e,sequence:c.sequence,stepIndex:c.stepIndex,turnId:c.turnId}));let e=getApprovalAuditState(o.state);for(let t of e.activeCandidates.filter(e=>e.pendingEventEmitted!==!0))await m(createApprovalCandidateEvent({candidateId:t.candidateId,outcome:`pending`,requestId:t.requestId,responderPrincipalId:t.responder.principalId,sequence:c.sequence,stepIndex:c.stepIndex,turnId:c.turnId})),o={...o,state:markApprovalCandidatePendingEventEmitted({candidateId:t.candidateId,state:o.state})};for(let t of e.candidateHistory.filter(e=>e.eventEmitted!==!0&&e.status!==`allowed`))await m(createApprovalCandidateEvent({candidateId:t.candidateId,outcome:t.status,requestId:t.requestId,responderPrincipalId:t.responder.principalId,reason:t.reason,sequence:c.sequence,stepIndex:c.stepIndex,turnId:c.turnId})),o={...o,state:markApprovalCandidateHistoryEventEmitted({candidateId:t.candidateId,state:o.state})};for(let t of e.settlements.filter(e=>e.eventEmitted!==!0))await m(createApprovalSettledEvent({outcome:t.outcome===`allowed`?`approved`:`cancelled`,requestId:t.requestId,responderPrincipalId:t.actor.principalId,sequence:c.sequence,stepIndex:c.stepIndex,turnId:c.turnId})),o={...o,state:markApprovalSettlementEventEmitted({requestId:t.requestId,state:o.state})}}if(C.kind===`park`)return{next:null,session:o};if(C.kind===`continue-coordination`)return{next:runStep,session:C.stepInput===void 0?o:queueDeferredStepInput(o,C.stepInput)};if(C.challenges.length>0){if(m)for(let e of C.challenges)await m(createAuthorizationRequiredEvent({authorization:e.challenge,candidateId:e.candidateId,description:e.challenge.instructions??`Authorization required for ${e.name}`,name:e.name,sequence:c.sequence,stepIndex:c.stepIndex,turnId:c.turnId,webhookUrl:e.hookUrl}));let e=C.stepInput===void 0?o:queueDeferredStepInput(o,C.stepInput);return{next:null,session:{...e,state:setPendingAuthorization(e.state,{challenges:C.challenges})}}}let w=resolvePendingInput({deferMessagesWhileApprovalsPending:e.mode!==`conversation`,history:g.messages,resolveApprovalKey:n,session:o,stepInput:C.stepInput});if(w.outcome===`unresolved`){let t=g.outcome===`resolved`?{...w.session,history:[...g.messages]}:w.session;if(m&&e.mode===`conversation`&&w.deferredMessage===!0&&hasStepInput(i)){l!==void 0&&prepareDynamicInstructionPreamble(l,projectHistory(t.history,t.state));let n=[];try{let t=await preparePreambleTrace();c=await emitTurnPreamble(m,b??{},c,e.runtimeIdentity,t)}catch(e){if(n=l===void 0?[]:drainDynamicInstructionUserMessages(l),t={...t,history:[...t.history,...n]},o=t,!isDynamicModelSelectionError(e))throw e;return failModelSelection(e,{sessionStarted:!0,sequence:c.sequence,stepIndex:0,turnId:`turn_${c.sequence}`})}return n=l===void 0?[]:drainDynamicInstructionUserMessages(l),t={...t,history:[...t.history,...n]},c=await emitTurnEpilogue(m,c,e.mode),{next:null,session:setHarnessEmissionState(t,c)}}return g.outcome===`resolved`?(m&&e.mode===`conversation`&&(c=await emitTurnEpilogue(m,c,e.mode),t=setHarnessEmissionState(t,c)),{next:null,session:t}):{next:null,session:w.session}}if(w.resolvedInputs!==void 0)for(let e of w.resolvedInputs)await a?.publishInputResolutions({batch:e,sessionId:o.sessionId}),m&&await m(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(m&&w.rejectedActions)for(let e of w.rejectedActions)for(let t of e.results)await m(createActionResultEvent({rejected:!0,result:t,sequence:e.event.sequence,stepIndex:e.event.stepIndex,turnId:e.event.turnId}));let T=activeTurnId(c),E=getTurnClientContextState(w.session.state,T),D=w.deferredContext===!0?void 0:readClientContext(y),O=(D??E?.messages)?.map(e=>({content:e,role:`user`}))??[],k=[];if(y?.context!==void 0&&w.deferredContext!==!0)for(let e of y.context)k.push({content:e,role:`user`});let A=normalizeUserContent(y?.message),j=A!==void 0&&!w.deferredMessage&&!w.consumedMessage?await stageAttachmentsToSandbox(A):void 0;j!==void 0&&k.push({content:j,role:`user`});let M=[],N;if(m&&hasStepInput(i)){l!==void 0&&(prepareDynamicInstructionPreamble(l,projectHistory(w.session.history,w.session.state)),prepareMemoryPreamble(l,{history:w.messages,input:[...O,...k],state:w.session.state}));try{let t=await preparePreambleTrace();c=await emitTurnPreamble(m,b??{},c,e.runtimeIdentity,t)}catch(e){if(M=l===void 0?[]:drainDynamicInstructionUserMessages(l),N=l===void 0?void 0:drainMemoryCommit(l),o={...w.session,history:[...N?.history??w.session.history,...M],state:N?.state??w.session.state},!isDynamicModelSelectionError(e))throw e;return failModelSelection(e,{sessionStarted:!0,sequence:c.sequence,stepIndex:0,turnId:`turn_${c.sequence}`})}M=l===void 0?[]:drainDynamicInstructionUserMessages(l),N=l===void 0?void 0:drainMemoryCommit(l),a?.setTurnId(c.turnId)}let ee=N?.history??w.session.history,P=w.session.history.length;o=setHarnessEmissionState({...w.session,history:[...ee,...M],state:N?.state??w.session.state},c);let F=[...N?.history??w.messages.slice(0,P),...M,...N===void 0?w.messages.slice(P):[]],I=await applySessionLimitContinuation({config:e,emit:m,emissionState:c,limitContinuation:w.limitContinuation,session:o});if(I.result!==null)return I.result;o=I.session;let L=getAgentHandleStore(o.state);if(!hasUnansweredToolCall(F)){let e=await l?.get(BackgroundToolExecutorKey)?.readAgentViews?.(),t=e===void 0||e.length===0?void 0:[...projectParkedAgentHandles(L??{handles:[]}).map(e=>({availability:`available`,id:e.identity.id,name:e.identity.name,statusLine:e.phase===`parked`?e.lastStatus:void 0})),...e],n=resolveAgentsAnnouncement({agentViews:t,messages:projectHistory(F,o.state),store:L});n!==void 0&&F.push({content:n,role:`user`})}let R=E;D!==void 0&&(R={insertionIndex:E?.insertionIndex??F.length,messages:[...D],turnId:T}),R!==void 0&&(o=setTurnClientContextState(o,R)),F=[...F,...k];let createModelMessages=e=>{if(R===void 0||R.messages.length===0)return[...e];let t=Math.min(Math.max(0,R.insertionIndex),e.length);return[...e.slice(0,t),...R.messages.map(e=>({content:e,role:`user`})),...e.slice(t)]},z=projectHistory(createModelMessages(F),o.state),B=l,V;try{B!==void 0&&e.dispatchDynamicModelEvent!==void 0&&await e.dispatchDynamicModelEvent({ctx:B,event:{data:{sequence:c.sequence,stepIndex:c.stepIndex,turnId:c.turnId},type:`step.started`},messages:z}),V=await resolveActiveRuntimeModel({config:e,ctx:B,session:o})}catch(e){return failModelSelection(e,c)}o=V.session;let H=V.model,U=detectPromptCachePath(H),W=U.kind===`anthropic-direct`?getAnthropicCacheMarker():void 0,te=buildGatewayAttributionHeaders(H,e.runtimeIdentity),G=R===void 0?void 0:Math.max(0,F.length-R.insertionIndex),K=await maybeCompact({abortSignal:e.abortSignal,auth:B?.get(AuthKey)??null,emit:m,emissionState:c,historyProjector:e.historyProjector,messages:[...F],model:H,onCompaction:e.onCompaction,promptMessages:createModelMessages(F),resolveModel:e.resolveModel,runtimeIdentity:e.runtimeIdentity,session:o,telemetry:a?.telemetry()});o=K.session,K.compacted&&(F=K.messages,R!==void 0&&G!==void 0&&(R={...R,insertionIndex:Math.max(0,F.length-G)},o=setTurnClientContextState(o,R))),z=normalizeModelMessages(projectHistory(createModelMessages(F),o.state)),m&&await emitStepStarted(m,c,requireSessionModelReference(o).id,z);let q=getApprovedTools(o,n),ne=c.sequence===0,re=ne&&B?.get(ScheduleIdKey)!==void 0,J=resolveDeliveryPolicy({hasScheduleProvenance:re,hasOutputSchema:o.outputSchema!==void 0,isChild:B?.get(ParentSessionKey)!==void 0,isFirstTurn:ne,taskDeliveryPhase:B?.get(TurnTaskDeliveryKey)}),Y=createCurrentMessages(z,{currentTurnMessages:k});if(B!==void 0){Y.addSystem(buildDynamicInstructionMessages(B));let e=B.get(PendingSkillAnnouncementKey);e!==void 0&&e.length>0&&Y.add(c.sequence,e);let t=B.get(TurnTaskStateKey);t!==void 0&&Y.add(c.sequence,t)}J.instruction!==void 0&&Y.add(c.sequence,J.instruction);let ie=renderPendingApprovalsInstruction(getPendingInputBatches(o.state).flatMap(e=>e.requests));ie!==void 0&&Y.add(c.sequence,ie,{cacheFriendly:!1});let X=await hydrateSandboxAttachments(Y.nonSystemMessages),prepareModelCallInput=e=>{let t=e?[{role:`system`,content:e}]:[],n=o.agent.system?[{role:`system`,content:o.agent.system}]:[],r=Y.systemMessages.length>0||t.length>0?[...t,...n,...Y.systemMessages]:void 0,i=r!==void 0&&W?applySystemCacheBreakpoint(r,W):r,s=i===void 0?o.agent.system??void 0:mergeSystemInstructions(i);return{instructions:s,telemetryRuntimeContext:a?.resolveRuntimeContext({eveVersion,emissionState:c,environment,modelInput:{instructions:s,messages:X},session:o})}},ae=e.tools,runSingleModelCall=async t=>{let{instructions:n,telemetryRuntimeContext:r={}}=t.preparedInput??prepareModelCallInput(t.extraSystemNote);t.retryReason&&(r[`eve.retry.reason`]=t.retryReason);let i=t.trailingUserNote?[...X,{role:`user`,content:t.trailingUserNote}]:[...X],s=buildHarnessToolsWithDynamicSubagents(e.tools,B),l=createBackgroundToolCallBatch(),u=getAdvertisedTools({session:o,tools:s});ae=u;let d=await buildToolSetWithProviderTools({approvedTools:q,backgroundBatch:l,capabilities:e.capabilities,disabledProviderTools:t.disabledProviderTools,modelReference:requireSessionModelReference(o),tools:u});if(B!==void 0){let n=getAdvertisedTools({session:o,tools:buildDynamicTools(B)}),r=buildToolSetFromDefinitions({approvedTools:q,backgroundBatch:l,capabilities:e.capabilities,disabledProviderTools:t.disabledProviderTools,tools:n});for(let[e,t]of Object.entries(r)){let n=u.get(e);if(n?.runtimeAction!==void 0||n?.workflowId!==void 0)throw Error(`Dynamic tool "${e}" collides with a coordination-visible deferred tool.`);d[e]=t}}o.outputSchema!==void 0&&(d[FINAL_OUTPUT_TOOL_NAME]=buildFinalOutputTool(o.outputSchema));let f=e.workflow===!0?{maxSubagents:e.workflowMaxSubagents}:void 0,h=await getAdvertisedTools({modelTools:d,session:o,tools:u,workflow:f});o=h.session;let g=h.modelTools,_=W?applyLastToolCacheBreakpoint(g,W):g,v=activeTurnId(c),y=a?.prepareAttempt({attemptIndex:t.attemptIndex,runtimeContext:r,stepIndex:c.stepIndex,turnId:v});p=y?.scope;let b=buildStepHooks({auth:B?.get(AuthKey)??null,cachePath:U,emit:m,emissionState:c,emitStepStarted:t.suppressStepStartedEmission!==!0,marker:W,session:o}),x={headers:te,instructions:n,model:H,onLanguageModelCallEnd(e){for(let t of e.content)t.type!==`tool-call`||t.providerExecuted===!0||isInvalidToolCall(t)||l.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:b.onStepFinish,prepareStep:b.prepareStep,reasoning:o.agent.reasoning,runtimeContext:r,stopWhen:isStepCount(1),telemetry:y?.telemetry,toolApproval:buildToolApproval(g),tools:_},S=new ToolLoopAgent(x),executeModelCall=async()=>{if(m){let t=[...e.tools].filter(([e,t])=>t.runtimeAction!==void 0&&u.get(e)===void 0).map(([e])=>e),n=new Set([ASK_QUESTION_TOOL_NAME,FINAL_OUTPUT_TOOL_NAME,...t]),r=await S.stream({abortSignal:e.abortSignal,messages:i}),{emittedActionCallIds:a,handledInlineToolResultCallIds:o,invalidInputToolCallIds:s,inlineAuthorizationResults:l,trailingInlineToolResultParts:d}=await emitStreamContent(m,c,r.fullStream,{excludedActionToolNames:n,tools:u});throwIfTurnAborted(e.abortSignal);let[f,p]=await Promise.all([b.stepResult,r.responseMessages]);if(isEmptyModelResponse(f)&&extractToolResultCallIds(p).size===0&&l.length===0&&d.length===0)throw new EmptyModelResponseError;await emitStepActions(m,c,f,{emittedActionCallIds:a,excludedActionCallIds:s,excludedActionToolNames:n,handledInlineToolResultCallIds:o,tools:u});let h=f.toolResults,g=new Map(h.map(e=>[e.toolCallId,e]));for(let e of l)g.set(e.toolCallId,e);return withAccumulatedResponseMessages({invalidInputToolCallIds:s,responseMessages:appendMissingToolResultMessages({append:d,responseMessages:p}),stepResult:f,toolResults:[...g.values()]})}let t=await S.generate({abortSignal:e.abortSignal,messages:i});throwIfTurnAborted(e.abortSignal);let n=await b.stepResult;if(isEmptyModelResponse(n)&&extractToolResultCallIds(t.responseMessages).size===0)throw new EmptyModelResponseError;return withAccumulatedResponseMessages({responseMessages:t.responseMessages,stepResult:n})};try{let e=await executeModelCall();return await y?.complete(),e}catch(e){return await y?.fail(e),rethrowNoOutputAsEmptyResponse(e)}},oe=0,runOneModelCall=async t=>runModelCallWithRetries(e=>runSingleModelCall({...t,attemptIndex:oe++,preparedInput:e===1?t.preparedInput:void 0,suppressStepStartedEmission:e!==1||t.suppressStepStartedEmission}),{sessionId:o.sessionId,turnId:c.turnId},e.abortSignal),se=prepareModelCallInput(),ce=await continuePendingWorkflowInterrupt({childResults:y?.runtimeActionResults,config:e,emit:m,emissionState:c,runStep,session:o,tools:buildHarnessToolsWithDynamicSubagents(e.tools,B)});if(ce!==null)return ce;let le=await enforceSessionUsageLimit({config:e,emit:m,emissionState:c,messages:z,session:o});if(le!==null)return le;let Z;try{Z=await runOneModelCall({preparedInput:se,suppressStepStartedEmission:!0})}catch(t){throwIfTurnAborted(e.abortSignal);let n=await runModelCallRecoveryPipeline({error:t,stages:[e=>attemptUnsupportedProviderToolRecovery({error:e.error,runOneModelCall,sessionId:o.sessionId,turnId:c.turnId}),e=>attemptEmptyResponseRecovery({emptyDeliveryEnabled:J.allowsEmptyDelivery,error:e.error,retryCallOptions:e.retryCallOptions,runOneModelCall,sessionId:o.sessionId,turnId:c.turnId})]});if(throwIfTurnAborted(e.abortSignal),n.outcome===`recovered`)Z=n.result;else{let t=n.error;if(a?.recordError(t),!m)throw t;let r=extractWorkflowStreamWriteErrorDetails(t);if(r!==null){let e=createErrorId();return log.error(`workflow stream write failed — parking session for retry by the user`,{...r,errorId:e,error:t,sessionId:o.sessionId,turnId:c.turnId}),c=await emitRecoverableFailedTurn(m,c,{code:`WORKFLOW_STREAM_WRITE_FAILED`,continuationToken:o.continuationToken,details:{...r,errorId:e},message:toErrorMessage(t)}),{next:null,session:setHarnessEmissionState(o,c)}}let i=classifyModelCallError(t),s=createErrorId(),l=summarizeKnownError(t),u=l===null?extractUpstreamRejectionMessage(t):null,d=l?.message??u?.message??toErrorMessage(t),p=l?.hint===void 0?d:`${d} ${l.hint}`,h=extractModelCallErrorDetails(t),g=buildModelCallFailureDetails({catalogSummary:l,error:t,errorId:s,modelCallDetails:h,upstreamRejection:u}),_=buildModelCallFailureLogFields({error:t,errorId:s,modelCallDetails:h,recognized:l!==null||u!==null,sessionId:o.sessionId,turnId:c.turnId});if(i===`terminal`)return l===null?log.error(u?.message??`model call failed terminally`,_):log.error(`${l.name}: ${l.message}`,{errorId:s,hint:l.hint,sessionId:o.sessionId,turnId:c.turnId}),await emitFailedStep(m,c,{code:`MODEL_CALL_FAILED`,details:g,message:d,sessionId:o.sessionId}),{next:e.mode===`task`||f?{done:!0,isError:!0,output:p}:{done:!0,output:``},session:o};if(e.mode===`task`){if(i===`recoverable`&&!(t instanceof EmptyModelResponseError))throw log.warn(u?.message??`model call failed recoverably in task mode — rethrowing for durable step retry`,_),t;return log.error(u?.message??`model call failed; failing the task run`,_),await emitFailedStep(m,c,{code:`MODEL_CALL_FAILED`,details:g,message:d,sessionId:o.sessionId}),{next:{done:!0,isError:!0,output:p},session:o}}log.error(u?.message??`model call failed — parking session for retry by the user`,_),c=await emitRecoverableFailedTurn(m,c,{code:`MODEL_CALL_FAILED`,continuationToken:o.continuationToken,details:g,message:d});let v={isError:!0,output:p};return o={...o,outputSchema:void 0},{next:null,session:setHarnessEmissionState(o,c),settledTurn:v}}}let Q=accumulateTurnUsage({previous:getTurnUsageState(o.state),turnId:c.turnId,usage:extractTokenUsageDelta({costUsd:extractGatewayCostUsd(Z.providerMetadata),usage:Z.usage})});o=setTurnUsageState(o,Q);let $;try{$=formatLanguageModelGatewayId(H)}catch{$=void 0}return await setEveAttributes({"$eve.model":$,"$eve.input_tokens":Q.inputTokens,"$eve.output_tokens":Q.outputTokens,"$eve.cache_read_tokens":Q.cacheReadTokens,"$eve.cache_write_tokens":Q.cacheWriteTokens,"$eve.cost_usd":Q.sawCost?Q.costUsd:void 0,"$eve.tool_count":e.tools.size}),handleStepResult({config:e,emit:m,emissionState:c,durableModelPromptMessageCount:R===void 0||R.messages.length===0?z.length:void 0,promptMessages:F,result:Z,runStep,session:o,coordinationTools:ae})}return runStep}function extractTokenUsageDelta(e){let t=e.usage;if(t!==void 0||e.costUsd!==void 0)return{cacheReadTokens:t?.inputTokenDetails?.cacheReadTokens,cacheWriteTokens:t?.inputTokenDetails?.cacheWriteTokens,costUsd:e.costUsd,inputTokens:t?.inputTokens,outputTokens:t?.outputTokens}}function extractGatewayCostUsd(e){let t=readGatewayMetadata(e)?.cost;if(typeof t==`number`&&Number.isFinite(t))return t;if(typeof t==`string`){let e=Number(t);return Number.isFinite(e)?e:void 0}}function readGatewayMetadata(e){let t=e?.gateway;return t&&typeof t==`object`&&!Array.isArray(t)?t:void 0}function buildModelCallFailureDetails(e){let{catalogSummary:t,error:n,errorId:r,modelCallDetails:i,upstreamRejection:a}=e;if(t!==null){let e={errorId:r,message:t.message,name:t.name,semanticErrorId:t.id,...i};return t.hint!==void 0&&(e.hint=t.hint),e}return a===null?{...formatError(n,r),...i}:{errorId:r,message:toErrorMessage(n),name:a.name,...i}}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.durableModelPromptMessageCount,i)},v=t.workflow===!0?readWorkflowContinuationSecurity(_):void 0;if(v!==void 0){let t=await getWorkflowSandboxInterrupt(i,v);if(t!==void 0){if(!isWorkflowTaskInterrupt(t))throw Error(`Unsupported Workflow interrupt kind "${t.payload.kind}".`);return await parkOnWorkflowInterrupt({baseSession:_,emit:n,emissionState:o,interrupt:t,promptMessages:r,responseMessages:g,tools:e.coordinationTools,usedCalls:0})}}let y=extractToolApprovalInputRequests({content:i.content??[],excludedCallIds:d}),b=new Set(y.map(e=>e.action.callId)),x=extractQuestionInputRequests({toolCalls:i.toolCalls,excludedCallIds:new Set([...d,...b]),tools:e.coordinationTools}),S=[...y,...x],C=renderPendingApprovalsSnippet(y),w=g.findIndex(e=>e.role!==`tool`),T=w===-1?g:g.slice(0,w),E=g.slice(T.length),D=[...r,...T,...C===void 0?[]:[{content:C,role:`user`}]],O=getAdvertisedTools({session:_,tools:e.coordinationTools}),k=(i.toolCalls??[]).filter(e=>!d.has(e.toolCallId)).filter(t=>isDeferredHarnessTool(e.coordinationTools.get(t.toolName))).filter(e=>isDeferredHarnessTool(O.get(e.toolName))?!0:(log.warn(`deferred tool call blocked because tool is not advertised`,{callId:e.toolCallId,sessionId:_.sessionId,toolName:e.toolName}),!1)).map(e=>createCoordinationRequestFromToolCall({toolCall:e,tools:O}));if(k.length>0){let e=k.flatMap(e=>e.kind===`runtime-action`?[e.request]:[]),t=k.flatMap(e=>e.kind===`task`?[e.request]:[]);if(S.length===0)return{next:null,session:setHarnessEmissionState(setPendingCoordinationBatch({runtimeActions:e,tasks:t,event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},responseMessages:g,session:{..._,history:[...r]}}),advanceStep(o))};let i=setPendingCoordinationBatch({runtimeActions:e,tasks:t,event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},responseMessages:E,session:{..._,history:D}});return i=appendPendingInputBatch({event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},requests:S,responseMessages:[],session:i}),n&&await n(createInputRequestedEvent({requests:S,sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId})),{next:null,session:setHarnessEmissionState(i,advanceStep(o))}}if(S.length>0){let e=buildResponseAuthorizationTools({authoredTools:t.tools,context:contextStorage.getStore()}),r=appendPendingInputBatch({event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},requests:S,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:E,session:{..._,history:D}});return n&&(await n(createInputRequestedEvent({requests:S,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 A=resolveInlineAuthorizationInterrupt({messages:[...r,...g],toolResults:i.toolResults});if(A){let{challenges:e,history:r}=A;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 j=g,M=[...r,...j],N={..._,history:M};return(N.outputSchema===void 0||extractFinalOutput(i)===void 0)&&(j.at(-1)?.role===`tool`||h.outcomeEndsResponse||hasDeferredStepInput(N))?(n&&(o=advanceStep(o),N=setHarnessEmissionState(N,o)),{next:a,session:N}):t.mode===`task`?finishTaskTurn({emissionState:o,emit:n,history:r,result:i,schema:N.outputSchema,session:N,stepOutput:p}):finishConversationTurn({emissionState:o,emit:n,history:r,result:i,schema:N.outputSchema,session:N,stepOutput:p})}function isDeferredHarnessTool(e){return e?.runtimeAction!==void 0||e?.workflowId!==void 0&&e.execution!==`background`}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(s=clearTurnClientContextState(s),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(s=clearTurnClientContextState(s),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(!isWorkflowTaskInterrupt(n))throw Error(`Unsupported Workflow interrupt kind "${n.payload.kind}".`);let r=e.childResults??[],i=getWorkflowTaskInterrupts(n);e.emit!==void 0&&r.length>0&&await emitWorkflowActionResults({emit:e.emit,emissionState:e.emissionState,interrupts:i,results:r});let a=getWorkflowContinuationSecurity(e.session),o;try{let t=buildWorkflowHostTools({tools:e.tools}),i=n,s=0;for(;;){o=await continueWorkflowSandboxInterrupt({bridgeRequestLimit:resolveWorkflowSandboxBridgeRequestLimit(e.config.workflowMaxSubagents),continuationSecurity:a,interrupt:i,resolution:r[s]?.output,tools:t});let n=await unwrapWorkflowSandboxResult(o,a);if(n.status!==`interrupted`||!isWorkflowTaskInterrupt(n.interrupt)||s+1>=r.length)break;let c=getWorkflowTaskInterrupts(n.interrupt)[0];if(c===void 0)throw Error(`Workflow continuation contains no pending workflow-task interrupt.`);s++,i=c}}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(!isWorkflowTaskInterrupt(s.interrupt))throw Error(`Unsupported Workflow interrupt kind "${s.interrupt.payload.kind}".`);let n=e.session.history.length,r=l.slice(0,n),i=l.slice(n);return u={...u,history:r},await parkOnWorkflowInterrupt({baseSession:u,emit:e.emit,emissionState:e.emissionState,interrupt:s.interrupt,promptMessages:r,responseMessages:i,tools:e.tools,usedCalls:t.usedCalls})}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}})}async function parkOnWorkflowInterrupt(e){let t=getWorkflowTaskInterrupts(e.interrupt),n=t[0];if(n===void 0)throw Error(`Workflow continuation contains no pending workflow-task interrupt.`);e.emit!==void 0&&await emitWorkflowActionsRequested({emit:e.emit,emissionState:e.emissionState,interrupts:t,tools:e.tools});let r={...e.baseSession,history:[...e.promptMessages]},i=setPendingWorkflowInterrupt({interrupt:n,responseMessages:e.responseMessages,session:r,usedCalls:e.usedCalls});return{next:null,session:setHarnessEmissionState(i,e.emissionState)}}function createNextCompactionConfig(e,t,n){let r={recentWindowSize:e.recentWindowSize,threshold:e.threshold,thresholdPercent:e.thresholdPercent};return n.usage?.inputTokens!==void 0&&t!==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.promptMessages??r,o=e.historyProjector?.({messages:a,state:i.state})??a,s=e.force===!0||shouldCompact(o,i.compaction),c=shouldCanonicalizeMemory(r);if(!s&&!c)return{compacted:!1,messages:r,session:i};let l=await resolveCompactionModel({compactionModelReference:i.agent.compactionModelReference,model:e.model,modelReference:requireSessionModelReference(i),resolveModel:e.resolveModel}),u=i.agent.compactionModelReference??requireSessionModelReference(i),d=mergeProviderSafetyIdentifier(u,l.providerOptions,e.auth);if(t){let e=contextStorage.getStore();e!==void 0&&prepareMemoryCompaction(e,{history:r,state:i.state}),await t(createCompactionRequestedEvent({modelId:formatLanguageModelGatewayId(l.model),sequence:n.sequence,sessionId:i.sessionId,turnId:n.turnId,usageInputTokens:getInputTokenCount(o,i.compaction)}),o)}let f=canonicalizeMemoryRecords(r),p=e.historyProjector?.({messages:f.ordinary,state:i.state})??f.ordinary,m=s?await compactMessages([...p],l.model,i.compaction,d,e.telemetry,buildGatewayAttributionHeaders(l.model,e.runtimeIdentity),e.abortSignal,e.force===!0):[...p];if(r=[...f.memory,...m],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(l.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))}}}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)))}}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(e){let t=e.handleEvent;async function runStep(t,n){return e.instrumentation?.runStep({environment,eveVersion,hasInput:hasStepInput(n),session:t},e=>executeStepBody(e.session,n,e))??executeStepBody(t,n)}async function executeStepBody(n,r,i){let a=n,o=createHistoryViewPreparer({previous:e.historyView,projector:e.historyProjector});o(a.history,a.state);let projectHistory=(e,t)=>o(e,t).messages,s=getHarnessEmissionState(a.state),c=contextStorage.getStore(),l=c?.get(ParentSessionKey),u=c?.get(SessionCallbackKey),d=l!==void 0||u!==void 0,f,p=i?.createHandleEvent({getAttemptScope:()=>f,handleEvent:t,turnId:activeTurnId(s)})??t,failModelSelection=async(t,n)=>{if(throwIfTurnAborted(e.abortSignal),i?.recordError(t),!p)throw t;let r=createErrorId(),o=toErrorMessage(t);return log.error(`model selection failed terminally`,{error:t,errorId:r,sessionId:a.sessionId,turnId:n.turnId}),await emitFailedStep(p,n,{code:`MODEL_SELECTION_FAILED`,details:{errorId:r},message:o,sessionId:a.sessionId}),{next:e.mode===`task`||d?{done:!0,isError:!0,output:o}:{done:!0,output:``},session:a}},preparePreambleTrace=async()=>await i?.preparePreamble({sequence:s.sequence,sessionStarted:s.sessionStarted,traceContext:i?.traceContext,turnId:`turn_${s.sequence}`});if(e.clearOnly===!0)return a={...a,compaction:{recentWindowSize:a.compaction.recentWindowSize,threshold:a.compaction.threshold,thresholdPercent:a.compaction.thresholdPercent},history:[],state:clearMemorySessionState(a.state)},await p?.(createContextClearedEvent({sequence:s.sequence,sessionId:a.sessionId,turnId:activeTurnId(s)})),await p?.(createSessionWaitingEvent()),{next:null,session:a};if(e.compactOnly===!0){if(a.history.length>0)try{let t=contextStorage.getStore(),n=await resolveActiveRuntimeModel({config:e,ctx:t,session:a});a=n.session;let r=await maybeCompact({abortSignal:e.abortSignal,auth:t?.get(AuthKey)??null,emit:p,emissionState:{...s,turnId:activeTurnId(s)},force:!0,historyProjector:e.historyProjector,messages:[...a.history],model:n.model,onCompaction:e.onCompaction,resolveModel:e.resolveModel,runtimeIdentity:e.runtimeIdentity,session:a,telemetry:i?.telemetry()});a={...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:a.sessionId})}return await p?.(createSessionWaitingEvent()),{next:null,session:a}}let m=consumeDeferredStepInput({input:r,preferCurrentInput:e.mode!==`conversation`&&r!==void 0&&hasPendingApprovalBatch(a),session:a});a=m.session;let h=await resolvePendingCoordination({emit:p,session:a,stepInput:m.input,tools:e.tools});if(h.outcome===`unresolved`)return{next:null,session:h.session};a=h.session;let g=getPendingInputRequestIds(a.state),_=convertStaleResponsesToUserMessage({history:h.messages,pendingRequestIds:g,stepInput:dropStaleSessionLimitContinuationResponses({pendingRequestIds:g,stepInput:m.input}),tools:e.tools}),v=_.stepInput,y=_.kind===`converted`?{...v,message:_.displayMessage}:v,b=contextStorage.getStore();b!==void 0&&e.resolveStepDynamicTools!==void 0&&shouldPrepareApprovalReplayTools({session:a,stepInput:v})&&await e.resolveStepDynamicTools({ctx:b,event:createStepStartedEvent({modelId:a.agent.modelReference?.id??`dynamic`,sequence:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId}),messages:projectHistory(h.messages,a.state)});let x=shouldPrepareApprovalReplayTools({session:a,stepInput:v})?buildResponseAuthorizationTools({authoredTools:e.tools,context:b}):e.tools,S=await coordinateApprovalDelivery({session:a,stepInput:v,tools:x});if(a=S.session,p){for(let e of S.feedback)await p(createMessageCompletedEvent({message:e,sequence:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId}));let e=getApprovalAuditState(a.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:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId})),a={...a,state:markApprovalCandidatePendingEventEmitted({candidateId:t.candidateId,state:a.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:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId})),a={...a,state:markApprovalCandidateHistoryEventEmitted({candidateId:t.candidateId,state:a.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:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId})),a={...a,state:markApprovalSettlementEventEmitted({requestId:t.requestId,state:a.state})}}if(S.kind===`park`)return{next:null,session:a};if(S.kind===`continue-coordination`)return{next:runStep,session:S.stepInput===void 0?a:queueDeferredStepInput(a,S.stepInput)};if(S.challenges.length>0){if(p)for(let e of S.challenges)await p(createAuthorizationRequiredEvent({authorization:e.challenge,candidateId:e.candidateId,description:e.challenge.instructions??`Authorization required for ${e.name}`,name:e.name,sequence:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId,webhookUrl:e.hookUrl}));let e=S.stepInput===void 0?a:queueDeferredStepInput(a,S.stepInput);return{next:null,session:{...e,state:setPendingAuthorization(e.state,{challenges:S.challenges})}}}let C=resolvePendingInput({deferMessagesWhileApprovalsPending:e.mode!==`conversation`,history:h.messages,resolveApprovalKey:resolveApprovalKeyFromTools(x),session:a,stepInput:S.stepInput});if(C.outcome===`unresolved`){let t=h.outcome===`resolved`?{...C.session,history:[...h.messages]}:C.session;if(p&&e.mode===`conversation`&&C.deferredMessage===!0&&hasStepInput(r)){c!==void 0&&prepareDynamicInstructionPreamble(c,projectHistory(t.history,t.state));let n=[];try{let t=await preparePreambleTrace();s=await emitTurnPreamble(p,y??{},s,e.runtimeIdentity,t)}catch(e){if(n=c===void 0?[]:drainDynamicInstructionUserMessages(c),t={...t,history:[...t.history,...n]},a=t,!isDynamicModelSelectionError(e))throw e;return failModelSelection(e,{sessionStarted:!0,sequence:s.sequence,stepIndex:0,turnId:`turn_${s.sequence}`})}return n=c===void 0?[]:drainDynamicInstructionUserMessages(c),t={...t,history:[...t.history,...n]},s=await emitTurnEpilogue(p,s,e.mode),{next:null,session:setHarnessEmissionState(t,s)}}return h.outcome===`resolved`?(p&&e.mode===`conversation`&&(s=await emitTurnEpilogue(p,s,e.mode),t=setHarnessEmissionState(t,s)),{next:null,session:t}):{next:null,session:C.session}}if(C.resolvedInputs!==void 0)for(let e of C.resolvedInputs)await i?.publishInputResolutions({batch:e,sessionId:a.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&&C.rejectedActions)for(let e of C.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 w=activeTurnId(s),T=getTurnClientContextState(C.session.state,w),E=C.deferredContext===!0?void 0:readClientContext(v),D=(E??T?.messages)?.map(e=>({content:e,role:`user`}))??[],O=[];if(v?.context!==void 0&&C.deferredContext!==!0)for(let e of v.context)O.push({content:e,role:`user`});let k=normalizeUserContent(v?.message),A=k!==void 0&&!C.deferredMessage&&!C.consumedMessage?await stageAttachmentsToSandbox(k):void 0;A!==void 0&&O.push({content:A,role:`user`});let j=[],M;if(p&&hasStepInput(r)){c!==void 0&&(prepareDynamicInstructionPreamble(c,projectHistory(C.session.history,C.session.state)),prepareMemoryPreamble(c,{history:C.messages,input:[...D,...O],state:C.session.state}));try{let t=await preparePreambleTrace();s=await emitTurnPreamble(p,y??{},s,e.runtimeIdentity,t)}catch(e){if(j=c===void 0?[]:drainDynamicInstructionUserMessages(c),M=c===void 0?void 0:drainMemoryCommit(c),a={...C.session,history:[...M?.history??C.session.history,...j],state:M?.state??C.session.state},!isDynamicModelSelectionError(e))throw e;return failModelSelection(e,{sessionStarted:!0,sequence:s.sequence,stepIndex:0,turnId:`turn_${s.sequence}`})}j=c===void 0?[]:drainDynamicInstructionUserMessages(c),M=c===void 0?void 0:drainMemoryCommit(c),i?.setTurnId(s.turnId)}let N=M?.history??C.session.history,ee=C.session.history.length;a=setHarnessEmissionState({...C.session,history:[...N,...j],state:M?.state??C.session.state},s);let P=[...M?.history??C.messages.slice(0,ee),...j,...M===void 0?C.messages.slice(ee):[]],F=await applySessionLimitContinuation({config:e,emit:p,emissionState:s,limitContinuation:C.limitContinuation,session:a});if(F.result!==null)return F.result;a=F.session;let I=getAgentHandleStore(a.state);if(!hasUnansweredToolCall(P)){let e=await c?.get(BackgroundToolExecutorKey)?.readAgentViews?.(),t=e===void 0||e.length===0?void 0:[...projectParkedAgentHandles(I??{handles:[]}).map(e=>({availability:`available`,id:e.identity.id,name:e.identity.name,statusLine:e.phase===`parked`?e.lastStatus:void 0})),...e],n=resolveAgentsAnnouncement({agentViews:t,messages:projectHistory(P,a.state),store:I});n!==void 0&&P.push({content:n,role:`user`})}let L=T;E!==void 0&&(L={insertionIndex:T?.insertionIndex??P.length,messages:[...E],turnId:w}),L!==void 0&&(a=setTurnClientContextState(a,L)),P=[...P,...O];let createModelMessages=e=>{if(L===void 0||L.messages.length===0)return[...e];let t=Math.min(Math.max(0,L.insertionIndex),e.length);return[...e.slice(0,t),...L.messages.map(e=>({content:e,role:`user`})),...e.slice(t)]},R=projectHistory(createModelMessages(P),a.state),z=c,B;try{z!==void 0&&e.dispatchDynamicModelEvent!==void 0&&await e.dispatchDynamicModelEvent({ctx:z,event:{data:{sequence:s.sequence,stepIndex:s.stepIndex,turnId:s.turnId},type:`step.started`},messages:R}),B=await resolveActiveRuntimeModel({config:e,ctx:z,session:a})}catch(e){return failModelSelection(e,s)}a=B.session;let V=B.model,H=detectPromptCachePath(V),U=H.kind===`anthropic-direct`?getAnthropicCacheMarker():void 0,te=buildGatewayAttributionHeaders(V,e.runtimeIdentity),ne=L===void 0?void 0:Math.max(0,P.length-L.insertionIndex),W=await maybeCompact({abortSignal:e.abortSignal,auth:z?.get(AuthKey)??null,emit:p,emissionState:s,historyProjector:e.historyProjector,messages:[...P],model:V,onCompaction:e.onCompaction,promptMessages:createModelMessages(P),resolveModel:e.resolveModel,runtimeIdentity:e.runtimeIdentity,session:a,telemetry:i?.telemetry()});a=W.session,W.compacted&&(P=W.messages,L!==void 0&&ne!==void 0&&(L={...L,insertionIndex:Math.max(0,P.length-ne)},a=setTurnClientContextState(a,L))),R=normalizeModelMessages(projectHistory(createModelMessages(P),a.state)),p&&await emitStepStarted(p,s,requireSessionModelReference(a).id,R);let re=getApprovedTools(a,resolveApprovalKeyFromTools(buildResponseAuthorizationTools({authoredTools:e.tools,context:z}))),ie=s.sequence===0,ae=ie&&z?.get(ScheduleIdKey)!==void 0,G=resolveDeliveryPolicy({hasScheduleProvenance:ae,hasOutputSchema:a.outputSchema!==void 0,isChild:z?.get(ParentSessionKey)!==void 0,isFirstTurn:ie,taskDeliveryPhase:z?.get(TurnTaskDeliveryKey)}),K=createCurrentMessages(R,{currentTurnMessages:O});if(z!==void 0){K.addSystem(buildDynamicInstructionMessages(z));let e=z.get(PendingSkillAnnouncementKey);e!==void 0&&e.length>0&&K.add(s.sequence,e);let t=z.get(TurnTaskStateKey);t!==void 0&&K.add(s.sequence,t)}G.instruction!==void 0&&K.add(s.sequence,G.instruction);let q=renderPendingApprovalsInstruction(getPendingInputBatches(a.state).flatMap(e=>e.requests));q!==void 0&&K.add(s.sequence,q,{cacheFriendly:!1});let J=await hydrateSandboxAttachments(K.nonSystemMessages),prepareModelCallInput=e=>{let t=e?[{role:`system`,content:e}]:[],n=a.agent.system?[{role:`system`,content:a.agent.system}]:[],r=K.systemMessages.length>0||t.length>0?[...t,...n,...K.systemMessages]:void 0,o=r!==void 0&&U?applySystemCacheBreakpoint(r,U):r,c=o===void 0?a.agent.system??void 0:mergeSystemInstructions(o);return{instructions:c,telemetryRuntimeContext:i?.resolveRuntimeContext({eveVersion,emissionState:s,environment,modelInput:{instructions:c,messages:J},session:a})}},Y=e.tools,runSingleModelCall=async t=>{let{instructions:n,telemetryRuntimeContext:r={}}=t.preparedInput??prepareModelCallInput(t.extraSystemNote);t.retryReason&&(r[`eve.retry.reason`]=t.retryReason);let o=t.trailingUserNote?[...J,{role:`user`,content:t.trailingUserNote}]:[...J],c=buildHarnessToolsWithDynamicSubagents(e.tools,z),l=createBackgroundToolCallBatch(),u=getAdvertisedTools({session:a,tools:c});Y=u;let d=await buildToolSetWithProviderTools({approvedTools:re,backgroundBatch:l,capabilities:e.capabilities,disabledProviderTools:t.disabledProviderTools,modelReference:requireSessionModelReference(a),tools:u});if(z!==void 0){let n=getAdvertisedTools({session:a,tools:buildDynamicTools(z)}),r=buildToolSetFromDefinitions({approvedTools:re,backgroundBatch:l,capabilities:e.capabilities,disabledProviderTools:t.disabledProviderTools,tools:n});for(let[e,t]of Object.entries(r)){let n=u.get(e);if(n?.runtimeAction!==void 0||n?.workflowId!==void 0)throw Error(`Dynamic tool "${e}" collides with a coordination-visible deferred tool.`);d[e]=t}}a.outputSchema!==void 0&&(d[FINAL_OUTPUT_TOOL_NAME]=buildFinalOutputTool(a.outputSchema));let m=e.workflow===!0?{maxSubagents:e.workflowMaxSubagents}:void 0,h=await getAdvertisedTools({modelTools:d,session:a,tools:u,workflow:m});a=h.session;let g=h.modelTools,_=U?applyLastToolCacheBreakpoint(g,U):g,v=activeTurnId(s),y=i?.prepareAttempt({attemptIndex:t.attemptIndex,runtimeContext:r,stepIndex:s.stepIndex,turnId:v});f=y?.scope;let b=buildStepHooks({auth:z?.get(AuthKey)??null,cachePath:H,emit:p,emissionState:s,emitStepStarted:t.suppressStepStartedEmission!==!0,marker:U,session:a}),x={headers:te,instructions:n,model:V,onLanguageModelCallEnd(e){for(let t of e.content)t.type!==`tool-call`||t.providerExecuted===!0||isInvalidToolCall(t)||l.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:b.onStepFinish,prepareStep:b.prepareStep,reasoning:a.agent.reasoning,runtimeContext:r,stopWhen:isStepCount(1),telemetry:y?.telemetry,toolApproval:buildToolApproval(g),tools:_},S=new ToolLoopAgent(x),executeModelCall=async()=>{if(p){let t=[...e.tools].filter(([e,t])=>t.runtimeAction!==void 0&&u.get(e)===void 0).map(([e])=>e),n=new Set([ASK_QUESTION_TOOL_NAME,FINAL_OUTPUT_TOOL_NAME,...t]),r=await S.stream({abortSignal:e.abortSignal,messages:o}),{emittedActionCallIds:i,handledInlineToolResultCallIds:a,invalidInputToolCallIds:c,inlineAuthorizationResults:l,trailingInlineToolResultParts:d}=await emitStreamContent(p,s,r.fullStream,{excludedActionToolNames:n,tools:u});throwIfTurnAborted(e.abortSignal);let[f,m]=await Promise.all([b.stepResult,r.responseMessages]);if(isEmptyModelResponse(f)&&extractToolResultCallIds(m).size===0&&l.length===0&&d.length===0)throw new EmptyModelResponseError;await emitStepActions(p,s,f,{emittedActionCallIds:i,excludedActionCallIds:c,excludedActionToolNames:n,handledInlineToolResultCallIds:a,tools:u});let h=f.toolResults,g=new Map(h.map(e=>[e.toolCallId,e]));for(let e of l)g.set(e.toolCallId,e);return withAccumulatedResponseMessages({invalidInputToolCallIds:c,responseMessages:appendMissingToolResultMessages({append:d,responseMessages:m}),stepResult:f,toolResults:[...g.values()]})}let t=await S.generate({abortSignal:e.abortSignal,messages:o});throwIfTurnAborted(e.abortSignal);let n=await b.stepResult;if(isEmptyModelResponse(n)&&extractToolResultCallIds(t.responseMessages).size===0)throw new EmptyModelResponseError;return withAccumulatedResponseMessages({responseMessages:t.responseMessages,stepResult:n})};try{let e=await executeModelCall();return await y?.complete(),e}catch(e){return await y?.fail(e),rethrowNoOutputAsEmptyResponse(e)}},oe=0,runOneModelCall=async t=>runModelCallWithRetries(e=>runSingleModelCall({...t,attemptIndex:oe++,preparedInput:e===1?t.preparedInput:void 0,suppressStepStartedEmission:e!==1||t.suppressStepStartedEmission}),{sessionId:a.sessionId,turnId:s.turnId},e.abortSignal),se=prepareModelCallInput(),X=await continuePendingWorkflowInterrupt({childResults:v?.runtimeActionResults,config:e,emit:p,emissionState:s,runStep,session:a,tools:buildHarnessToolsWithDynamicSubagents(e.tools,z)});if(X!==null)return X;let ce=await enforceSessionUsageLimit({config:e,emit:p,emissionState:s,messages:R,session:a});if(ce!==null)return ce;let Z;try{Z=await runOneModelCall({preparedInput:se,suppressStepStartedEmission:!0})}catch(t){throwIfTurnAborted(e.abortSignal);let n=await runModelCallRecoveryPipeline({error:t,stages:[e=>attemptUnsupportedProviderToolRecovery({error:e.error,runOneModelCall,sessionId:a.sessionId,turnId:s.turnId}),e=>attemptEmptyResponseRecovery({emptyDeliveryEnabled:G.allowsEmptyDelivery,error:e.error,retryCallOptions:e.retryCallOptions,runOneModelCall,sessionId:a.sessionId,turnId:s.turnId})]});if(throwIfTurnAborted(e.abortSignal),n.outcome===`recovered`)Z=n.result;else{let t=n.error;if(i?.recordError(t),!p)throw t;let r=extractWorkflowStreamWriteErrorDetails(t);if(r!==null){let e=createErrorId();return log.error(`workflow stream write failed — parking session for retry by the user`,{...r,errorId:e,error:t,sessionId:a.sessionId,turnId:s.turnId}),s=await emitRecoverableFailedTurn(p,s,{code:`WORKFLOW_STREAM_WRITE_FAILED`,continuationToken:a.continuationToken,details:{...r,errorId:e},message:toErrorMessage(t)}),{next:null,session:setHarnessEmissionState(a,s)}}let o=classifyModelCallError(t),c=createErrorId(),l=summarizeKnownError(t),u=l===null?extractUpstreamRejectionMessage(t):null,f=l?.message??u?.message??toErrorMessage(t),m=l?.hint===void 0?f:`${f} ${l.hint}`,h=extractModelCallErrorDetails(t),g=buildModelCallFailureDetails({catalogSummary:l,error:t,errorId:c,modelCallDetails:h,upstreamRejection:u}),_=buildModelCallFailureLogFields({error:t,errorId:c,modelCallDetails:h,recognized:l!==null||u!==null,sessionId:a.sessionId,turnId:s.turnId});if(o===`terminal`)return l===null?log.error(u?.message??`model call failed terminally`,_):log.error(`${l.name}: ${l.message}`,{errorId:c,hint:l.hint,sessionId:a.sessionId,turnId:s.turnId}),await emitFailedStep(p,s,{code:`MODEL_CALL_FAILED`,details:g,message:f,sessionId:a.sessionId}),{next:e.mode===`task`||d?{done:!0,isError:!0,output:m}:{done:!0,output:``},session:a};if(e.mode===`task`){if(o===`recoverable`&&!(t instanceof EmptyModelResponseError))throw log.warn(u?.message??`model call failed recoverably in task mode — rethrowing for durable step retry`,_),t;return log.error(u?.message??`model call failed; failing the task run`,_),await emitFailedStep(p,s,{code:`MODEL_CALL_FAILED`,details:g,message:f,sessionId:a.sessionId}),{next:{done:!0,isError:!0,output:m},session:a}}log.error(u?.message??`model call failed — parking session for retry by the user`,_),s=await emitRecoverableFailedTurn(p,s,{code:`MODEL_CALL_FAILED`,continuationToken:a.continuationToken,details:g,message:f});let v={isError:!0,output:m};return a={...a,outputSchema:void 0},{next:null,session:setHarnessEmissionState(a,s),settledTurn:v}}}let Q=accumulateTurnUsage({previous:getTurnUsageState(a.state),turnId:s.turnId,usage:extractTokenUsageDelta({costUsd:extractGatewayCostUsd(Z.providerMetadata),usage:Z.usage})});a=setTurnUsageState(a,Q);let $;try{$=formatLanguageModelGatewayId(V)}catch{$=void 0}return await setEveAttributes({"$eve.model":$,"$eve.input_tokens":Q.inputTokens,"$eve.output_tokens":Q.outputTokens,"$eve.cache_read_tokens":Q.cacheReadTokens,"$eve.cache_write_tokens":Q.cacheWriteTokens,"$eve.cost_usd":Q.sawCost?Q.costUsd:void 0,"$eve.tool_count":e.tools.size}),handleStepResult({config:e,emit:p,emissionState:s,durableModelPromptMessageCount:L===void 0||L.messages.length===0?R.length:void 0,promptMessages:P,result:Z,runStep,session:a,coordinationTools:Y})}return runStep}function extractTokenUsageDelta(e){let t=e.usage;if(t!==void 0||e.costUsd!==void 0)return{cacheReadTokens:t?.inputTokenDetails?.cacheReadTokens,cacheWriteTokens:t?.inputTokenDetails?.cacheWriteTokens,costUsd:e.costUsd,inputTokens:t?.inputTokens,outputTokens:t?.outputTokens}}function extractGatewayCostUsd(e){let t=readGatewayMetadata(e)?.cost;if(typeof t==`number`&&Number.isFinite(t))return t;if(typeof t==`string`){let e=Number(t);return Number.isFinite(e)?e:void 0}}function readGatewayMetadata(e){let t=e?.gateway;return t&&typeof t==`object`&&!Array.isArray(t)?t:void 0}function buildModelCallFailureDetails(e){let{catalogSummary:t,error:n,errorId:r,modelCallDetails:i,upstreamRejection:a}=e;if(t!==null){let e={errorId:r,message:t.message,name:t.name,semanticErrorId:t.id,...i};return t.hint!==void 0&&(e.hint=t.hint),e}return a===null?{...formatError(n,r),...i}:{errorId:r,message:toErrorMessage(n),name:a.name,...i}}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.durableModelPromptMessageCount,i)},v=t.workflow===!0?readWorkflowContinuationSecurity(_):void 0;if(v!==void 0){let t=await getWorkflowSandboxInterrupt(i,v);if(t!==void 0){if(!isWorkflowTaskInterrupt(t))throw Error(`Unsupported Workflow interrupt kind "${t.payload.kind}".`);return await parkOnWorkflowInterrupt({baseSession:_,emit:n,emissionState:o,interrupt:t,promptMessages:r,responseMessages:g,tools:e.coordinationTools,usedCalls:0})}}let y=extractToolApprovalInputRequests({content:i.content??[],excludedCallIds:d}),b=new Set(y.map(e=>e.action.callId)),x=extractQuestionInputRequests({toolCalls:i.toolCalls,excludedCallIds:new Set([...d,...b]),tools:e.coordinationTools}),S=[...y,...x],C=renderPendingApprovalsSnippet(y),w=g.findIndex(e=>e.role!==`tool`),T=w===-1?g:g.slice(0,w),E=g.slice(T.length),D=[...r,...T,...C===void 0?[]:[{content:C,role:`user`}]],O=getAdvertisedTools({session:_,tools:e.coordinationTools}),k=(i.toolCalls??[]).filter(e=>!d.has(e.toolCallId)).filter(t=>isDeferredHarnessTool(e.coordinationTools.get(t.toolName))).filter(e=>isDeferredHarnessTool(O.get(e.toolName))?!0:(log.warn(`deferred tool call blocked because tool is not advertised`,{callId:e.toolCallId,sessionId:_.sessionId,toolName:e.toolName}),!1)).map(e=>createCoordinationRequestFromToolCall({toolCall:e,tools:O}));if(k.length>0){let e=k.flatMap(e=>e.kind===`runtime-action`?[e.request]:[]),t=k.flatMap(e=>e.kind===`task`?[e.request]:[]);if(S.length===0)return{next:null,session:setHarnessEmissionState(setPendingCoordinationBatch({runtimeActions:e,tasks:t,event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},responseMessages:g,session:{..._,history:[...r]}}),advanceStep(o))};let i=setPendingCoordinationBatch({runtimeActions:e,tasks:t,event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},responseMessages:E,session:{..._,history:D}});return i=appendPendingInputBatch({event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},requests:S,responseMessages:[],session:i}),n&&await n(createInputRequestedEvent({requests:S,sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId})),{next:null,session:setHarnessEmissionState(i,advanceStep(o))}}if(S.length>0){let e=buildResponseAuthorizationTools({authoredTools:t.tools,context:contextStorage.getStore()}),r=appendPendingInputBatch({event:{sequence:o.sequence,stepIndex:o.stepIndex,turnId:o.turnId},requests:S,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:E,session:{..._,history:D}});return n&&(await n(createInputRequestedEvent({requests:S,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 A=resolveInlineAuthorizationInterrupt({messages:[...r,...g],toolResults:i.toolResults});if(A){let{challenges:e,history:r}=A;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 j=g,M=[...r,...j],N={..._,history:M};return(N.outputSchema===void 0||extractFinalOutput(i)===void 0)&&(j.at(-1)?.role===`tool`||h.outcomeEndsResponse||hasDeferredStepInput(N))?(n&&(o=advanceStep(o),N=setHarnessEmissionState(N,o)),{next:a,session:N}):t.mode===`task`?finishTaskTurn({emissionState:o,emit:n,history:r,result:i,schema:N.outputSchema,session:N,stepOutput:p}):finishConversationTurn({emissionState:o,emit:n,history:r,result:i,schema:N.outputSchema,session:N,stepOutput:p})}function isDeferredHarnessTool(e){return e?.runtimeAction!==void 0||e?.workflowId!==void 0&&e.execution!==`background`}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(s=clearTurnClientContextState(s),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(s=clearTurnClientContextState(s),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(!isWorkflowTaskInterrupt(n))throw Error(`Unsupported Workflow interrupt kind "${n.payload.kind}".`);let r=e.childResults??[],i=getWorkflowTaskInterrupts(n);e.emit!==void 0&&r.length>0&&await emitWorkflowActionResults({emit:e.emit,emissionState:e.emissionState,interrupts:i,results:r});let a=getWorkflowContinuationSecurity(e.session),o;try{let t=buildWorkflowHostTools({tools:e.tools}),i=n,s=0;for(;;){o=await continueWorkflowSandboxInterrupt({bridgeRequestLimit:resolveWorkflowSandboxBridgeRequestLimit(e.config.workflowMaxSubagents),continuationSecurity:a,interrupt:i,resolution:r[s]?.output,tools:t});let n=await unwrapWorkflowSandboxResult(o,a);if(n.status!==`interrupted`||!isWorkflowTaskInterrupt(n.interrupt)||s+1>=r.length)break;let c=getWorkflowTaskInterrupts(n.interrupt)[0];if(c===void 0)throw Error(`Workflow continuation contains no pending workflow-task interrupt.`);s++,i=c}}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(!isWorkflowTaskInterrupt(s.interrupt))throw Error(`Unsupported Workflow interrupt kind "${s.interrupt.payload.kind}".`);let n=e.session.history.length,r=l.slice(0,n),i=l.slice(n);return u={...u,history:r},await parkOnWorkflowInterrupt({baseSession:u,emit:e.emit,emissionState:e.emissionState,interrupt:s.interrupt,promptMessages:r,responseMessages:i,tools:e.tools,usedCalls:t.usedCalls})}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}})}async function parkOnWorkflowInterrupt(e){let t=getWorkflowTaskInterrupts(e.interrupt),n=t[0];if(n===void 0)throw Error(`Workflow continuation contains no pending workflow-task interrupt.`);e.emit!==void 0&&await emitWorkflowActionsRequested({emit:e.emit,emissionState:e.emissionState,interrupts:t,tools:e.tools});let r={...e.baseSession,history:[...e.promptMessages]},i=setPendingWorkflowInterrupt({interrupt:n,responseMessages:e.responseMessages,session:r,usedCalls:e.usedCalls});return{next:null,session:setHarnessEmissionState(i,e.emissionState)}}function createNextCompactionConfig(e,t,n){let r={recentWindowSize:e.recentWindowSize,threshold:e.threshold,thresholdPercent:e.thresholdPercent};return n.usage?.inputTokens!==void 0&&t!==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.promptMessages??r,o=e.historyProjector?.({messages:a,state:i.state})??a,s=e.force===!0||shouldCompact(o,i.compaction),c=shouldCanonicalizeMemory(r);if(!s&&!c)return{compacted:!1,messages:r,session:i};let l=await resolveCompactionModel({compactionModelReference:i.agent.compactionModelReference,model:e.model,modelReference:requireSessionModelReference(i),resolveModel:e.resolveModel}),u=i.agent.compactionModelReference??requireSessionModelReference(i),d=mergeProviderSafetyIdentifier(u,l.providerOptions,e.auth);if(t){let e=contextStorage.getStore();e!==void 0&&prepareMemoryCompaction(e,{history:r,state:i.state}),await t(createCompactionRequestedEvent({modelId:formatLanguageModelGatewayId(l.model),sequence:n.sequence,sessionId:i.sessionId,turnId:n.turnId,usageInputTokens:getInputTokenCount(o,i.compaction)}),o)}let f=canonicalizeMemoryRecords(r),p=e.historyProjector?.({messages:f.ordinary,state:i.state})??f.ordinary,m=s?await compactMessages([...p],l.model,i.compaction,d,e.telemetry,buildGatewayAttributionHeaders(l.model,e.runtimeIdentity),e.abortSignal,e.force===!0):[...p];if(r=[...f.memory,...m],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(l.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))}}}export{appendMissingToolResultMessages,createToolLoopHarness};
@@ -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.52.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 n=dirname(t);if(n===t)return;t=n}}function tryResolveDirectBuildLocation(e){let t=dirname(e);for(;;){if(basename(t)===`dist`){let e=tryResolveVerifiedPackageRoot(join(dirname(t),`package.json`));if(e!==void 0)return{packageBuildRoot:t,packageRoot:e}}let e=dirname(t);if(e===t)return;t=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(e){return createRequire(e).resolve(`${EVE_PACKAGE_NAME}/package.json`)}function resolvePackageLocationFromModulePath(e,t=resolveSelfPackageJsonPath){let n=realpathSync.native(e),r=tryResolveDirectBuildLocation(n);if(r!==void 0)return r;let i=findNearestVerifiedPackageRoot(dirname(n));if(i!==void 0&&isSourceCheckout(i))return{packageBuildRoot:null,packageRoot:i};try{let e=tryResolveVerifiedPackageRoot(t(n)),r=e===void 0?void 0:tryCreatePackageLocation(e);if(r!==void 0)return r}catch{}let a=i===void 0?void 0:tryCreatePackageLocation(i);if(a!==void 0)return a;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};
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.52.2`,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 n=dirname(t);if(n===t)return;t=n}}function tryResolveDirectBuildLocation(e){let t=dirname(e);for(;;){if(basename(t)===`dist`){let e=tryResolveVerifiedPackageRoot(join(dirname(t),`package.json`));if(e!==void 0)return{packageBuildRoot:t,packageRoot:e}}let e=dirname(t);if(e===t)return;t=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(e){return createRequire(e).resolve(`${EVE_PACKAGE_NAME}/package.json`)}function resolvePackageLocationFromModulePath(e,t=resolveSelfPackageJsonPath){let n=realpathSync.native(e),r=tryResolveDirectBuildLocation(n);if(r!==void 0)return r;let i=findNearestVerifiedPackageRoot(dirname(n));if(i!==void 0&&isSourceCheckout(i))return{packageBuildRoot:null,packageRoot:i};try{let e=tryResolveVerifiedPackageRoot(t(n)),r=e===void 0?void 0:tryCreatePackageLocation(e);if(r!==void 0)return r}catch{}let a=i===void 0?void 0:tryCreatePackageLocation(i);if(a!==void 0)return a;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};
@@ -1 +1 @@
1
- import{expectFunction,expectObjectRecord,expectOnlyKnownKeys,expectPositiveInteger,expectProviderOptions,expectString,getOptionalStringRecordProperty}from"#internal/authored-module.js";import{isDynamicSentinel}from"#dynamic/definition.js";function normalizeAgentDefinition(e,t){let n=expectObjectRecord(e,t);if(expectOnlyKnownKeys(n,[`build`,`compaction`,`description`,`experimental`,`limits`,`model`,`modelContextWindowTokens`,`modelOptions`,`outputSchema`,`reasoning`],t),n.model===void 0)throw Error(`${t} The "model" field is required.`);let r={model:normalizeAgentModelDefinition(n.model,t)};if(isDynamicSentinel(r.model)&&(n.modelContextWindowTokens!==void 0||n.modelOptions!==void 0))throw Error(`${t} Dynamic model definitions do not support sibling "modelContextWindowTokens" or "modelOptions" fields. Return those overrides from the resolver selection instead.`);return n.description!==void 0&&(r.description=expectString(n.description,t)),n.compaction!==void 0&&(r.compaction=normalizeAgentCompactionDefinition(n.compaction,t)),n.build!==void 0&&(r.build=normalizeAgentBuildDefinition(n.build,t)),n.experimental!==void 0&&(r.experimental=normalizeAgentExperimentalDefinition(n.experimental,t)),n.modelOptions!==void 0&&(r.modelOptions=normalizeAgentModelOptions(n.modelOptions,t)),n.modelContextWindowTokens!==void 0&&(r.modelContextWindowTokens=expectPositiveInteger(n.modelContextWindowTokens,t)),n.outputSchema!==void 0&&(r.outputSchema=n.outputSchema),n.reasoning!==void 0&&(r.reasoning=normalizeAgentReasoningDefinition(n.reasoning,t)),n.limits!==void 0&&(r.limits=normalizeAgentLimitsDefinition(n.limits,t)),r}function normalizeAgentReasoningDefinition(e,t){let n=expectString(e,t);switch(n){case`provider-default`:case`none`:case`minimal`:case`low`:case`medium`:case`high`:case`xhigh`:return n;default:throw Error(t)}}function normalizeAgentModelDefinition(e,t){if(!isDynamicSentinel(e))return e;let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`events`,`kind`],t);let r=expectObjectRecord(n.events,t),i={};for(let[e,n]of Object.entries(r))i[e]=expectFunction(n,t);return{events:i,kind:n.kind}}function expectPositiveIntegerOrFalse(e,t){return e!==!1&&expectPositiveInteger(e,t)}function expectPositiveNumberOrFalse(e,t){if(e===!1)return!1;if(typeof e!=`number`||!Number.isFinite(e)||e<=0)throw Error(t);return e}function normalizeAgentLimitsDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`maxInputTokensPerSession`,`maxOutputTokensPerSession`,`maxTokenCostUsdPerSession`,`sessionTimeoutMs`],t);let r={};return n.sessionTimeoutMs!==void 0&&(r.sessionTimeoutMs=expectPositiveIntegerOrFalse(n.sessionTimeoutMs,t)),n.maxInputTokensPerSession!==void 0&&(r.maxInputTokensPerSession=expectPositiveIntegerOrFalse(n.maxInputTokensPerSession,t)),n.maxOutputTokensPerSession!==void 0&&(r.maxOutputTokensPerSession=expectPositiveIntegerOrFalse(n.maxOutputTokensPerSession,t)),n.maxTokenCostUsdPerSession!==void 0&&(r.maxTokenCostUsdPerSession=expectPositiveNumberOrFalse(n.maxTokenCostUsdPerSession,t)),r}function normalizeAgentBuildDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`externalDependencies`],t);let r={};if(n.externalDependencies!==void 0){if(!Array.isArray(n.externalDependencies))throw Error(t);r.externalDependencies=Object.freeze(n.externalDependencies.map(e=>expectString(e,t)))}return r}function normalizeAgentWorkflowDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`world`],t);let r={};return n.world!==void 0&&(r.world=normalizeAgentWorkflowWorldDefinition(n.world,t)),r}function normalizeAgentWorkflowWorldDefinition(e,t){let n=expectString(e,t);if(n.trim()===``)throw Error(`${t} "experimental.workflow.world" must be a non-empty package name.`);return n}function normalizeAgentExperimentalDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`instrumentationProviders`,`workflow`],t);let r={};if(n.instrumentationProviders!==void 0){if(typeof n.instrumentationProviders!=`boolean`)throw Error(`${t} "experimental.instrumentationProviders" must be a boolean.`);r.instrumentationProviders=n.instrumentationProviders}return n.workflow!==void 0&&(r.workflow=normalizeAgentWorkflowDefinition(n.workflow,t)),r}function normalizeAgentModelOptions(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`providerOptions`],t);let r=n.providerOptions;return r===void 0?{}:{providerOptions:expectProviderOptions(r,t)}}function normalizeAgentCompactionDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`model`,`modelContextWindowTokens`,`thresholdPercent`],t);let r={};if(n.model!==void 0){if(isDynamicSentinel(n.model))throw Error(`${t} "compaction.model" does not support defineDynamic — provide a static model.`);r.model=n.model}if(n.modelContextWindowTokens!==void 0&&(r.modelContextWindowTokens=expectPositiveInteger(n.modelContextWindowTokens,t)),n.thresholdPercent!==void 0){let e=n.thresholdPercent;if(typeof e!=`number`||!Number.isFinite(e)||e<0||e>1)throw Error(t);r.thresholdPercent=e}return r}function normalizeInstructionsDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`content`,`markdown`,`role`],t);let r=Object.hasOwn(n,`content`),i=Object.hasOwn(n,`markdown`);if(r===i)throw Error(`${t} Provide exactly one of "content" or "markdown".`);if(i){if(Object.hasOwn(n,`role`))throw Error(`${t} The deprecated "markdown" shape does not support "role".`);return{content:expectString(n.markdown,t),role:`system`}}let a=n.role===void 0?`system`:expectString(n.role,t);if(a!==`system`&&a!==`user`)throw Error(`${t} Expected "role" to be one of: system, user.`);return{content:expectString(n.content,t),role:a}}function normalizeSkillDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`description`,`files`,`license`,`markdown`,`metadata`],t);let r={description:expectString(n.description,t),markdown:expectString(n.markdown,t)},i=n.license,a=getOptionalStringRecordProperty(n,`metadata`,t);return i!==void 0&&(r.license=expectString(i,t)),a!==void 0&&(r.metadata=a),n.files!==void 0&&(r.files=normalizeSkillFiles(n.files,t)),r}function normalizeSkillFiles(e,t){let n=expectObjectRecord(e,t),r={};for(let[e,i]of Object.entries(n)){if(typeof i==`string`||i instanceof Uint8Array){r[e]=i;continue}throw Error(`${t} Expected skill file "${e}" to be a string or Uint8Array.`)}return r}function normalizeScheduleDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`cron`,`markdown`,`run`],t);let r=expectString(n.cron,t),i=n.markdown!==void 0,a=n.run!==void 0;if(i&&a)throw Error(`${t} Pass either "markdown" (fire-and-forget) or "run" (handler) — not both.`);if(!i&&!a)throw Error(`${t} Must provide either "markdown" (fire-and-forget) or "run" (handler).`);let o={cron:r};return i?o.markdown=expectString(n.markdown,t):o.run=expectFunction(n.run,t),o}export{normalizeAgentDefinition,normalizeInstructionsDefinition,normalizeScheduleDefinition,normalizeSkillDefinition};
1
+ import{expectBoolean,expectFunction,expectObjectRecord,expectOnlyKnownKeys,expectPositiveInteger,expectProviderOptions,expectString,getOptionalStringRecordProperty}from"#internal/authored-module.js";import{isDynamicSentinel}from"#dynamic/definition.js";function normalizeAgentDefinition(e,t){let n=expectObjectRecord(e,t);if(expectOnlyKnownKeys(n,[`build`,`compaction`,`defaultTools`,`description`,`experimental`,`limits`,`model`,`modelContextWindowTokens`,`modelOptions`,`outputSchema`,`reasoning`],t),n.model===void 0)throw Error(`${t} The "model" field is required.`);let r={model:normalizeAgentModelDefinition(n.model,t)};if(isDynamicSentinel(r.model)&&(n.modelContextWindowTokens!==void 0||n.modelOptions!==void 0))throw Error(`${t} Dynamic model definitions do not support sibling "modelContextWindowTokens" or "modelOptions" fields. Return those overrides from the resolver selection instead.`);return n.description!==void 0&&(r.description=expectString(n.description,t)),n.defaultTools!==void 0&&(r.defaultTools=expectBoolean(n.defaultTools,t)),n.compaction!==void 0&&(r.compaction=normalizeAgentCompactionDefinition(n.compaction,t)),n.build!==void 0&&(r.build=normalizeAgentBuildDefinition(n.build,t)),n.experimental!==void 0&&(r.experimental=normalizeAgentExperimentalDefinition(n.experimental,t)),n.modelOptions!==void 0&&(r.modelOptions=normalizeAgentModelOptions(n.modelOptions,t)),n.modelContextWindowTokens!==void 0&&(r.modelContextWindowTokens=expectPositiveInteger(n.modelContextWindowTokens,t)),n.outputSchema!==void 0&&(r.outputSchema=n.outputSchema),n.reasoning!==void 0&&(r.reasoning=normalizeAgentReasoningDefinition(n.reasoning,t)),n.limits!==void 0&&(r.limits=normalizeAgentLimitsDefinition(n.limits,t)),r}function normalizeAgentReasoningDefinition(e,t){let n=expectString(e,t);switch(n){case`provider-default`:case`none`:case`minimal`:case`low`:case`medium`:case`high`:case`xhigh`:return n;default:throw Error(t)}}function normalizeAgentModelDefinition(e,t){if(!isDynamicSentinel(e))return e;let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`events`,`kind`],t);let r=expectObjectRecord(n.events,t),i={};for(let[e,n]of Object.entries(r))i[e]=expectFunction(n,t);return{events:i,kind:n.kind}}function expectPositiveIntegerOrFalse(e,t){return e!==!1&&expectPositiveInteger(e,t)}function expectPositiveNumberOrFalse(e,t){if(e===!1)return!1;if(typeof e!=`number`||!Number.isFinite(e)||e<=0)throw Error(t);return e}function normalizeAgentLimitsDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`maxInputTokensPerSession`,`maxOutputTokensPerSession`,`maxTokenCostUsdPerSession`,`sessionTimeoutMs`],t);let r={};return n.sessionTimeoutMs!==void 0&&(r.sessionTimeoutMs=expectPositiveIntegerOrFalse(n.sessionTimeoutMs,t)),n.maxInputTokensPerSession!==void 0&&(r.maxInputTokensPerSession=expectPositiveIntegerOrFalse(n.maxInputTokensPerSession,t)),n.maxOutputTokensPerSession!==void 0&&(r.maxOutputTokensPerSession=expectPositiveIntegerOrFalse(n.maxOutputTokensPerSession,t)),n.maxTokenCostUsdPerSession!==void 0&&(r.maxTokenCostUsdPerSession=expectPositiveNumberOrFalse(n.maxTokenCostUsdPerSession,t)),r}function normalizeAgentBuildDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`externalDependencies`],t);let r={};if(n.externalDependencies!==void 0){if(!Array.isArray(n.externalDependencies))throw Error(t);r.externalDependencies=Object.freeze(n.externalDependencies.map(e=>expectString(e,t)))}return r}function normalizeAgentWorkflowDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`world`],t);let r={};return n.world!==void 0&&(r.world=normalizeAgentWorkflowWorldDefinition(n.world,t)),r}function normalizeAgentWorkflowWorldDefinition(e,t){let n=expectString(e,t);if(n.trim()===``)throw Error(`${t} "experimental.workflow.world" must be a non-empty package name.`);return n}function normalizeAgentExperimentalDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`instrumentationProviders`,`workflow`],t);let r={};if(n.instrumentationProviders!==void 0){if(typeof n.instrumentationProviders!=`boolean`)throw Error(`${t} "experimental.instrumentationProviders" must be a boolean.`);r.instrumentationProviders=n.instrumentationProviders}return n.workflow!==void 0&&(r.workflow=normalizeAgentWorkflowDefinition(n.workflow,t)),r}function normalizeAgentModelOptions(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`providerOptions`],t);let r=n.providerOptions;return r===void 0?{}:{providerOptions:expectProviderOptions(r,t)}}function normalizeAgentCompactionDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`model`,`modelContextWindowTokens`,`thresholdPercent`],t);let r={};if(n.model!==void 0){if(isDynamicSentinel(n.model))throw Error(`${t} "compaction.model" does not support defineDynamic — provide a static model.`);r.model=n.model}if(n.modelContextWindowTokens!==void 0&&(r.modelContextWindowTokens=expectPositiveInteger(n.modelContextWindowTokens,t)),n.thresholdPercent!==void 0){let e=n.thresholdPercent;if(typeof e!=`number`||!Number.isFinite(e)||e<0||e>1)throw Error(t);r.thresholdPercent=e}return r}function normalizeInstructionsDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`content`,`markdown`,`role`],t);let r=Object.hasOwn(n,`content`),i=Object.hasOwn(n,`markdown`);if(r===i)throw Error(`${t} Provide exactly one of "content" or "markdown".`);if(i){if(Object.hasOwn(n,`role`))throw Error(`${t} The deprecated "markdown" shape does not support "role".`);return{content:expectString(n.markdown,t),role:`system`}}let a=n.role===void 0?`system`:expectString(n.role,t);if(a!==`system`&&a!==`user`)throw Error(`${t} Expected "role" to be one of: system, user.`);return{content:expectString(n.content,t),role:a}}function normalizeSkillDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`description`,`files`,`license`,`markdown`,`metadata`],t);let r={description:expectString(n.description,t),markdown:expectString(n.markdown,t)},i=n.license,a=getOptionalStringRecordProperty(n,`metadata`,t);return i!==void 0&&(r.license=expectString(i,t)),a!==void 0&&(r.metadata=a),n.files!==void 0&&(r.files=normalizeSkillFiles(n.files,t)),r}function normalizeSkillFiles(e,t){let n=expectObjectRecord(e,t),r={};for(let[e,i]of Object.entries(n)){if(typeof i==`string`||i instanceof Uint8Array){r[e]=i;continue}throw Error(`${t} Expected skill file "${e}" to be a string or Uint8Array.`)}return r}function normalizeScheduleDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`cron`,`markdown`,`run`],t);let r=expectString(n.cron,t),i=n.markdown!==void 0,a=n.run!==void 0;if(i&&a)throw Error(`${t} Pass either "markdown" (fire-and-forget) or "run" (handler) — not both.`);if(!i&&!a)throw Error(`${t} Must provide either "markdown" (fire-and-forget) or "run" (handler).`);let o={cron:r};return i?o.markdown=expectString(n.markdown,t):o.run=expectFunction(n.run,t),o}export{normalizeAgentDefinition,normalizeInstructionsDefinition,normalizeScheduleDefinition,normalizeSkillDefinition};
@@ -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{readWorkflowFunctionId}from"#internal/workflow/reference.js";import{assertResolverOnlyDynamicSentinel,isDynamicSentinel}from"#dynamic/definition.js";import{isWorkflowToolDefinition}from"#tools/workflow-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";import{readToolBehavior}from"#tools/behavior.js";function normalizeToolDefinition(e,t){if(isDynamicSentinel(e))return assertResolverOnlyDynamicSentinel(e,t),{kind:`dynamic-tool`,eventNames:Object.keys(e.events),rebindMissingCallbacks:shouldRebindDynamicCallbacks(e)};if(isDisabledToolSentinel(e))return{kind:`disabled`};if(isExperimentalWorkflowToolDefinition(e)){let n=expectObjectRecord(e,t);return expectOnlyKnownKeys(n,[`kind`,`maxSubagents`],t),{kind:`workflow-tool`,maxSubagents:n.maxSubagents===void 0?void 0:expectPositiveInteger(n.maxSubagents,t)}}if(isWebSearchToolDefinition(e)){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`kind`,`provider`],t);let r=expectString(n.provider,t);if(r!==`exa`&&r!==`parallel`)throw Error(`${t} Expected "provider" to be one of: exa, parallel.`);return{kind:`web-search-tool`,provider:r}}let n=expectObjectRecord(e,t),r=readWorkflowFunctionId(n.execute);if(isWorkflowToolDefinition(e)){if(r===void 0)throw Error(`${t} defineWorkflowTool() requires a compiled workflow executor. Start execute with "use workflow" and export defineWorkflowTool() as the default export of a static tool module.`)}else if(r!==void 0)throw Error(`${t} Workflow executors require defineWorkflowTool() from "eve/tools". Replace defineTool() or the bare tool object with defineWorkflowTool().`);expectOnlyKnownKeys(n,[`auth`,`description`,`execute`,`execution`,`inputSchema`,`approval`,`outputSchema`,`toModelOutput`],t);let i=n.inputSchema===void 0?null:serializeInputSchema(n.inputSchema),a=serializeOutputSchema(n.outputSchema),o=readToolBehavior(e),s=n.execute!==void 0;!s&&o?.handling?.kind!==`dispatch`&&o?.handling?.kind!==`request-input`&&expectFunction(n.execute,t);let c={description:expectString(n.description,t),hasApproval:n.approval!==void 0,hasExecute:s,hasModelOutputProjection:n.toModelOutput!==void 0,inputSchema:i};if(o!==void 0&&(c.behavior=o),s&&(c.execute=expectFunction(n.execute,t)),n.execution!==void 0){if(!s)throw Error(`${t} Execute-less native tools cannot use background execution.`);let e=expectString(n.execution,t);if(e!==`background`)throw Error(`${t} Expected "execution" to be "background".`);c.execution=e}if(a!==void 0&&(c.outputSchema=a),n.approval!==void 0&&normalizeApproval(n.approval,t),n.toModelOutput!==void 0&&expectFunction(n.toModelOutput,t),n.auth!==void 0){let e=expectObjectRecord(n.auth,t);expectFunction(e.getToken,t)}return{kind:`tool`,definition:c}}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{readWorkflowFunctionId}from"#internal/workflow/reference.js";import{assertResolverOnlyDynamicSentinel,isDynamicSentinel}from"#dynamic/definition.js";import{isWorkflowToolDefinition}from"#tools/workflow-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";import{readToolBehavior}from"#tools/behavior.js";function normalizeToolDefinition(e,t){if(isDynamicSentinel(e))return assertResolverOnlyDynamicSentinel(e,t),{kind:`dynamic-tool`,eventNames:Object.keys(e.events),rebindMissingCallbacks:shouldRebindDynamicCallbacks(e)};if(isDisabledToolSentinel(e))return{kind:`disabled`};if(isExperimentalWorkflowToolDefinition(e)){let n=expectObjectRecord(e,t);return expectOnlyKnownKeys(n,[`kind`,`maxSubagents`],t),{kind:`workflow-tool`,maxSubagents:n.maxSubagents===void 0?void 0:expectPositiveInteger(n.maxSubagents,t)}}if(isWebSearchToolDefinition(e)){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`kind`,`provider`],t);let r=expectString(n.provider,t);if(r!==`exa`&&r!==`parallel`)throw Error(`${t} Expected "provider" to be one of: exa, parallel.`);return{kind:`web-search-tool`,provider:r}}let n=expectObjectRecord(e,t),r=readWorkflowFunctionId(n.execute);if(isWorkflowToolDefinition(e)){if(r===void 0)throw Error(`${t} defineWorkflowTool() requires a compiled workflow executor. Start execute with "use workflow" and export defineWorkflowTool() as the default export of a static tool module.`)}else if(r!==void 0)throw Error(`${t} Workflow executors require defineWorkflowTool() from "eve/tools". Replace defineTool() or the bare tool object with defineWorkflowTool().`);expectOnlyKnownKeys(n,[`auth`,`description`,`execute`,`execution`,`inputSchema`,`approval`,`approvalKey`,`outputSchema`,`toModelOutput`],t);let i=n.inputSchema===void 0?null:serializeInputSchema(n.inputSchema),a=serializeOutputSchema(n.outputSchema),o=readToolBehavior(e),s=n.execute!==void 0;!s&&o?.handling?.kind!==`dispatch`&&o?.handling?.kind!==`request-input`&&expectFunction(n.execute,t);let c={description:expectString(n.description,t),hasApproval:n.approval!==void 0,hasExecute:s,hasModelOutputProjection:n.toModelOutput!==void 0,inputSchema:i};if(o!==void 0&&(c.behavior=o),s&&(c.execute=expectFunction(n.execute,t)),n.execution!==void 0){if(!s)throw Error(`${t} Execute-less native tools cannot use background execution.`);let e=expectString(n.execution,t);if(e!==`background`)throw Error(`${t} Expected "execution" to be "background".`);c.execution=e}if(a!==void 0&&(c.outputSchema=a),n.approval!==void 0&&normalizeApproval(n.approval,t),n.approvalKey!==void 0&&expectFunction(n.approvalKey,t),n.toModelOutput!==void 0&&expectFunction(n.toModelOutput,t),n.auth!==void 0){let e=expectObjectRecord(n.auth,t);expectFunction(e.getToken,t)}return{kind:`tool`,definition:c}}export{normalizeToolDefinition};
@@ -12,18 +12,31 @@ interface NodeEsmCompatBannerOptions {
12
12
  /** Whether to expose a CommonJS `require` shim alongside the path globals. */
13
13
  readonly includeRequire?: boolean;
14
14
  }
15
+ interface ParsedNode {
16
+ readonly body?: ParsedNode | readonly ParsedNode[];
17
+ readonly type: string;
18
+ readonly name?: string;
19
+ readonly declarations?: readonly {
20
+ readonly id: ParsedNode;
21
+ }[];
22
+ }
23
+ interface ParsedProgram {
24
+ readonly body: readonly ParsedNode[];
25
+ }
15
26
  /**
16
- * Builds the ESM CommonJS-compatibility banner appropriate for a single
17
- * bundle chunk's code. Identifiers the chunk already binds at the top
18
- * level (e.g. `const __dirname = ...` emitted by an inlined module) are
19
- * skipped so the prepended banner never re-declares them.
27
+ * Builds the ESM CommonJS-compatibility banner appropriate for a parsed
28
+ * bundle chunk. Identifiers the chunk already binds in a top-level variable
29
+ * declaration are skipped so the prepended banner never re-declares them.
20
30
  *
21
31
  * Returns an empty string when the chunk already provides every binding.
22
32
  */
23
- export declare function buildNodeEsmCompatBanner(code: string, options?: NodeEsmCompatBannerOptions): string;
33
+ export declare function buildNodeEsmCompatBanner(program: ParsedProgram, options?: NodeEsmCompatBannerOptions): string;
34
+ interface BannerPluginContext {
35
+ parse(code: string): ParsedProgram;
36
+ }
24
37
  interface BannerPlugin {
25
38
  readonly name: string;
26
- renderChunk(code: string, chunk?: {
39
+ renderChunk(this: BannerPluginContext, code: string, chunk?: {
27
40
  readonly fileName?: string;
28
41
  }): {
29
42
  code: string;