@x-otto/agent 0.1.0-alpha.27 → 0.1.0-alpha.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -907,7 +907,8 @@ type AgentEvent = {
907
907
  type: 'compaction.reactive';
908
908
  turnIndex: number;
909
909
  messagesBefore: number;
910
- messagesAfter: number;
910
+ messagesAfter: number; /** 压缩后 token 估算(见 `ReactiveCompactOutcome.tokensAfter`)。 */
911
+ tokensAfter?: number;
911
912
  } | {
912
913
  type: 'image.degradation';
913
914
  turnIndex: number;
@@ -1220,6 +1221,17 @@ interface AgentConfig {
1220
1221
  */
1221
1222
  wireSnapshotStore?: WireSnapshotStore;
1222
1223
  }
1224
+ /**
1225
+ * reactiveCompact 的返回:压缩后的消息 + 压缩后 token 估算。
1226
+ *
1227
+ * 为什么要带 token:反应式压缩(413/上下文溢出)此前只回报消息数组,`compaction.reactive`
1228
+ * 事件因此只有条数,宿主在压缩点拿不到新的上下文占用 → 状态栏先归零再等下一条 usage 回填(假跳变)。
1229
+ * `tokensAfter` 由 memory 层用与触发判定同一估算器算出,`undefined` = 未提供(消费端保持既有行为)。
1230
+ */
1231
+ interface ReactiveCompactOutcome {
1232
+ messages: AgentMessage$1[];
1233
+ tokensAfter?: number;
1234
+ }
1223
1235
  interface AgentRunContext {
1224
1236
  model: Model;
1225
1237
  /** 会话内稳定的 system 前缀(进 prompt cache 前缀)。 */
@@ -1235,7 +1247,7 @@ interface AgentRunContext {
1235
1247
  temperature?: number;
1236
1248
  convertToLLM?: (messages: AgentMessage$1[]) => Message[] | Promise<Message[]>;
1237
1249
  transformContext?: (messages: AgentMessage$1[], signal?: AbortSignal) => Promise<AgentMessage$1[]>;
1238
- reactiveCompact?: (messages: AgentMessage$1[], signal?: AbortSignal) => Promise<AgentMessage$1[] | null>;
1250
+ reactiveCompact?: (messages: AgentMessage$1[], signal?: AbortSignal) => Promise<ReactiveCompactOutcome | null>;
1239
1251
  /**
1240
1252
  * RFC-181 D3:图像委托描述端口(宿主 VisionDelegateService 实现)。透传给
1241
1253
  * work-loop 的视觉能力门控——见 `./vision-gate.ts` 完整设计说明。
@@ -1588,7 +1600,12 @@ interface PersistencePort {
1588
1600
  * 自动压缩(keep-recent)写回——把摘要 + 保留的近期消息记入会话树
1589
1601
  * (replacement_history 模型),使压缩成为持久事件:重启原样恢复、不每轮重算。可选(旧适配器可不实现)。
1590
1602
  */
1591
- recordCompaction?(summary: string, replacement: AgentMessage[]): void;
1603
+ /**
1604
+ * `tokensAfter`:上下文收缩后视图的 token 估算(稳定前缀 + body,由 memory 层算出并透传)。
1605
+ * 实现侧据此把 token 数带进 `compaction.end` 会话事件——宿主/UI 在压缩点即可落到正确占用,
1606
+ * 不必先归零再等下一次 usage 快照。undefined = 旧 memory 实现未提供。
1607
+ */
1608
+ recordCompaction?(summary: string, replacement: AgentMessage[], tokensAfter?: number): void;
1592
1609
  /**
1593
1610
  * 裁剪(prune)发生时的 UI 通知——无持久化语义,仅供 AgentSession publish memory.pruned 会话事件
1594
1611
  * 驱动「裁剪已启用」提示。与 recordCompaction 同为「agent 包调、runtime 实现并 publish」的 facade 桥。
@@ -1657,8 +1674,27 @@ interface MemoryPort {
1657
1674
  messages: Message[];
1658
1675
  compacted: boolean;
1659
1676
  summary?: string;
1660
- replacement?: Message[];
1677
+ replacement?: Message[]; /** 收缩后 token 估算(稳定前缀 + messages body;未压缩/旧实现时 undefined)。 */
1678
+ tokensAfter?: number;
1661
1679
  }>;
1680
+ /**
1681
+ * 压缩预算快照(有效窗口 / 软触发线 / 硬顶)——**只读、仅供宿主展示**上下文用量与
1682
+ * "离自动压缩还有多远";压缩决策仍走 `needsCompaction`(三策略 OR),不读本方法的返回值。
1683
+ * 缺省不实现 = 宿主隐藏该视图。
1684
+ */
1685
+ getCompactionBudget?(): {
1686
+ window: number;
1687
+ triggerTokens: number;
1688
+ hardCeiling: number;
1689
+ };
1690
+ /**
1691
+ * 单段文本的 token 估算(与压缩/裁剪判定同一估算器)。
1692
+ * 为什么经端口而不是宿主自算:runtime 刻意不依赖 `@x-otto/memory`(避免跨包耦合/循环依赖),
1693
+ * 估算口径必须与引擎判定保持单一真源。
1694
+ */
1695
+ measureText?(text: string): number;
1696
+ /** 消息数组 token 估算(与判定同 per-message 口径:角色开销 + 图片折算)。 */
1697
+ measureMessages?(messages: readonly Message[]): number;
1662
1698
  process(messages: readonly Message[], sessionId?: string, signal?: AbortSignal, options?: {
1663
1699
  force?: boolean;
1664
1700
  skipPrune?: boolean;
@@ -1669,6 +1705,14 @@ interface MemoryPort {
1669
1705
  summary?: string;
1670
1706
  replacement?: Message[];
1671
1707
  archivePath?: string;
1708
+ /**
1709
+ * 上下文收缩后视图的 token 估算 = 稳定前缀(system prompt / 工具 schema / memory 注入)+
1710
+ * messages body——与宿主基于 API usage 的上下文占用条同量纲,供 `compaction.end` /
1711
+ * `compaction.reactive.notice` 事件透出,使宿主在压缩点即可拿到新的上下文占用
1712
+ * (不再依赖「归零 + 等下一次 usage 回填」)。
1713
+ * 仅在实际收缩时提供;undefined = 未收缩或旧实现。
1714
+ */
1715
+ tokensAfter?: number;
1672
1716
  pruneMetrics?: {
1673
1717
  prunedCount: number;
1674
1718
  tokensSaved: number;
@@ -1776,6 +1820,7 @@ interface MemoryTransformOptions {
1776
1820
  sink?: {
1777
1821
  compacted: boolean;
1778
1822
  replacement?: AgentMessage[];
1823
+ tokensAfter?: number;
1779
1824
  };
1780
1825
  }
1781
1826
  declare function applyMemoryTransform(memory: MemoryPort | undefined, messages: AgentMessage[], sessionId: string, signal?: AbortSignal, opts?: MemoryTransformOptions): Promise<AgentMessage[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/engine-nodes.ts","../src/ports.ts","../src/trace.ts","../src/wire-snapshot.ts","../src/debug-port.ts","../src/tool-executor.ts","../src/vision-gate.ts","../src/tool-result-clamp.ts","../src/work-loop-stream-error.ts","../src/types.ts","../src/agent.ts","../src/agent-profile.ts","../src/lifecycle-async-tool.ts","../src/pipeline.ts","../src/context-pipeline.ts","../src/memory-lifecycle.ts","../src/trace-views.ts","../src/errors.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/engine-nodes.ts","../src/ports.ts","../src/trace.ts","../src/wire-snapshot.ts","../src/debug-port.ts","../src/tool-executor.ts","../src/vision-gate.ts","../src/tool-result-clamp.ts","../src/work-loop-stream-error.ts","../src/types.ts","../src/agent.ts","../src/agent-profile.ts","../src/lifecycle-async-tool.ts","../src/pipeline.ts","../src/context-pipeline.ts","../src/memory-lifecycle.ts","../src/trace-views.ts","../src/errors.ts"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import{AgentError as e,PROVIDER_IMAGE_INLINE_MAX_BYTES as t,TypedEventEmitter as n,createLogger as r}from"@x-otto/shared";import{randomUUID as i}from"node:crypto";import{CONVERSATION_SUMMARY_PREFIX as a,extractToolResultText as o,getToolCallsByAssistantMessage as s,hasToolCalls as c,modelSupportsImages as l}from"@x-otto/interchange";import{classifyAuthErrorType as u,classifyStreamError as d,extractAbortKind as f,extractAnthropicRateLimit as p,extractRetryAfterMs as m,hasTrailingInvokeXml as h,isAuthError as g,isNetworkDisconnectError as _}from"@x-otto/provider";var v=class extends e{constructor(e){super(e??`Agent aborted`,{code:`AGENT_ABORTED`}),this.name=`AbortError`}},y=class extends e{maxTurns;partialText;extensions;constructor(e,t=``,n=0){let r=e*(1+n);super(n>0?`Max tool turns exceeded: ${r} (base ${e} × ${1+n} extensions)`:`Max tool turns exceeded: ${e}`,{code:`AGENT_MAX_TOOL_TURNS`}),this.name=`MaxToolTurnsError`,this.maxTurns=e,this.partialText=t,this.extensions=n}get effectiveMaxTurns(){return this.maxTurns*(1+this.extensions)}},b=class extends e{dimension;used;budget;partialText;constructor(e,t,n,r=``){super(e===`tokens`?`Prompt output-token budget exceeded: ${t} / ${n} tokens`:`Prompt wall-clock budget exceeded: ${Math.round(t/1e3)}s / ${Math.round(n/1e3)}s`,{code:`AGENT_PROMPT_BUDGET_EXCEEDED`}),this.name=`PromptBudgetExceededError`,this.dimension=e,this.used=t,this.budget=n,this.partialText=r}},x=class extends e{liveCount;projectedCount;constructor(e,t){super(`Messages consistency violation: work memory has ${e} messages but session tree projection has ${t} (concurrent write or tree mutation detected)`,{code:`AGENT_MESSAGES_CONSISTENCY`}),this.name=`MessagesConsistencyError`,this.liveCount=e,this.projectedCount=t}};const S={now:()=>Date.now()},C={random:()=>Math.random()},w={uuid:()=>i()},T=(e,t)=>new Promise(n=>{if(t?.aborted){n();return}let r=()=>{clearTimeout(i),n()},i=setTimeout(()=>{t?.removeEventListener(`abort`,r),n()},e);t?.addEventListener(`abort`,r,{once:!0})}),E=[{id:`loop.start`,category:`agent_work_loop`,label:`Loop Start`,pausable:!0,traceable:!0},{id:`model.before`,category:`agent_work_loop`,label:`Model Before`,pausable:!0},{id:`model.after`,category:`agent_work_loop`,label:`Model After`,pausable:!0},{id:`tool.before`,category:`agent_work_loop`,label:`Tool Before`,pausable:!0},{id:`tool.after`,category:`agent_work_loop`,label:`Tool After`,pausable:!0},{id:`loop.end`,category:`agent_work_loop`,label:`Loop End`,pausable:!0,traceable:!0},{id:`loop.cleanup`,category:`agent_work_loop`,label:`Loop Cleanup`,pausable:!0},{id:`agent.aborted`,category:`agent_work_loop`,label:`Agent Aborted`,pausable:!0,traceable:!0},{id:`agent.error`,category:`agent_work_loop`,label:`Agent Error`,pausable:!0,traceable:!0},{id:`agent.done`,category:`agent_work_loop`,label:`Agent Done`,pausable:!0,traceable:!0},{id:`steering.check`,category:`work_loop_injection`,label:`Steering Check`,pausable:!0},{id:`follow.up.check`,category:`work_loop_injection`,label:`Follow Up Check`,pausable:!0},{id:`context.transform`,category:`work_loop_injection`,label:`Context Transform`,pausable:!0},{id:`tool.resolve`,category:`tool_executor`,label:`Tool Resolve`,pausable:!0},{id:`tool.validate`,category:`tool_executor`,label:`Tool Validate`,pausable:!0},{id:`tool.hook.before`,category:`tool_executor`,label:`Tool Hook Before`,pausable:!0},{id:`tool.hook.after`,category:`tool_executor`,label:`Tool Hook After`,pausable:!0},{id:`prompt.before`,category:`session_prompt_lifecycle`,label:`Prompt Before`,pausable:!0,traceable:!0},{id:`prompt.after`,category:`session_prompt_lifecycle`,label:`Prompt After`,pausable:!0,traceable:!0},{id:`context.build`,category:`session_prompt_lifecycle`,label:`Context Build`,pausable:!0,traceable:!0},{id:`messages.persist`,category:`session_prompt_lifecycle`,label:`Messages Persist`,pausable:!0,traceable:!0},{id:`memory.prune`,category:`work_loop_injection`,label:`Memory Prune`,traceable:!0},{id:`memory.archive`,category:`session_prompt_lifecycle`,label:`Memory Archive`,traceable:!0},{id:`stream.ttft`,category:`agent_work_loop`,label:`Stream First Token Latency`,traceable:!0},{id:`chat.message.before`,category:`lifecycle_hook`,label:`Chat Message Before`,hook:`interceptor`},{id:`chat.message.after`,category:`lifecycle_hook`,label:`Chat Message After`,hook:`interceptor`},{id:`chat.params`,category:`lifecycle_hook`,label:`Chat Params`,hook:`interceptor`},{id:`system.prompt.transform`,category:`lifecycle_hook`,label:`System Prompt Transform`,hook:`interceptor`},{id:`messages.transform`,category:`lifecycle_hook`,label:`Messages Transform`,hook:`interceptor`},{id:`tool.execute.before`,category:`lifecycle_hook`,label:`Tool Execute Before`,hook:`interceptor`},{id:`tool.execute.after`,category:`lifecycle_hook`,label:`Tool Execute After`,hook:`interceptor`},{id:`memory.prune.before`,category:`lifecycle_hook`,label:`Memory Prune Before`,hook:`interceptor`},{id:`session.idle`,category:`lifecycle_hook`,label:`Session Idle`,hook:`observer`},{id:`session.error`,category:`lifecycle_hook`,label:`Session Error`,hook:`observer`},{id:`status.change`,category:`turn_observable`,label:`Status Change`,observable:!0},{id:`turn.start`,category:`turn_observable`,label:`Turn Start`,observable:!0,traceable:!0},{id:`turn.end`,category:`turn_observable`,label:`Turn End`,observable:!0,traceable:!0},{id:`stream.event`,category:`turn_observable`,label:`Stream Event`,observable:!0,traceable:!0},{id:`tool.call.start`,category:`turn_observable`,label:`Tool Call Start`,observable:!0,traceable:!0},{id:`tool.call.end`,category:`turn_observable`,label:`Tool Call End`,observable:!0,traceable:!0},{id:`steering.injected`,category:`turn_observable`,label:`Steering Injected`,observable:!0},{id:`follow.up.start`,category:`turn_observable`,label:`Follow Up Start`,observable:!0},{id:`max.turns`,category:`turn_observable`,label:`Max Tool Turns Reached`,observable:!0,traceable:!0},{id:`progress.stall`,category:`turn_observable`,label:`Progress Stall Detected`,observable:!0,traceable:!0},{id:`turn.idle`,category:`turn_observable`,label:`Idle Turn Detected`,observable:!0,traceable:!0},{id:`tool.call.mismatch`,category:`turn_observable`,label:`Tool Call Protocol Mismatch`,observable:!0,traceable:!0},{id:`prompt.budget`,category:`turn_observable`,label:`Prompt Budget Exceeded`,observable:!0,traceable:!0},{id:`compaction.reactive`,category:`turn_observable`,label:`Reactive Compaction`,observable:!0,traceable:!0},{id:`image.cap`,category:`turn_observable`,label:`Image Cap`,traceable:!0},{id:`image.vision-gate`,category:`turn_observable`,label:`Vision Capability Gate`,traceable:!0},{id:`image.vision-delegate`,category:`turn_observable`,label:`Vision Delegation Result`,observable:!0,traceable:!0},{id:`image.degradation`,category:`turn_observable`,label:`Image Degradation`,observable:!0,traceable:!0},{id:`process.memory.sample`,category:`turn_observable`,label:`Process Memory Sample`,traceable:!0},{id:`stream.retry`,category:`turn_observable`,label:`Stream Retry`,observable:!0,traceable:!0},{id:`stream.retry.accelerated`,category:`turn_observable`,label:`Stream Retry Accelerated`,observable:!0,traceable:!0},{id:`turn.truncated`,category:`turn_observable`,label:`Turn Truncated`,observable:!0,traceable:!0},{id:`rate.limit.exhausted`,category:`turn_observable`,label:`Rate Limit Exhausted`,observable:!0,traceable:!0},{id:`stream.auth-failed`,category:`turn_observable`,label:`Stream Auth Failed`,observable:!0,traceable:!0},{id:`error`,category:`turn_observable`,label:`Error`,observable:!0},{id:`abort`,category:`turn_observable`,label:`Abort`,observable:!0},{id:`lifecycle.tool.completed`,category:`turn_observable`,label:`Lifecycle Tool Completed`,observable:!0},{id:`lifecycle.tool.completed.crossBoundary`,category:`turn_observable`,label:`Lifecycle Tool Completed (Cross Prompt Boundary)`,observable:!0},{id:`lifecycle.tool.timeout`,category:`turn_observable`,label:`Lifecycle Tool Timeout`,observable:!0,traceable:!0},{id:`wire.snapshot.capture`,category:`turn_observable`,label:`Wire Snapshot Capture`,traceable:!0}],D=E;function O(e){return D.filter(t=>t[e]!==void 0&&t[e]!==!1)}const ee=D.filter(e=>e.hook!==void 0).map(e=>e.id),k=D.filter(e=>e.observable===!0).map(e=>e.id),te=D.filter(e=>e.traceable===!0).map(e=>e.id),ne=D.filter(e=>e.pausable===!0).map(e=>({point:e.id,name:e.label,category:e.category})),A={maxToolTurns:120,traceResultMaxChars:512,maxToolResultChars:1e5,minToolResultChars:2e3,promptToolResultFraction:.5,maxToolConcurrency:10,progressDistinctRatio:.5,progressSignatureCap:512,progressSignatureArgsMaxChars:1024,stallWindowTurns:8,stallRepeatThreshold:4,stallEmptyTurnThreshold:3,idleTurnMaxTextChars:400};function j(e,t){let n=Math.max(0,e.length-t);return e.slice(n).map((e,t)=>{let r=typeof e.content==`string`?e.content:JSON.stringify(e.content);return{index:n+t,role:e.role,preview:r.slice(0,200),toolName:e.role===`tool_result`?e.toolName:void 0,tokenEstimate:Math.ceil(r.length/4)}})}function M(e){return{turn:0,frameDepth:0,messagesCount:0,tokenUsage:{input:0,output:0},metadata:{},systemPrompt:``,messagesSummary:[],llmParams:{},...e}}function N(e){return(t,n,r={})=>{let i=e.getLlmParams?.(),a=r.summarySource??e.getMessagesForSummary?.();return e.debug?.pause(M({turn:e.getTurn(),point:t,frameDepth:n,messagesCount:r.messagesCount??e.getMessagesCount(),lastToolName:r.lastToolName,tokenUsage:e.getTokenUsage()??{input:0,output:0},metadata:r.metadata??{},...i?{systemPrompt:i.systemPrompt??``,llmParams:{temperature:i.temperature,maxTokens:i.maxTokens,thinkingLevel:i.thinkingLevel}}:{},...a?{messagesSummary:j(a,10)}:{}}))}}const P=[{key:`systemPrompt`,apply:(e,t)=>{e.systemPrompt!==void 0&&t.setSystemPrompt?.(e.systemPrompt)}},{key:`removeMessageIndices`,apply:(e,t)=>{if(t.messages&&e.removeMessageIndices?.length){let n=[...e.removeMessageIndices].sort((e,t)=>t-e);for(let e of n)e>=0&&e<t.messages.length&&t.messages.splice(e,1)}}},{key:`injectMessages`,apply:(e,t)=>{if(t.messages&&e.injectMessages?.length){let n=t.now??S.now;for(let r of e.injectMessages)r.role===`user`&&t.messages.push({role:`user`,content:r.content,timestamp:n()})}}},{key:`llmParams`,apply:(e,t)=>{e.llmParams&&(e.llmParams.temperature!==void 0&&t.setTemperature?.(e.llmParams.temperature),e.llmParams.maxTokens!==void 0&&t.setMaxTokens?.(e.llmParams.maxTokens),e.llmParams.thinkingLevel!==void 0&&t.setThinkingLevel?.(e.llmParams.thinkingLevel))}}];function F(e,t,n=P){if(e?.command.type===`stop`)throw new v(`Stopped by debugger`);let r=e?.payload;if(!(!r||!t))for(let e of n)r[e.key]!==void 0&&e.apply(r,t)}function I(){return{writeToolSuccesses:0,signatures:new Map,totalCalls:0}}function L(e){e.writeToolSuccesses=0,e.signatures.clear(),e.totalCalls=0}function R(e,t){let n;if(typeof t==`object`&&t&&!Array.isArray(t)){let e=t,r=Object.keys(e).sort(),i=[];for(let t of r){let n;try{n=JSON.stringify(e[t])??`undefined`}catch{n=`[unserializable]`}i.push(`${t}:${n}`)}n=i.join(`,`)}else try{n=JSON.stringify(t)??`undefined`}catch{n=`[unserializable]`}let r=A.progressSignatureArgsMaxChars;return`${e}(${n.length>r?n.slice(0,r):n})`}function z(e,t){if(e.totalCalls++,!t.readonly&&!t.isError&&e.writeToolSuccesses++,e.signatures.size<A.progressSignatureCap){let n=R(t.toolName,t.args);e.signatures.set(n,(e.signatures.get(n)??0)+1)}}function B(e){return e.writeToolSuccesses>0?!0:e.totalCalls===0?!1:e.signatures.size/e.totalCalls>=A.progressDistinctRatio}const V=t;function H(e){return e.replace(/\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)/g,``).replace(/\x1b\[[\d;?]*[ -/]*[@-~]/g,``).replace(/\x1b\[[\d;?]*(?![\d;@-~])/g,``).replace(/(?:3[89]|4[0-9]);2;\d{1,3};\d{1,3};\d{1,3}m/g,``).replace(/(?:3[89]|4[0-9]);5;\d{1,3}m/g,``).replace(/(?:^|(?<=[\s;m]))(?:\d{1,3}(?:;\d{1,3})+|;\d{1,3})m/gi,``)}function U(e){return e.map(e=>e.type===`text`&&typeof e.text==`string`?{...e,text:H(e.text)}:e)}function W(e,t){return e.map(e=>{if(e.type!==`text`)return e;let n=H(e.text);if(n.length<=t)return{...e,text:n};let r=Math.floor(t*.7),i=t-r,a=n.length-t;return{...e,text:`${n.slice(0,r)}\n\n[… ${a} chars truncated (tool result exceeded ${t} char budget) …]\n\n${n.slice(n.length-i)}`}})}const re=2e3,ie=4e3;function G(e){let t=0;for(let n of e)n.type===`text`?t+=n.text.length:t+=ie;return t}var ae=class{consumed=0;constructor(e,t){this.totalChars=e,this.minPerTool=t}budgetFor(e){if(this.totalChars===void 0)return e;let t=Math.max(0,this.totalChars-this.consumed),n=Math.min(this.minPerTool,e);return Math.max(n,Math.min(e,t))}charge(e){this.consumed+=Math.max(0,e)}get consumedChars(){return this.consumed}};function oe(e,t){if(!(!e||e<=0))return Math.max(0,Math.floor(e*t*4))}async function se(e,t,n,r){if(!e.some(e=>e.type===`text`&&e.text.length>t||e.type===`image`&&e.source.length*.75>V))return W(e,t);let i=0,a=0,o=e.filter(e=>e.type===`image`).length,s=[];for(let c of e){if(c.type===`image`){let e=c.source.length*.75;if(e<=V){s.push(c);continue}if(!r){s.push({type:`text`,text:`[image: ${Math.round(e)} bytes — omitted, no spill port configured]`});continue}let t=o>1?`${n}_img${a}`:`${n}_img`;a++;let i=await r(t,c.source);if(!i){s.push({type:`text`,text:`[image: ${Math.round(e)} bytes — omitted, no spill port configured]`});continue}s.push({type:`text`,text:`[image: ${Math.round(e)} bytes, stored to ${i}, use read tool to inspect if needed]`});continue}if(c.type!==`text`||c.text.length<=t){s.push(c.type===`text`?{...c,text:H(c.text)}:c);continue}if(!r){s.push(...W([c],t));continue}let l=e.filter(e=>e.type===`text`).length>1?`${n}_b${i}`:n;i++;let u=await r(l,c.text);if(!u){s.push(...W([c],t));continue}let d=H(c.text),f=Math.floor(re*.7),p=re-f;s.push({...c,text:`[tool result stored to ${u} (${d.length} chars). Use the read tool on that path to recover the full output.]\n\nPreview:\n${d.slice(0,f)}\n\n[… ${d.length-re} chars omitted …]\n\n${d.slice(d.length-p)}`})}return s}async function ce(e,t,n){let r=Array(e.length),i=0,a=async()=>{for(;;){let t=i++;if(t>=e.length)return;try{await n(e[t]),r[t]={status:`fulfilled`,value:void 0}}catch(e){r[t]={status:`rejected`,reason:e}}}},o=Math.min(Number.isFinite(t)&&t>=1?Math.floor(t):1,e.length);return await Promise.all(Array.from({length:o},()=>a())),r}var le=class{windowTurns;repeatThreshold;emptyTurnThreshold;buckets=[];current={signatures:[],writeToolSuccesses:0};constructor(e={}){this.windowTurns=e.windowTurns??A.stallWindowTurns,this.repeatThreshold=e.repeatThreshold??A.stallRepeatThreshold,this.emptyTurnThreshold=e.emptyTurnThreshold??A.stallEmptyTurnThreshold}recordCall(e){this.current.signatures.length<A.progressSignatureCap&&this.current.signatures.push(R(e.toolName,e.args)),!e.readonly&&!e.isError&&this.current.writeToolSuccesses++}onTurnEnd(){this.buckets.push(this.current),this.buckets.length>this.windowTurns&&this.buckets.shift(),this.current={signatures:[],writeToolSuccesses:0}}evaluate(){let e=this.buckets.length;if(e<this.windowTurns)return{stalled:!1,maxRepeat:0,windowTurns:e,trailingEmpty:0};let t=0,n=new Map,r=0;for(let e of this.buckets){t+=e.writeToolSuccesses;for(let t of e.signatures){let e=(n.get(t)??0)+1;n.set(t,e),e>r&&(r=e)}}let i=0;for(let e=this.buckets.length-1;e>=0&&!(this.buckets[e].signatures.length>0);e--)i++;return{stalled:t===0&&(r>=this.repeatThreshold||i>=this.emptyTurnThreshold),maxRepeat:r,windowTurns:e,trailingEmpty:i}}reset(){this.buckets.length=0,this.current={signatures:[],writeToolSuccesses:0}}};function ue(e){let{sink:t,sessionId:n}=e,r=e.clock??S,i=e.onError??(()=>{});return{record(e){let a={ts:r.now(),sessionId:n,turn:e.turn,kind:e.kind,node:e.node,payload:e.payload,parentEventId:e.parentEventId,causalChain:e.causalChain,evalRunId:e.evalRunId};try{let e=t.append(a);e instanceof Promise&&e.catch(i)}catch(e){i(e)}}}}const K={record(){}},de=new Set([`start`,`text_start`,`text_end`,`thinking_start`,`thinking_end`,`tool_call_start`,`tool_call_end`,`done`]);function fe(e){return de.has(e)}const pe=new Set([`text_end`,`thinking_end`,`tool_call_end`]);function me(e){if(!(`partial`in e))return e;let{partial:t,...n}=e;return n}function he(e){let t,n=n=>{if(!t)return;let{payload:r,turn:i}=t;t=void 0,e.record({kind:`stream`,node:`stream.event`,turn:i,payload:n?r:me(r)})};return{push(r,i){let a=r.type;if(!(typeof a!=`string`||!fe(a))){if(n(!1),pe.has(a)){t={payload:r,turn:i};return}e.record({kind:`stream`,node:`stream.event`,turn:i,payload:r})}},flush(){n(!0)}}}function ge(e,t){let n=[],r=()=>{if(n.length===0)return;let e=n;n=[],t.record({kind:`nondet`,payload:{draws:e}})},i=e=>{n.push(e),n.length>=4096&&r()};return{clock:{now(){let t=e.clock.now();return i({source:`clock`,value:t}),t}},random:{random(){let t=e.random.random();return i({source:`random`,value:t}),t}},id:{uuid(){let t=e.id.uuid();return i({source:`uuid`,value:t}),t}},flushNondetBatch:r}}function _e(e){let t={clock:[],random:[],uuid:[]};for(let n of e)t[n.source].push(n.value);let n=e=>{let n=t[e];if(n.length===0)throw Error(`Replay underrun: no more recorded "${e}" draws`);return n.shift()};return{clock:{now:()=>n(`clock`)},random:{random:()=>n(`random`)},id:{uuid:()=>n(`uuid`)}}}function ve(e){let t=[];for(let n of e){if(n.kind!==`nondet`)continue;let e=n.payload;if(e&&Array.isArray(e.draws))for(let n of e.draws)ye(n)&&t.push(n);else ye(n.payload)&&t.push(n.payload)}return t}function ye(e){return typeof e==`object`&&!!e&&`source`in e&&`value`in e}const be={prune:`memory.prune`,archive:`memory.archive`};function q(e,t){let n=be[t.phase];n!==void 0&&e.record({kind:`lifecycle`,node:n,turn:t.turn,payload:{trigger:t.trigger,sessionId:t.sessionId,...t.metrics}})}function xe(e,t){let n=e.buildContext(),r=[];n.summary&&r.push({role:`user`,timestamp:t.now(),content:[{type:`text`,text:`${a}\n${n.summary}`}]}),r.push(...n.messages);let i=r.map(e=>{if(!Array.isArray(e.content))return e;let t=e.content.map(e=>e.type===`text`&&typeof e.text==`string`?{...e,text:H(e.text)}:e);return{...e,content:t}});return{messages:i,messagesBefore:i.length,hasSummary:!!n.summary}}function Se(e,t){return t.length===0?{fullSystemPrompt:e,systemPromptSegments:void 0}:{fullSystemPrompt:[e,...t].join(`
2
2
 
3
- `),systemPromptSegments:[{text:e,cache:`stable`},...t.map(e=>({text:e,cache:`volatile`}))]}}async function Ce(e,t,n,r,i,a){e.pruned&&t?.notifyPrune&&t.notifyPrune(e.pruneMetrics?.tokensSaved??0,e.pruneMetrics?{prunedCount:e.pruneMetrics.prunedCount,messagesBefore:e.pruneMetrics.messagesBefore,messagesAfter:e.pruneMetrics.messagesAfter}:void 0),e.compacted&&e.summary&&e.replacement&&t?.recordCompaction&&(t.recordCompaction(e.summary,e.replacement),n&&(n.compacted=!0,n.replacement=e.replacement),await Te(r,i,a,e.messages.length))}async function we(e,t,n,r,i={}){let{recorder:a,hooks:o,persistence:s,sink:c}=i;if(!e||r?.aborted)return t;let l=t,u=e.needsPrune(l);if(!u&&!e.needsCompaction(l))return t;let d=!1;if(u&&o){let e={cancelled:!1};await o.execute(`memory.prune.before`,{sessionId:n,messageCount:l.length},e),d=e.cancelled}let f=await e.process(l,n,r,{skipPrune:d});return Ee(a,n,`in_loop`,f),await Ce(f,s,c,o,n,l.length),f.messages}async function Te(e,t,n,r){e&&(await e.emit(`compaction.before`,{sessionId:t,messageCount:n}),await e.emit(`compaction.after`,{sessionId:t,retainedCount:r}))}function Ee(e,t,n,r){e&&(r.pruned&&q(e,{phase:`prune`,sessionId:t,trigger:n,metrics:{...r.pruneMetrics}}),r.archivePath&&q(e,{phase:`archive`,sessionId:t,trigger:n,metrics:{archivePath:r.archivePath}}))}async function De(e,t,n,r,i={}){let{recorder:a,hooks:o,persistence:s,sink:c}=i;if(!e||r?.aborted)return null;let l=await e.process(t,n,r,{force:!0});return Ee(a,n,`reactive_overflow`,l),await Ce(l,s,c,o,n,t.length),!l.compacted&&!l.pruned?null:l.messages}function Oe(e){let{agentName:t,sessionId:n,tools:r,hooks:i,memory:a,recorder:o,persistence:s,onCompaction:c}=e;return{transformContext:async(e,l)=>{if(l?.aborted)return e;let u={messages:e};await i.execute(`messages.transform`,{messages:e,tools:r,agentName:t,sessionId:n},u);let d=e.length,f={compacted:!1},p=await we(a,u.messages,n,l,{recorder:o,hooks:i,persistence:s,sink:f});return f.compacted&&f.replacement&&c?.(d,f.replacement),p},reactiveCompact:a?async(e,t)=>{let r=e.length,l={compacted:!1},u=await De(a,e,n,t,{recorder:o,persistence:s,sink:l,hooks:i});return l.compacted&&l.replacement&&c?.(r,l.replacement),u}:void 0}}function ke(e){return e===`low`||e===`medium`||e===`high`||e===`xhigh`||e===`max`}async function Ae(e,t,n,r){let i={temperature:t.temperature,maxTokens:t.maxTokens,thinkingLevel:t.thinkingLevel,metadata:{}};await e.execute(`chat.params`,{sessionId:r,model:n.id,provider:n.provider,thinkingLevel:t.thinkingLevel},i),t.temperature=i.temperature,t.maxTokens=i.maxTokens,ke(i.thinkingLevel)&&(t.thinkingLevel=i.thinkingLevel)}function je(e){if(e.role===`user`){if(typeof e.content==`string`)return e.content;if(Array.isArray(e.content))return e.content.map(e=>e.type===`text`?e.text:``).filter(e=>e.length>0).join(`
3
+ `),systemPromptSegments:[{text:e,cache:`stable`},...t.map(e=>({text:e,cache:`volatile`}))]}}async function Ce(e,t,n,r,i,a){e.pruned&&t?.notifyPrune&&t.notifyPrune(e.pruneMetrics?.tokensSaved??0,e.pruneMetrics?{prunedCount:e.pruneMetrics.prunedCount,messagesBefore:e.pruneMetrics.messagesBefore,messagesAfter:e.pruneMetrics.messagesAfter}:void 0),e.compacted&&e.summary&&e.replacement&&t?.recordCompaction&&(t.recordCompaction(e.summary,e.replacement,e.tokensAfter),n&&(n.compacted=!0,n.tokensAfter=e.tokensAfter,n.replacement=e.replacement),await Te(r,i,a,e.messages.length))}async function we(e,t,n,r,i={}){let{recorder:a,hooks:o,persistence:s,sink:c}=i;if(!e||r?.aborted)return t;let l=t,u=e.needsPrune(l);if(!u&&!e.needsCompaction(l))return t;let d=!1;if(u&&o){let e={cancelled:!1};await o.execute(`memory.prune.before`,{sessionId:n,messageCount:l.length},e),d=e.cancelled}let f=await e.process(l,n,r,{skipPrune:d});return Ee(a,n,`in_loop`,f),await Ce(f,s,c,o,n,l.length),f.messages}async function Te(e,t,n,r){e&&(await e.emit(`compaction.before`,{sessionId:t,messageCount:n}),await e.emit(`compaction.after`,{sessionId:t,retainedCount:r}))}function Ee(e,t,n,r){e&&(r.pruned&&q(e,{phase:`prune`,sessionId:t,trigger:n,metrics:{...r.pruneMetrics}}),r.archivePath&&q(e,{phase:`archive`,sessionId:t,trigger:n,metrics:{archivePath:r.archivePath}}))}async function De(e,t,n,r,i={}){let{recorder:a,hooks:o,persistence:s,sink:c}=i;if(!e||r?.aborted)return null;let l=await e.process(t,n,r,{force:!0});return Ee(a,n,`reactive_overflow`,l),await Ce(l,s,c,o,n,t.length),!l.compacted&&!l.pruned?null:l.messages}function Oe(e){let{agentName:t,sessionId:n,tools:r,hooks:i,memory:a,recorder:o,persistence:s,onCompaction:c}=e;return{transformContext:async(e,l)=>{if(l?.aborted)return e;let u={messages:e};await i.execute(`messages.transform`,{messages:e,tools:r,agentName:t,sessionId:n},u);let d=e.length,f={compacted:!1},p=await we(a,u.messages,n,l,{recorder:o,hooks:i,persistence:s,sink:f});return f.compacted&&f.replacement&&c?.(d,f.replacement),p},reactiveCompact:a?async(e,t)=>{let r=e.length,l={compacted:!1},u=await De(a,e,n,t,{recorder:o,persistence:s,sink:l,hooks:i});return l.compacted&&l.replacement&&c?.(r,l.replacement),u?{messages:u,...l.tokensAfter===void 0?{}:{tokensAfter:l.tokensAfter}}:null}:void 0}}function ke(e){return e===`low`||e===`medium`||e===`high`||e===`xhigh`||e===`max`}async function Ae(e,t,n,r){let i={temperature:t.temperature,maxTokens:t.maxTokens,thinkingLevel:t.thinkingLevel,metadata:{}};await e.execute(`chat.params`,{sessionId:r,model:n.id,provider:n.provider,thinkingLevel:t.thinkingLevel},i),t.temperature=i.temperature,t.maxTokens=i.maxTokens,ke(i.thinkingLevel)&&(t.thinkingLevel=i.thinkingLevel)}function je(e){if(e.role===`user`){if(typeof e.content==`string`)return e.content;if(Array.isArray(e.content))return e.content.map(e=>e.type===`text`?e.text:``).filter(e=>e.length>0).join(`
4
4
  `)}}async function Me(e,t,n,r,i){let a={systemPrompt:t.systemPrompt,systemTail:t.systemTail?[...t.systemTail]:[]};return await e.execute(`system.prompt.transform`,{systemPrompt:t.systemPrompt,sessionId:n,tools:r,userText:i},a),{systemPrompt:a.systemPrompt,systemTail:a.systemTail}}const Ne={async planPromptContext(e){let{persistence:t,clock:n,hooks:r,params:i,model:a,sessionId:o,tools:s,onContextSelected:c}=e,{messages:l,messagesBefore:u,hasSummary:d}=xe(t,n);await c?.(l,d),await Ae(r,i,a,o);let{systemPrompt:f,systemTail:p}=await Me(r,i,o,s,e.userText??[...l].reverse().map(je).find(Boolean));return{messages:l,messagesBefore:u,hasSummary:d,stableSystem:f,systemTail:p}},buildTurnInput(e){let{fullSystemPrompt:t,systemPromptSegments:n}=Se(e.stableSystem,e.volatileTail);return{model:e.model,systemPrompt:t,...n?{systemPromptSegments:n}:{},...e.cacheRetention?{cacheRetention:e.cacheRetention}:{},messages:e.llmMessages,tools:e.tools.length>0?e.tools:void 0,thinkingLevel:e.thinkingLevel,maxTokens:e.maxTokens,temperature:e.temperature}}};var Pe=class{map=new Map;set(e,t){this.map.set(e,t)}get(e){return this.map.get(e)}delete(e){this.map.delete(e)}};const Fe=new Pe;function Ie(e,t,n,r){e&&e.store.set(e.sessionId,{seq:n,modelId:t,context:r})}function Le(e,t,n){return`${e===`capped`?`[earlier image capped`:`[earlier image omitted to fit context`}: ${t??`attachment`}, turn ${n}]`}function Re(e,t){if(e.length===0)return{messages:e,degradedCount:0};let n=Math.max(0,Math.min(t,e.length)),r=0;return{messages:e.map((e,t)=>{if(t>=n||!Array.isArray(e.content)||!e.content.some(e=>e.type===`image`))return e;let i=`toolName`in e?e.toolName:void 0,a=e.content.map(e=>e.type===`image`?(r++,{type:`text`,text:Le(`omitted`,i,t)}):e);return{...e,content:a}}),degradedCount:r}}function ze(e,t=20){let n=0;for(let t of e)if(Array.isArray(t.content))for(let e of t.content)e.type===`image`&&n++;if(n<=t)return{messages:e,cappedCount:0};let r=n-t,i=0;return{messages:e.map((e,t)=>{if(!Array.isArray(e.content)||i>=r)return e;let n=!1;for(let t of e.content)if(t.type===`image`){n=!0;break}if(!n)return e;let a=`toolName`in e?e.toolName:void 0,o=e.content.map(e=>e.type!==`image`||i>=r?e:(i++,{type:`text`,text:Le(`capped`,a,t)}));return{...e,content:o}}),cappedCount:i}}async function Be(e,t,n,r){if(l(t))return{messages:e,gatedCount:0,describedCount:0};let i=[];for(let t of e)if(Array.isArray(t.content))for(let e of t.content)e.type===`image`&&i.push({mime:e.mime,source:e.source});if(i.length===0)return{messages:e,gatedCount:0,describedCount:0};let a=i.map(()=>null);if(n)try{a=await n(i,r)}catch{a=i.map(()=>null)}let o=0,s=0;return{messages:e.map(e=>{if(!Array.isArray(e.content)||!e.content.some(e=>e.type===`image`))return e;let t=e.content.map(e=>{if(e.type!==`image`)return e;let t=a[s];return s++,t?(o++,{type:`text`,text:t}):{type:`text`,text:`[image not viewable: current model has no vision capability and no vision model is available for delegation]`}});return{...e,content:t}}),gatedCount:i.length,describedCount:o}}async function Ve(e,t){let n=t.model.imageConstraints?.maxImagesPerRequest??t.maxImagesDefault,r=ze(e,n);r.cappedCount>0&&t.record(`image.cap`,{cappedCount:r.cappedCount,maxImages:n});let i=await Be(r.messages,t.model,t.describeImages,t.signal);if(i.gatedCount>0&&(t.record(`image.vision-gate`,{gatedCount:i.gatedCount,describedCount:i.describedCount,modelId:t.model.id}),t.describeImages)){let e={turnIndex:t.turnIndex,attemptedCount:i.gatedCount,describedCount:i.describedCount,failedCount:i.gatedCount-i.describedCount};t.record(`image.vision-delegate`,e),t.emitDelegate(e)}return i.messages}function He(e=process.env){let t=e.OTTO_AGENT_CONSISTENCY_ASSERT;return t===`warn`?`warn`:t===`off`?`off`:`on`}function Ue(e){let{persistence:t,messages:n,mode:r,logger:i}=e;return()=>{if(r===`off`)return;let e=t.buildContext().messages.length,a=n().length;if(a>=e)return;let o=`work memory has ${a} messages but session tree projection has ${e} (concurrent write or tree mutation detected)`;if(r===`warn`){(i??console).error(`[messages-consistency] ${o}`);return}throw new x(a,e)}}function We(e){return typeof e.content==`string`?e.content:e.content.map(e=>e.type===`text`?e.text:``).filter(e=>e.length>0).join(`
5
- `)}function Ge(){return{usage:{inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0},hadToolActivity:!1,lastAssistantApi:void 0,count:0}}function J(e,t){for(let n of t){if(n.role!==`assistant`)continue;let t=n;e.usage.inputTokens+=t.usage.inputTokens,e.usage.outputTokens+=t.usage.outputTokens,e.usage.cacheReadTokens+=t.usage.cacheReadTokens,e.usage.cacheWriteTokens+=t.usage.cacheWriteTokens,e.lastAssistantApi=t.api,e.count+=1,c(t)&&(e.hadToolActivity=!0)}}function Ke(e,t,n){let r=N({debug:e,getTurn:()=>0,getMessagesCount:()=>0,getTokenUsage:()=>void 0,getLlmParams:()=>({systemPrompt:t.systemPrompt,temperature:t.temperature,maxTokens:t.maxTokens,thinkingLevel:t.thinkingLevel})});return{async pause(e,i,a){F(await r(e,0,{messagesCount:i.length,summarySource:i,metadata:a}),{now:()=>n.now(),setSystemPrompt:e=>{t.systemPrompt=e},setTemperature:e=>{t.temperature=e},setMaxTokens:e=>{t.maxTokens=e},setThinkingLevel:e=>{ke(e)&&(t.thinkingLevel=e)}})}}}function qe(e,t,n,r){let i=[{type:`text`,text:e}];if(r&&r.length>0)for(let e of r)i.push({type:`image`,mime:e.mediaType,source:e.data});return{role:`user`,timestamp:t.now(),content:i,...n?{internal:!0}:{}}}function Je(e){return e?.code===`AGENT_ABORTED`?`Tool call interrupted: aborted by user.`:e?.message?`Tool call interrupted: ${e.message}`:`Tool call interrupted before completion (session aborted or errored).`}function Y(e,t,n,r){let i=r.resolvedFrom??e,a=new Set(i.filter(e=>e.role===`tool_result`).map(e=>e.toolCallId));for(let i of t)a.has(i.id)||e.push({role:`tool_result`,toolCallId:i.id,toolName:i.name,content:[{type:`text`,text:r.text}],isError:r.isError,details:{},timestamp:n.now(),...r.internal?{internal:!0}:{}})}function Ye(e,t,n){let r=-1;for(let t=e.length-1;t>=0;t--)if(e[t]?.role===`assistant`){r=t;break}if(r===-1)return;let i=s(e[r]);i.length!==0&&Y(e,i,t,{isError:!0,text:Je(n),resolvedFrom:e.slice(r+1)})}async function Xe(e){let{agentName:t,sessionId:n,model:r,tools:i,runner:a,hooks:o,memory:s,params:c,systemPrompt:l,systemTail:u,messages:d,recorder:f,persistence:p,onCompaction:m,onTurnPersist:h,isPauseRequested:g,describeImages:_}=e,{transformContext:v,reactiveCompact:y}=Oe({agentName:t,sessionId:n,tools:i,hooks:o,memory:s,recorder:f,persistence:p,onCompaction:m}),b=Ue({persistence:p,messages:()=>d,mode:He()});return a.run({model:r,systemPrompt:l,systemTail:u,cacheRetention:c.cacheRetention,tools:i,messages:d,thinkingLevel:c.thinkingLevel,temperature:c.temperature,maxTokens:c.maxTokens,transformContext:v,reactiveCompact:y,onTurnPersist:h,assertMessagesConsistent:b,isPauseRequested:g,describeImages:_})}function X(e,t,n){e.record({kind:`lifecycle`,node:t,payload:n})}async function Ze(e){let{text:t,sessionId:n,agentName:r,model:i,tools:a,runner:o,hooks:s,persistence:c,memory:l,debug:u}=e,d=e.clock??S,f=e.recorder??K,p={...e.params},m=Ke(u,p,d),h=c.messages(),g=h.length===0;await m.pause(`prompt.before`,h,{sessionId:n,isFirstMessage:g}),X(f,`prompt.before`,{sessionId:n,isFirstMessage:g,text:t});let _={message:(e.resumeLastRound?[...h].reverse().find(e=>e.role===`user`):void 0)??qe(t,d,e.internal,e.images),sessionId:n,isFirstMessage:g,metadata:{}},v={message:_.message,cancelled:!1,metadata:{}};if(!e.resumeLastRound&&(await s.execute(`chat.message.before`,_,v),v.cancelled))return{cancelled:!0,newMessages:[],newMessagesUsageSummary:Ge(),params:p};let y=v.message,b,x,C,w;try{e.resumeLastRound||c.append(y);let t=await Ne.planPromptContext({persistence:c,clock:d,hooks:s,params:p,model:i,sessionId:n,tools:a,userText:We(y),onContextSelected:async(e,t)=>{await m.pause(`context.build`,e,{sessionId:n,hasSummary:t}),X(f,`context.build`,{sessionId:n,hasSummary:t,messages:e.length})}});b=t.messages,x=t.messagesBefore,C=t.stableSystem,w=t.systemTail,c.persistInputBoundary?.()}catch(t){throw e.resumeLastRound||c.removeLast?.(),t}let T,E=[],D=Ge(),O=(e,t)=>{let n=T??x,r=b.slice(n);E.push(...r),J(D,r),b.splice(0,b.length,...t),T=t.length},ee=()=>{let e=T??x;if(e>=b.length)return;let t=b.slice(e);E.push(...t),J(D,t),c.persistNew(b,e),T=b.length};try{let t=await Xe({agentName:r,sessionId:n,model:i,tools:a,runner:o,hooks:s,memory:l,params:p,systemPrompt:C,systemTail:w,messages:b,recorder:f,persistence:c,onCompaction:O,onTurnPersist:ee,isPauseRequested:e.isPauseRequested,describeImages:e.describeImages}),u=T??x;c.persistNew(b,u);let d=b.slice(u);J(D,d);let h=[...E,...d];return await m.pause(`messages.persist`,b,{sessionId:n,newMessages:h.length}),X(f,`messages.persist`,{sessionId:n,newMessages:h.length}),await s.execute(`chat.message.after`,_,{message:v.message,cancelled:!1,metadata:{}}),await m.pause(`prompt.after`,b,{sessionId:n}),X(f,`prompt.after`,{sessionId:n}),await s.emit(`session.idle`,{sessionId:n,metadata:{}}),{cancelled:!1,message:t,newMessages:h,newMessagesUsageSummary:D,params:p}}catch(e){let t=e instanceof Error?e:Error(String(e));throw Ye(b,d,{code:t.code,message:t.message}),c.persistNew(b,T??x),await s.emit(`session.error`,{sessionId:n,metadata:{},error:t}),t}}async function Qe(e){let t={totalEvents:0,kinds:{},turns:0,toolCalls:0};for await(let{entry:n}of e)t.totalEvents++,t.kinds[n.kind]=(t.kinds[n.kind]??0)+1,n.turn!==void 0&&n.turn+1>t.turns&&(t.turns=n.turn+1),n.kind===`tool`&&n.node===`tool.call.end`&&t.toolCalls++,t.firstTs===void 0&&(t.firstTs=n.ts),t.lastTs=n.ts;return t}async function $e(e,t={}){let n=t.digestMax??120,r=[];for await(let t of e){let e=t.entry;r.push({seq:t.seq,ts:e.ts,kind:e.kind,node:e.node,turn:e.turn,digest:tt(e.payload,n,e.node)})}return r}function et(e,t,n){switch(e){case`stream.auth-failed`:{let e=typeof t.provider==`string`?t.provider:void 0,r=typeof t.modelId==`string`?t.modelId:void 0;return!e||!r?void 0:Z(`auth-failed ${r} (${e}): ${typeof t.reason==`string`?t.reason:``}`,n)}case`stream.retry`:case`stream.retry.accelerated`:{let e=typeof t.attempt==`number`?t.attempt:void 0,r=typeof t.maxRetries==`number`?t.maxRetries:void 0;if(e===void 0||r===void 0)return;let i=typeof t.reason==`string`?t.reason:``;return Z(`retry ${e}/${r}${typeof t.delayMs==`number`?` in ${t.delayMs}ms`:``}: ${i}`,n)}case`model.switch`:{let e=typeof t.from==`string`?t.from:null,r=typeof t.to==`string`?t.to:``;return Z(`model ${e?`${e} → `:``}${r}`,n)}case`effort.change`:{let e=typeof t.from==`string`?t.from:null,r=typeof t.to==`string`?t.to:``;return Z(`effort ${e?`${e} → `:``}${r}`,n)}case`retry.queued`:{let e=typeof t.attempt==`number`?t.attempt:void 0,r=typeof t.max==`number`?t.max:void 0;return e===void 0||r===void 0?void 0:Z(`retry ${e}/${r}${typeof t.mode==`string`&&t.mode?` [${t.mode}]`:``}`,n)}case`retry.cancelled`:{let e=typeof t.attempt==`number`?t.attempt:void 0;return e===void 0?`retry cancelled`:Z(`retry cancelled (after ${e})`,n)}case`retry.reset`:return`retry counter reset`;case`pause.requested`:return`pause requested`;case`pause.paused`:return`paused`;case`pause.cancelled`:return`pause cancelled`;case`pause.resumed`:return`resumed`;default:return}}function tt(e,t=120,n){if(e!=null){if(typeof e==`string`)return Z(e,t);if(typeof e==`object`){let r=e;if(n!==void 0){let e=et(n,r,t);if(e!==void 0)return e}if(typeof r.resultSummary==`object`&&r.resultSummary!==null){let e=r.resultSummary,n=typeof r.name==`string`?r.name:`tool`,i=e.isError?` ERR`:``,a=Array.isArray(e.contentPreview)&&e.contentPreview.length>0?e.contentPreview[0]:void 0,o=a?typeof a.preview==`string`?a.preview:typeof a.text==`string`?a.text:``:``,s=typeof r.durationMs==`number`?` ${r.durationMs}ms`:``;return Z(`${n}${i}${typeof r.errorCategory==`string`?` [${r.errorCategory}]`:``}${s}: ${o}`,t)}if(typeof r.result==`object`&&r.result!==null){let e=r.result,n=typeof r.name==`string`?r.name:`tool`,i=e.isError?` ERR`:``,a=Array.isArray(e.content)?e.content[0]:void 0;return Z(`${n}${i}: ${a&&typeof a.text==`string`?a.text:``}`,t)}if(typeof r.text==`string`)return Z(`"${r.text}"`,t);if(typeof r.name==`string`){let e=typeof r.arguments==`object`&&r.arguments!==null?JSON.stringify(r.arguments):``,n=typeof r.durationMs==`number`?` (${r.durationMs}ms)`:``;return Z(`${typeof r.toolCallIndex==`number`?`#${r.toolCallIndex} `:``}${r.name}(${e})${n}`,t)}if(typeof r.provider==`string`&&typeof r.modelId==`string`){let e=typeof r.reason==`string`?r.reason:``;return Z(`auth-failed ${r.modelId} (${r.provider}): ${e}`,t)}if(typeof r.attempt==`number`&&typeof r.maxRetries==`number`){let e=typeof r.reason==`string`?r.reason:``,n=typeof r.delayMs==`number`?` in ${r.delayMs}ms`:``;return Z(`retry ${r.attempt}/${r.maxRetries}${n}: ${e}`,t)}if(typeof r.reason==`string`)return Z(`done:${r.reason}`,t);if(typeof r.message==`object`&&r.message!==null){let e=r.message;if(typeof e.role==`string`&&e.content!==void 0)return Z(`${e.role}:${JSON.stringify(e.content)}`,t)}return Z(JSON.stringify(r),t)}return Z(String(e),t)}}function Z(e,t){return e.length<=t?e:`${e.slice(0,t)}…`}function nt(e){let t=new Map,n=new Map,r=new Map;for(let i of e){let e=i.entry,a=String(i.seq);if(t.set(a,{eventId:a,seq:i.seq,kind:e.kind,node:e.node,turn:e.turn,parentEventId:e.parentEventId,causalChain:e.causalChain}),e.parentEventId){let t=e.parentEventId;n.set(a,[...n.get(a)??[],t]),r.set(t,[...r.get(t)??[],a])}if(e.causalChain)for(let t of e.causalChain)t!==e.parentEventId&&(n.set(a,[...n.get(a)??[],t]),r.set(t,[...r.get(t)??[],a]))}let i=[...t.values()],a=[];for(let[e,t]of n)for(let n of t)a.push({from:n,to:e});return{nodes:i,edges:a,roots:i.filter(e=>!n.has(e.eventId)).map(e=>e.eventId),leaves:i.filter(e=>!r.has(e.eventId)).map(e=>e.eventId)}}function rt(e){let t=new Map,n=new Map;for(let r of e){let e=`entry`in r?r.entry:r;if(e.kind!==`tool`||e.node!==`tool.call.start`||e.turn===void 0)continue;let i=e.payload,a=typeof i?.id==`string`?i.id:``;if(!a||n.has(a))continue;n.set(a,e.turn);let o=t.get(e.turn);o?o.push(a):t.set(e.turn,[a])}return{turns:[...t.entries()].sort(([e],[t])=>e-t).map(([e,t])=>({turn:e,toolCallIds:t})),toolToTurn:n}}function it(e,t){let n=e.find(e=>e.seq===t);if(!n?.entry.parentEventId)return[];let r=[String(t)],i=n.entry.parentEventId;for(let t=0;t<100&&i;t++){let t=e.find(e=>e.seq===Number(i));if(!t)break;r.unshift(String(t.seq)),i=t.entry.parentEventId??``}return r}function at(e,t=512){return{isError:e.isError??!1,contentCount:e.content.length,contentPreview:e.content.map(e=>{if(e.type===`text`){let n=H(e.text);return n.length>t?{type:`text`,preview:n.slice(0,t),totalLength:n.length}:{type:`text`,text:n}}return e}),details:e.details??void 0}}function ot(e,t,n){let r=`[BACKGROUND TASK STARTED — DO NOT TREAT AS COMPLETE]\nTool '${e}' (task id: ${t}) has started running in the background and has NOT finished yet.\nDo NOT attempt to read its output, assume its result, or take any action that depends on\nits completion. You will receive a separate system message titled '[Tool completion]'\nwhen — and only when — this specific task actually finishes. Continue with other work\nor wait; do not fabricate or guess the result.`;return n?`${r}\n${n}`:r}function st(e,t,n,r){return{role:`tool_result`,toolCallId:e,toolName:t,content:[{type:`text`,text:ot(t,e,r)}],isError:!1,details:{},timestamp:n.now()}}function ct(e,t,n,r){let i=ut(n),a=n.isError??!1;return{role:`system_notification`,content:`[Tool completion] '${e}' ${a?`failed`:`completed`}: ${i}`,isError:a,relatedToolCallId:t,timestamp:r.now()}}function lt(e,t,n,r){return{role:`system_notification`,content:`<engine_timeout tool="${e}" id="${t}" ms="${n}">\n'${e}' did not complete within ${Math.round(n/1e3)}s; its result is unavailable. Do not assume it succeeded or read its output — re-issue the call if needed, or proceed without it.\n</engine_timeout>`,isError:!0,relatedToolCallId:t,timestamp:r.now()}}function ut(e){let t=e.content.find(e=>e.type===`text`);if(!t||t.type!==`text`)return e.isError?`error (no text output)`:`done (no text output)`;let n=H(t.text);return n.length>500?`${n.slice(0,500)}… [truncated]`:n}function dt(e){if(e.isError)return e.errorKind??`unknown`}function ft(e,t){let n=e;return{admit:()=>n===void 0?!0:n<=0?!1:(n--,!0),refund:()=>{n!==void 0&&(n=Math.min(n+1,e))},budgetExceededResult:n=>({role:`tool_result`,toolCallId:n.id,toolName:n.name,content:[{type:`text`,text:`Tool "${n.name}" rejected: per-turn tool-call budget of ${e} exhausted (remaining=0). The call was not executed.`}],isError:!0,details:{},timestamp:t.now()}),isPermissionRefund:e=>e.isError===!0&&e.errorKind===`permission`}}function pt(e,t){let n=new Map,r=null,i=[];return{register:t=>{let r=new AbortController;return n.set(t,r),AbortSignal.any([e,r.signal])},unregister:e=>{n.delete(e)},start:()=>{r!==null||n.size===0||(r=setInterval(()=>{t().then(e=>{if(e.length>0){i.push(...e);for(let e of n.values())e.abort();r!==null&&(clearInterval(r),r=null)}}).catch(()=>{})},200),r.unref?.())},stop:()=>{r!==null&&(clearInterval(r),r=null)},size:()=>n.size,drainPendingSteering:()=>{let e=i;return i=[],e}}}function mt(e,t,n,r){return{process:async(i,a)=>{let o=U(i.content);i.content=o;let s=e.get(a.name)?.resultBudgetChars??A.maxToolResultChars,c=await se(o,t?.budgetFor(s)??s,a.id,n);return t?.charge(G(c)),{role:`tool_result`,toolCallId:a.id,toolName:a.name,content:c,isError:i.isError??!1,details:i.details??{},timestamp:r.now()}}}}async function ht(e,t){let{signal:n,emitter:r,logger:i,clock:a,recorder:o,pause:s,turnIndex:c,budget:l,watcher:u,pipeline:d,windowStats:f,stallDetector:p,toolByName:m}=t;if(n.aborted)throw new v;let h=m.get(e.name),g=n;if(h?.interruptBehavior===`cancel`&&(g=u.register(e.id),u.start()),!l.admit())return u.unregister(e.id),l.budgetExceededResult(e);let _=gt.value++;r.emit(`tool.call.start`,{toolCall:{id:e.id,name:e.name,arguments:e.arguments}}),o.record({kind:`tool`,node:`tool.call.start`,turn:c,payload:{id:e.id,name:e.name,arguments:e.arguments,turnIndex:c,toolCallIndex:_}}),i.info(`Executing tool %s`,e.name),await s(`tool.before`,1,{lastToolName:e.name});let y=a.now(),b=await t.toolExecutor.execute(e,g);if(u.unregister(e.id),l.isPermissionRefund(b)&&l.refund(),n.aborted)throw new v;let x=a.now()-y;i.info(`Tool %s completed%s (%d ms)`,e.name,b.isError?` with error`:``,x);let S=await d.process(b,e);f&&z(f,{toolName:e.name,args:e.arguments,readonly:m.get(e.name)?.readonly===!0,isError:b.isError??!1}),p?.recordCall({toolName:e.name,args:e.arguments,readonly:m.get(e.name)?.readonly===!0,isError:b.isError??!1});let C=dt(b);return r.emit(`tool.call.end`,{toolCall:{id:e.id,name:e.name,arguments:e.arguments},result:b,contextChars:G(S.content)}),o.record({kind:`tool`,node:`tool.call.end`,turn:c,payload:{id:e.id,name:e.name,resultSummary:at(b,A.traceResultMaxChars),durationMs:x,toolCallIndex:_,...C?{errorCategory:C}:{}}}),await s(`tool.after`,1,{lastToolName:e.name}),S}const gt={value:0};async function _t(e,t,n,r,i,a,o){let{toolExecutor:c,messages:l,signal:u,emitter:d,logger:f,getSteeringMessages:p}=t,m=t.ports?.debug,h=t.ports?.clock??S,g=t.ports?.recorder??K,_=N({debug:m,getTurn:()=>n,getMessagesCount:()=>l.length,getTokenUsage:()=>r}),y=s(e).filter(e=>e.argumentsParseFailed!==!0),b=c.list(),x=new Map(b.map(e=>[e.name,e])),C=t.lifecycleAsync!==void 0,w=e=>{let t=x.get(e.name)?.lifecycleAsync;if(typeof t==`function`)try{return t(e.arguments)===!0}catch{return!1}return t===!0},T=C?y.filter(w):[],E=C?y.filter(e=>!w(e)):y;if(!C){let e=y.filter(w);e.length>0&&f.warn(`lifecycleAsync tool(s) called but ctx.lifecycleAsync controller not wired (falling back to synchronous execution, loop will block): %s`,e.map(e=>e.name).join(`, `))}let D=e=>{let t=x.get(e.name);return t?t.readonly?!0:t.isConcurrencySafe?.(e.arguments)===!0:!1},O=E.filter(D),ee=E.filter(e=>!D(e)),k=ft(t.budget.maxToolCallsPerTurn,h),{admit:te,budgetExceededResult:ne}=k;for(let e of y){let t=x.get(e.name);if(t?.async&&!t.readonly&&!t.isConcurrencySafe)throw Error(`Tool "${e.name}" declared async:true but is neither readonly nor isConcurrencySafe. Async tools must be concurrency-safe (isConcurrencySafe or readonly) to enter the parallel bucket.`)}let j=O.filter(e=>x.get(e.name)?.async===!0),M=O.filter(e=>!x.get(e.name)?.async),P=!1,F=t.lifecycleAsync?.currentPromptSeq()??0;for(let e of T){if(!te()){l.push(ne(e));continue}let n=st(e.id,e.name,h,x.get(e.name)?.lifecycleAsyncNote);l.push(n);let r=new AbortController,i=AbortSignal.any([u,r.signal]),a=c.execute(e,i);t.lifecycleAsync?.register({toolCallId:e.id,toolName:e.name,promise:(async()=>{let n;try{n=await a,n.content=U(n.content)}catch(t){f.warn(`lifecycleAsync tool %s (task id: %s) promise rejected: %s`,e.name,e.id,t instanceof Error?t.message:String(t)),n={content:[{type:`text`,text:`Tool ${e.name} failed: ${t instanceof Error?t.message:String(t)}`}],isError:!0}}let{consumed:r}=await t.lifecycleAsync.notifyCompletion(e.id,n);if(!r)return;let i=t.lifecycleAsync?.currentPromptSeq();if(i!==void 0&&i!==F){f.info(`lifecycleAsync tool %s (task id: %s) crossed prompt boundary (startSeq=%d, nowSeq=%d) — completion notice suppressed, emitting crossBoundary event instead`,e.name,e.id,F,i),d.emit(`lifecycle.tool.completed.crossBoundary`,{toolCallId:e.id,toolName:e.name,result:n});return}let o=ct(e.name,e.id,n,h);l.push(o)})(),promptSeq:F,consumed:!1,abortController:r}),d.emit(`tool.call.start`,{toolCall:{id:e.id,name:e.name,arguments:e.arguments}}),f.info(`Started lifecycleAsync tool %s (task id: %s), not blocking loop`,e.name,e.id)}T.length>0&&(P=!0);let I=await p();await _(`steering.check`,1,{metadata:{hasSteeringMessages:I.length>0,steeringCount:I.length}});let L=P,R=()=>{Y(l,E,h,{isError:!1,text:`Skipped: superseded by the user’s new instruction (not executed; no error).`})};if(I.length>0)return R(),l.push(...I),d.emit(`steering.injected`,{messages:I}),{ranAnyTool:P};let z=pt(u,p),B=()=>{let e=z.drainPendingSteering();return e.length===0?!1:(z.stop(),R(),l.push(...e),d.emit(`steering.injected`,{messages:e}),!0)};gt.value=0;let V={toolExecutor:c,toolByName:x,signal:u,emitter:d,logger:f,clock:h,recorder:g,pause:_,turnIndex:n,budget:k,watcher:z,pipeline:mt(x,o,t.ports?.spill,h),windowStats:i,stallDetector:a},H=async e=>{let t=await ht(e,V);l.push(t)};if(M.length>0){let e=A.maxToolConcurrency;f.info(`Executing %d concurrency-safe tools in parallel (cap %d)`,M.length,e);let t=await ce(M,e,H);if(L=!0,t.some(e=>e.status===`rejected`&&e.reason instanceof v)||u.aborted){if(B()&&!u.aborted)return{ranAnyTool:L};throw new v}let n=t.find(e=>e.status===`rejected`);if(n&&n.status===`rejected`)throw n.reason}if(j.length>0){f.info(`Starting %d async tools in parallel (Promise.all, no worker slot)`,j.length);let e=j.map(e=>ht(e,V)),t=await Promise.all(e);for(let e of t)l.push(e);L=!0}if(B())return{ranAnyTool:L};z.size()===0&&z.stop();for(let e of ee){if(u.aborted)throw B(),new v;let t=[...await p(),...z.drainPendingSteering()];if(t.length>0)return z.stop(),R(),l.push(...t),d.emit(`steering.injected`,{messages:t}),{ranAnyTool:L};await H(e),L=!0}return B()||z.stop(),{ranAnyTool:L}}const vt={maxRetries:5,initialDelayMs:500,backoffFactor:2,maxDelayMs:6e4},yt={maxRetries:5,initialDelayMs:3e4,backoffFactor:1,maxDelayMs:3e4},bt={maxRetries:1,initialDelayMs:0,backoffFactor:1,maxDelayMs:0};function xt(e,t,n,r){if(r!==void 0&&r>=0)return Math.min(Math.round(r),t.maxDelayMs);let i=t.initialDelayMs*t.backoffFactor**+e,a=.9+.2*n;return Math.min(Math.round(i*a),t.maxDelayMs)}function St(e,t,n,r,i){r.hasAttemptedImageDegradation=!0;let a=0;for(let e=t.length-1;e>=0;e--)if(t[e].role===`user`){a=e;break}let{messages:o,degradedCount:s}=Re(t,a);if(s===0)return;let{logger:c,emitter:l}=i,u=i.ports?.recorder??K;return c.warn(`Image degradation triggered (turn %d, trigger=%s): degraded %d images`,n+1,e,s),l.emit(`image.degradation`,{turnIndex:n,degradedCount:s,trigger:e}),u.record({kind:`lifecycle`,node:`image.degradation`,turn:n,payload:{degradedCount:s,trigger:e}}),{action:`retry`,contextMessages:o}}async function Ct(e,t,n,r,i){let{signal:a,emitter:o,logger:s}=t,c=t.ports?.recorder??K;if(e===`context-overflow`&&t.contextTransform?.reactiveCompact&&!i.hasAttemptedReactiveCompact){i.hasAttemptedReactiveCompact=!0;let e=r.length,l=await t.contextTransform.reactiveCompact(r,a);if(l)return s.warn(`Reactive compaction on context overflow (turn %d): %d -> %d messages`,n+1,e,l.length),o.emit(`compaction.reactive`,{turnIndex:n,messagesBefore:e,messagesAfter:l.length}),c.record({kind:`lifecycle`,node:`compaction.reactive`,turn:n,payload:{messagesBefore:e,messagesAfter:l.length}}),{action:`retry`,contextMessages:l}}if((e===`context-overflow`||e===`image-constraint`)&&!i.hasAttemptedImageDegradation){let a=St(e,r,n,i,t);if(a)return a}}async function wt(e,t,n,r,i,a,o,s,c){let{signal:l,emitter:u,logger:d}=n,p=n.ports?.recorder??K,h=f(e),g=t===`retryable`&&h===`idle`?n.retry?.idleTimeoutRetry??bt:t===`retryable`&&_(e)?n.retry?.networkDisconnectRetry??yt:a;if(!(t===`retryable`&&i.transientRetries<g.maxRetries))return;let y=e instanceof Error?e.message:String(e),b=m(e),x=xt(i.transientRetries,g,s.random(),b);i.transientRetries++,d.warn(`Retryable stream error (turn %d, attempt %d/%d, delay %dms): %s`,r+1,i.transientRetries,g.maxRetries,x,y),u.emit(`stream.retry`,{turnIndex:r,attempt:i.transientRetries,maxRetries:g.maxRetries,delayMs:x,reason:y}),p.record({kind:`lifecycle`,node:`stream.retry`,turn:r,payload:{attempt:i.transientRetries,maxRetries:g.maxRetries,delayMs:x,reason:y}}),o&&(o.skip=!1);let S=0;for(;S<x;){if(l.aborted)throw new v;if(o?.skip){o.skip=!1,d.info(`Retry accelerated by user (turn %d, attempt %d/%d, after %dms of %dms)`,r+1,i.transientRetries,g.maxRetries,S,x),u.emit(`stream.retry.accelerated`,{turnIndex:r,attempt:i.transientRetries,maxRetries:g.maxRetries}),p.record({kind:`lifecycle`,node:`stream.retry.accelerated`,turn:r,payload:{attempt:i.transientRetries,maxRetries:g.maxRetries,elapsedMs:S}});break}let e=Math.min(1e3,x-S);await c(e,l),S+=e}if(l.aborted)throw new v;return{action:`retry`}}function Tt(e,t,n,r){if(!g(e)||r.hasAttemptedAuthRetry)return;r.hasAttemptedAuthRetry=!0;let i=e instanceof Error?e.message:String(e);return t.logger.warn(`Auth error on first attempt (turn %d, provider=%s, model=%s), retrying once: %s`,n+1,t.model.provider,t.model.id,i),{action:`retry`}}function Et(e,t,n){let{emitter:r,logger:i}=t,a=t.ports?.recorder??K,o=p(e);if(o?.status===`rejected`){let t=e instanceof Error?e.message:String(e);r.emit(`rate.limit.exhausted`,{limitType:o.type,resetsAt:o.resetsAt,message:t}),a.record({kind:`lifecycle`,node:`rate.limit.exhausted`,turn:n,payload:{limitType:o.type,resetsAt:o.resetsAt}})}else if(g(e)){let o=e instanceof Error?e.message:String(e);i.warn(`Auth failed (turn %d, provider=%s, model=%s): %s`,n+1,t.model.provider,t.model.id,o);let s=u(e);r.emit(`stream.auth-failed`,{turnIndex:n,provider:t.model.provider,modelId:t.model.id,reason:o,errorType:s}),a.record({kind:`lifecycle`,node:`stream.auth-failed`,turn:n,payload:{provider:t.model.provider,modelId:t.model.id,reason:o,errorType:s}})}}async function Dt(e,t,n,r,i,a,o,s,c){let{signal:l}=t;if(e instanceof v||e instanceof Error&&e.name===`AbortError`||l.aborted)throw e;let u=d(e);return await Ct(u,t,n,r,i)||await wt(e,u,t,n,i,a,o,s,c)||Tt(e,t,n,i)||(Et(e,t,n),{action:`rethrow`})}function Ot(e){for(let t=e.content.length-1;t>=0;t--){let n=e.content[t];if(n.type===`text`)return n.text}return null}function kt(e,t,n){return`<engine_budget dimension="${e}">\n${e===`tokens`?`You have used ${t} of your ${n} output-token budget for this prompt.`:`You have used ${Math.round(t/1e3)}s of your ${Math.round(n/1e3)}s time budget for this prompt.`} Do not start any new tool work or call any tools. Wrap up now: briefly summarize the concrete progress you made, list what still remains or is blocked, and give the user a clear next step. Respond with text only.
5
+ `)}function Ge(){return{usage:{inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0},hadToolActivity:!1,lastAssistantApi:void 0,count:0}}function J(e,t){for(let n of t){if(n.role!==`assistant`)continue;let t=n;e.usage.inputTokens+=t.usage.inputTokens,e.usage.outputTokens+=t.usage.outputTokens,e.usage.cacheReadTokens+=t.usage.cacheReadTokens,e.usage.cacheWriteTokens+=t.usage.cacheWriteTokens,e.lastAssistantApi=t.api,e.count+=1,c(t)&&(e.hadToolActivity=!0)}}function Ke(e,t,n){let r=N({debug:e,getTurn:()=>0,getMessagesCount:()=>0,getTokenUsage:()=>void 0,getLlmParams:()=>({systemPrompt:t.systemPrompt,temperature:t.temperature,maxTokens:t.maxTokens,thinkingLevel:t.thinkingLevel})});return{async pause(e,i,a){F(await r(e,0,{messagesCount:i.length,summarySource:i,metadata:a}),{now:()=>n.now(),setSystemPrompt:e=>{t.systemPrompt=e},setTemperature:e=>{t.temperature=e},setMaxTokens:e=>{t.maxTokens=e},setThinkingLevel:e=>{ke(e)&&(t.thinkingLevel=e)}})}}}function qe(e,t,n,r){let i=[{type:`text`,text:e}];if(r&&r.length>0)for(let e of r)i.push({type:`image`,mime:e.mediaType,source:e.data});return{role:`user`,timestamp:t.now(),content:i,...n?{internal:!0}:{}}}function Je(e){return e?.code===`AGENT_ABORTED`?`Tool call interrupted: aborted by user.`:e?.message?`Tool call interrupted: ${e.message}`:`Tool call interrupted before completion (session aborted or errored).`}function Y(e,t,n,r){let i=r.resolvedFrom??e,a=new Set(i.filter(e=>e.role===`tool_result`).map(e=>e.toolCallId));for(let i of t)a.has(i.id)||e.push({role:`tool_result`,toolCallId:i.id,toolName:i.name,content:[{type:`text`,text:r.text}],isError:r.isError,details:{},timestamp:n.now(),...r.internal?{internal:!0}:{}})}function Ye(e,t,n){let r=-1;for(let t=e.length-1;t>=0;t--)if(e[t]?.role===`assistant`){r=t;break}if(r===-1)return;let i=s(e[r]);i.length!==0&&Y(e,i,t,{isError:!0,text:Je(n),resolvedFrom:e.slice(r+1)})}async function Xe(e){let{agentName:t,sessionId:n,model:r,tools:i,runner:a,hooks:o,memory:s,params:c,systemPrompt:l,systemTail:u,messages:d,recorder:f,persistence:p,onCompaction:m,onTurnPersist:h,isPauseRequested:g,describeImages:_}=e,{transformContext:v,reactiveCompact:y}=Oe({agentName:t,sessionId:n,tools:i,hooks:o,memory:s,recorder:f,persistence:p,onCompaction:m}),b=Ue({persistence:p,messages:()=>d,mode:He()});return a.run({model:r,systemPrompt:l,systemTail:u,cacheRetention:c.cacheRetention,tools:i,messages:d,thinkingLevel:c.thinkingLevel,temperature:c.temperature,maxTokens:c.maxTokens,transformContext:v,reactiveCompact:y,onTurnPersist:h,assertMessagesConsistent:b,isPauseRequested:g,describeImages:_})}function X(e,t,n){e.record({kind:`lifecycle`,node:t,payload:n})}async function Ze(e){let{text:t,sessionId:n,agentName:r,model:i,tools:a,runner:o,hooks:s,persistence:c,memory:l,debug:u}=e,d=e.clock??S,f=e.recorder??K,p={...e.params},m=Ke(u,p,d),h=c.messages(),g=h.length===0;await m.pause(`prompt.before`,h,{sessionId:n,isFirstMessage:g}),X(f,`prompt.before`,{sessionId:n,isFirstMessage:g,text:t});let _={message:(e.resumeLastRound?[...h].reverse().find(e=>e.role===`user`):void 0)??qe(t,d,e.internal,e.images),sessionId:n,isFirstMessage:g,metadata:{}},v={message:_.message,cancelled:!1,metadata:{}};if(!e.resumeLastRound&&(await s.execute(`chat.message.before`,_,v),v.cancelled))return{cancelled:!0,newMessages:[],newMessagesUsageSummary:Ge(),params:p};let y=v.message,b,x,C,w;try{e.resumeLastRound||c.append(y);let t=await Ne.planPromptContext({persistence:c,clock:d,hooks:s,params:p,model:i,sessionId:n,tools:a,userText:We(y),onContextSelected:async(e,t)=>{await m.pause(`context.build`,e,{sessionId:n,hasSummary:t}),X(f,`context.build`,{sessionId:n,hasSummary:t,messages:e.length})}});b=t.messages,x=t.messagesBefore,C=t.stableSystem,w=t.systemTail,c.persistInputBoundary?.()}catch(t){throw e.resumeLastRound||c.removeLast?.(),t}let T,E=[],D=Ge(),O=(e,t)=>{let n=T??x,r=b.slice(n);E.push(...r),J(D,r),b.splice(0,b.length,...t),T=t.length},ee=()=>{let e=T??x;if(e>=b.length)return;let t=b.slice(e);E.push(...t),J(D,t),c.persistNew(b,e),T=b.length};try{let t=await Xe({agentName:r,sessionId:n,model:i,tools:a,runner:o,hooks:s,memory:l,params:p,systemPrompt:C,systemTail:w,messages:b,recorder:f,persistence:c,onCompaction:O,onTurnPersist:ee,isPauseRequested:e.isPauseRequested,describeImages:e.describeImages}),u=T??x;c.persistNew(b,u);let d=b.slice(u);J(D,d);let h=[...E,...d];return await m.pause(`messages.persist`,b,{sessionId:n,newMessages:h.length}),X(f,`messages.persist`,{sessionId:n,newMessages:h.length}),await s.execute(`chat.message.after`,_,{message:v.message,cancelled:!1,metadata:{}}),await m.pause(`prompt.after`,b,{sessionId:n}),X(f,`prompt.after`,{sessionId:n}),await s.emit(`session.idle`,{sessionId:n,metadata:{}}),{cancelled:!1,message:t,newMessages:h,newMessagesUsageSummary:D,params:p}}catch(e){let t=e instanceof Error?e:Error(String(e));throw Ye(b,d,{code:t.code,message:t.message}),c.persistNew(b,T??x),await s.emit(`session.error`,{sessionId:n,metadata:{},error:t}),t}}async function Qe(e){let t={totalEvents:0,kinds:{},turns:0,toolCalls:0};for await(let{entry:n}of e)t.totalEvents++,t.kinds[n.kind]=(t.kinds[n.kind]??0)+1,n.turn!==void 0&&n.turn+1>t.turns&&(t.turns=n.turn+1),n.kind===`tool`&&n.node===`tool.call.end`&&t.toolCalls++,t.firstTs===void 0&&(t.firstTs=n.ts),t.lastTs=n.ts;return t}async function $e(e,t={}){let n=t.digestMax??120,r=[];for await(let t of e){let e=t.entry;r.push({seq:t.seq,ts:e.ts,kind:e.kind,node:e.node,turn:e.turn,digest:tt(e.payload,n,e.node)})}return r}function et(e,t,n){switch(e){case`stream.auth-failed`:{let e=typeof t.provider==`string`?t.provider:void 0,r=typeof t.modelId==`string`?t.modelId:void 0;return!e||!r?void 0:Z(`auth-failed ${r} (${e}): ${typeof t.reason==`string`?t.reason:``}`,n)}case`stream.retry`:case`stream.retry.accelerated`:{let e=typeof t.attempt==`number`?t.attempt:void 0,r=typeof t.maxRetries==`number`?t.maxRetries:void 0;if(e===void 0||r===void 0)return;let i=typeof t.reason==`string`?t.reason:``;return Z(`retry ${e}/${r}${typeof t.delayMs==`number`?` in ${t.delayMs}ms`:``}: ${i}`,n)}case`model.switch`:{let e=typeof t.from==`string`?t.from:null,r=typeof t.to==`string`?t.to:``;return Z(`model ${e?`${e} → `:``}${r}`,n)}case`effort.change`:{let e=typeof t.from==`string`?t.from:null,r=typeof t.to==`string`?t.to:``;return Z(`effort ${e?`${e} → `:``}${r}`,n)}case`retry.queued`:{let e=typeof t.attempt==`number`?t.attempt:void 0,r=typeof t.max==`number`?t.max:void 0;return e===void 0||r===void 0?void 0:Z(`retry ${e}/${r}${typeof t.mode==`string`&&t.mode?` [${t.mode}]`:``}`,n)}case`retry.cancelled`:{let e=typeof t.attempt==`number`?t.attempt:void 0;return e===void 0?`retry cancelled`:Z(`retry cancelled (after ${e})`,n)}case`retry.reset`:return`retry counter reset`;case`pause.requested`:return`pause requested`;case`pause.paused`:return`paused`;case`pause.cancelled`:return`pause cancelled`;case`pause.resumed`:return`resumed`;default:return}}function tt(e,t=120,n){if(e!=null){if(typeof e==`string`)return Z(e,t);if(typeof e==`object`){let r=e;if(n!==void 0){let e=et(n,r,t);if(e!==void 0)return e}if(typeof r.resultSummary==`object`&&r.resultSummary!==null){let e=r.resultSummary,n=typeof r.name==`string`?r.name:`tool`,i=e.isError?` ERR`:``,a=Array.isArray(e.contentPreview)&&e.contentPreview.length>0?e.contentPreview[0]:void 0,o=a?typeof a.preview==`string`?a.preview:typeof a.text==`string`?a.text:``:``,s=typeof r.durationMs==`number`?` ${r.durationMs}ms`:``;return Z(`${n}${i}${typeof r.errorCategory==`string`?` [${r.errorCategory}]`:``}${s}: ${o}`,t)}if(typeof r.result==`object`&&r.result!==null){let e=r.result,n=typeof r.name==`string`?r.name:`tool`,i=e.isError?` ERR`:``,a=Array.isArray(e.content)?e.content[0]:void 0;return Z(`${n}${i}: ${a&&typeof a.text==`string`?a.text:``}`,t)}if(typeof r.text==`string`)return Z(`"${r.text}"`,t);if(typeof r.name==`string`){let e=typeof r.arguments==`object`&&r.arguments!==null?JSON.stringify(r.arguments):``,n=typeof r.durationMs==`number`?` (${r.durationMs}ms)`:``;return Z(`${typeof r.toolCallIndex==`number`?`#${r.toolCallIndex} `:``}${r.name}(${e})${n}`,t)}if(typeof r.provider==`string`&&typeof r.modelId==`string`){let e=typeof r.reason==`string`?r.reason:``;return Z(`auth-failed ${r.modelId} (${r.provider}): ${e}`,t)}if(typeof r.attempt==`number`&&typeof r.maxRetries==`number`){let e=typeof r.reason==`string`?r.reason:``,n=typeof r.delayMs==`number`?` in ${r.delayMs}ms`:``;return Z(`retry ${r.attempt}/${r.maxRetries}${n}: ${e}`,t)}if(typeof r.reason==`string`)return Z(`done:${r.reason}`,t);if(typeof r.message==`object`&&r.message!==null){let e=r.message;if(typeof e.role==`string`&&e.content!==void 0)return Z(`${e.role}:${JSON.stringify(e.content)}`,t)}return Z(JSON.stringify(r),t)}return Z(String(e),t)}}function Z(e,t){return e.length<=t?e:`${e.slice(0,t)}…`}function nt(e){let t=new Map,n=new Map,r=new Map;for(let i of e){let e=i.entry,a=String(i.seq);if(t.set(a,{eventId:a,seq:i.seq,kind:e.kind,node:e.node,turn:e.turn,parentEventId:e.parentEventId,causalChain:e.causalChain}),e.parentEventId){let t=e.parentEventId;n.set(a,[...n.get(a)??[],t]),r.set(t,[...r.get(t)??[],a])}if(e.causalChain)for(let t of e.causalChain)t!==e.parentEventId&&(n.set(a,[...n.get(a)??[],t]),r.set(t,[...r.get(t)??[],a]))}let i=[...t.values()],a=[];for(let[e,t]of n)for(let n of t)a.push({from:n,to:e});return{nodes:i,edges:a,roots:i.filter(e=>!n.has(e.eventId)).map(e=>e.eventId),leaves:i.filter(e=>!r.has(e.eventId)).map(e=>e.eventId)}}function rt(e){let t=new Map,n=new Map;for(let r of e){let e=`entry`in r?r.entry:r;if(e.kind!==`tool`||e.node!==`tool.call.start`||e.turn===void 0)continue;let i=e.payload,a=typeof i?.id==`string`?i.id:``;if(!a||n.has(a))continue;n.set(a,e.turn);let o=t.get(e.turn);o?o.push(a):t.set(e.turn,[a])}return{turns:[...t.entries()].sort(([e],[t])=>e-t).map(([e,t])=>({turn:e,toolCallIds:t})),toolToTurn:n}}function it(e,t){let n=e.find(e=>e.seq===t);if(!n?.entry.parentEventId)return[];let r=[String(t)],i=n.entry.parentEventId;for(let t=0;t<100&&i;t++){let t=e.find(e=>e.seq===Number(i));if(!t)break;r.unshift(String(t.seq)),i=t.entry.parentEventId??``}return r}function at(e,t=512){return{isError:e.isError??!1,contentCount:e.content.length,contentPreview:e.content.map(e=>{if(e.type===`text`){let n=H(e.text);return n.length>t?{type:`text`,preview:n.slice(0,t),totalLength:n.length}:{type:`text`,text:n}}return e}),details:e.details??void 0}}function ot(e,t,n){let r=`[BACKGROUND TASK STARTED — DO NOT TREAT AS COMPLETE]\nTool '${e}' (task id: ${t}) has started running in the background and has NOT finished yet.\nDo NOT attempt to read its output, assume its result, or take any action that depends on\nits completion. You will receive a separate system message titled '[Tool completion]'\nwhen — and only when — this specific task actually finishes. Continue with other work\nor wait; do not fabricate or guess the result.`;return n?`${r}\n${n}`:r}function st(e,t,n,r){return{role:`tool_result`,toolCallId:e,toolName:t,content:[{type:`text`,text:ot(t,e,r)}],isError:!1,details:{},timestamp:n.now()}}function ct(e,t,n,r){let i=ut(n),a=n.isError??!1;return{role:`system_notification`,content:`[Tool completion] '${e}' ${a?`failed`:`completed`}: ${i}`,isError:a,relatedToolCallId:t,timestamp:r.now()}}function lt(e,t,n,r){return{role:`system_notification`,content:`<engine_timeout tool="${e}" id="${t}" ms="${n}">\n'${e}' did not complete within ${Math.round(n/1e3)}s; its result is unavailable. Do not assume it succeeded or read its output — re-issue the call if needed, or proceed without it.\n</engine_timeout>`,isError:!0,relatedToolCallId:t,timestamp:r.now()}}function ut(e){let t=e.content.find(e=>e.type===`text`);if(!t||t.type!==`text`)return e.isError?`error (no text output)`:`done (no text output)`;let n=H(t.text);return n.length>500?`${n.slice(0,500)}… [truncated]`:n}function dt(e){if(e.isError)return e.errorKind??`unknown`}function ft(e,t){let n=e;return{admit:()=>n===void 0?!0:n<=0?!1:(n--,!0),refund:()=>{n!==void 0&&(n=Math.min(n+1,e))},budgetExceededResult:n=>({role:`tool_result`,toolCallId:n.id,toolName:n.name,content:[{type:`text`,text:`Tool "${n.name}" rejected: per-turn tool-call budget of ${e} exhausted (remaining=0). The call was not executed.`}],isError:!0,details:{},timestamp:t.now()}),isPermissionRefund:e=>e.isError===!0&&e.errorKind===`permission`}}function pt(e,t){let n=new Map,r=null,i=[];return{register:t=>{let r=new AbortController;return n.set(t,r),AbortSignal.any([e,r.signal])},unregister:e=>{n.delete(e)},start:()=>{r!==null||n.size===0||(r=setInterval(()=>{t().then(e=>{if(e.length>0){i.push(...e);for(let e of n.values())e.abort();r!==null&&(clearInterval(r),r=null)}}).catch(()=>{})},200),r.unref?.())},stop:()=>{r!==null&&(clearInterval(r),r=null)},size:()=>n.size,drainPendingSteering:()=>{let e=i;return i=[],e}}}function mt(e,t,n,r){return{process:async(i,a)=>{let o=U(i.content);i.content=o;let s=e.get(a.name)?.resultBudgetChars??A.maxToolResultChars,c=await se(o,t?.budgetFor(s)??s,a.id,n);return t?.charge(G(c)),{role:`tool_result`,toolCallId:a.id,toolName:a.name,content:c,isError:i.isError??!1,details:i.details??{},timestamp:r.now()}}}}async function ht(e,t){let{signal:n,emitter:r,logger:i,clock:a,recorder:o,pause:s,turnIndex:c,budget:l,watcher:u,pipeline:d,windowStats:f,stallDetector:p,toolByName:m}=t;if(n.aborted)throw new v;let h=m.get(e.name),g=n;if(h?.interruptBehavior===`cancel`&&(g=u.register(e.id),u.start()),!l.admit())return u.unregister(e.id),l.budgetExceededResult(e);let _=gt.value++;r.emit(`tool.call.start`,{toolCall:{id:e.id,name:e.name,arguments:e.arguments}}),o.record({kind:`tool`,node:`tool.call.start`,turn:c,payload:{id:e.id,name:e.name,arguments:e.arguments,turnIndex:c,toolCallIndex:_}}),i.info(`Executing tool %s`,e.name),await s(`tool.before`,1,{lastToolName:e.name});let y=a.now(),b=await t.toolExecutor.execute(e,g);if(u.unregister(e.id),l.isPermissionRefund(b)&&l.refund(),n.aborted)throw new v;let x=a.now()-y;i.info(`Tool %s completed%s (%d ms)`,e.name,b.isError?` with error`:``,x);let S=await d.process(b,e);f&&z(f,{toolName:e.name,args:e.arguments,readonly:m.get(e.name)?.readonly===!0,isError:b.isError??!1}),p?.recordCall({toolName:e.name,args:e.arguments,readonly:m.get(e.name)?.readonly===!0,isError:b.isError??!1});let C=dt(b);return r.emit(`tool.call.end`,{toolCall:{id:e.id,name:e.name,arguments:e.arguments},result:b,contextChars:G(S.content)}),o.record({kind:`tool`,node:`tool.call.end`,turn:c,payload:{id:e.id,name:e.name,resultSummary:at(b,A.traceResultMaxChars),durationMs:x,toolCallIndex:_,...C?{errorCategory:C}:{}}}),await s(`tool.after`,1,{lastToolName:e.name}),S}const gt={value:0};async function _t(e,t,n,r,i,a,o){let{toolExecutor:c,messages:l,signal:u,emitter:d,logger:f,getSteeringMessages:p}=t,m=t.ports?.debug,h=t.ports?.clock??S,g=t.ports?.recorder??K,_=N({debug:m,getTurn:()=>n,getMessagesCount:()=>l.length,getTokenUsage:()=>r}),y=s(e).filter(e=>e.argumentsParseFailed!==!0),b=c.list(),x=new Map(b.map(e=>[e.name,e])),C=t.lifecycleAsync!==void 0,w=e=>{let t=x.get(e.name)?.lifecycleAsync;if(typeof t==`function`)try{return t(e.arguments)===!0}catch{return!1}return t===!0},T=C?y.filter(w):[],E=C?y.filter(e=>!w(e)):y;if(!C){let e=y.filter(w);e.length>0&&f.warn(`lifecycleAsync tool(s) called but ctx.lifecycleAsync controller not wired (falling back to synchronous execution, loop will block): %s`,e.map(e=>e.name).join(`, `))}let D=e=>{let t=x.get(e.name);return t?t.readonly?!0:t.isConcurrencySafe?.(e.arguments)===!0:!1},O=E.filter(D),ee=E.filter(e=>!D(e)),k=ft(t.budget.maxToolCallsPerTurn,h),{admit:te,budgetExceededResult:ne}=k;for(let e of y){let t=x.get(e.name);if(t?.async&&!t.readonly&&!t.isConcurrencySafe)throw Error(`Tool "${e.name}" declared async:true but is neither readonly nor isConcurrencySafe. Async tools must be concurrency-safe (isConcurrencySafe or readonly) to enter the parallel bucket.`)}let j=O.filter(e=>x.get(e.name)?.async===!0),M=O.filter(e=>!x.get(e.name)?.async),P=!1,F=t.lifecycleAsync?.currentPromptSeq()??0;for(let e of T){if(!te()){l.push(ne(e));continue}let n=st(e.id,e.name,h,x.get(e.name)?.lifecycleAsyncNote);l.push(n);let r=new AbortController,i=AbortSignal.any([u,r.signal]),a=c.execute(e,i);t.lifecycleAsync?.register({toolCallId:e.id,toolName:e.name,promise:(async()=>{let n;try{n=await a,n.content=U(n.content)}catch(t){f.warn(`lifecycleAsync tool %s (task id: %s) promise rejected: %s`,e.name,e.id,t instanceof Error?t.message:String(t)),n={content:[{type:`text`,text:`Tool ${e.name} failed: ${t instanceof Error?t.message:String(t)}`}],isError:!0}}let{consumed:r}=await t.lifecycleAsync.notifyCompletion(e.id,n);if(!r)return;let i=t.lifecycleAsync?.currentPromptSeq();if(i!==void 0&&i!==F){f.info(`lifecycleAsync tool %s (task id: %s) crossed prompt boundary (startSeq=%d, nowSeq=%d) — completion notice suppressed, emitting crossBoundary event instead`,e.name,e.id,F,i),d.emit(`lifecycle.tool.completed.crossBoundary`,{toolCallId:e.id,toolName:e.name,result:n});return}let o=ct(e.name,e.id,n,h);l.push(o)})(),promptSeq:F,consumed:!1,abortController:r}),d.emit(`tool.call.start`,{toolCall:{id:e.id,name:e.name,arguments:e.arguments}}),f.info(`Started lifecycleAsync tool %s (task id: %s), not blocking loop`,e.name,e.id)}T.length>0&&(P=!0);let I=await p();await _(`steering.check`,1,{metadata:{hasSteeringMessages:I.length>0,steeringCount:I.length}});let L=P,R=()=>{Y(l,E,h,{isError:!1,text:`Skipped: superseded by the user’s new instruction (not executed; no error).`})};if(I.length>0)return R(),l.push(...I),d.emit(`steering.injected`,{messages:I}),{ranAnyTool:P};let z=pt(u,p),B=()=>{let e=z.drainPendingSteering();return e.length===0?!1:(z.stop(),R(),l.push(...e),d.emit(`steering.injected`,{messages:e}),!0)};gt.value=0;let V={toolExecutor:c,toolByName:x,signal:u,emitter:d,logger:f,clock:h,recorder:g,pause:_,turnIndex:n,budget:k,watcher:z,pipeline:mt(x,o,t.ports?.spill,h),windowStats:i,stallDetector:a},H=async e=>{let t=await ht(e,V);l.push(t)};if(M.length>0){let e=A.maxToolConcurrency;f.info(`Executing %d concurrency-safe tools in parallel (cap %d)`,M.length,e);let t=await ce(M,e,H);if(L=!0,t.some(e=>e.status===`rejected`&&e.reason instanceof v)||u.aborted){if(B()&&!u.aborted)return{ranAnyTool:L};throw new v}let n=t.find(e=>e.status===`rejected`);if(n&&n.status===`rejected`)throw n.reason}if(j.length>0){f.info(`Starting %d async tools in parallel (Promise.all, no worker slot)`,j.length);let e=j.map(e=>ht(e,V)),t=await Promise.all(e);for(let e of t)l.push(e);L=!0}if(B())return{ranAnyTool:L};z.size()===0&&z.stop();for(let e of ee){if(u.aborted)throw B(),new v;let t=[...await p(),...z.drainPendingSteering()];if(t.length>0)return z.stop(),R(),l.push(...t),d.emit(`steering.injected`,{messages:t}),{ranAnyTool:L};await H(e),L=!0}return B()||z.stop(),{ranAnyTool:L}}const vt={maxRetries:5,initialDelayMs:500,backoffFactor:2,maxDelayMs:6e4},yt={maxRetries:5,initialDelayMs:3e4,backoffFactor:1,maxDelayMs:3e4},bt={maxRetries:1,initialDelayMs:0,backoffFactor:1,maxDelayMs:0};function xt(e,t,n,r){if(r!==void 0&&r>=0)return Math.min(Math.round(r),t.maxDelayMs);let i=t.initialDelayMs*t.backoffFactor**+e,a=.9+.2*n;return Math.min(Math.round(i*a),t.maxDelayMs)}function St(e,t,n,r,i){r.hasAttemptedImageDegradation=!0;let a=0;for(let e=t.length-1;e>=0;e--)if(t[e].role===`user`){a=e;break}let{messages:o,degradedCount:s}=Re(t,a);if(s===0)return;let{logger:c,emitter:l}=i,u=i.ports?.recorder??K;return c.warn(`Image degradation triggered (turn %d, trigger=%s): degraded %d images`,n+1,e,s),l.emit(`image.degradation`,{turnIndex:n,degradedCount:s,trigger:e}),u.record({kind:`lifecycle`,node:`image.degradation`,turn:n,payload:{degradedCount:s,trigger:e}}),{action:`retry`,contextMessages:o}}async function Ct(e,t,n,r,i){let{signal:a,emitter:o,logger:s}=t,c=t.ports?.recorder??K;if(e===`context-overflow`&&t.contextTransform?.reactiveCompact&&!i.hasAttemptedReactiveCompact){i.hasAttemptedReactiveCompact=!0;let e=r.length,l=await t.contextTransform.reactiveCompact(r,a);if(l){let t=l.messages;return s.warn(`Reactive compaction on context overflow (turn %d): %d -> %d messages`,n+1,e,t.length),o.emit(`compaction.reactive`,{turnIndex:n,messagesBefore:e,messagesAfter:t.length,...l.tokensAfter===void 0?{}:{tokensAfter:l.tokensAfter}}),c.record({kind:`lifecycle`,node:`compaction.reactive`,turn:n,payload:{messagesBefore:e,messagesAfter:t.length,...l.tokensAfter===void 0?{}:{tokensAfter:l.tokensAfter}}}),{action:`retry`,contextMessages:t}}}if((e===`context-overflow`||e===`image-constraint`)&&!i.hasAttemptedImageDegradation){let a=St(e,r,n,i,t);if(a)return a}}async function wt(e,t,n,r,i,a,o,s,c){let{signal:l,emitter:u,logger:d}=n,p=n.ports?.recorder??K,h=f(e),g=t===`retryable`&&h===`idle`?n.retry?.idleTimeoutRetry??bt:t===`retryable`&&_(e)?n.retry?.networkDisconnectRetry??yt:a;if(!(t===`retryable`&&i.transientRetries<g.maxRetries))return;let y=e instanceof Error?e.message:String(e),b=m(e),x=xt(i.transientRetries,g,s.random(),b);i.transientRetries++,d.warn(`Retryable stream error (turn %d, attempt %d/%d, delay %dms): %s`,r+1,i.transientRetries,g.maxRetries,x,y),u.emit(`stream.retry`,{turnIndex:r,attempt:i.transientRetries,maxRetries:g.maxRetries,delayMs:x,reason:y}),p.record({kind:`lifecycle`,node:`stream.retry`,turn:r,payload:{attempt:i.transientRetries,maxRetries:g.maxRetries,delayMs:x,reason:y}}),o&&(o.skip=!1);let S=0;for(;S<x;){if(l.aborted)throw new v;if(o?.skip){o.skip=!1,d.info(`Retry accelerated by user (turn %d, attempt %d/%d, after %dms of %dms)`,r+1,i.transientRetries,g.maxRetries,S,x),u.emit(`stream.retry.accelerated`,{turnIndex:r,attempt:i.transientRetries,maxRetries:g.maxRetries}),p.record({kind:`lifecycle`,node:`stream.retry.accelerated`,turn:r,payload:{attempt:i.transientRetries,maxRetries:g.maxRetries,elapsedMs:S}});break}let e=Math.min(1e3,x-S);await c(e,l),S+=e}if(l.aborted)throw new v;return{action:`retry`}}function Tt(e,t,n,r){if(!g(e)||r.hasAttemptedAuthRetry)return;r.hasAttemptedAuthRetry=!0;let i=e instanceof Error?e.message:String(e);return t.logger.warn(`Auth error on first attempt (turn %d, provider=%s, model=%s), retrying once: %s`,n+1,t.model.provider,t.model.id,i),{action:`retry`}}function Et(e,t,n){let{emitter:r,logger:i}=t,a=t.ports?.recorder??K,o=p(e);if(o?.status===`rejected`){let t=e instanceof Error?e.message:String(e);r.emit(`rate.limit.exhausted`,{limitType:o.type,resetsAt:o.resetsAt,message:t}),a.record({kind:`lifecycle`,node:`rate.limit.exhausted`,turn:n,payload:{limitType:o.type,resetsAt:o.resetsAt}})}else if(g(e)){let o=e instanceof Error?e.message:String(e);i.warn(`Auth failed (turn %d, provider=%s, model=%s): %s`,n+1,t.model.provider,t.model.id,o);let s=u(e);r.emit(`stream.auth-failed`,{turnIndex:n,provider:t.model.provider,modelId:t.model.id,reason:o,errorType:s}),a.record({kind:`lifecycle`,node:`stream.auth-failed`,turn:n,payload:{provider:t.model.provider,modelId:t.model.id,reason:o,errorType:s}})}}async function Dt(e,t,n,r,i,a,o,s,c){let{signal:l}=t;if(e instanceof v||e instanceof Error&&e.name===`AbortError`||l.aborted)throw e;let u=d(e);return await Ct(u,t,n,r,i)||await wt(e,u,t,n,i,a,o,s,c)||Tt(e,t,n,i)||(Et(e,t,n),{action:`rethrow`})}function Ot(e){for(let t=e.content.length-1;t>=0;t--){let n=e.content[t];if(n.type===`text`)return n.text}return null}function kt(e,t,n){return`<engine_budget dimension="${e}">\n${e===`tokens`?`You have used ${t} of your ${n} output-token budget for this prompt.`:`You have used ${Math.round(t/1e3)}s of your ${Math.round(n/1e3)}s time budget for this prompt.`} Do not start any new tool work or call any tools. Wrap up now: briefly summarize the concrete progress you made, list what still remains or is blocked, and give the user a clear next step. Respond with text only.
6
6
  </engine_budget>`}function At(e,t,n,r,i){if(e.stopReason!==`refusal`)return null;let{emitter:a,logger:o}=t;return o.warn(`Model refused to respond on turn %d; terminating cleanly`,n+1),a.emit(`turn.truncated`,{turnIndex:n,action:`refusal`}),i.recorder.record({kind:`lifecycle`,node:`turn.truncated`,turn:n,payload:{action:`refusal`}}),{kind:`terminate`}}function jt(e,t,n,r,i){if(e.stopReason!==`incomplete`)return null;let{emitter:a,logger:o}=t,{recorder:s}=i;if(r.incompleteStreamRetryCount<2){r.incompleteStreamRetryCount++;let s=r.incompleteStreamRetryCount;return Q(e,t,n,i,`<engine_incomplete_stream retry="N">
7
7
  Your previous response was cut off before completion — the provider ended the stream without producing a normal finish signal. This is not a token-limit truncation; a common cause is an upstream content filter triggering mid-generation. Continue from where you left off. If the response is repeatedly cut off at the same point, rephrase using different wording instead of repeating the same phrasing.
8
8
  </engine_incomplete_stream>`.replace(`retry="N"`,`retry="${s}"`),{type:`turn.truncated`,emit:()=>a.emit(`turn.truncated`,{turnIndex:n,action:`incomplete`}),recordNode:`turn.truncated`,recordPayload:{action:`incomplete`,retryCount:s}}),o.warn(`Incomplete stream (no finish signal from provider) on turn %d; injecting continuation retry (%d/%d)`,n+1,s,2),{kind:`continue`}}return o.warn(`Stream still incomplete after %d retries; terminating (likely a persistent upstream filter)`,2),a.emit(`turn.truncated`,{turnIndex:n,action:`incomplete-exhausted`,exhausted:!0}),s.record({kind:`lifecycle`,node:`turn.truncated`,turn:n,payload:{action:`incomplete-exhausted`,retryCount:r.incompleteStreamRetryCount,exhausted:!0}}),{kind:`terminate`}}function Mt(e,t,n,r,i){if(e.stopReason!==`end_turn`||c(e)||e.content.some(e=>e.type===`text`&&e.text.trim().length>0))return null;if(e.content.some(e=>e.type===`thinking`))return i.recorder.record({kind:`lifecycle`,node:`turn.truncated`,turn:n,payload:{action:`thinking-only`}}),t.emitter.emit(`turn.truncated`,{turnIndex:n,action:`thinking-only`}),null;let{emitter:a,logger:o}=t,{recorder:s}=i;if(r.emptyResponseRetryCount<2){r.emptyResponseRetryCount++;let s=r.emptyResponseRetryCount;return Q(e,t,n,i,`<engine_empty_response retry="N">